Consultoría IA para empresas — 100% remoto, trabajamos con tu equipo in-house

javi@javadex.es — Diagnóstico gratuito 30 min
Despliega tu proyecto IA hoy — VPS desde 4,99€/mes con SSD NVMeVer Hostinger
Inicio/Blog/Qué es llms.txt y Cómo Implementarlo en tu Web [2026]
Volver al Blog
SEO13 de abril de 202622 min

Qué es llms.txt y Cómo Implementarlo en tu Web [2026]

Aprende qué es llms.txt, el nuevo estándar para que los modelos de IA entiendan tu web, y cómo implementarlo paso a paso en WordPress, Next.js y más.

Qué es llms.txt y Cómo Implementarlo en tu Web [2026]

TLDR: llms.txt es un archivo markdown que colocas en la raíz de tu web (/llms.txt) para decirle a los agentes de IA qué es tu sitio y dónde encontrar el contenido relevante. Lo creó Jeremy Howard (fast.ai, Kaggle). Aunque The SEO Framework detectó 0 peticiones de bots de IA al archivo en 180.000 requests, Yoast y Rank Math ya lo integran en sus plugins. La adopción sigue el mismo patrón que los XML sitemaps en 2005: estándar primero, crawlers después.


Por qué necesitas que la IA entienda tu web

Desde 2024, el tráfico procedente de modelos de lenguaje (LLMs) hacia sitios web ha crecido de forma exponencial. ChatGPT, Claude, Perplexity, Gemini y Copilot no solo responden preguntas: citan fuentes, enlazan a páginas web y redirigen usuarios a contenido original.

El problema es que estos modelos no leen tu web como lo hace Google. Un crawler de Google indexa HTML, sigue enlaces, lee robots.txt y procesa tu sitemap.xml. Un agente de IA, en cambio, necesita comprender rápidamente qué eres, qué ofreces y dónde está tu mejor contenido sin tener que rastrear todo el sitio.

Ahí entra llms.txt.

El problema que resuelve llms.txt

Los LLMs tienen un problema fundamental al interactuar con sitios web:

ProblemaConsecuencia
Ventana de contexto limitadaNo pueden procesar un sitio entero de miles de páginas
HTML es ruidosoNavegación, footers, sidebars, scripts... el contenido real es una fracción del HTML
Sin jerarquía claraUn LLM no sabe qué páginas son las más importantes de tu web
Rastreo costosoCrawlear todo un sitio consume tokens y tiempo
Sin metadatos semánticos para IArobots.txt y sitemap.xml fueron diseñados para buscadores, no para LLMs

El archivo llms.txt resuelve estos cinco problemas de una vez. Es un mapa condensado en markdown que le dice al agente de IA: "Esto es lo que soy, esto es lo que tengo, y aquí está lo importante."


Qué es exactamente llms.txt

llms.txt es un archivo en formato markdown que se sirve desde la raíz de tu dominio (https://tudominio.com/llms.txt). Fue propuesto por Jeremy Howard, cofundador de fast.ai y ex-presidente de Kaggle, como un estándar abierto para facilitar la comunicación entre sitios web y modelos de lenguaje.

El creador: Jeremy Howard

Jeremy Howard no es cualquier voz en el ecosistema de IA:

  • Cofundador de fast.ai, la biblioteca de deep learning usada por millones de desarrolladores
  • Ex-presidente y científico jefe de Kaggle, la plataforma de competiciones de machine learning más grande del mundo
  • Investigador en la Universidad de San Francisco con publicaciones en los principales journals de IA
  • Propuso llms.txt a finales de 2024 como respuesta directa al problema de que los LLMs no podían entender eficientemente los sitios web

Su propuesta partía de una observación simple: los LLMs funcionan mucho mejor con markdown que con HTML. Un archivo markdown limpio, estructurado y conciso le da al modelo exactamente lo que necesita sin el ruido del HTML.

La especificación oficial

La especificación la puedes encontrar en llmstxt.org. Estos son los elementos clave:

Estructura del archivo:

  1. Título H1: nombre del sitio o proyecto
  2. Párrafo introductorio: blockquote con descripción breve de qué es el sitio
  3. Secciones H2: agrupaciones temáticas del contenido
  4. Listas de enlaces: links en formato markdown a las páginas relevantes con descripciones opcionales

Formato de los enlaces:

markdown
1- [Título de la página](https://tudominio.com/ruta): Descripción breve del contenido

Extensiones opcionales:

ArchivoPropósito
/llms.txtResumen estructurado del sitio (obligatorio)
/llms-full.txtVersión extendida con más detalle (opcional)
Archivos .md individualesVersión markdown de cada página (opcional)

Ejemplo real de un archivo llms.txt

markdown
1# Upliora
2 
3> Upliora es un portal de comparativas y análisis de herramientas de IA,
4> automatización y tecnología en español. Publicamos guías prácticas,
5> comparativas detalladas y tutoriales paso a paso.
6 
7## Comparativas de IA
8 
9- [ChatGPT Plus vs Claude Pro vs Gemini Advanced](https://www.upliora.es/blog/chatgpt-plus-vs-claude-pro-vs-gemini-advanced-2026): Comparativa de precios, capacidades y rendimiento de los tres principales chatbots de IA en 2026
10- [Perplexity vs ChatGPT vs Google](https://www.upliora.es/blog/perplexity-vs-chatgpt-vs-google-comparativa-busqueda-ia-2026): Análisis de los tres paradigmas de búsqueda con IA
11 
12## Guías de SEO e IA
13 
14- [ChatGPT para SEO](https://www.upliora.es/blog/chatgpt-para-seo-guia-completa-2026): Guía completa de uso de ChatGPT para optimización SEO
15- [GEO: Optimizar para buscadores IA](https://www.upliora.es/blog/geo-optimizar-web-buscadores-ia-chatgpt-claude-2026): Cómo optimizar tu web para aparecer citada en ChatGPT, Claude y Perplexity
16 
17## Automatización
18 
19- [n8n vs Make vs Zapier](https://www.upliora.es/blog/n8n-vs-make-vs-zapier-comparativa-completa-2026): Comparativa de las tres principales herramientas de automatización

Este archivo le dice a cualquier agente de IA en menos de 1 KB: qué es Upliora, qué tipo de contenido publica, y cuáles son sus páginas más importantes con un enlace directo a cada una.


La especificación técnica en detalle

Reglas del formato

La especificación de llms.txt es deliberadamente sencilla. No hay XML, no hay JSON, no hay esquemas complejos. Solo markdown estándar con unas pocas convenciones:

Regla 1: El archivo debe ser markdown válido

markdown
1# Nombre del Sitio
2 
3> Descripción breve del sitio en un blockquote.
4 
5## Sección 1
6 
7- [Enlace](url): Descripción
8- [Enlace](url): Descripción
9 
10## Sección 2
11 
12- [Enlace](url): Descripción

Regla 2: Exactamente un H1 al principio

El H1 es el nombre de tu sitio, proyecto u organización. Solo debe haber uno, y debe ser lo primero del archivo.

Regla 3: Blockquote después del H1

Inmediatamente después del título, un blockquote que explique en 1-3 frases qué es tu sitio. Piensa en esto como la "meta description" pero para LLMs.

Regla 4: Secciones H2 para agrupar contenido

Cada H2 representa una categoría temática. No hay límite de secciones, pero la recomendación es entre 3 y 10.

Regla 5: Listas de enlaces con descripciones

Dentro de cada sección, listas de enlaces en formato markdown estándar. La descripción después del : es opcional pero muy recomendada.

Regla 6: Opcional pero recomendado - sección "Optional"

La especificación prevé secciones marcadas como opcionales que el LLM puede ignorar si tiene restricciones de contexto:

markdown
1## Optional
2 
3- [Archivo de estilos](https://tudominio.com/styles): CSS y guía de estilos visual
4- [Changelog](https://tudominio.com/changelog): Historial de cambios del sitio

Comparación con estándares existentes

Característicarobots.txtsitemap.xmlllms.txt
FormatoTexto planoXMLMarkdown
Público objetivoCrawlers de buscadoresMotores de búsquedaAgentes de IA / LLMs
PropósitoPermisos de rastreoLista de URLsMapa semántico del sitio
Información semánticaNingunaMínima (prioridad, frecuencia)Alta (descripciones, jerarquía)
Legible por humanosDifícilmente
Legible por LLMsSí, pero inútilSí, pero ruidosoDiseñado para ello
Tamaño típico<1 KB10-500 KB1-10 KB
Año de creación199420042024

La diferencia clave es que llms.txt fue diseñado desde cero pensando en cómo procesan la información los LLMs. No es un hack ni una adaptación: es un formato nativo para la era de la IA generativa.


El debate: ¿lo lee alguien realmente?

Aquí es donde la discusión se pone interesante. En enero de 2026, The SEO Framework (un plugin de SEO para WordPress con más de 100.000 instalaciones activas) publicó un análisis demoledor:

"Analizamos 180.000 peticiones de bots de IA a nuestros sitios. Ninguna fue a /llms.txt. Cero."

El estudio de The SEO Framework mostró que los bots de IA (GPTBot, ClaudeBot, PerplexityBot, GoogleBot-Extended) rastreaban páginas HTML normales, seguían enlaces del sitemap.xml, y procesaban el contenido como cualquier crawler. Ninguno pidió específicamente el archivo llms.txt.

Los datos fríos

MétricaResultado
Total de peticiones analizadas~180.000
Peticiones a /llms.txt0
Peticiones a /robots.txt~12.000
Peticiones a /sitemap.xml~8.500
User agents de IA detectadosGPTBot, ClaudeBot, PerplexityBot, GoogleBot-Extended

La respuesta del ecosistema

A pesar de estos datos, algo inesperado ocurrió: los principales plugins de SEO del ecosistema WordPress adoptaron llms.txt igualmente.

  • Yoast SEO (13 millones de instalaciones activas): añadió generación automática de llms.txt en su versión 24.x
  • Rank Math (3 millones de instalaciones activas): integró llms.txt en su módulo de IA
  • AIOSEO (3+ millones de instalaciones activas): soporte nativo para generación de llms.txt

¿Por qué adoptaron un estándar que aparentemente nadie lee?

La teoría del punto de inflexión

La razón es estratégica, no técnica. Y tiene un precedente histórico perfecto: los XML sitemaps.

La historia de los XML sitemaps

  • 2004: Google introduce el protocolo Sitemaps de forma unilateral
  • 2005: Pocos sitios lo implementan. Los webmasters se preguntan: "¿Para qué sirve si Google ya rastrea mi web?"
  • 2006: Yahoo se une al protocolo
  • 2007: Microsoft (Bing) se une
  • 2008-2010: La adopción se dispara. Los CMS empiezan a generarlos automáticamente
  • 2026: Es absolutamente estándar. Todos los sitios profesionales tienen un sitemap.xml

El patrón es idéntico:

code
11. Estándar propuesto → pocos lo usan
22. CMS grandes lo adoptan → millones de sitios lo tienen "gratis"
33. Crawlers empiezan a usarlo → ahora es imprescindible
44. Los que lo tenían antes ganan ventaja de early adopter

Con llms.txt, estamos entre los pasos 2 y 3. Yoast, Rank Math y AIOSEO juntos cubren más de 19 millones de sitios WordPress. Si solo el 10% activa la función, son casi 2 millones de sitios con un archivo llms.txt funcional.

Cuando OpenAI, Anthropic o Google decidan que sus agentes pidan ese archivo, el estándar ya estará desplegado en millones de sitios. Los plugins crearon la masa crítica que los crawlers necesitan para justificar su implementación.

La opinión de los expertos

Joost de Valk (fundador de Yoast, uno de los referentes mundiales en SEO técnico) ha sido uno de los principales defensores de hacer la web más legible para máquinas. Su trabajo en schema.org, OpenGraph y ahora en formatos para IA respalda la lógica de adoptar llms.txt antes de que sea obligatorio.

En sus propias palabras (parafraseando): "Un estándar se adopta cuando el coste de implementación es bajo y el beneficio potencial es alto. Generar un llms.txt cuesta literalmente cero esfuerzo con un plugin. No tenerlo cuando los LLMs empiecen a pedirlo costará tráfico."


Cómo implementar llms.txt paso a paso

Vamos a lo práctico. Te muestro cómo implementar llms.txt en las plataformas más comunes.

Principios generales

Antes de tocar código, ten claros estos principios:

  1. Sé conciso: el archivo no debe superar los 5-10 KB. Los LLMs tienen contexto limitado
  2. Prioriza: incluye solo tu contenido más importante (las 20-50 páginas clave)
  3. Describe: cada enlace debe tener una descripción que aporte contexto
  4. Actualiza: cuando publiques contenido nuevo importante, actualiza el archivo
  5. Markdown limpio: sin HTML embebido, sin imágenes, sin código complejo

Implementación en WordPress

Opción A: Con Yoast SEO

Si ya tienes Yoast SEO instalado (versión 24.x o superior):

  1. Ve a Yoast SEO → Configuración → Avanzado
  2. Busca la sección llms.txt
  3. Activa la generación automática
  4. Personaliza las secciones y descripciones
  5. Guarda cambios

Yoast genera automáticamente el archivo a partir de:

  • El título y descripción de tu sitio
  • Tus páginas y entradas más importantes
  • Las categorías y tags principales
  • Los esquemas de contenido que tengas configurados

Opción B: Con Rank Math

Rank Math también ofrece soporte nativo:

  1. Ve a Rank Math → General Settings → IA
  2. Activa Generate llms.txt
  3. Configura qué tipos de contenido incluir
  4. Define las secciones manualmente o deja que Rank Math las cree

Opción C: Manual (cualquier WordPress)

Si prefieres control total o no usas esos plugins, puedes crear el archivo manualmente.

Método 1: Archivo físico en el servidor

Crea un archivo llms.txt en la raíz de tu instalación de WordPress (donde está wp-config.php):

markdown
1# Mi Sitio Web
2 
3> Descripción de mi sitio web y lo que ofrece.
4 
5## Páginas principales
6 
7- [Inicio](https://midominio.com/): Página principal con resumen de servicios
8- [Sobre nosotros](https://midominio.com/sobre-nosotros): Historia y equipo
9- [Servicios](https://midominio.com/servicios): Catálogo completo de servicios
10 
11## Blog
12 
13- [Guía de SEO](https://midominio.com/blog/guia-seo): Guía completa de SEO para 2026
14- [Tutorial WordPress](https://midominio.com/blog/tutorial-wordpress): Cómo montar una web con WordPress

Método 2: Ruta dinámica con functions.php

Añade esto a tu functions.php para generar el archivo dinámicamente:

php
1add_action('init', function() {
2 if ($_SERVER['REQUEST_URI'] === '/llms.txt') {
3 header('Content-Type: text/markdown; charset=utf-8');
4 header('Cache-Control: public, max-age=86400');
5
6 $site_name = get_bloginfo('name');
7 $site_desc = get_bloginfo('description');
8
9 echo "# {$site_name}\n\n";
10 echo "> {$site_desc}\n\n";
11
12 // Páginas principales
13 echo "## Páginas principales\n\n";
14 $pages = get_pages(['sort_column' => 'menu_order', 'number' => 10]);
15 foreach ($pages as $page) {
16 $url = get_permalink($page);
17 $excerpt = wp_trim_words($page->post_excerpt ?: $page->post_content, 15);
18 echo "- [{$page->post_title}]({$url}): {$excerpt}\n";
19 }
20
21 // Últimos posts
22 echo "\n## Artículos destacados\n\n";
23 $posts = get_posts(['numberposts' => 20, 'orderby' => 'date']);
24 foreach ($posts as $post) {
25 $url = get_permalink($post);
26 $excerpt = wp_trim_words($post->post_excerpt ?: $post->post_content, 15);
27 echo "- [{$post->post_title}]({$url}): {$excerpt}\n";
28 }
29
30 exit;
31 }
32});

Implementación en Next.js

Para Next.js (App Router), el enfoque más limpio es crear una ruta API o un archivo estático generado en build time.

Opción A: Route Handler (dinámico)

Crea el archivo app/llms.txt/route.ts:

typescript
1import { NextResponse } from 'next/server'
2 
3// Importa tus datos (adapta a tu estructura)
4import blogPosts from '@/data/blog-posts.json'
5 
6export async function GET() {
7 const baseUrl = 'https://www.tudominio.com'
8
9 // Selecciona los posts más relevantes (máx. 30-50)
10 const topPosts = blogPosts
11 .sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime())
12 .slice(0, 30)
13 
14 const content = `# Tu Sitio Web
15 
16> Descripción de tu sitio web: qué es, qué ofrece y para quién.
17 
18## Páginas principales
19 
20- [Inicio](${baseUrl}/): Descripción de la página principal
21- [Blog](${baseUrl}/blog): Todos los artículos y guías publicadas
22- [Contacto](${baseUrl}/contacto): Información de contacto
23 
24## Artículos destacados
25 
26${topPosts.map(post =>
27 `- [${post.title}](${baseUrl}/blog/${post.slug}): ${post.excerpt}`
28).join('\n')}
29`
30 
31 return new NextResponse(content, {
32 headers: {
33 'Content-Type': 'text/markdown; charset=utf-8',
34 'Cache-Control': 'public, max-age=86400, s-maxage=86400',
35 },
36 })
37}

Esta ruta servirá tu llms.txt en https://tudominio.com/llms.txt automáticamente.

Opción B: Archivo estático en public/

Si prefieres un archivo estático (sin lógica dinámica), simplemente crea public/llms.txt:

markdown
1# Tu Sitio Web
2 
3> Descripción aquí.
4 
5## Secciones
6 
7- [Enlace](url): Descripción

La ventaja del archivo estático es que se sirve directamente desde el CDN sin ejecutar código. La desventaja es que tienes que actualizarlo manualmente cada vez que añades contenido.

Opción C: Generación en build time

Para lo mejor de ambos mundos (automático + estático), genera el archivo durante el build:

typescript
1// scripts/generate-llms-txt.ts
2import fs from 'fs'
3import path from 'path'
4import blogPosts from '../data/blog-posts.json'
5 
6const baseUrl = 'https://www.tudominio.com'
7 
8const topPosts = blogPosts
9 .sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime())
10 .slice(0, 30)
11 
12const content = `# Tu Sitio Web
13 
14> Descripción del sitio.
15 
16## Artículos
17 
18${topPosts.map(p => `- [${p.title}](${baseUrl}/blog/${p.slug}): ${p.excerpt}`).join('\n')}
19`
20 
21fs.writeFileSync(
22 path.join(process.cwd(), 'public', 'llms.txt'),
23 content,
24 'utf-8'
25)
26 
27console.log('llms.txt generado correctamente')

Añade el script a tu package.json:

json
1{
2 "scripts": {
3 "prebuild": "tsx scripts/generate-llms-txt.ts",
4 "build": "next build"
5 }
6}

Así el archivo se regenera automáticamente en cada deploy.

Implementación en Astro

Astro hace que la implementación sea especialmente elegante gracias a sus endpoints estáticos.

Crea src/pages/llms.txt.ts:

typescript
1import type { APIRoute } from 'astro'
2import { getCollection } from 'astro:content'
3 
4export const GET: APIRoute = async () => {
5 const posts = await getCollection('blog')
6 const sortedPosts = posts
7 .sort((a, b) => new Date(b.data.date).getTime() - new Date(a.data.date).getTime())
8 .slice(0, 30)
9 
10 const body = `# Mi Sitio Astro
11 
12> Descripción del sitio web.
13 
14## Blog
15 
16${sortedPosts.map(post =>
17 `- [${post.data.title}](https://www.midominio.com/blog/${post.slug}): ${post.data.description}`
18).join('\n')}
19`
20 
21 return new Response(body, {
22 headers: {
23 'Content-Type': 'text/markdown; charset=utf-8',
24 },
25 })
26}

En modo SSG (generación estática, el modo por defecto de Astro), esto generará un archivo llms.txt estático en el build. En modo SSR, se servirá dinámicamente.

Implementación en sitios estáticos (HTML puro)

Para sitios sin framework, simplemente crea un archivo llms.txt en la raíz de tu directorio público:

bash
1# Desde la raíz de tu proyecto
2touch llms.txt

Y escribe el contenido en markdown. Asegúrate de que tu servidor sirve el archivo con el content-type correcto. En Nginx:

nginx
1location = /llms.txt {
2 default_type text/markdown;
3 charset utf-8;
4}

En Apache (.htaccess):

apache
1<Files "llms.txt">
2 ForceType text/markdown
3 AddDefaultCharset UTF-8
4</Files>

Si usas GitHub Pages o Netlify, el archivo se servirá automáticamente sin configuración adicional (aunque probablemente con content-type text/plain, que también funciona).


Mejores prácticas para escribir tu llms.txt

Qué incluir

ContenidoPrioridadEjemplo
Descripción del sitioObligatorioBlockquote tras el H1
Páginas pilar/cornerstoneObligatorioGuías completas, servicios principales
Últimos posts relevantesRecomendadoTop 20-30 artículos más importantes
Páginas de producto/servicioRecomendadoSi vendes algo, inclúyelas
Documentación/APIRecomendado (si aplica)Si eres un producto tech
Página de contactoOpcionalPara que el LLM pueda recomendar contactar
Categorías/tagsOpcionalSi ayuda a entender la estructura

Qué NO incluir

  • Páginas de login/registro
  • Páginas legales (aviso legal, cookies) a menos que seas un sitio jurídico
  • Páginas con contenido duplicado
  • URLs con parámetros de tracking
  • Páginas con poco o ningún contenido
  • Más de 50-60 URLs (los LLMs no van a procesar una lista de 500 enlaces)

Formato de las descripciones

Las descripciones después de cada enlace son el elemento más importante del archivo. Son lo que el LLM usa para decidir si una página es relevante para la consulta del usuario.

Mal ejemplo:

markdown
1- [Post sobre SEO](https://midominio.com/blog/seo): Un post sobre SEO

Buen ejemplo:

markdown
1- [Guía SEO 2026](https://midominio.com/blog/guia-seo-2026): Tutorial paso a paso de SEO técnico, on-page y off-page para posicionar en Google y buscadores IA. Incluye checklist descargable.

La diferencia es que la segunda descripción le dice al LLM exactamente qué va a encontrar el usuario si sigue ese enlace. Más contexto = más probabilidad de que el agente de IA recomiende tu contenido.

Frecuencia de actualización

Tipo de sitioFrecuencia recomendada
Blog/medio de comunicaciónSemanal o con cada publicación importante
SaaS / ProductoMensual o con cada actualización relevante
EcommerceMensual (páginas de categoría, no productos individuales)
Portfolio / CorporativaTrimestral
Documentación técnicaCon cada release

Si usas la generación automática en build time (como el ejemplo de Next.js o Astro), la actualización es automática en cada deploy.


llms.txt vs llms-full.txt

La especificación contempla dos variantes:

llms.txt (versión resumida)

  • Tamaño recomendado: 1-10 KB
  • Contenido: título, descripción, secciones con enlaces y descripciones breves
  • Uso: primera toma de contacto del agente de IA con tu sitio
  • Analogía: es como el índice de un libro

llms-full.txt (versión extendida)

  • Tamaño recomendado: hasta 100 KB
  • Contenido: todo lo de llms.txt más contenido inline de las páginas más importantes
  • Uso: cuando el agente quiere profundizar sin visitar cada página individualmente
  • Analogía: es como un resumen ejecutivo completo

Ejemplo de llms-full.txt:

markdown
1# Mi Sitio Web
2 
3> Descripción completa del sitio.
4 
5## Guía principal de SEO
6 
7### Contenido completo:
8 
9El SEO en 2026 se centra en tres pilares fundamentales:
10 
111. **SEO técnico**: Core Web Vitals, indexación, arquitectura...
122. **SEO on-page**: Contenido, keywords, estructura...
133. **SEO off-page**: Backlinks, menciones, autoridad...
14 
15[Leer artículo completo](https://midominio.com/blog/guia-seo)
16 
17## Segunda guía
18 
19### Contenido completo:
20 
21(más contenido inline)

Para la mayoría de los sitios, llms.txt es suficiente. Solo necesitas llms-full.txt si tu sitio es un producto, una documentación técnica, o un medio de comunicación con contenido muy denso que quieras que los LLMs puedan citar sin visitar cada página.


Versiones markdown de páginas individuales

Además de llms.txt y llms-full.txt, la especificación sugiere ofrecer versiones markdown de tus páginas individuales. La convención es añadir .md al final de la URL:

code
1https://midominio.com/blog/guia-seo → página HTML normal
2https://midominio.com/blog/guia-seo.md → versión markdown limpia

Esto permite que un agente de IA obtenga el contenido de una página sin todo el ruido del HTML (navegación, footer, scripts, sidebar, anuncios...).

Cómo implementarlo en Next.js

typescript
1// app/blog/[slug]/md/route.ts
2import { getPostContent } from '@/lib/data'
3import { NextResponse } from 'next/server'
4 
5export async function GET(
6 request: Request,
7 { params }: { params: { slug: string } }
8) {
9 const content = await getPostContent(params.slug)
10
11 if (!content) {
12 return new NextResponse('Not found', { status: 404 })
13 }
14 
15 return new NextResponse(content, {
16 headers: {
17 'Content-Type': 'text/markdown; charset=utf-8',
18 'Cache-Control': 'public, max-age=86400',
19 },
20 })
21}

¿Merece la pena?

Para la mayoría de sitios, no es prioritario. Implementa primero llms.txt y, si ves en tus logs que los bots de IA están visitando tu contenido regularmente, entonces considera añadir las versiones markdown de las páginas más populares.


Cómo monitorizar si los bots de IA leen tu llms.txt

Una vez implementado, querrás saber si realmente funciona. Aquí tienes cómo monitorizarlo:

User agents de bots de IA conocidos

BotUser AgentEmpresa
GPTBotGPTBot/1.0OpenAI
ChatGPT-UserChatGPT-UserOpenAI (navegación web)
ClaudeBotClaudeBotAnthropic
PerplexityBotPerplexityBotPerplexity
GoogleOtherGoogleOtherGoogle (IA)
Google-ExtendedGoogle-ExtendedGoogle (IA)
BytespiderBytespiderByteDance
CCBotCCBot/2.0Common Crawl
Cohere-aicohere-aiCohere

Monitorización con logs del servidor

En Nginx, añade un log específico:

nginx
1# En tu bloque server
2map $http_user_agent $is_ai_bot {
3 default 0;
4 "~*GPTBot" 1;
5 "~*ClaudeBot" 1;
6 "~*PerplexityBot" 1;
7 "~*Google-Extended" 1;
8 "~*ChatGPT-User" 1;
9}
10 
11# Log separado para bots de IA
12access_log /var/log/nginx/ai-bots.log combined if=$is_ai_bot;

Monitorización con Google Analytics 4

Crea un segmento personalizado en GA4 que filtre por user agent de bots de IA. Ten en cuenta que muchos bots no ejecutan JavaScript, así que GA4 podría no capturar todas las visitas. Los logs del servidor son más fiables.

Monitorización con Vercel / Cloudflare

Si usas Vercel, puedes revisar los logs de funciones Edge para ver peticiones a /llms.txt. Si usas Cloudflare, los logs de Workers o las Firewall Rules te permiten filtrar por user agent.


La relación entre llms.txt y GEO

llms.txt no es una herramienta de SEO tradicional. Es una herramienta de GEO (Generative Engine Optimization), la disciplina de optimizar tu web para que los modelos de IA generativa te citen como fuente.

Si te interesa profundizar en GEO, en Upliora hemos publicado una guía completa de GEO que cubre todas las técnicas para que tu web aparezca citada en ChatGPT, Claude, Perplexity y Google AI Overviews.

La relación es clara:

code
1GEO (estrategia general)
2├── Contenido optimizado para IA (estructura, autoridad, datos)
3├── Datos estructurados (JSON-LD, schema.org)
4├── llms.txt (mapa del sitio para LLMs) ← estás aquí
5├── llms-full.txt (contenido extendido para LLMs)
6└── Versiones .md de páginas individuales

llms.txt es una pieza del puzzle de GEO, no la solución completa. Pero es la pieza más fácil de implementar y la que tiene mayor potencial de impacto a medio plazo.

Para una guía completa de cómo usar ChatGPT para mejorar tu SEO y contenido, puedes revisar nuestra guía de ChatGPT para SEO.


Quién ya está usando llms.txt

A abril de 2026, estos son algunos de los sitios y organizaciones que ya sirven un archivo llms.txt:

Empresas tech y startups

  • Anthropic (anthropic.com/llms.txt): documentación de Claude y sus APIs
  • Stripe (stripe.com/llms.txt): documentación de pagos y APIs
  • Cloudflare (developers.cloudflare.com/llms.txt): documentación para desarrolladores
  • Vercel: documentación de Next.js y la plataforma

Plataformas de contenido

  • fast.ai (el propio sitio de Jeremy Howard)
  • Múltiples sitios de documentación técnica con frameworks como Docusaurus, Mintlify, etc.

Plugins y CMS

  • WordPress: vía Yoast SEO, Rank Math, AIOSEO
  • Ghost CMS: soporte nativo en desarrollo
  • Docusaurus: plugins comunitarios disponibles

En España

La adopción en España todavía es baja, lo que representa una oportunidad para early adopters. Si implementas llms.txt ahora, serás de los primeros sitios en español en estar preparados cuando los agentes de IA empiecen a solicitar el archivo de forma rutinaria.

Para una perspectiva experta sobre implementación técnica de estándares web y SEO avanzado, el equipo de www.javadex.es tiene experiencia directa implementando este tipo de optimizaciones en proyectos reales.


Errores comunes al implementar llms.txt

Error 1: Archivo demasiado largo

No incluyas todas las URLs de tu sitio. El archivo no es un sitemap: es un resumen curado. Si tienes 500 posts de blog, incluye los 20-30 mejores.

Error 2: Descripciones vacías o genéricas

markdown
1# MAL
2- [Post 1](url)
3- [Post 2](url)
4 
5# BIEN
6- [Guía SEO 2026](url): Tutorial de SEO técnico, on-page y off-page con checklist descargable
7- [Comparativa ChatGPT vs Claude](url): Análisis detallado de precios, velocidad y rendimiento en 15 tareas reales

Error 3: URLs rotas o con redirecciones

Asegúrate de que todos los enlaces apuntan a la URL canónica final (con www, sin www, con o sin trailing slash, según tu configuración). Un agente de IA que siga un enlace roto pierde confianza en tu archivo.

Error 4: Olvidar el content-type

El archivo debe servirse como text/markdown o text/plain. Ambos funcionan, pero text/markdown es más semántico. No lo sirvas como text/html.

Error 5: No actualizar el archivo

Un llms.txt desactualizado con enlaces a contenido que ya no existe es peor que no tener el archivo. Si no puedes automatizar la actualización, al menos revísalo mensualmente.

Error 6: Incluir contenido que no quieres que la IA use

Si tienes contenido privado, premium o que no quieres que los LLMs reproduzcan, no lo incluyas en llms.txt. El archivo es una invitación explícita a que los agentes de IA accedan a ese contenido.


Checklist de implementación

Antes de lanzar tu llms.txt, verifica estos puntos:

  • [ ] El archivo es accesible en https://tudominio.com/llms.txt
  • [ ] Tiene exactamente un H1 con el nombre del sitio
  • [ ] Tiene un blockquote con la descripción del sitio
  • [ ] Las secciones H2 agrupan el contenido por tema
  • [ ] Cada enlace tiene una descripción útil y específica
  • [ ] No supera los 50-60 enlaces (idealmente 20-30)
  • [ ] Todas las URLs son canónicas y funcionan
  • [ ] El content-type es text/markdown o text/plain
  • [ ] Tienes un proceso para actualizarlo (manual o automático)
  • [ ] Has verificado que no incluye contenido que debería ser privado
  • [ ] Has añadido una referencia en tu robots.txt (opcional):

code
1# robots.txt
2User-agent: *
3Allow: /
4 
5# LLMs
6# Mapa del sitio para agentes de IA: /llms.txt


El futuro de llms.txt

Predicciones para 2026-2027

  1. OpenAI implementará soporte oficial en GPTBot para leer llms.txt como primer paso al rastrear un sitio nuevo. La masa crítica de sitios con el archivo justificará la inversión.

  1. Google integrará llms.txt en Search Console como una herramienta más de gestión del sitio, similar a como muestra el estado del robots.txt y el sitemap.xml.

  1. Anthropic y otros seguirán la misma ruta. ClaudeBot ya rastrea sitios web para mejorar sus respuestas, y llms.txt es el punto de entrada natural.

  1. El formato se extenderá para incluir información sobre licencias de contenido, permisos de uso, y condiciones para citar la fuente. Esto es especialmente relevante para medios de comunicación que quieren que la IA cite pero también atribuya.

  1. Herramientas de auditoría como Screaming Frog, Ahrefs y Semrush añadirán verificación de llms.txt en sus audits técnicos.

El estándar que viene: agent.json

Además de llms.txt, hay movimientos en la industria para crear estándares más estructurados como agent.json o .well-known/ai-plugin.json. Estos formatos JSON serían más ricos en metadata pero menos legibles para humanos. Es probable que coexistan: llms.txt como versión legible y markdown, y un formato JSON como versión programática.


Preguntas frecuentes

¿Es obligatorio tener un archivo llms.txt?

No. A abril de 2026, no hay ningún motor de búsqueda ni agente de IA que penalice la ausencia de llms.txt. Es completamente opcional. Sin embargo, los early adopters de estándares web siempre obtienen ventaja cuando el estándar se generaliza. El coste de implementación es mínimo y el beneficio potencial, alto.

¿El archivo llms.txt afecta a mi SEO en Google?

No directamente. Google usa su propio sistema de rastreo e indexación basado en HTML, robots.txt y sitemap.xml. Sin embargo, Google AI Overviews sí usa procesamiento de lenguaje natural para seleccionar fuentes, y un llms.txt bien estructurado podría ayudar a que los sistemas de IA de Google comprendan mejor tu sitio.

¿Puedo usar llms.txt para bloquear el rastreo de IA?

No. Esa es la función de robots.txt. El archivo llms.txt es una invitación a que los agentes lean tu contenido, no un mecanismo de control de acceso. Si quieres bloquear bots de IA, añade las directivas correspondientes en robots.txt:

code
1User-agent: GPTBot
2Disallow: /
3 
4User-agent: ClaudeBot
5Disallow: /

¿Cómo sé si mi llms.txt está funcionando?

Monitoriza los logs de tu servidor buscando peticiones a /llms.txt de user agents de bots de IA (GPTBot, ClaudeBot, PerplexityBot). Si usas Vercel o Cloudflare, revisa los analytics de edge. Si tras 3-6 meses no ves peticiones, no te preocupes: el estándar aún está en fase de adopción. Lo importante es estar preparado.

¿Cuántas URLs debo incluir en mi llms.txt?

Entre 20 y 50 URLs como máximo. La clave es calidad sobre cantidad. Incluye solo tus páginas más valiosas: guías pilar, páginas de servicio principales, y contenido evergreen de alto valor. Un llms.txt con 500 URLs es tan inútil como un sitemap de 100.000 URLs sin prioridades: el LLM no sabe por dónde empezar.

¿Necesito llms-full.txt además de llms.txt?

Para la mayoría de sitios, no. llms.txt es suficiente. Solo implementa llms-full.txt si tu sitio es una documentación técnica extensa, un producto SaaS con muchas funcionalidades que explicar, o un medio de comunicación que quiere que los LLMs puedan citar contenido sin visitar cada página.

¿Qué pasa si no actualizo mi llms.txt?

Un archivo desactualizado con enlaces rotos puede ser peor que no tener archivo. Si un agente de IA sigue un enlace de tu llms.txt y encuentra un 404, perderá confianza en el resto de enlaces. Automatiza la generación si puedes (la opción de build time en Next.js o Astro es ideal), o añádelo a tu checklist de publicación.

¿Cuál es la diferencia entre llms.txt y robots.txt?

robots.txt le dice a los crawlers qué pueden y qué no pueden rastrear. Es un mecanismo de control de acceso. llms.txt le dice a los agentes de IA qué es tu sitio y dónde está el contenido importante. Es un mecanismo de descubrimiento y comprensión. Son complementarios, no sustitutos.


Conclusión

llms.txt es un estándar joven, sencillo de implementar, con un coste prácticamente nulo y un potencial de retorno significativo a medio plazo. No va a revolucionar tu tráfico hoy, pero te posiciona para cuando los agentes de IA empiecen a solicitarlo de forma rutinaria, algo que ocurrirá inevitablemente dados los movimientos de Yoast, Rank Math y la industria en general.

La analogía con los XML sitemaps es reveladora: quienes los implementaron en 2005 no vieron resultados inmediatos. Quienes no los tenían en 2010 estaban en desventaja clara. Con llms.txt, estamos en 2005.

Implementa el archivo ahora, automatiza su actualización, y olvídate de él hasta que los datos de tus logs confirmen que los bots de IA lo están leyendo. Cuando eso ocurra, ya estarás preparado.

Recomendado

¿Listo para poner tu proyecto en producción?

Si estás siguiendo este tutorial, necesitas un servidor donde desplegarlo. Yo uso Hostinger para mis proyectos porque el panel es intuitivo, los VPS van con SSD NVMe, y a 4,99€/mes no hay nada comparable en relación calidad-precio.

SSL gratis + IP dedicada
SSD NVMe ultra rápido
Soporte 24/7 en español

* Enlace de afiliado. Si contratas a través de este enlace, nos ayudas a mantener este contenido gratuito.

Posts Relacionados

JS

Javier Santos Criado

Consultor de IA y Automatización | Fundador de Javadex

Experto en implementación de soluciones de Inteligencia Artificial para empresas. Especializado en automatización con n8n, integración de LLMs, y desarrollo de agentes IA.

RECOMENDADO

Lleva tu proyecto a producción

Hosting web desde 2,99€/mes o VPS con SSD NVMe desde 4,99€/mes. Panel intuitivo, IP dedicada y soporte 24/7 en español.

SSL gratis SSD NVMe Soporte 24/7 Panel intuitivo
Explorar planes de Hostinger

¿Quieres más contenido de IA?

Explora nuestras comparativas y guías

Consultoría y formación en IA para empresas

Implementamos soluciones de inteligencia artificial adaptadas a tu negocio. Proceso 100% remoto — trabajamos con tu equipo in-house sin que tengas que desplazarte.

javi@javadex.esSesión de diagnóstico gratuita · 30 min