Glossário

Como um threadgate do Bluesky decide quem pode responder a um post

Taras Shynkarenko
Taras Shynkarenko
•Atualizado: •7 min de leitura
Como um threadgate do Bluesky decide quem pode responder a um postComo um threadgate do Bluesky decide quem pode responder a um post

TL;DR, Resposta Rápida

7 min de leitura

Os controles de resposta do Bluesky ficam em um registro app.bsky.feed.threadgate cuja record key é igual à do post raiz da thread. O array allow aceita até 5 regras: mentionRule, followerRule, followingRule e listRule. Um array vazio significa que ninguém pode responder, e um array ausente significa que qualquer pessoa pode. O mesmo registro guarda até 300 URIs de respostas ocultas. Posts com citação são controlados por um registro separado, app.bsky.feed.postgate, cujo disableRule desativa a incorporação e cujo detachedEmbeddingUris guarda até 50 citações desvinculadas.

O que é um threadgate do Bluesky?

Um threadgate do Bluesky é o registro app.bsky.feed.threadgate que decide quem pode responder a uma thread. O lexicon o descreve como um "Record defining interaction gating rules for a thread (aka, reply controls)." Controles de resposta no Bluesky não são uma configuração da sua conta nem uma flag no post. Eles são esse registro, guardado no seu próprio repositório.

É um registro próprio, não um campo do post. Esse design tem uma consequência que as pessoas não percebem: você pode adicionar, alterar ou apagar controles de resposta em um post que já está no ar, porque o registro do post em si nunca muda.

O lexicon define onde o registro precisa ficar: "The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same repository." Um threadgate pertence a um post raiz, no repo do próprio autor, sob a mesma rkey.

Quais campos o registro threadgate tem?

Quatro, e dois deles são obrigatórios.

CampoTipoObrigatórioDescrição no lexicon
postat-uriSim"Reference (AT-URI) to the post record."
createdAtdatetimeSimNenhuma
allowarray, máx. 5Não"List of rules defining who can reply to this post."
hiddenRepliesarray de at-uri, máx. 300Não"List of hidden reply URIs."

Um registro completo que deixa contas mencionadas e uma lista responderem fica assim:

{
  "$type": "app.bsky.feed.threadgate",
  "post": "at://did:plc:abc123/app.bsky.feed.post/3kxyzpost",
  "allow": [
    { "$type": "app.bsky.feed.threadgate#mentionRule" },
    {
      "$type": "app.bsky.feed.threadgate#listRule",
      "list": "at://did:plc:abc123/app.bsky.graph.list/3kxyzlist"
    }
  ],
  "createdAt": "2026-09-24T10:00:00.000Z"
}

Você o grava com com.atproto.repo.createRecord, definindo collection como app.bsky.feed.threadgate e rkey como a rkey do post, que é o último segmento do AT-URI do post. A página de thread gates do Bluesky mostra o mesmo passo no exemplo em TypeScript: const { rkey } = new AtUri(postUri).

Quais regras de allow um threadgate do Bluesky pode usar?

Quatro tipos de regra, cada um um objeto dentro de allow. A documentação do Bluesky os lista com definições de uma linha:

RegraQuem pode responder
app.bsky.feed.threadgate#mentionRule"Allow replies from actors mentioned in your post."
app.bsky.feed.threadgate#followingRule"Allow replies from actors you follow."
app.bsky.feed.threadgate#followerRule"Allow replies from actors following you."
app.bsky.feed.threadgate#listRule"Allow replies from actors on a list."

Três das quatro não têm nenhuma propriedade. listRule é a exceção: o campo list é obrigatório e recebe o AT-URI de um registro app.bsky.graph.list.

As regras se somam em vez de restringir. O exemplo do Bluesky coloca mentionRule, followingRule e listRule em um único array com os comentários "allow mentioned users," "allow followed users" e "allow list members," então cada regra abre as respostas para mais um grupo.

mentionRule depende de como o post codifica as menções. Em um registro de post, uma menção é uma facet app.bsky.richtext.facet#mention, e o lexicon de facets observa que "The text is usually a handle, including a '@' prefix, but the facet reference is a DID." Digitar um @handle como texto simples, sem facet, não o transforma em menção no registro. Acertar os offsets em bytes da facet é outro problema, tratado na nota sobre byteStart e byteEnd das facets do Bluesky.

O array allow tem limite de 5 itens, enquanto só existem quatro tipos de regra. O schema não proíbe repetir listRule, então o quinto espaço serve para uma segunda lista.

Um cadeado pendurado em um portão de madeira fechado, representando uma thread em que ninguém pode responder.

Qual é a diferença entre um array allow vazio e um ausente?

Tudo. O lexicon traça a linha em uma frase: "If value is an empty array, no one can reply. If value is undefined, anyone can reply."

Valor de allowQuem pode responder
AusenteQualquer pessoa
[]Ninguém
Uma ou mais regrasQualquer pessoa que atenda a alguma regra

A documentação do Bluesky formula isso no nível do registro: "If a thread gate record is present but empty, then nobody can reply," e "If a thread gate record is not present, then anybody can reply." Lendo as duas fontes juntas, aparece um caso que a página da documentação pula. Um registro threadgate pode existir sem o campo allow, por exemplo um que só lista hiddenReplies. Pelo texto do lexicon, essa thread continua aberta a qualquer pessoa. Se o seu código oculta uma resposta criando um threadgate, e depois alguém entende que "registro presente significa bloqueado", a lógica vai sair invertida.

Dá para restringir respostas no meio de uma thread?

Não. A rkey do threadgate precisa bater com "the thread's root post", então existe um threadgate por thread, ligado ao primeiro post. Respostas mais abaixo não podem ter controles de resposta próprios.

AdaptlyPost
AdaptlyPost

Comece seu teste grátis de 7 dias

Análises multiplataforma

Caixa Social

Assistente com IA

O array hiddenReplies fica no mesmo registro raiz e tem limite de 300 URIs. O anúncio do recurso pelo Bluesky, na versão 1.90 do app, diz "Only the original creator of the thread can hide replies," e que "All hidden replies will be placed behind a Hidden replies screen." Elas continuam acessíveis ali, "but much less visible." O mesmo post avisa que as respostas ocultas, junto com quais posts o autor ocultou, "are still public data." Tudo o que está em um registro threadgate pode ser lido por qualquer pessoa que leia o seu repositório.

Uma mão sublinha uma passagem citada em um livro impresso, ilustrando a citação do post de outra pessoa.

O que é o registro postgate?

O postgate é a contraparte do threadgate para posts com citação. app.bsky.feed.postgate é um "Record defining interaction rules for a post", e segue a mesma regra de posicionamento: a rkey "must match the record key of the post, and that record must be in the same repository."

CampoTipoObrigatórioDescrição no lexicon
postat-uriSim"Reference (AT-URI) to the post record."
createdAtdatetimeSimNenhuma
embeddingRulesarray, máx. 5Não"List of rules defining who can embed this post."
detachedEmbeddingUrisarray de at-uri, máx. 50Não"List of AT-URIs embedding this post that the author has detached from."

embeddingRules tem hoje um único tipo de regra, app.bsky.feed.postgate#disableRule, descrito como "Disables embedding of this post." É essa a chave por trás de desativar posts com citação.

Repare que os padrões do postgate são diferentes dos do threadgate. Para embeddingRules, "If value is an empty array or is undefined, no particular rules apply and anyone can embed." Um array vazio bloqueia respostas em um threadgate, mas deixa as citações liberadas em um postgate. Para bloquear citações, você precisa de um disableRule explícito.

O postgate também difere no alcance. Ele corresponde a "the record key of the post", não à raiz da thread, então qualquer post, inclusive uma resposta, pode ter o próprio postgate.

detachedEmbeddingUris registra as citações que você já desvinculou. O anúncio da versão 1.90 do Bluesky descreve isso: "you can detach your original post from someone's quote post," e "Like blocks, quote post removals are public data." O array guarda 50 URIs.

Como um cliente sabe que um post tem restrição?

Pela visualização do post, não buscando os registros. app.bsky.feed.defs#postView traz um campo threadgate que devolve o registro junto com as listas que ele referencia. O estado de visualização da conta logada acrescenta dois booleanos, replyDisabled e embeddingDisabled, que um cliente pode usar para desativar os botões de responder e citar para aquela pessoa.

Uma ferramenta de agendamento tem um passo extra. O threadgate é um segundo registro, então um post agendado com controles de resposta significa duas gravações: o post e depois o gate sob a mesma rkey. A nota sobre como agendar posts no Bluesky cobre o lado da postagem, e as duas gravações contam para os limites descritos na nota sobre o rate limit da API do Bluesky.

Publicar um post com controles de resposta
1
Escreva o post. Crie o registro do post e guarde o AT-URI dele.
2
Pegue o rkey. Ele é o último segmento do AT-URI do post.
3
Escreva o threadgate. Mesmo repositório, coleção app.bsky.feed.threadgate, mesmo rkey.
4
Adicione um postgate se as citações devem ficar desligadas. Um registro separado, com o rkey do post e uma disableRule.
Cada gate é uma escrita própria, além do post.

Perguntas frequentes

Como impedir que todo mundo responda a um post do Bluesky pela API?

Crie um registro app.bsky.feed.threadgate com a rkey do post e "allow": []. O lexicon diz "If value is an empty array, no one can reply."

Um threadgate do Bluesky pode deixar só meus seguidores responderem?

Sim. Adicione app.bsky.feed.threadgate#followerRule a allow. O Bluesky o define como "Allow replies from actors following you."

Quantas regras um threadgate pode ter?

Cinco. O array allow tem maxLength de 5 no lexicon.

Posso mudar os controles de resposta depois que o post foi publicado?

Sim. O threadgate é um registro separado, então você pode criá-lo, atualizá-lo ou apagá-lo sem mexer no post.

Como desativar posts com citação no Bluesky pela API?

Crie um registro app.bsky.feed.postgate com a rkey do post e adicione app.bsky.feed.postgate#disableRule a embeddingRules. Um array vazio não bloqueia citações.

Respostas ocultas são privadas?

Não. O Bluesky diz que as respostas ocultas, e quais posts o autor ocultou, "are still public data." Elas ficam no array hiddenReplies do threadgate, que qualquer pessoa pode ler.

AdaptlyPost
AdaptlyPost

Comece seu teste grátis de 7 dias

Análises multiplataforma

Caixa Social

Assistente com IA

Quem pode ocultar respostas em uma thread do Bluesky?

Só o criador original da thread pode ocultar respostas, segundo o anúncio do Bluesky para a versão 1.90. Os URIs das respostas ocultas ficam no array hiddenReplies do threadgate, até 300. Elas ficam atrás de uma tela Hidden replies e continuam acessíveis por lá.

Um array embeddingRules vazio desativa as citações?

Não desativa. Em um postgate, um embeddingRules vazio ou indefinido significa que nenhuma regra específica se aplica e qualquer pessoa pode incorporar o post. Para bloquear citações, adicione app.bsky.feed.postgate#disableRule.

Como separo uma citação do meu post original no Bluesky?

Adicione o AT-URI da citação ao array detachedEmbeddingUris do postgate do seu post. O array comporta até 50 URIs. O Bluesky observa que, assim como os bloqueios, as remoções de citação são dados públicos.

Um threadgate pode combinar várias regras allow?

As regras se somam. Cada regra em allow abre as respostas para mais um grupo, então usuários mencionados, usuários seguidos e uma lista podem ficar no mesmo array. O array aceita até 5 regras, e listRule exige o AT-URI de um registro app.bsky.graph.list.

Este artigo foi útil para você?

Conte-nos o que você achou!

Veja-nos mais no Google

Um clique marca a AdaptlyPost como fonte preferida e nossos artigos passam a aparecer mais acima nas suas Principais notícias, no modo IA e nas visões gerais com IA.

Antes de ir...

AdaptlyPost

AdaptlyPost

Agende seu conteúdo em todas as plataformas

Gerencie todas as suas contas de redes sociais em um só lugar com o AdaptlyPost.

Análises multiplataforma

Caixa Social

Assistente com IA

Termos relacionados do glossário

Artigos Relacionados