Al terminar esta lección sabrás escribir las directivas de robots.txt que corresponden a los tres agentes de Anthropic por separado y auditar tus registros de servidor para ver cuál de ellos pasa por tu sitio. Es una lección de mecanismo: cómo se agrupan las directivas y qué se puede demostrar con los datos publicados.
El dato que casi todas las guías se saltan: el archivo de rangos de IP que Anthropic publica para identificar a sus rastreadores no contiene ningún nombre de bot. En la consulta del 20 de septiembre de 2026 hecha para la investigación de este curso contenía 26 prefijos IPv4 repartidos entre Google Cloud, Azure y AWS, y nada más. La consecuencia aparece en muy pocos sitios: puedes verificar que una petición sale de un rango de Anthropic, pero no cuál de los tres agentes la hizo. Eso solo lo dice la cadena de user-agent, que cualquiera puede falsificar escribiéndola.
Los tres agentes son ClaudeBot, Claude-User y Claude-SearchBot, y la documentación de soporte de Anthropic pide un bloque User-agent: propio para cada uno. Bloquear uno no bloquea a los demás. Esa frase suena obvia escrita así y es el error de configuración más repetido con estos bots.
Dos avisos de alcance. El mapa de rastreadores de IA de todos los proveedores vive en el nivel 4 del curso, GEO y AIO, y aquí no se repite. Y esta lección no te dice si debes bloquearlos: es una decisión de negocio sobre la que el sector está dividido, y más abajo verás la mejor evidencia de cada bando sin que el curso dicte sentencia.
Lo que vas a aprender
- Distinguir ClaudeBot, Claude-User y Claude-SearchBot, y por qué cada uno necesita su propio bloque en
robots.txt. - Cómo agrupa las directivas un rastreador que sigue el protocolo de exclusión: el grupo específico sustituye al comodín, no se suma a él.
- Auditar tu
robots.txty tus logs con un script que puedes ejecutar hoy y que no hace ninguna petición de red. - Qué demuestra la verificación por IP y qué no demuestra, que es la parte que casi nadie escribe.
- Cuál es la evidencia de cada bando en la discusión sobre bloquear rastreadores de IA, y qué preguntas esa evidencia no resuelve.
Tres agentes, no uno: qué está documentado y qué no
Anthropic documenta tres agentes distintos que pueden llegar a tu servidor (ClaudeBot, Claude-User y Claude-SearchBot) y su artículo de soporte, «Does Anthropic crawl data from the web, and how can site owners block the crawler?», explica el bloqueo por robots.txt agente por agente. El rastreo (crawling) es la descarga automática de páginas por un programa; robots.txt es el archivo en la raíz del dominio donde declaras qué rutas puede pedir cada programa. La base de cómo encaja eso en un buscador está en cómo funciona Google.
Conviene separar lo documentado de lo que no lo está:
| Agente | Token en el user-agent | ¿Necesita bloque propio? | ¿Se distingue por IP? |
|---|---|---|---|
| ClaudeBot | ClaudeBot |
Sí | No |
| Claude-User | Claude-User |
Sí | No |
| Claude-SearchBot | Claude-SearchBot |
Sí | No |
La segunda columna es el token, la única parte del user-agent que interviene en el emparejamiento de robots.txt. Lo que venga detrás (versión, URL de contacto, cadena de navegador) varía, y aquí no se reproduce ninguna cadena completa porque el registro de esta lección no recoge ninguna publicada por Anthropic. La columna de la derecha sale del archivo de prefijos que Anthropic publica en claude.com/crawling/bots.json: lista rangos de red y no asocia ninguno a un nombre de agente. Es el mecanismo de verificación que Anthropic publica, y no llega al detalle que su propia documentación de bloqueo exige.
Dos notas de honestidad. El artículo de soporte de Anthropic no muestra fecha absoluta: su plataforma solo renderiza una marca relativa del tipo «actualizado hace más de un mes». El registro de investigación de este curso anota 7 de abril de 2026, pero esa fecha no se pudo contrastar contra la página en vivo, así que se cita el registro y no la página.
La segunda: esta lección no describe la función interna de cada agente. El registro recoge los tres nombres y la exigencia de un bloque por cada uno, no una descripción por agente firmada por Anthropic, y aquí no se inventa ninguna. La configuración no depende de eso, sino de que son tres tokens distintos.
Por qué bloquear ClaudeBot no bloquea a Claude-User ni a Claude-SearchBot
ClaudeBot, Claude-User y Claude-SearchBot leen cada uno un solo grupo de directivas: el que lleva su propio nombre, y solo si ese grupo no existe, el del comodín User-agent: *. Así funciona el protocolo de exclusión de robots para cualquier rastreador que lo siga, y las reglas de dos grupos no se acumulan. Por eso una línea Disallow: / bajo User-agent: ClaudeBot deja a Claude-User y a Claude-SearchBot exactamente donde estaban: bajo el comodín, o sin ninguna regla si no hay comodín.
Search Engine Land lo formuló en un artículo del 25 de febrero de 2026: bloquear un bot no bloquea a los otros. Ese artículo no se pudo verificar en vivo el 25 de septiembre de 2026, así que se cita por publicación, autor y fecha, sin enlace, como el resto de fuentes en la misma situación.
Este robots.txt es el error típico, y está escrito aquí como ejemplo de un fallo, no como recomendación:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
User-agent: ClaudeBot
Disallow: /
Quien lo escribió creía haber bloqueado a Claude. Bloqueó a un agente de tres y dejó a los otros dos con la regla del comodín, que solo cierra /wp-admin/. No hace falta creerlo: es lo primero que imprime el diagnóstico que viene a continuación. El contexto general de robots.txt, presupuesto de rastreo y directivas de indexación está en el nivel 2, SEO técnico.
El archivo de IPs verifica a Anthropic, no al agente
La verificación por IP es la forma fuerte de comprobar que una petición viene de quien dice venir, y con los tres bots de Claude se queda a medio camino. Anthropic publica en claude.com/crawling/bots.json los rangos desde los que salen sus agentes. En la consulta del 20 de septiembre de 2026 hecha para la investigación de este curso, ese archivo declaraba un creationTime del 18 de agosto de 2026 y contenía 26 prefijos IPv4 entre Google Cloud, Azure y AWS. Ninguna entrada llevaba nombre de bot.
De ahí sale la única conclusión que los datos permiten: una petición desde un prefijo listado es de Anthropic, y ahí se acaba lo demostrable. Cuál de los tres agentes la hizo solo lo dice la cadena de user-agent, texto que el cliente elige y que cualquiera puede copiar. Para el trabajo diario significa que todo análisis de logs por agente descansa sobre un dato no verificable: ningún reparto de peticiones entre ClaudeBot, Claude-User y Claude-SearchBot puede presentarse como hecho comprobado.
Aquí toca nombrar a Anthropic críticamente, con el enlace delante: su artículo de soporte sobre el rastreo pide configurar los tres agentes por separado, y la lista de IPs que la misma empresa publica para verificarlos no distingue esos tres agentes. Falta exactamente el campo que haría verificable la distinción que ella misma exige: un nombre de agente por rango, o listas separadas por agente. Sin eso se puede cumplir la instrucción y no se puede auditar el cumplimiento.
Dos cautelas. El recuento de 26 prefijos es de una fecha concreta y el archivo cambia, porque el propio creationTime indica que se regenera, así que hay que volver a consultarlo antes de usarlo. Y no se pudo verificar en vivo el 25 de septiembre de 2026: la cifra va citada contra el registro del 20 de septiembre, no contra una consulta posterior.
Diagnóstico: auditar tu robots.txt y tus logs sin salir a la red
El diagnóstico de esta lección es un script que lee tres archivos locales y responde a dos preguntas: qué grupo de robots.txt aplica de verdad a cada uno de los tres agentes, y qué peticiones de tus logs se pueden atribuir a un rango de Anthropic. No hace ninguna petición de red, a propósito: el archivo de prefijos lo descargas y lo guardas tú, así queda constancia de con qué versión se auditó.
Necesitas tres archivos en el mismo directorio:
robots.txt: el de tu sitio, tal cual lo sirve el servidor.access.log: un tramo de tu registro de accesos en formato combinado (el de Apache y Nginx por defecto), que incluye IP del cliente y user-agent.prefijos.txt: un prefijo de red por línea, del archivo de Anthropic que hayas descargado. El script tolera las comillas y las comas del JSON original, así que puedes pegar las líneas tal cual.
Los prefijos del ejemplo son rangos de documentación (192.0.2.0/24 y 198.51.100.0/24), reservados para ejemplos. No son los de Anthropic: los reales salen del archivo que descargues.
#!/usr/bin/env python3
# auditar-bots-claude.py — audita robots.txt y logs para los tres agentes de Anthropic.
# No hace ninguna petición de red: los tres archivos se leen del disco.
# Uso: python3 auditar-bots-claude.py robots.txt access.log prefijos.txt
import sys, re, ipaddress
from collections import defaultdict
AGENTES = ["ClaudeBot", "Claude-User", "Claude-SearchBot"]
LINEA = re.compile(r'^(\S+).*?"[A-Z]+ [^"]*" \d{3} \S+ "[^"]*" "([^"]*)"')
def leer_grupos(ruta):
grupos, actual, esperando = [], None, False
for cruda in open(ruta, encoding="utf-8", errors="replace"):
linea = cruda.split("#")[0].strip()
if not linea or ":" not in linea:
continue
campo, valor = (p.strip() for p in linea.split(":", 1))
campo = campo.lower()
if campo == "user-agent":
if not esperando:
actual = {"agentes": [], "reglas": []}
grupos.append(actual)
esperando = True
actual["agentes"].append(valor.lower())
elif campo in ("allow", "disallow") and actual is not None:
esperando = False
actual["reglas"].append((campo, valor))
return grupos
def grupo_aplicable(grupos, agente):
exacto = [g for g in grupos if agente.lower() in g["agentes"]]
if exacto:
return exacto[0], "bloque propio"
comodin = [g for g in grupos if "*" in g["agentes"]]
if comodin:
return comodin[0], "solo el comodín *"
return None, "ninguna regla le aplica"
def cargar_prefijos(ruta):
redes = []
for linea in open(ruta, encoding="utf-8", errors="replace"):
linea = linea.strip().strip('",[] ')
if not linea:
continue
try:
redes.append(ipaddress.ip_network(linea, strict=False))
except ValueError:
pass
return redes
def en_lista(ip, redes):
try:
direccion = ipaddress.ip_address(ip)
except ValueError:
return False
return any(direccion in red for red in redes)
def token(ua):
for agente in AGENTES:
if re.search(r'(?<![A-Za-z0-9-])' + re.escape(agente) + r'(?![A-Za-z0-9-])', ua, re.I):
return agente
return None
def main(robots, log, prefijos):
redes = cargar_prefijos(prefijos)
print("== 1. robots.txt: qué grupo aplica a cada agente ==")
grupos = leer_grupos(robots)
for agente in AGENTES:
grupo, origen = grupo_aplicable(grupos, agente)
reglas = "; ".join(f"{c.capitalize()}: {v}" for c, v in grupo["reglas"]) if grupo else "-"
print(f" {agente:<18} {origen:<22} {reglas}")
print(f" [{len(redes)} prefijos IP cargados del archivo local]")
print("\n== 2. Logs: peticiones por agente y verificación por IP ==")
cuenta = defaultdict(lambda: [0, 0]) # token -> [en lista, fuera de lista]
ip_lista_sin_token, total, ilegibles = 0, 0, 0
for cruda in open(log, encoding="utf-8", errors="replace"):
m = LINEA.match(cruda.strip())
if not m:
if cruda.strip():
ilegibles += 1
continue
ip, ua = m.group(1), m.group(2)
total += 1
t = token(ua)
listada = en_lista(ip, redes)
if t:
cuenta[t][0 if listada else 1] += 1
elif listada:
ip_lista_sin_token += 1
for agente in AGENTES:
dentro, fuera = cuenta[agente]
print(f" {agente:<18} {dentro + fuera:>5} peticiones | {dentro:>5} desde IP listada | {fuera:>5} fuera de la lista")
print(f" IP listada con user-agent que no declara ningún agente: {ip_lista_sin_token}")
print(f" Líneas leídas: {total} | ilegibles: {ilegibles}")
print("\n== 3. Qué prueba esto y qué no ==")
print(" PRUEBA: la IP listada confirma que la petición sale de un rango de Anthropic.")
print(" NO PRUEBA: cuál de los tres agentes es. El archivo de prefijos no trae nombres.")
print(" NO PRUEBA: que lo de fuera de la lista no sea de Anthropic, ni que lo que")
print(" se declara ClaudeBot desde una IP ajena lo sea de verdad.")
if __name__ == "__main__":
if len(sys.argv) != 4:
sys.exit("Uso: python3 auditar-bots-claude.py robots.txt access.log prefijos.txt")
main(*sys.argv[1:])
Pruébalo antes de soltarlo sobre datos reales, con el robots.txt defectuoso de la sección anterior y seis líneas de log fabricadas: una por agente desde un prefijo listado, una que dice ser ClaudeBot desde una IP ajena, una desde prefijo listado sin agente declarado y una de un navegador:
192.0.2.0/24
198.51.100.0/24
192.0.2.10 - - [24/Sep/2026:08:14:02 +0000] "GET /curso-seo/ HTTP/1.1" 200 41210 "-" "Mozilla/5.0 (compatible; ClaudeBot)"
192.0.2.11 - - [24/Sep/2026:08:15:44 +0000] "GET /curso-seo/seo-tecnico/ HTTP/1.1" 200 38004 "-" "Mozilla/5.0 (compatible; Claude-User)"
198.51.100.7 - - [24/Sep/2026:08:16:01 +0000] "GET /robots.txt HTTP/1.1" 200 312 "-" "Mozilla/5.0 (compatible; Claude-SearchBot)"
203.0.113.9 - - [24/Sep/2026:08:17:30 +0000] "GET /curso-seo/ HTTP/1.1" 200 41210 "-" "ClaudeBot"
198.51.100.20 - - [24/Sep/2026:08:18:12 +0000] "GET /sitemap.xml HTTP/1.1" 200 9042 "-" "Mozilla/5.0 (compatible)"
203.0.113.44 - - [24/Sep/2026:08:19:58 +0000] "GET / HTTP/1.1" 200 12004 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/140.0.0.0"
Con esa entrada, python3 auditar-bots-claude.py robots.txt access.log prefijos.txt devuelve:
== 1. robots.txt: qué grupo aplica a cada agente ==
ClaudeBot bloque propio Disallow: /
Claude-User solo el comodín * Disallow: /wp-admin/; Allow: /wp-admin/admin-ajax.php
Claude-SearchBot solo el comodín * Disallow: /wp-admin/; Allow: /wp-admin/admin-ajax.php
[2 prefijos IP cargados del archivo local]
== 2. Logs: peticiones por agente y verificación por IP ==
ClaudeBot 2 peticiones | 1 desde IP listada | 1 fuera de la lista
Claude-User 1 peticiones | 1 desde IP listada | 0 fuera de la lista
Claude-SearchBot 1 peticiones | 1 desde IP listada | 0 fuera de la lista
IP listada con user-agent que no declara ningún agente: 1
Líneas leídas: 6 | ilegibles: 0
== 3. Qué prueba esto y qué no ==
PRUEBA: la IP listada confirma que la petición sale de un rango de Anthropic.
NO PRUEBA: cuál de los tres agentes es. El archivo de prefijos no trae nombres.
NO PRUEBA: que lo de fuera de la lista no sea de Anthropic, ni que lo que
se declara ClaudeBot desde una IP ajena lo sea de verdad.
El primer bloque demuestra el fallo de configuración: ClaudeBot tiene bloque propio con Disallow: / y los otros dos caen al comodín, que solo cierra /wp-admin/. El segundo reparte las peticiones y separa las que salen de un prefijo listado. El tercero es lo que hace honesto al informe: dice por escrito qué no se puede concluir.
Tres lecturas del ejemplo. La petición que se declara ClaudeBot desde 203.0.113.9 está fuera de la lista y no es atribuible a Anthropic. La de 198.51.100.20 sale de prefijo listado sin agente declarado: tráfico verificable como de Anthropic y no clasificable por bot. Y las tres primeras tampoco demuestran qué agente las hizo: demuestran origen, no identidad.
Qué hacer con el resultado. Si dos de los tres agentes caen al comodín sin que fuera tu intención, tienes un cambio de una línea por agente. Si aparecen peticiones con cadena de Claude desde fuera de la lista, eso es una decisión de servidor (limitar por tasa, exigir verificación, ignorarlo), no un dato de SEO. Para repetir la auditoría cada mes, el sitio natural donde empaquetarla es una skill de Claude con el script y los prefijos dentro. Medir de continuo lo que pasa por tus logs es materia del nivel 5, analítica y medición.
La sintaxis, en sus dos variantes
La directiva de robots.txt para ClaudeBot, Claude-User y Claude-SearchBot se escribe igual en los dos sentidos posibles: tres bloques User-agent:, uno por nombre exacto, y debajo de cada uno lo que hayas decidido. Ninguna de las dos variantes que vienen a continuación es una recomendación de este curso: elegir entre ellas es la decisión que la siguiente sección deja abierta a propósito.
Variante de bloqueo:
User-agent: ClaudeBot
Disallow: /
User-agent: Claude-User
Disallow: /
User-agent: Claude-SearchBot
Disallow: /
Variante de permiso explícito:
User-agent: ClaudeBot
Allow: /
User-agent: Claude-User
Allow: /
User-agent: Claude-SearchBot
Allow: /
Una precisión sobre la segunda. Si tu robots.txt no tiene un comodín restrictivo, esos bloques no cambian nada: lo no prohibido ya está permitido. Sirven para dejar constancia de una decisión y, sobre todo, sacan a esos tres agentes del comodín. En cuanto un agente tiene grupo propio deja de leer el grupo *, así que un permiso explícito mal escrito abre rutas que el comodín tenía cerradas. Si tu comodín cierra /carrito/ y /mi-cuenta/, esas rutas hay que volver a escribirlas dentro de cada bloque nuevo que no cierre el sitio entero. En el ejemplo siguiente, mixto a propósito, ClaudeBot queda cerrado del todo y los otros dos heredan por escrito las dos rutas que cerraba el comodín:
User-agent: ClaudeBot
Disallow: /
User-agent: Claude-User
Disallow: /carrito/
Disallow: /mi-cuenta/
User-agent: Claude-SearchBot
Disallow: /carrito/
Disallow: /mi-cuenta/
Ese tercer ejemplo es el que más se parece a un caso real, y también es sintaxis, no consejo. Después de tocar el archivo, vuelve a pasar el diagnóstico: su primer bloque dirá, agente por agente, qué reglas quedan aplicándose.
Lo que robots.txt no controla
Un bloque para ClaudeBot, Claude-User o Claude-SearchBot no impide por sí mismo ninguna descarga: robots.txt es un protocolo voluntario, una declaración que el cliente decide respetar, no un control de acceso. Un servidor que quiera impedir de verdad una descarga necesita responder con un código de error o pedir autenticación, no escribir una línea en un archivo de texto. Vale para los tres agentes de Anthropic igual que para cualquier otro cliente.
Tampoco describe robots.txt cómo está organizado el sistema que hay detrás de cada agente, y ese reparto lo fija cada proveedor en su documentación. Para ClaudeBot, Claude-User y Claude-SearchBot el registro de investigación de este curso no recoge ningún cambio de ese tipo. El ejemplo fechado que sí recoge es de otro proveedor: en la revisión de diciembre de 2025 de su documentación, OpenAI retiró la frase que declaraba que ChatGPT-User respeta robots.txt, y el mismo registro anota que GPTBot comparte los resultados de rastreo con OAI-SearchBot. Es un cambio de documentación con fecha, citado aquí como tal y sin extrapolarlo a Anthropic.
Tres límites más. robots.txt no es noindex: impedir el rastreo de una URL no borra las copias que ya existan en ningún sistema, porque rastreo, indexación y posicionamiento son tres cosas distintas, como se explica en qué es el SEO y qué no es en 2026. La cadena de user-agent no es una identidad, como demuestra el diagnóstico. Y bloquear por IP, la reacción instintiva cuando lo anterior falla, es poco fiable, como señalaba el artículo de Search Engine Land del 25 de febrero de 2026, porque los rangos cambian: una lista copiada hace tres meses bloquea a quien ya no está y deja pasar a quien acaba de llegar.
Dónde discrepa el sector: ¿hay que bloquear a los rastreadores de IA?
Si conviene bloquear a ClaudeBot y a los demás rastreadores de IA es la pregunta que trae aquí a casi todo el mundo, y este curso no la responde: es una decisión de negocio disfrazada de decisión técnica, y la evidencia disponible no la resuelve. Lo que sí puede hacer es poner la mejor prueba de cada bando encima de la mesa y decir qué no contesta.
La medición más citada es la de Cloudflare Radar del 31 de agosto de 2026, sobre unos 4.000 archivos robots.txt. Mide la proporción entre sitios que bloquean y sitios que permiten cada agente.
| Agente | Tipo según Cloudflare Radar | Ratio bloqueo:permiso |
|---|---|---|
| ClaudeBot | Entrenamiento | 2,39:1 |
| GPTBot | Entrenamiento | 2,33:1 |
| OAI-SearchBot | Respuesta | 0,94:1 |
La clasificación por tipo de esa tabla es de Cloudflare Radar, no de los proveedores: Anthropic no publica una función por agente que este curso haya podido verificar, así que «entrenamiento» describe cómo agrupa la medición, no una declaración de Anthropic sobre ClaudeBot. El bando que bloquea el entrenamiento lee la tabla como práctica establecida: los editores bloquean los bots de entrenamiento entre dos y tres veces más de lo que los permiten, y permiten en neto los que alimentan respuestas con enlace. El bando contrario responde que la tabla mide lo que la gente escribe en un archivo, no lo que le pasa después a su tráfico ni a sus citas, y añade lo de la sección anterior: si una directiva por agente no describe lo que ocurre dentro del sistema del proveedor, bloquear es una señal de intención más que un control.
Lo que esos datos no pueden resolver: la proporción de Cloudflare Radar describe el contenido de unos archivos de texto, no el tráfico, ni las citas, ni los ingresos de esos sitios, ni antes ni después de bloquear. Cómo se seleccionaron esos 4.000 archivos no consta en el registro de investigación de este curso, y no se pudo verificar en vivo el 25 de septiembre de 2026, así que la cifra no puede tratarse como una muestra representativa de la web. Y no hay ninguna medición publicada que compare sitios equivalentes con y sin bloqueo: mientras no exista, quien afirme que bloquear «te saca de las respuestas de la IA» o que «no tiene ningún coste» está extrapolando, en una dirección o en la otra.
La posición del curso es explícita: ni recomienda bloquear ni recomienda permitir. La decisión la toma quien sabe qué vale su contenido y con qué condiciones lo cede; lo que esta lección sí enseña es a escribir un robots.txt que diga lo decidido, para los tres agentes por separado.
Una aclaración de estructura. Este nivel 8 trata de usar los modelos como herramienta de trabajo; cómo te encuentran y te citan los buscadores con IA es el nivel 4, y las capacidades y los límites de Claude aplicados a SEO están en qué puede y qué no puede hacer Claude en SEO. Es una división del temario de este curso, no una afirmación de que sean dos oficios distintos: eso también se discute y tampoco se zanja aquí.
Errores comunes
- Escribir un solo bloque «para Claude». Son tres tokens distintos y la documentación de Anthropic pide un bloque por agente: un grupo con nombre genérico no cubre a los tres. Arreglo: tres bloques
User-agent:, uno por nombre exacto, y pasar el diagnóstico para confirmarlo. - Dar por hecho que las reglas se suman. Un agente con grupo propio deja de leer el comodín, así que un bloque específico permisivo puede abrir rutas que
*tenía cerradas. Arreglo: repetir dentro de cada bloque nuevo las reglas del comodín que quieras conservar. - Tratar el user-agent del log como una identidad. Es texto que el cliente elige, y el ejemplo incluye a propósito una línea que se declara ClaudeBot desde una IP ajena. Arreglo: cruzarlo contra los prefijos publicados y presentar el reparto por agente como lo que es, una declaración no verificada.
- Bloquear por rangos de IP copiados hace meses. El archivo de Anthropic se regenera (el que se consultó el 20 de septiembre de 2026 declaraba
creationTimedel 18 de agosto de 2026) y Search Engine Land ya señalaba el 25 de febrero de 2026 que el bloqueo por IP es poco fiable. Arreglo: usar las IPs para verificar, no para bloquear, y volver a descargar el archivo cada vez que audites. - Decidir la política de bloqueo leyendo un artículo. Incluido este. No hay ninguna medición publicada del efecto de bloquear sobre el tráfico o las citas. Arreglo: dejar por escrito la fecha, el motivo y quién decidió, y revisarlo cuando aparezca evidencia de resultado.
Resumen
- Anthropic documenta tres agentes (ClaudeBot, Claude-User y Claude-SearchBot) y cada uno necesita su propio bloque
User-agent:enrobots.txt. - Un rastreador que sigue el protocolo usa un único grupo de directivas: el suyo si existe, el comodín
*si no. Las reglas de dos grupos nunca se suman. - Por eso bloquear ClaudeBot deja a Claude-User y a Claude-SearchBot exactamente como estaban, que es el error de configuración más frecuente con estos bots.
- El archivo
claude.com/crawling/bots.json, consultado el 20 de septiembre de 2026 para este curso, tenía 26 prefijos IPv4,creationTimedel 18 de agosto de 2026 y ningún nombre de bot. - Por tanto la verificación por IP demuestra que una petición es de Anthropic y no demuestra cuál de los tres agentes la hizo; el reparto por agente descansa en cadenas de user-agent falsificables.
- El diagnóstico de esta lección cruza las dos cosas en local, sin red, y escribe en su salida qué no se puede concluir.
robots.txtes voluntario, no esnoindexy no describe lo que pasa dentro del sistema del proveedor una vez rastreada la página.- Si bloquear o permitir a los rastreadores de IA compensa es una discusión abierta: la medición de Cloudflare Radar del 31 de agosto de 2026, sobre unos 4.000 archivos, registra conducta declarada y no resultados, y este curso no da veredicto.
Preguntas frecuentes
Si bloqueo ClaudeBot, ¿deja Claude de leer mi web?
No necesariamente. Un bloque para ClaudeBot solo afecta a ClaudeBot: Claude-User y Claude-SearchBot leen su propio grupo de directivas, o el comodín * si no lo tienen, según documenta el artículo de soporte de Anthropic sobre el rastreo. Para cubrir a los tres hacen falta tres bloques. Y aun con los tres escritos, robots.txt es un protocolo voluntario, no un control de acceso.
¿Puedo saber por la IP cuál de los tres bots de Claude me visita?
No. El archivo de prefijos que Anthropic publica en claude.com/crawling/bots.json contenía, en la consulta del 20 de septiembre de 2026 hecha para este curso, 26 prefijos IPv4 y ningún nombre de agente. Una IP dentro de la lista demuestra que la petición sale de un rango de Anthropic; cuál de los tres agentes es solo lo dice la cadena de user-agent, que es falsificable. Ese es el límite duro del análisis de logs con estos bots.
¿Bloquear a ClaudeBot me quita visibilidad en las respuestas de Claude?
Nadie lo ha medido y publicado. No existe una comparación de sitios equivalentes con y sin bloqueo que mida citas o tráfico, así que cualquier respuesta tajante es una extrapolación. Cómo llega Claude a las páginas que cita se trata en la lección sobre la dependencia de Brave, aún sin publicar, y la visibilidad en buscadores con IA es materia del nivel 4 del curso.
¿Y si escribo solo User-agent: * con todo permitido?
Es una configuración válida: los tres agentes leen ese grupo, porque ninguno tiene grupo propio. El problema aparece en cuanto añades un bloque para uno de ellos, porque ese agente deja de leer el comodín y pasa a obedecer solo su grupo. Por eso el diagnóstico imprime, agente por agente, qué grupo acaba aplicándose.
Fuentes
- Anthropic, «Does Anthropic crawl data from the web, and how can site owners block the crawler?» — la página solo muestra marca de tiempo relativa, sin fecha absoluta. El registro de investigación de este curso anota 7 de abril de 2026; esa fecha no se pudo contrastar contra la página en vivo.
- Anthropic,
claude.com/crawling/bots.json, consultado el 20 de septiembre de 2026 por la investigación previa a este curso:creationTimedel 18 de agosto de 2026, 26 prefijos IPv4 en Google Cloud, Azure y AWS, sin nombres de bot. (sin enlace: no verificado en vivo el 25 de septiembre de 2026; cifras citadas contra el registro del 20 de septiembre) - Search Engine Land, artículo sobre el rastreo de los bots de Anthropic, 25 de febrero de 2026: bloquear un bot no bloquea a los otros; el bloqueo por IP es poco fiable. Sin muestra publicada. (sin enlace: no verificado en vivo el 25 de septiembre de 2026)
- Cloudflare Radar, análisis de
robots.txt, 31 de agosto de 2026, unos 4.000 archivos: ClaudeBot 2,39:1, GPTBot 2,33:1, OAI-SearchBot 0,94:1 en proporción bloqueo:permiso. El método de selección de esos archivos no consta en el registro de investigación de este curso. (sin enlace: no verificado en vivo el 25 de septiembre de 2026) - OpenAI, revisión de documentación de diciembre de 2025, anotada en el registro de investigación de este curso: retira la frase que declaraba que ChatGPT-User respeta
robots.txt; GPTBot comparte resultados de rastreo con OAI-SearchBot. (sin enlace: no verificado en vivo el 25 de septiembre de 2026) - Protocolo de exclusión de robots, RFC 9309: define que un rastreador obedece un solo grupo de directivas y que el comodín
*actúa solo como respaldo. (sin enlace: no verificado en vivo el 25 de septiembre de 2026) - Sondeo de autocompletado de Google para este curso, 20 de septiembre de 2026: la semilla
claudebotdevolvióclaudebot crawleryclaudebot user agententre otras. Indica presencia de demanda, no volumen. - Script
auditar-bots-claude.pyy su salida, material propio de doctor-seo.net, ejecutado contra los archivos de prueba reproducidos en la lección el 25 de septiembre de 2026.
Continuar el curso
- Lección anterior: Que Claude te cite: la dependencia de Brave (aún no publicada)
- Lección siguiente: Conectar Claude a tus propios datos: Search Console y GA4 por MCP (aún no publicada)
- Nivel: SEO con IA: la IA como herramienta de trabajo
- Índice del curso: Curso SEO gratis