
# Cómo permitir o bloquear los bots de IA en robots.txt

Casi todas las webs deciden esto una vez, mal, y no lo vuelven a mirar. O se bloquea todo en un ataque de pánico por el entrenamiento, llevándose por delante el tráfico que trae clientes, o no se configura nada y queda lo que cada rastreador dé por supuesto.

Hay tres posturas razonables. Aquí tienes el fichero de cada una y los errores que las anulan.

## Antes de nada, la distinción que lo decide todo

Las empresas de IA tienen dos tipos de agente y no son intercambiables.

**Rastreadores** que recogen páginas en volumen, a su ritmo, normalmente para entrenar o indexar: `GPTBot`, `ClaudeBot`, `PerplexityBot`, `CCBot`, `Bytespider`, `Google-Extended`, `Applebot-Extended`.

**Descargadores a petición** que traen una página porque alguien acaba de preguntar por ella: `ChatGPT-User`, `Claude-User`, `Perplexity-User`. Con esa petición nadie está entrenando nada. Hay alguien esperando una respuesta sobre ti.

Bloquear a los primeros es una decisión de negocio sobre tu contenido. Bloquear a los segundos se parece más a bloquear a un visitante que ha tecleado tu dirección. Casi todos los consejos de «bloquea toda la IA» que vas a leer no distinguen entre unos y otros.

## Caso 1 — Dejarlos entrar

Lo razonable por defecto para cualquier cosa que quiera ser encontrada: documentación, medios que quieren atribución, negocios que quieren que los recomienden.

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

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

Sitemap: https://ejemplo.com/sitemap.xml
```

Fíjate en lo que dice: pasa, indéxame, úsame para responder preguntas, no entrenes conmigo. Esa postura el robots.txt por sí solo no sabe expresarla; de ahí la sección de Content-Signal.

## Caso 2 — Respuestas sí, entrenamiento no

La que quiere de verdad la mayoría de los negocios, y la que casi nadie configura bien.

```
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://ejemplo.com/sitemap.xml
```

Dos cosas que conviene saber de ese fichero. `Google-Extended` controla el entrenamiento de Gemini y **no** el buscador de Google: bloquearlo no afecta a tu posicionamiento. Y `Applebot-Extended` funciona igual para Apple Intelligence, aparte del `Applebot` que alimenta Siri y Spotlight.

## Caso 3 — Bloquear la IA por completo

Tiene sentido para archivos de pago, material con licencia y cualquier cosa cuyo acceso vendas.

```
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://ejemplo.com/sitemap.xml
```

Las líneas `User-agent` apiladas comparten las reglas que vienen debajo. Es válido y mucho más fácil de mantener que catorce bloques sueltos.

Ten claro el precio antes de elegir esto: desapareces de las respuestas de IA. Cuando alguien le pregunte a un asistente por tu sector, nombrará a tus competidores y a ti no.

## Los errores

**Solo se aplica el grupo más específico.** Un rastreador que encuentra su propio nombre ignora por completo el `User-agent: *`. Así que esto no hace lo que parece:

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

User-agent: GPTBot
Disallow: /
```

`GPTBot` queda bloqueado del todo, pero cualquier otro bot lee solo el grupo `*`. Y si mañana pones un `Allow` bajo `GPTBot`, `/privado/` deja de estar protegido frente a él, porque ese grupo nunca mencionó `/privado/`.

**Las líneas en blanco separan grupos.** Una línea vacía en mitad de un grupo lo termina. Lo que venga después no pertenece a nadie hasta el siguiente `User-agent`.

**`Disallow:` sin nada detrás significa permitir todo.** `Disallow: /` bloquea todo. Un carácter entre una puerta abierta y una cerrada.

**El robots.txt no es control de acceso.** Es una petición que los rastreadores educados respetan. Los que lo ignoran van a seguir ignorándolo. Si algo no debe leerse, necesita autenticación, no una directiva.

**`Crawl-delay` lo ignoran** casi todos los rastreadores de IA. Si el problema es la carga, limita el ritmo en el borde.

## Content-Signal: decir qué, no solo si

El robots.txt responde a una sola pregunta: si puedes descargar esto. No tiene forma de decir «indéxame pero no entrenes conmigo», que es justo la postura de la mayoría.

`Content-Signal` añade esa capa con tres señales independientes:

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

- `search`: si esto puede aparecer en un índice de búsqueda
- `ai-input`: si puede usarse como material para una respuesta, con atribución
- `ai-train`: si puede usarse para entrenar un modelo

Va en el robots.txt como arriba, y también puede viajar como cabecera HTTP en cada respuesta, que es lo que hacemos nosotros. Es una convención joven, no un estándar que nadie esté obligado a respetar, pero cuesta una línea, la lee una máquina y expresa una intención que un `Disallow` no puede.

## Comprueba que el tuyo llega

Escribir el fichero no es lo mismo que servirlo:

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

El segundo comando importa más de lo que parece. Si estás detrás de un CDN sin robots.txt propio, puede que el CDN responda por ti con un fichero que nunca escribiste: un `200` verosímil sin ninguna de tus reglas y sin tu sitemap. El nuestro hizo exactamente eso durante meses mientras nuestro servidor devolvía `404`.

[Genera tu robots.txt](/es/tools/robots-txt-generator) · [Comprueba el que sirves](/es/tools/robots-txt-checker) · [¿Están permitidos los bots?](/es/tools/ai-crawlers-checker)
