Puse un llms.txt y me fui a los logs del servidor: esto es lo que pasó de verdad

La idea de llms.txt es tan razonable que cuesta no comprarla. Un fichero de texto plano en la raíz del dominio, escrito en markdown, con una lista curada de tus mejores páginas y una frase explicando cada una, para que un modelo de lenguaje entienda de qué va tu sitio sin tragarse trescientos kilobytes de HTML con menús, selector de idioma, aviso de cookies y tres scripts de analítica. Lo propuso Jeremy Howard, de Answer.AI, en septiembre de 2024. Lo monté en un dominio propio, lo dejé correr una temporada y después hice lo único que en esto da respuestas fiables: abrir los logs de acceso.

Lo que se sube y lo que no se sube con ello

El formato es deliberadamente tonto. Un H1 con el nombre del proyecto, un párrafo de contexto, secciones con listas de enlaces y una descripción corta por enlace. Hay una variante, llms-full.txt, que en vez de enlaces mete el contenido entero ya aplanado. Media hora de trabajo si tienes claras tus veinte páginas buenas, y un script de diez líneas si prefieres generarlo desde el CMS.

Aquí está el primer detalle que conviene tener en la cabeza antes de mirar ningún log: no existe ningún mecanismo de descubrimiento. El sitemap se puede declarar dentro de robots.txt y se puede enviar por Search Console. El llms.txt no aparece en la especificación de robots.txt, no tiene una etiqueta link con adopción real y nadie lo enlaza desde el HTML. Es una convención que depende por completo de que alguien, al otro lado, haya decidido ir a probar suerte a esa ruta concreta. Si ese alguien no lo intenta, tu fichero es un documento privado con una URL pública.

El comando que resuelve la discusión en treinta segundos

No hace falta montar nada. Con el log de acceso en formato combinado, una línea basta para separar quién pide el fichero de quién pide el resto del sitio:

grep ‘ /llms.txt’ access.log | awk -F’\»‘ ‘{print $6}’ | sort | uniq -c | sort -rn

Eso te devuelve los agentes que han tocado ese recurso y cuántas veces. Repite el mismo comando cambiando la ruta por una página cualquiera y compara. La comparación es la parte interesante, no el número absoluto.

No voy a publicar mis cifras, y no por pudor: un solo servidor, un solo dominio y un tráfico modesto no sostienen ningún porcentaje que merezca ser citado por nadie. Lo que sí es reproducible y sí tiene valor es la forma de lo que aparece. Los agentes que rastrean de verdad —los de OpenAI, los de Anthropic, los de Perplexity— pasan por el sitio con normalidad y se llevan el HTML, las plantillas, las páginas de categoría, todo. El llms.txt, mientras tanto, vive en otra liga estadística completamente distinta a la de cualquier página normal del dominio. No es que el fichero esté sellado con lacre; es que nada en el comportamiento observado sugiere que forme parte del circuito habitual de nadie.

Google-Extended no va a aparecer en tus logs. Nunca

Este es el punto donde se cae la mitad de los artículos que circulan sobre el tema. Google-Extended no es un rastreador. Es un identificador que existe únicamente para que lo pongas en tu robots.txt y así controlar si tus contenidos se usan para entrenar y alimentar los productos de IA de Google. Quien hace la petición HTTP sigue siendo Googlebot, con su user agent de siempre. Buscar Google-Extended en un log de acceso es como buscar el nombre de una cláusula contractual en la lista de invitados: no está porque no es un invitado. Lo mismo aplica a Applebot-Extended.

Los que sí verás con nombre propio son GPTBot, OAI-SearchBot y ChatGPT-User (OpenAI); ClaudeBot, Claude-User y Claude-SearchBot (Anthropic); PerplexityBot y Perplexity-User; y luego el batallón habitual de Meta-ExternalAgent, Amazonbot, Bytespider y compañía. Y cada uno tiene una función distinta: los que terminan en -User son peticiones desencadenadas por una persona que ha pedido algo en ese momento, no rastreo masivo. Meterlos todos en el mismo saco y sacar conclusiones es el error clásico.

Qué dice cada casa cuando se le pregunta

La documentación oficial es más elocuente que los logs, en realidad, porque lo que dice es prácticamente nada. Ninguno de los grandes proveedores ha anunciado que consuma llms.txt como fuente. No hay una página de ayuda de OpenAI, de Anthropic o de Perplexity que diga «si publicas este fichero, lo leeremos y lo tendremos en cuenta». Desde Google, John Mueller comparó públicamente el asunto con la vieja etiqueta meta de términos de búsqueda, y vino a decir que a día de hoy ningún sistema de IA lo usa.

La paradoja del formato: las empresas que más llms.txt publican son exactamente las mismas que fabrican los modelos que no lo leen.

Porque eso también está en los datos, y comprobarlo cuesta dos minutos: la documentación técnica de Anthropic tiene su llms.txt, y lo mismo pasa en un montón de sitios de producto para desarrolladores. En buena parte de los casos ni siquiera fue una decisión; plataformas de documentación como Mintlify lo generan de serie. De ahí viene la sensación de adopción masiva que uno tiene navegando por webs de herramientas para devs.

Entonces, ¿se mantiene o se borra?

Yo lo he dejado, con los argumentos justos y sin fantasías. El coste de mantenerlo es ridículo si lo generas automáticamente, y sí tiene dos usos que se sostienen hoy, no en un futuro hipotético. El primero, humano: es el mejor resumen navegable de tu propio sitio que vas a escribir, y pegarlo en una conversación con un modelo cuando necesitas que trabaje sobre tu producto funciona de maravilla. El segundo, interno: obliga a decidir cuáles son tus veinte páginas que importan, y ese ejercicio suele destapar cosas incómodas sobre la estructura del sitio.

Lo que no haría es tocar una sola prioridad del roadmap por esto, ni venderlo a un cliente como una acción con efecto medible, ni escribir un informe con la palabra «preparado para IA» al lado. Si mañana alguno de los grandes anuncia soporte formal, el fichero ya está puesto y no habremos perdido nada. Mientras tanto, lo que decide si un modelo entiende tu web sigue siendo bastante más aburrido: HTML limpio, títulos que dicen la verdad, contenido servido sin requerir JavaScript y un robots.txt que no bloquee por accidente a quien no querías bloquear. Eso sí sale en los logs, y sale todos los días.

fruiz

Share
Publicado por
fruiz

Recent Posts

¿Qué es el graph engineering? La explicación corta y la letra pequeña

Un compañero me mandó un tuit preguntando qué demonios era el graph engineering. Aquí va…

57 años atrás

Dos años después del castigo a las secciones de cupones: quién cortó y quién sigue igual

En mayo de 2024 Google empezó a desindexar secciones enteras alojadas dentro de medios de…

57 años atrás

Un aparato sin pantalla: ¿dónde pones los diez resultados azules?

OpenAI prepara un altavoz sin pantalla para 2027. Sin pantalla no hay diez enlaces: hay…

57 años atrás

Dos años de INP: por qué tantas webs siguen suspendiendo (y cómo medirlo sin Lighthouse)

INP sustituyó a FID en marzo de 2024 y sigue siendo el Core Web Vital…

57 años atrás

AI Overviews y CTR: lo que dicen los estudios y lo que dice tu Search Console

Pew, Ahrefs y Similarweb miden caídas fuertes de clics cuando aparece un resumen de IA;…

57 años atrás

El growth hacker ha muerto tres veces, y la tercera nos toca a los que hacemos SEO

De Craigslist a las respuestas de ChatGPT: qué buscaban de verdad los primeros growth hackers,…

57 años atrás