
# Como permitir ou bloquear os bots de IA no robots.txt

Quase todos os sites decidem isto uma vez, mal, e nunca mais lá voltam. Ou se bloqueia tudo num ataque de pânico por causa do treino, levando à frente o tráfego que traz clientes, ou não se configura nada e fica o que cada rastreador quiser assumir.

Há três posições sensatas. Aqui tens o ficheiro de cada uma e os erros que as deitam por terra.

## Primeiro, a distinção que decide tudo

As empresas de IA têm dois tipos de agente e não são intermutáveis.

**Rastreadores** que recolhem páginas em massa, ao ritmo deles, normalmente para treinar ou indexar: `GPTBot`, `ClaudeBot`, `PerplexityBot`, `CCBot`, `Bytespider`, `Google-Extended`, `Applebot-Extended`.

**Descarregadores a pedido** que vão buscar uma página porque alguém acabou de fazer uma pergunta sobre ela: `ChatGPT-User`, `Claude-User`, `Perplexity-User`. Com esse pedido ninguém está a treinar coisa nenhuma. Está alguém à espera de uma resposta sobre ti.

Bloquear os primeiros é uma decisão de negócio sobre o teu conteúdo. Bloquear os segundos parece-se mais com bloquear um visitante que escreveu o teu endereço. Quase todos os conselhos do género «bloqueia toda a IA» que vais ler não distinguem uns dos outros.

## Caso 1 — Deixá-los entrar

O padrão certo para tudo o que quer ser encontrado: documentação, editoras que querem ser citadas, negócios que querem ser recomendados.

```
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /carrinho/
Disallow: /*?session=

Content-Signal: search=yes, ai-input=yes, ai-train=no

Sitemap: https://exemplo.pt/sitemap.xml
```

Repara no que aquilo diz: entra, indexa-me, usa-me para responder a perguntas, não treines comigo. Essa posição o robots.txt sozinho não sabe exprimir — daí a secção sobre Content-Signal mais abaixo.

## Caso 2 — Respostas sim, treino não

A que a maioria dos negócios quer mesmo, e a que quase ninguém configura bem.

```
User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: CCBot
Disallow: /

User-agent: Bytespider
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: Applebot-Extended
Disallow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: Claude-User
Allow: /

User-agent: Perplexity-User
Allow: /

User-agent: *
Allow: /

Content-Signal: search=yes, ai-input=yes, ai-train=no

Sitemap: https://exemplo.pt/sitemap.xml
```

Duas coisas que convém saber sobre esse ficheiro. O `Google-Extended` controla o treino do Gemini e **não** a pesquisa da Google: bloqueá-lo não mexe no teu posicionamento. E o `Applebot-Extended` funciona da mesma maneira para a Apple Intelligence, à parte do `Applebot` que alimenta a Siri e o Spotlight.

## Caso 3 — Bloquear a IA por completo

Faz sentido para arquivos pagos, material licenciado e tudo aquilo cujo acesso vendes.

```
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: CCBot
User-agent: Bytespider
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: Amazonbot
User-agent: meta-externalagent
Disallow: /

User-agent: *
Allow: /

Content-Signal: search=no, ai-input=no, ai-train=no

Sitemap: https://exemplo.pt/sitemap.xml
```

As linhas `User-agent` empilhadas partilham as regras que vêm por baixo. É válido e muito mais fácil de manter do que catorze blocos separados.

Percebe o preço antes de escolheres isto: desapareces das respostas da IA. Quando alguém perguntar a um assistente sobre o teu setor, ele nomeia os teus concorrentes e a ti não.

## Os erros

**Só se aplica o grupo mais específico.** Um rastreador que encontra o próprio nome ignora por completo o `User-agent: *`. Portanto isto não faz o que parece:

```
User-agent: *
Disallow: /privado/

User-agent: GPTBot
Disallow: /
```

O `GPTBot` fica bloqueado em todo o lado, mas qualquer outro bot lê apenas o grupo `*` — e se amanhã puseres um `Allow` debaixo de `GPTBot`, `/privado/` deixa de estar protegido dele, porque esse grupo nunca mencionou `/privado/`.

**As linhas em branco separam grupos.** Uma linha vazia a meio de um grupo termina-o. O que vier a seguir não pertence a ninguém até ao `User-agent` seguinte.

**`Disallow:` sem nada atrás significa permitir tudo.** `Disallow: /` bloqueia tudo. Um carácter entre uma porta aberta e uma porta fechada.

**O robots.txt não é controlo de acesso.** É um pedido que os rastreadores bem-educados respeitam. Os que o ignoram vão continuar a ignorá-lo. Se algo não pode ser lido, precisa de autenticação, não de uma diretiva.

**O `Crawl-delay` é ignorado** por quase todos os rastreadores de IA. Se o problema é a carga, limita o ritmo na periferia.

## Content-Signal: dizer o quê, não só se

O robots.txt responde a uma única pergunta: podes descarregar isto. Não tem forma de dizer «indexa-me mas não treines comigo», que é precisamente a posição da maioria.

O `Content-Signal` acrescenta essa camada com três sinais independentes:

```
Content-Signal: search=yes, ai-input=yes, ai-train=no
```

- `search` — se isto pode aparecer num índice de pesquisa
- `ai-input` — se pode servir de material para uma resposta, com atribuição
- `ai-train` — se pode servir para treinar um modelo

Vai no robots.txt como acima e também pode viajar como cabeçalho HTTP em cada resposta, que é o que nós fazemos. É uma convenção jovem, não uma norma que alguém seja obrigado a respeitar — mas custa uma linha, é lida por uma máquina e exprime uma intenção que um `Disallow` não consegue.

## Confirma que o teu chega

Escrever o ficheiro não é o mesmo que servi-lo:

```bash
curl -s https://exemplo.pt/robots.txt
curl -sI https://exemplo.pt/robots.txt | grep -i "server\|cf-cache-status"
```

O segundo comando importa mais do que parece. Se estás atrás de uma CDN sem robots.txt próprio, a CDN pode responder por ti com um ficheiro que nunca escreveste: um `200` credível, sem nenhuma das tuas regras e sem o teu sitemap. O nosso fez exatamente isso durante meses, enquanto o nosso servidor devolvia `404`.

[Gera o teu robots.txt](/pt/tools/robots-txt-generator) · [Verifica o que serves](/pt/tools/robots-txt-checker) · [Os bots estão autorizados?](/pt/tools/ai-crawlers-checker)
