O bloqueio que apagou uma marca das respostas de IA
Semana passada eu rodei, com a equipe da Brasil GEO, uma auditoria de visibilidade em IA para um cliente de tecnologia B2B que reclamava de ter sumido do ChatGPT em três meses. O conteúdo era bom, o SEO orgânico estava saudável, o site indexava no Google sem problema. Abri o robots.txt e ali estava o estrago: alguém da equipe de infra, querendo "proteger o conteúdo da IA", tinha colado um bloco genérico que dava Disallow: / para tudo que tivesse "GPT", "Claude" e "AI" no nome. A intenção era nobre. O efeito foi cirúrgico ao contrário: o site continuou sendo treinado por quem quis (porque os blocos estavam mal escritos), mas deixou de ser recuperado nas respostas em tempo real. A marca não foi protegida. Foi apagada.
Esse é o erro mais caro e mais comum de 2026, e ele nasce de uma confusão conceitual. A maioria das pessoas trata "bot de IA" como uma categoria única. Não é. Cada empresa de IA opera vários robôs com funções diferentes, e a decisão de liberar ou bloquear precisa ser tomada robô por robô, propósito por propósito. Bloquear o robô de treino e bloquear o robô de busca são decisões com consequências opostas: uma é uma escolha de direito autoral; a outra é desaparecer do mapa.
Este guia é a matriz que eu uso na prática. Vou separar os três tipos de bot, dar a tabela central de decisão, mostrar blocos de robots.txt comentados que você pode adaptar, ser honesto sobre o papel limitado do llms.txt como suposto novo robots.txt para IA e fechar com um checklist. Se você é desenvolvedor, SEO técnico ou responsável de infra, esta é a página para abrir no segundo monitor enquanto edita o arquivo.
A distinção que muda tudo: treino, retrieval e user-triggered
Antes de qualquer linha de Disallow, grave estes três tipos. Eles existem porque uma plataforma de IA faz três coisas distintas com a web, e usa robôs distintos para cada uma.
1. Treino (training). O robô varre a web para alimentar o pré-treino e o fine-tuning do modelo. Exemplos: GPTBot (OpenAI), ClaudeBot (Anthropic), Google-Extended (Google, para Gemini e recursos de IA). O que você cede aqui é o uso do seu texto como dado de treino. Bloquear isso é uma decisão de direito autoral e de política de conteúdo. Não tira você das respostas de hoje, porque o modelo já está treinado e, de qualquer forma, a resposta citável vem do retrieval, não da memória do modelo.
2. Retrieval / busca (search index). O robô indexa seu conteúdo para alimentar a camada de recuperação em tempo real, aquela que monta a resposta e cita a fonte. Exemplos: OAI-SearchBot (busca do ChatGPT), Claude-SearchBot (busca do Claude), PerplexityBot (índice do Perplexity). Este é o robô que decide se sua marca aparece com link clicável na resposta. Bloquear este é o tiro no pé: você some das respostas. É exatamente o que aconteceu no caso da abertura.
3. User-triggered (acionado pelo usuário). O robô busca uma URL específica somente quando um usuário humano pede, em tempo real, dentro do chat. Exemplos: ChatGPT-User (OpenAI), Claude-User (Anthropic). Não é varredura em massa; é "abra esta página para mim agora". Bloquear este robô quebra a experiência de quem mandou a IA ler exatamente o seu site, e ainda derruba você de fluxos de pesquisa profunda. Para entender por que o retrieval em tempo real é tão decisivo, vale ler como o RAG e o query fan-out montam a resposta que cita você.
A regra de ouro, então: retrieval e user-triggered você quase sempre libera (é o que te coloca na resposta). Treino você decide com a área jurídica, sabendo que é uma escolha de princípio, não de visibilidade imediata. Quem inverte isso — libera treino e bloqueia retrieval — entrega o conteúdo de graça para o modelo e ainda some da resposta. O pior dos dois mundos.
A matriz central: bot por bot, o que fazer e por quê
Esta é a tabela que abre todo projeto técnico de GEO na Brasil GEO. A coluna "Liberar?" é a recomendação padrão para quem quer visibilidade em IA. Ela não é dogma: o treino é uma decisão sua de direito autoral. Mas o retrieval e o user-triggered são quase sempre "sim", porque são eles que decidem se você existe para a máquina.
| User-agent | Empresa | Tipo | Liberar? | Por quê |
|---|---|---|---|---|
| GPTBot | OpenAI | Treino | Decisão sua | Usa o conteúdo como dado de treino. Bloquear é direito autoral, não tira você das respostas atuais. |
| OAI-SearchBot | OpenAI | Retrieval | Sim | Indexa para a busca do ChatGPT. Bloquear = sumir das respostas com citação. |
| ChatGPT-User | OpenAI | User-triggered | Sim | Busca a página quando o usuário pede no chat. Bloquear quebra a leitura sob demanda. |
| ClaudeBot | Anthropic | Treino | Decisão sua | Coleta para treino do Claude. Mesma lógica do GPTBot: escolha de política de conteúdo. |
| Claude-SearchBot | Anthropic | Retrieval | Sim | Melhora os resultados de busca do Claude. Bloquear = invisível para o Claude com web. |
| Claude-User | Anthropic | User-triggered | Sim | Acessa a URL quando o usuário aciona o Claude. Bloquear frustra o pedido direto. |
| PerplexityBot | Perplexity | Retrieval | Sim | Indexa para citar no Perplexity. Atenção: há histórico de crawler furtivo (ver seção própria). |
| Google-Extended | Treino (Gemini/IA) | Decisão sua | Controla uso em treino/recursos de IA do Google. NÃO afeta indexação normal do Googlebot nem o AI Overviews via índice de busca. |
Repare na assimetria: as quatro linhas de retrieval e user-triggered são "Sim" sem hesitar. As três de treino são "decisão sua". Essa é a matriz inteira em uma frase. Uma armadilha importante no Google-Extended: ele só governa o uso do seu conteúdo para treinar a IA e alimentar certos recursos generativos. Ele não bloqueia o Googlebot, não tira você da busca e não impede que o AI Mode e os AI Overviews apresentados no Google I/O 2026 usem o que já está no índice de busca padrão. Quem bloqueia o Google-Extended achando que "saiu da IA do Google" está enganado — a IA do Google se serve do índice de busca normal.
Blocos de robots.txt comentados que você pode adaptar
Robots.txt é por user-agent e por caminho. A regra que vale é a do grupo mais específico que casa com o user-agent; e o robôs respeitam o arquivo na raiz do host (com variação por subdomínio). Aqui vão três configurações reais, da mais aberta à mais restritiva. Os comentários começam com # e são ignorados pelo robô.
Configuração A — Visibilidade máxima (o que eu recomendo para a maioria). Libera tudo. Você aceita treino e quer estar em todas as respostas.
# Libera todos os bots de IA, inclusive treino
User-agent: GPTBot
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: Claude-User
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Google-Extended
Allow: /
Configuração B — Recusa o treino, mantém a visibilidade (a mais escolhida por publishers). Bloqueia os bots de treino e libera retrieval e user-triggered. Você sai do dataset de treino, mas continua citável em tempo real.
# Bloqueia TREINO
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
# Libera RETRIEVAL (te coloca nas respostas)
User-agent: OAI-SearchBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
# Libera USER-TRIGGERED (leitura sob demanda)
User-agent: ChatGPT-User
Allow: /
User-agent: Claude-User
Allow: /
Configuração C — O erro que eu vejo toda semana (NÃO faça isso). O bloco genérico que parece esperto e te apaga.
# ARMADILHA: parece "bloquear a IA", mas mata a visibilidade
# Disallow: / num grupo só NÃO casa com todos os user-agents distintos.
# Pior: se você bloquear os *SearchBot, some das respostas.
User-agent: *
Disallow: /
# Errado também: bloquear o retrieval achando que protege
User-agent: OAI-SearchBot
Disallow: /
User-agent: PerplexityBot
Disallow: /
Três cuidados de implementação. Primeiro: cada user-agent precisa do próprio grupo; um User-agent: * com Disallow: / não governa de forma confiável os robôs nomeados, que procuram o grupo específico deles. Segundo: robots.txt é uma diretiva voluntária — robôs honestos obedecem, mas há quem não obedeça (volto a isso na seção do Perplexity), então para conteúdo realmente sensível use autenticação, não robots.txt. Terceiro: confira o arquivo por subdomínio; blog.seudominio.com.br e seudominio.com.br têm robots.txt separados. Quer ver isso encaixado no resto do GEO técnico? O guia técnico de llms.txt baseado em evidência trata da camada de sinalização que vem depois do robots.txt.
Quem realmente manda tráfego: os ratios crawl:referral da Cloudflare
Tem uma pergunta honesta por trás de toda essa decisão: vale a pena deixar esses robôs varrerem meu site? Os números da Cloudflare ajudam a responder. Eles publicaram a razão entre quantas vezes um bot rastreia seu conteúdo e quantos visitantes esse mesmo serviço devolve em forma de cliques (o ratio crawl:referral). Quanto maior o número, mais o serviço pega e menos ele devolve.
Os dados de 2025 são duros. O GPTBot rastreava algo entre 1.091 e 1.700 páginas para cada visitante que o ChatGPT mandava de volta. O ClaudeBot chegava a um ratio de 38.000 para 1 — embora esse rastreamento tenha caído cerca de 87% em relação a janeiro de 2025. O PerplexityBot, mais econômico, ficava em torno de 194 para 1. Os números estão no levantamento "From Googlebot to GPTBot: who's crawling your site in 2025", Cloudflare, 2025.
Por que então eu ainda recomendo liberar o retrieval? Porque o ratio mede tráfego de clique, e o jogo do GEO não é mais clique — é citação. A IA cita sua marca dentro da resposta, e essa menção tem valor de presença e de autoridade mesmo sem o clique. Estamos na economia zero-clique, que muda o desenho do funil: o usuário lê a resposta, vê sua marca citada como fonte e decide por você sem nunca passar pelo seu site. Se você bloqueia o retrieval para "economizar crawl", você economiza banda e perde a única vitrine que importa. Em compensação, o ratio do treino reforça meu ponto: ceder texto de treino dá pouquíssimo retorno de tráfego — daí ser uma decisão de princípio, e legítima, recusá-lo.
O caso Perplexity: quando o robots.txt não basta
Preciso ser honesto sobre um ponto que complica a teoria limpa das três categorias. A Cloudflare documentou que o Perplexity usou crawlers furtivos e não declarados para contornar diretivas de no-crawl — ou seja, quando o PerplexityBot era bloqueado no robots.txt, apareciam requisições com user-agents disfarçados de navegador comum para buscar o mesmo conteúdo. O relato está em "Perplexity is using stealth, undeclared crawlers", Cloudflare, 2025.
A lição prática é dupla. Primeiro, isso reforça que robots.txt é uma diretiva de boa-fé, não uma muralha. Robôs honestos (GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot e os Google) declaram quem são e respeitam o arquivo. Quem decidir não respeitar simplesmente não vai respeitar. Segundo: para verificar se o tráfego é legítimo, não confie só no nome do user-agent — qualquer um pode escrever "OAI-SearchBot" no cabeçalho. OpenAI e Anthropic publicam as faixas de IP oficiais de seus robôs em arquivos JSON públicos; a verificação correta é casar o user-agent com o IP de origem dessas listas. A documentação dos agentes da OpenAI está em xseek.io — OpenAI crawlers and user agents e a da Anthropic em central de suporte do Claude sobre o crawler.
O que eu faço, na prática: para conteúdo público, libero o retrieval e confio na boa-fé, porque o ganho de visibilidade compensa. Para conteúdo que não pode vazar, eu não uso robots.txt como controle — uso autenticação, paywall ou firewall com verificação de IP. Robots.txt sinaliza intenção; ele não impõe segurança. Confundir os dois é como trancar a porta com uma plaquinha de "favor não entrar".
O papel honesto do llms.txt: útil, mas não é salvação
Toda vez que falo de robots.txt para IA, alguém pergunta sobre o llms.txt — aquele arquivo markdown na raiz do site, com um sumário curado e links prioritários, pensado para ajudar a IA a entender e navegar seu conteúdo. A proposta surgiu em 2024 e ganhou tração em ferramentas de documentação. É uma ideia boa de higiene e de curadoria. O guia introdutório da ideia está em "llms.txt complete guide", Getpublii.
Agora a parte honesta, que é a que importa para você não perder tempo. O llms.txt não é o que decide se você é citado. A medição da OtterlyAI aponta que o tráfego de bots que efetivamente passa pelo arquivo llms.txt é da ordem de ~0,1% do tráfego de bots — ou seja, ROI marginal hoje. Os robôs de retrieval que importam (OAI-SearchBot, Claude-SearchBot, PerplexityBot) leem o seu HTML visível, seguem o robots.txt e indexam suas páginas reais. Eles não dependem do llms.txt para te encontrar. Quem promete que "criar um llms.txt te coloca no ChatGPT" está vendendo otimismo.
Então o llms.txt vale a pena? Vale como item barato de um checklist maior, não como prioridade. Faça depois de ter o robots.txt correto, o HTML semântico limpo, as answer capsules de 120 a 150 caracteres bem escritas e o schema de entidade consistente. O llms.txt é a cereja; o bolo é a sua página renderizar em HTML que o robô lê e o seu robots.txt liberar o robô certo. Para a discussão completa de evidência versus marketing, eu detalhei isso no FAQ definitivo sobre llms.txt para SEO.
Liberar o bot é só metade: ele precisa conseguir ler
Tem um detalhe de infra que anula todo o trabalho de robots.txt se for ignorado: os bots de retrieval leem o HTML servido, e a maioria deles tem capacidade limitada de executar JavaScript pesado. Se o seu conteúdo principal só aparece depois que um framework client-side hidrata a página, o robô pode liberar o crawl e mesmo assim levar uma página vazia. Você abriu a porta, mas a sala estava escura.
O que eu verifico em toda auditoria: o texto que importa precisa estar no HTML inicial (renderização no servidor ou estática), não montado só no cliente. Use HTML semântico de verdade — article, section, h1 a h3 em hierarquia coerente, listas e tabelas reais — porque é nessa estrutura que o robô fatia o conteúdo em trechos recuperáveis. Esse é o mesmo motivo pelo qual conteúdo que ranqueia no Google às vezes some no ChatGPT: o Googlebot renderiza JavaScript com folga; vários bots de IA, não.
E há a camada seguinte, a de agentes que não só leem como agem: protocolos como MCP, NLWeb, A2A e AP2 começam a definir como um site se declara consumível por um agente autônomo. Isso é o passo além do robots.txt, e eu tratei dele no guia de B2A na prática: protocolos MCP, NLWeb, A2A e AP2. Por ora, fixe o básico: liberar o robô certo no robots.txt e garantir que ele encontre HTML legível são as duas metades inseparáveis da mesma decisão.
Checklist de decisão: liberar ou bloquear, passo a passo
Para fechar, o roteiro que eu sigo, na ordem. Imprima e percorra item por item ao editar o seu robots.txt.
- Separe os robôs por tipo antes de tocar no arquivo. Liste cada user-agent que te interessa e classifique: treino, retrieval ou user-triggered. Sem essa classificação, qualquer regra é chute.
- Libere TODO retrieval. OAI-SearchBot, Claude-SearchBot e PerplexityBot recebem
Allow: /. São eles que colocam sua marca na resposta. Esta é a decisão de visibilidade. - Libere TODO user-triggered. ChatGPT-User e Claude-User recebem
Allow: /. Bloquear quebra a leitura sob demanda de quem pediu o seu site. - Decida o treino com o jurídico. GPTBot, ClaudeBot e Google-Extended são uma escolha de direito autoral. Recusar é legítimo e não te tira das respostas de hoje. Liberar é o padrão de visibilidade máxima.
- Cada robô no próprio grupo. Nada de
User-agent: *comDisallow: /esperando governar robôs nomeados. Escreva um grupo por user-agent. - Verifique por subdomínio. Cada host tem o seu robots.txt. Blog, ajuda e loja precisam de revisão própria.
- Conteúdo sensível não fica em robots.txt. Use autenticação ou firewall com verificação de IP. Robots.txt sinaliza intenção, não impõe segurança.
- Garanta HTML legível. O conteúdo principal deve estar no HTML servido, não só no JavaScript do cliente. Liberar o robô sem renderizar para ele é abrir porta para sala vazia.
- llms.txt por último. Faça depois do robots.txt, do HTML semântico e das answer capsules. É item barato de checklist, não prioridade.
- Meça depois. Acompanhe se a marca aparece nas respostas após a mudança. Para o método, veja como medir o Share of Voice em IA.
A frase que eu deixo com todo time de infra: liberar o robô errado custa banda; bloquear o robô errado custa a marca. Quando a dúvida for entre os dois, lembre que retrieval e user-triggered são quase sempre "sim", e o treino é a única casa onde a recusa tem sentido estratégico. Decida com a matriz na mão, não no susto.