# robots.txt para IAs: bloquear o treino sem sumir das respostas

> As empresas de IA usam robôs diferentes para coisas diferentes: um coleta páginas para treinar modelos (como o GPTBot e o ClaudeBot), outro indexa para respostas com link (como o OAI-SearchBot e o PerplexityBot) e um terceiro abre a página quando alguém pede (como o ChatGPT-User). Cada um tem um nome próprio no robots.txt. Bloquear todos de uma vez tira o site das respostas das IAs; bloquear só os de treino evita o uso do conteúdo em modelos e mantém o site citado. Este guia lista os robôs, mostra os dois arquivos mais comuns e como ver nos logs quem visita o seu site.

- Endereço oficial: https://pradev.com.br/guias/robots-txt-para-ias-gptbot-claudebot
- Tipo: Guia
- Publicado em: 2026-10-02
- Atualizado em: 2026-10-02
- Autor: Leonardo Gaertner (https://pradev.com.br/sobre)
- Ferramentas: [Gerador de Robots.txt](https://pradev.com.br/gerador-de-robots-txt), [Gerador de Meta Tags SEO](https://pradev.com.br/gerador-de-meta-tags-seo)

## Os três tipos de robô de IA

Quando se fala em "bloquear as IAs", há três coisas diferentes em jogo, e cada empresa usa um robô (um user-agent) para cada uma:

- Treino: coleta páginas para treinar os próximos modelos. Bloquear não tira o site da busca: só pede que o conteúdo novo fique fora dos dados de treino.
- Busca: indexa páginas para que a IA responda com link para a fonte, como a busca do ChatGPT e o Perplexity. Bloquear tira o site dessas respostas, que são justamente as que trazem visitas.
- Acesso a pedido: abre uma página na hora em que alguém pede ("resuma este link"). Como a ação parte de uma pessoa, algumas empresas não aplicam o robots.txt a esses acessos.

Por isso não existe um único "robô do ChatGPT": bloquear o GPTBot não tira o site da busca do ChatGPT, e liberar o OAI-SearchBot não libera o treino. Cada nome é independente.

## Os robôs de cada empresa

### OpenAI (ChatGPT)

- `GPTBot`: treino.
- `OAI-SearchBot`: busca do ChatGPT. Sites bloqueados não aparecem nas respostas da busca, embora ainda possam surgir como link de navegação. A OpenAI informa que leva cerca de 24 horas para aplicar uma mudança no robots.txt.
- `ChatGPT-User`: acesso a pedido de quem usa o ChatGPT. A documentação da OpenAI avisa que, por partir do usuário, as regras do robots.txt podem não valer.

### Anthropic (Claude)

- `ClaudeBot`: treino.
- `Claude-SearchBot`: busca do Claude.
- `Claude-User`: acesso a pedido. A Anthropic informa que os três respeitam o robots.txt, inclusive o Crawl-delay.

### Google, Apple, Perplexity e outros

- `Google-Extended`: não é um robô, é um nome que o Googlebot consulta. Bloqueá-lo pede que o conteúdo não seja usado para treinar o Gemini nem para embasar respostas dele, sem nenhum efeito na Pesquisa Google, inclusive nos AI Overviews, que usam o índice normal da busca.
- `Applebot-Extended`: mesma ideia para a Apple. O Applebot continua rastreando para a Siri e o Spotlight; o Extended só diz se o conteúdo pode treinar os modelos da Apple.
- `PerplexityBot`: índice do Perplexity. O `Perplexity-User`, que abre páginas a pedido, em geral não segue o robots.txt.
- `meta-externalagent` (Meta), `CCBot` (Common Crawl, base pública usada para treinar muitos modelos) e `Bytespider` (ByteDance): coleta para treino.

Os nomes mudam de tempos em tempos e novas empresas aparecem. Confira a página oficial de cada uma (nas fontes, no fim do guia) antes de publicar.

## O arquivo mais comum: bloquear só o treino

Para quem quer aparecer nas respostas das IAs, que citam a fonte com link, mas não quer o conteúdo usado em treino, o arquivo bloqueia os robôs de treino e deixa o resto como está. Várias linhas User-agent seguidas formam um único grupo, então o Disallow: / vale para todos eles:

```text
# Bloqueia a coleta para treino de IA e mantém o site
# na busca do Google e nas respostas com link das IAs.
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: meta-externalagent
User-agent: CCBot
User-agent: Bytespider
Disallow: /

# Todos os outros, inclusive OAI-SearchBot, Claude-SearchBot e PerplexityBot
User-agent: *
Disallow: /admin/

Sitemap: https://seusite.com.br/sitemap.xml
```

_robots.txt. Os robôs de busca das IAs caem no grupo *, como o Googlebot._

Um detalhe que pega muita gente: o robô usa só o grupo com o nome dele. O GPTBot, aqui, segue o Disallow: / e ignora o grupo *. Se você criar um grupo para um robô de busca, repita nele as regras do * que também devem valer, como o Disallow: /admin/. O [gerador de robots.txt](https://pradev.com.br/gerador-de-robots-txt) monta o arquivo e tem um teste para conferir o que cada robô pode acessar.

## Bloquear todas as IAs e continuar no Google

Para tirar o conteúdo de treino, busca e acesso a pedido das IAs, liste os três tipos de robô. Googlebot e Bingbot ficam de fora da lista, então o site continua na busca normal:

```text
# Bloqueia treino, busca e acesso a pedido de usuários das IAs.
# O site continua no Google e no Bing.
User-agent: GPTBot
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: ClaudeBot
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
User-agent: Perplexity-User
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: meta-externalagent
User-agent: CCBot
User-agent: Bytespider
Disallow: /

User-agent: *
Allow: /
```

_robots.txt. ChatGPT-User e Perplexity-User podem ignorar o arquivo._

Há dois limites. O primeiro: os AI Overviews do Google usam o índice da busca, então não saem com o robots.txt sem tirar o site do Google. Para limitar o trecho mostrado, use as meta tags `nosnippet` ou `max-snippet`, que o [gerador de meta tags](https://pradev.com.br/gerador-de-meta-tags-seo) ajuda a montar, ou o atributo `data-nosnippet` em partes da página. O segundo: o robots.txt é um pedido, não uma trava. Robôs que o ignoram só param com bloqueio no servidor ou no firewall, pelo user-agent ou pelas faixas de IP que as empresas publicam.

## Quem visita o seu site: conferindo os logs

Antes de decidir, vale ver quais robôs de IA já passam pelo site. O log de acesso do Nginx ou do Apache guarda o user-agent de cada pedido, e o nome do robô aparece no meio dele, como em "compatible; GPTBot/1.2". Os códigos abaixo contam as visitas de cada um:

```javascript
// Conta as visitas de robôs de IA em um log de acesso no formato combinado
// (Nginx e Apache), em que o user-agent é o último campo entre aspas.
const ROBOS = ['GPTBot', 'OAI-SearchBot', 'ChatGPT-User', 'ClaudeBot', 'Claude-SearchBot', 'Claude-User', 'PerplexityBot', 'Perplexity-User', 'meta-externalagent', 'CCBot', 'Bytespider', 'Applebot'];
const PADROES = ROBOS.map((r) => [r, new RegExp(`\\b${r}\\b`, 'i')]);

function contarRobosIa(log) {
  const contagem = {};
  for (const linha of log.split('\n')) {
    const ua = linha.match(/"([^"]*)"\s*$/)?.[1];
    if (!ua) continue;
    // O nome aparece no meio do user-agent: "...; compatible; GPTBot/1.2; ..."
    const achado = PADROES.find(([, p]) => p.test(ua));
    if (achado) contagem[achado[0]] = (contagem[achado[0]] ?? 0) + 1;
  }
  return contagem;
}

// Node.js: contarRobosIa(require('fs').readFileSync('/var/log/nginx/access.log', 'utf8'))
console.log(contarRobosIa('1.2.3.4 - - [02/Oct/2026:10:00:00 +0000] "GET / HTTP/1.1" 200 512 "-" "Mozilla/5.0; compatible; GPTBot/1.2; +https://openai.com/gptbot"')); // { GPTBot: 1 }
```

_JavaScript. Node.js. Para o log inteiro, leia o arquivo com fs.readFileSync._

```python
import re
from collections import Counter

# Conta as visitas de robôs de IA em um log de acesso no formato combinado
# (Nginx e Apache), em que o user-agent é o último campo entre aspas.
ROBOS = ["GPTBot", "OAI-SearchBot", "ChatGPT-User", "ClaudeBot", "Claude-SearchBot", "Claude-User",
         "PerplexityBot", "Perplexity-User", "meta-externalagent", "CCBot", "Bytespider", "Applebot"]
PADROES = [(r, re.compile(rf"\b{re.escape(r)}\b", re.I)) for r in ROBOS]


def contar_robos_ia(log: str) -> Counter:
    contagem = Counter()
    for linha in log.splitlines():
        m = re.search(r'"([^"]*)"\s*$', linha)
        if not m:
            continue
        robo = next((r for r, p in PADROES if p.search(m.group(1))), None)
        if robo:
            contagem[robo] += 1
    return contagem


# with open("/var/log/nginx/access.log", encoding="utf-8", errors="replace") as f:
#     print(contar_robos_ia(f.read()).most_common())
```

_Python_

O user-agent pode ser falsificado: qualquer um pode se apresentar como GPTBot. Se a contagem servir para uma decisão importante, confira se o IP pertence às faixas publicadas pela empresa. Se o site usa a Cloudflare, olhe também o painel: ela tem opções próprias para bloquear robôs de IA, que valem antes do robots.txt e podem estar ligadas sem você saber.

## Como decidir

- Site que vive de visitas (blog, loja, ferramentas): libere os robôs de busca e de acesso a pedido. As respostas com link são uma fonte crescente de visitas. Bloquear o treino é uma escolha sua e não afeta essas visitas.
- Conteúdo pago ou exclusivo: bloqueie os três tipos, e proteja o conteúdo com login, que é o que de fato impede a leitura.
- Documentação de produto: libere tudo. Quanto mais as IAs souberem do seu produto, melhores as respostas para quem pergunta sobre ele.

Mudanças no robots.txt valem para as próximas visitas: o que já foi coletado não sai dos modelos treinados. E o arquivo precisa estar na raiz do domínio, em /robots.txt, com cada subdomínio tendo o seu.

## Perguntas frequentes

### Bloquear o GPTBot tira o meu site do ChatGPT?

Não. O GPTBot só coleta para treino. Quem leva o site às respostas da busca do ChatGPT é o OAI-SearchBot, e quem abre links a pedido é o ChatGPT-User. Para sair da busca do ChatGPT, bloqueie o OAI-SearchBot.

### Bloquear o Google-Extended tira o site dos AI Overviews?

Não. O Google-Extended controla o uso do conteúdo no treino e nas respostas do Gemini, mas não afeta a Pesquisa Google, e os AI Overviews usam o índice da busca. Para limitar o trecho usado, use nosnippet, max-snippet ou data-nosnippet.

### Preciso de um arquivo llms.txt?

Não é obrigatório. O llms.txt é uma proposta de arquivo com um resumo do site em Markdown, para facilitar a leitura por IAs. Ele não controla acesso: quem decide o que cada robô pode visitar continua sendo o robots.txt.

### Em quanto tempo a mudança no robots.txt vale?

Depende do robô, porque cada um relê o arquivo de tempos em tempos. A OpenAI informa cerca de 24 horas para a busca do ChatGPT, e o Google costuma guardar o arquivo por até um dia.

## Fontes

- [OpenAI: visão geral dos robôs (GPTBot, OAI-SearchBot e ChatGPT-User)](https://developers.openai.com/api/docs/bots)
- [Anthropic: como bloquear os robôs ClaudeBot, Claude-SearchBot e Claude-User](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler)
- [Google: robôs comuns, incluindo o Google-Extended](https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers)
- [Perplexity: robôs e user-agents](https://docs.perplexity.ai/guides/bots)
- [RFC 9309: Robots Exclusion Protocol](https://www.rfc-editor.org/rfc/rfc9309)

## Guias relacionados

- [Como gerar slug de URL a partir de texto com acentos](https://pradev.com.br/guias/como-gerar-slug-de-url-com-acentos): Como transformar um título com acentos em slug de URL (Ação e Reação vira acao-e-reacao) em JavaScript, Python e PHP, e os cuidados com slugs repetidos.
- [URL encode: como codificar parâmetros de URL sem quebrar nada](https://pradev.com.br/guias/url-encode-como-codificar-parametros): Quando usar encodeURIComponent ou encodeURI, por que o espaço vira + ou %20 e como codificar URL em JavaScript, Python e PHP, com código testado.
