# robots.txt — www.desky.la # # PRECEDENCIA — leer antes de tocar. Un crawler obedece UN SOLO grupo: el que matchea su product # token, y lo obedece completo. "User-agent: *" aplica solo "if no matching group exists" # (RFC 9309 §2.2.1); Google lo dice igual: "Only one group is valid for a particular crawler". # O sea: un grupo con nombre NO hereda NADA de "*". # # Por eso todos los grupos que permiten crawleo repiten `Disallow: /operator/`, y los user-agents # van agrupados de a varios sobre un mismo bloque de reglas. Si sumás un token nuevo, metelo en el # grupo que corresponda; NO le abras un grupo propio con solo `Allow: /`, porque eso le abre el # panel interno (fue exactamente el bug que tenían GPTBot, ClaudeBot, PerplexityBot y Googlebot). # ——— Fuera. Scrapers de SEO y de datos: consumen crawl budget y no traen una sola visita. # SemrushBot-OCOB y -SWA son las variantes de IA de Semrush: el token "SemrushBot" NO las cubre, # el match es por product token completo. Bytespider declara no respetar robots.txt, así que acá # lo que queda documentada es la intención (el bloqueo real, si hace falta, va en el WAF). User-agent: PetalBot User-agent: AhrefsBot User-agent: SemrushBot User-agent: SemrushBot-OCOB User-agent: SemrushBot-SWA User-agent: Bytespider Disallow: / # ——— Buscadores clásicos. Googlebot es además el que alimenta los AI Overviews y el AI Mode de # Google: no hay ningún token de IA que los controle por separado. User-agent: Googlebot User-agent: Bingbot User-agent: Applebot Allow: / Disallow: /operator/ # ——— Motores de respuesta con IA. Indexan para citar con link, o leen una URL puntual porque un # usuario la pidió. Son los que traen tráfico y los que contestan "¿qué es Desky?", así que van # permitidos y sin crawl-delay. # Ojo con dos: Perplexity-User y DeepSeekBot declaran NO respetar robots.txt, y ora-agent no tiene # documentación pública del vendor — el token sale del propio audit, no de un registro. User-agent: OAI-SearchBot User-agent: ChatGPT-User User-agent: Claude-SearchBot User-agent: Claude-User User-agent: PerplexityBot User-agent: Perplexity-User User-agent: DuckAssistBot User-agent: MistralAI-User User-agent: cohere-ai User-agent: Amazonbot User-agent: ora-agent Allow: / Disallow: /operator/ # ——— Crawlers de entrenamiento. Los dejamos entrar A PROPÓSITO: lo que publicamos es copy de # marketing y fichas de espacios, no hay nada licenciable, y "Desky" choca con una marca de # escritorios regulables — estar en los pesos del modelo juega a favor de la desambiguación. # Google-Extended y Applebot-Extended NO son crawlers: son tokens de control de entrenamiento # (ningún request se identifica así). Bloquearlos no saca a nadie de Google Search, de los AI # Overviews ni del índice de Applebot. # Si se decide "indexar sí, entrenar no": este grupo pasa a `Disallow: /` y se le borra la línea # del /operator/. Es la única edición necesaria. User-agent: GPTBot User-agent: ClaudeBot User-agent: anthropic-ai User-agent: Google-Extended User-agent: Applebot-Extended User-agent: CCBot User-agent: Meta-ExternalAgent User-agent: DeepSeekBot Allow: / Disallow: /operator/ # ——— Todo lo demás. User-agent: * Allow: / # Panel interno. El editor de blog vive en /operator/blog y su HTML se sirve a cualquiera (el gate # corre en el cliente), así que no debe crawlearse. Las rutas también declaran noindex. Disallow: /operator/ # Crawl-delay no está en RFC 9309 y Google lo ignora explícitamente (sus campos soportados son # user-agent, allow, disallow y sitemap). Lo dejamos solo acá, para crawlers desconocidos. Crawl-delay: 2 Sitemap: https://www.desky.la/sitemap.xml # Índice en markdown para agentes: https://www.desky.la/llms.txt # ("Llms-txt:" no es un campo del estándar y no lo lee ningún consumidor real, a diferencia de # "Sitemap:". Por eso va como comentario. El descubrimiento formal va por el header Link de # src/middleware.ts y por el propio llms.txt.)