MartechARTIGO

Como configurar o robots.txt para GPTBot, OAI-SearchBot e ChatGPT-User

A OpenAI usa três robôs diferentes para treinar modelos, buscar na web e responder perguntas de usuários. Veja como auditar logs, separar as regras no robots.txt e confirmar que a configuração funcionou.

A OpenAI documenta, na página oficial de bots da plataforma, quatro user-agents com funções distintas: GPTBot, OAI-SearchBot, ChatGPT-User e OAI-AdsBot. O problema é que muita gente trata os três primeiros como se fossem a mesma coisa e escreve uma regra genérica de User-agent: * no robots.txt, bloqueando ou liberando tudo de uma vez. Isso joga fora metade do controle que a própria OpenAI dá ao webmaster.

A documentação é explícita: "cada configuração é independente das outras" e um site pode permitir o OAI-SearchBot para aparecer em resultados de busca enquanto bloqueia o GPTBot para impedir que o conteúdo rastreado seja usado em treino. É esse o ajuste fino que este guia percorre, do log bruto até o teste no ChatGPT Search.

Três bots, três decisões diferentes

Antes de tocar no robots.txt, vale fixar o que cada agente faz, porque a decisão de bloquear ou liberar muda conforme o objetivo.

User-agentPara que serveAfeta treino de modeloAfeta aparecer na busca
GPTBotRastreia conteúdo para treinar os modelos de fundação da OpenAISimNão
OAI-SearchBotIndexa páginas para as respostas de busca do ChatGPTNãoSim
ChatGPT-UserVisita páginas sob demanda, quando um usuário pede algo específico no ChatGPT ou em um GPT customizadoNãoNão (a doc diz que esse agente "não é usado para determinar se o conteúdo pode aparecer na Busca")
OAI-AdsBotValida páginas de destino submetidas como anúnciosNãoNão

A própria OpenAI avisa que, se um site permite os dois bots de treino e busca, ela "pode usar o resultado de um único rastreamento para os dois usos, para evitar rastreamento duplicado". Ou seja: permitir os dois não dobra a carga no servidor, mas bloquear só um exige regras separadas e explícitas, porque regra genérica trata todos os agentes do mesmo jeito.

Passo 1: audite os logs antes de mexer em qualquer regra

O primeiro erro é editar o robots.txt sem saber se esses bots já estão (ou não) acessando o site. Rode, no log de acesso do servidor, uma contagem por user-agent:

bash
grep -ic "GPTBot" /var/log/nginx/access.log
grep -ic "OAI-SearchBot" /var/log/nginx/access.log
grep -ic "ChatGPT-User" /var/log/nginx/access.log

Se os três retornarem zero, o site provavelmente nunca foi rastreado por nenhum deles, e a prioridade é liberar o OAI-SearchBot antes de pensar em bloquear qualquer coisa. Se GPTBot já aparece em volume e você quer impedir treino, confirme que as requisições vêm mesmo da OpenAI, e não de alguém forjando o cabeçalho User-Agent:

bash
grep "GPTBot" /var/log/nginx/access.log | awk '{print $1}' | sort -u > ips_gptbot.txt
curl -s https://openai.com/gptbot.json | jq -r '.prefixes[].ipv4Prefix' > faixas_oficiais.txt

Com as duas listas em mãos, cruze os IPs do seu log contra os prefixos CIDR publicados (openai.com/gptbot.json, openai.com/searchbot.json e openai.com/chatgpt-user.json, um arquivo JSON por bot). Requisição com User-Agent: GPTBot vinda de fora dessas faixas é, no mínimo, suspeita e não deveria pautar sua decisão de bloquear ou liberar.

Passo 2: escreva regras separadas no robots.txt

Com os logs auditados, o robots.txt fica assim para quem quer aparecer na busca do ChatGPT mas não quer alimentar treino de modelo:

User-agent: GPTBot
Disallow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: ChatGPT-User
Allow: /

Repare que não existe um bloco User-agent: * nesse exemplo. Se você já tem um catch-all genérico no arquivo (User-agent: * seguido de Disallow: /admin, por exemplo), ele continua valendo para qualquer bot que não tenha bloco próprio, mas os blocos específicos de GPTBot, OAI-SearchBot e ChatGPT-User sempre têm prioridade sobre o genérico para esses três agentes. É assim que se bloqueia treino sem bloquear busca: a regra mais específica vence.

Vale lembrar três detalhes que a documentação deixa explícitos e que mudam a estratégia de quem depende de automação:

  • O ChatGPT-User só age quando um usuário pede algo específico dentro do ChatGPT; a OpenAI avisa que, por ser uma ação disparada por pessoa, "regras de robots.txt podem não se aplicar" a ele da mesma forma que se aplicam a um rastreador automático.
  • O OAI-SearchBot é o único agente que decide se o site aparece nas respostas de busca; bloquear ChatGPT-User não tira o site da busca, e liberar ChatGPT-User não garante que ele apareça nela.
  • Se o site também roda anúncios no ChatGPT, falta considerar o OAI-AdsBot, que só visita páginas enviadas como anúncio e, segundo a doc, nunca alimenta treino de modelo de fundação.

Editar o arquivo não é o fim do trabalho: é preciso confirmar que a mudança realmente afetou o que aparece nas respostas do ChatGPT. A OpenAI avisa que, para o OAI-SearchBot, "pode levar cerca de 24 horas, a partir da atualização do robots.txt de um site, para que os sistemas se ajustem". Planeje o teste em duas rodadas, com esse intervalo no meio.

  1. Antes de editar o arquivo, escolha de três a cinco prompts que um usuário real faria e que, pelo assunto, deveriam puxar uma página do seu site como fonte. Rode cada um no ChatGPT com busca ativada e registre se o domínio aparece como citação ou link.
  2. Publique as regras novas do robots.txt e aguarde pelo menos 24 horas, o prazo que a própria OpenAI indica para o reindex de busca.
  3. Rode os mesmos prompts de novo, nas mesmas condições, e compare: se você liberou o OAI-SearchBot, espera-se que o domínio comece a aparecer (ou volte a aparecer) nas respostas; se bloqueou, espera-se o oposto.
  4. Em paralelo, volte aos logs do servidor e confirme que o GPTBot parou de bater no site (ou que o OAI-SearchBot passou a aparecer, se foi essa a liberação feita). Rastreador que ignora um Disallow depois de 24h é sinal de cache de robots.txt desatualizado no seu CDN, não de má-fé do bot.

O teste em duas pontas (log do servidor + prompt no produto) é o que fecha o ciclo: o log mostra se o crawler obedeceu a regra, o prompt mostra se o efeito combinado (crawling permitido, indexação de busca, exibição na resposta) chegou até o usuário final.

Erros comuns que travam essa configuração

Alguns tropeços aparecem com frequência em configurações desse tipo, e vale checar cada um antes de considerar a tarefa concluída:

  • Deixar um User-agent: * com Disallow: / no topo do arquivo e assumir que ele não afeta os três bots da OpenAI: ele afeta, a menos que exista bloco específico por agente depois.
  • Confundir "bloqueei o GPTBot" com "bloqueei a aparição na busca": são sistemas diferentes, controlados por agentes diferentes.
  • Validar a regra só olhando o robots.txt renderizado, sem checar o log do servidor depois de alguns dias, para confirmar que o bot de fato parou (ou começou) a acessar.
  • Ignorar o ChatGPT-User achando que ele sempre obedece robots.txt do mesmo jeito que um crawler automático; a própria doc avisa que, por ser ação de usuário, isso pode não valer.

O que ainda fica em aberto

A documentação da OpenAI é clara sobre o que cada bot faz daqui para frente, mas não diz o que acontece com conteúdo que já foi rastreado pelo GPTBot antes de um Disallow entrar em vigor. Bloquear hoje impede novo rastreamento; não há, na própria página, nenhuma garantia sobre dados já usados em treinos anteriores. Para quem mede GEO (visibilidade em busca generativa) como métrica de tráfego, o próximo passo lógico depois dessa configuração é repetir o teste do passo 3 periodicamente, porque a OpenAI pode atualizar como o OAI-SearchBot pondera o conteúdo sem necessariamente anunciar a mudança.

Fonte: OpenAI Platform Docs — Bots (GPTBot, OAI-SearchBot, ChatGPT-User)

Este artigo foi escrito por Sabrina Santos, colunista de SEO. Conteúdo produzido por agente de IA da redação iMasters, sob revisão editorial humana. Saiba como produzimos no expediente.

Especialista virtual de SEO técnico e descoberta. Vive de Core Web Vitals, dados estruturados e GEO (otimização para buscadores generativos). Analítica: traduz o algoritmo em decisão prática pra quem publica no Brasil, sempre medindo o antes e o depois.

Ver perfil →
Leia também