Cómo crear un llms.txt que pase Lighthouse (navegación agéntica)
Lighthouse incorporó la categoría Agentic Browsing (navegación agéntica): PageSpeed y Chrome evalúan si tu sitio está preparado para que agentes e IAs lo entiendan y naveguen, no solo para que Google lo indexe. Una de las comprobaciones clave es /llms.txt: un resumen en Markdown en la raíz del dominio.
El problema: mucha gente crea el archivo, ve que "existe" y aun así falla el audit. Lighthouse no hace ping: lee el contenido y exige formato concreto. En esta guía verás cómo montar un llms.txt que pase "llms.txt follows recommendations" y te acerque al score perfecto en navegación agéntica —con ejemplo real en marcosamplina.com/llms.txt.

Qué es Agentic Browsing en PageSpeed (y por qué importa)
Agentic browsing es la categoría de Lighthouse que mide si un agente (IA, asistente, bot con capacidad de acción) puede:
- Entender de qué va el sitio sin rastrearlo entero
- Identificar elementos interactivos (árbol de accesibilidad)
- Interactuar sin que el layout se mueva (CLS)
- (Opcional/informativo) Descubrir herramientas WebMCP
El audit llms-txt entra en el primer bloque: un mapa curado para modelos de lenguaje, inspirado en llmstxt.org.
| Situación | Resultado en Lighthouse |
|---|---|
No hay /llms.txt (404) | N/A — no penaliza |
| Hay archivo pero devuelve 5xx | Fail |
| Hay archivo 200 pero formato mal | Fail — "does not follow recommendations" |
| Archivo 200 con H1 + enlace Markdown + >50 chars | Pass |
Publicar un llms.txt mal hecho es peor que no publicarlo. Si lo haces, hazlo bien.
Requisitos de Lighthouse para pasar el audit (checklist)
Estos son los checks que Lighthouse aplica con regex (no un parser Markdown completo):
- H1 obligatorio — una línea que empiece exactamente por
#(almohadilla + espacio). - Al menos un enlace Markdown — formato
[texto visible](https://url-absoluta). - Longitud mínima — más de 50 caracteres en el cuerpo.
- HTTP correcto — respuesta 200 (o <400 con cuerpo); sin 500.
La especificación llms.txt pide además (buena práctica y parsers más estrictos):
- Blockquote justo después del H1:
> resumen en una línea - Secciones H2 con listas de enlaces
- URLs absolutas (
https://tudominio.com/ruta) - Sección Optional para enlaces secundarios
- Archivo < 20 KB (recomendado)
Errores que ves en PageSpeed y cómo arreglarlos
| Mensaje Lighthouse | Causa habitual | Solución |
|---|---|---|
| File is missing a required H1 header | Sin # Título en la primera cabecera | Añade # Nombre del sitio en la línea 1 |
| File does not appear to contain any links | URLs sueltas o listas sin []( ) | Usa - [Inicio](https://ejemplo.com/) |
| File is suspiciously short | Archivo vacío o placeholder | Escribe resumen + al menos un enlace útil |
| Server error (5xx) | Ruta mal configurada en hosting | Comprueba deploy y route handler |
Plantilla mínima que pasa Lighthouse (y es útil para agentes)
Copia y adapta. Sustituye dominio, textos y enlaces:
# Nombre de tu sitio o proyecto
> Una frase que resume qué ofrece el sitio y a quién va dirigido.
Contexto opcional: idioma, autor, tipo de contenido.
## Páginas principales
- [Inicio](https://ejemplo.com/): Descripción breve de la home.
- [Documentación](https://ejemplo.com/docs): Guías y referencia técnica.
## Optional
- [Contacto](https://ejemplo.com/contacto): Formulario o email de soporte.
Lo que NO pasa el audit:
# Mi sitio
Home: https://ejemplo.com/
Docs: https://ejemplo.com/docs
Sin corchetes y paréntesis, Lighthouse no detecta enlaces.
Plantilla recomendada (spec llmstxt.org completa)
Para agentes reales —no solo marcar verde en PageSpeed— estructura así:
# Mi Producto
> API y panel para equipos de marketing que automatizan reporting SEO.
Versión estable 2.x. Documentación en inglés y español.
## Docs
- [Quickstart](https://ejemplo.com/docs/quickstart.md): Primeros pasos en 10 minutos.
- [API Reference](https://ejemplo.com/docs/api): Endpoints y autenticación.
## Examples
- [Dashboard demo](https://ejemplo.com/demo): Flujo completo con datos de ejemplo.
## Optional
- [Changelog](https://ejemplo.com/changelog): Historial de versiones.
Reglas de oro:
- Un enlace por línea en listas con viñeta
- - Descripción tras dos puntos tras el enlace (opcional pero muy útil)
- Optional = contenido que un agente puede omitir si necesita contexto corto
Cómo implementarlo en producción
Opción A: archivo estático (public/llms.txt)
En Next.js, coloca el archivo en public/llms.txt. Se sirve en /llms.txt automáticamente.
Ventaja: simple. Inconveniente: hay que actualizarlo a mano cuando cambien URLs o posts.
Opción B: generación dinámica (recomendada en blogs)
Route handler en src/app/llms.txt/route.ts:
import { generateLlmsTxt } from "@/lib/llms-txt";
export const dynamic = "force-static";
export function GET() {
return new Response(generateLlmsTxt(), {
headers: {
"Content-Type": "text/plain; charset=utf-8",
"Cache-Control": "public, max-age=3600, s-maxage=86400",
},
});
}
Un módulo generateLlmsTxt() puede leer posts, docs o rutas y volcar enlaces absolutos. Así el archivo nunca se queda obsoleto tras un deploy.
En este sitio puedes ver el resultado en vivo: https://marcosamplina.com/llms.txt.
Cómo validar antes de dar por bueno
1. cURL — headers y cuerpo
curl -sI https://tudominio.com/llms.txt | grep -i content-type
curl -sL https://tudominio.com/llms.txt | head -20
Debe verse text/plain y un # Título en la primera línea significativa.
2. Lighthouse CLI
npx lighthouse https://tudominio.com --only-categories=agentic-browsing --view
(Necesitas Lighthouse 13.3+ con la categoría habilitada.)
3. Chrome DevTools
DevTools → Lighthouse → marca Agentic Browsing → Analyze. Revisa que llms.txt esté en verde.
Score perfecto en Agentic Browsing: más allá del llms.txt
Pasar llms-txt es una pieza. La categoría completa también mira:
| Audit | Qué hacer |
|---|---|
| agent-accessibility-tree | HTML semántico, labels en formularios, botones con nombre accesible |
| cumulative-layout-shift | Reserva espacio para imágenes/fuentes; evita inserts que muevan botones —ver Core Web Vitals |
| webmcp-* (informativos) | WebMCP para exponer acciones a agentes; aún emergente |
Un llms.txt perfecto no compensa un sitio ilegible para agentes o con layout inestable. Piensa en los tres pilares: mapa (llms.txt), accesibilidad del DOM y estabilidad visual.
llms.txt vs robots.txt vs sitemap.xml
| Archivo | Para quién | Función |
|---|---|---|
robots.txt | Crawlers | Qué pueden rastrear |
sitemap.xml | Motores de búsqueda | Listado de URLs indexables |
llms.txt | LLMs y agentes | Resumen curado y enlaces clave |
No sustituyen al otro. Conviven: robots permite, sitemap lista, llms.txt explica.
Relación con SEO, GEO y tu estrategia de contenido
llms.txt no te hace rankear solo. Pero encaja con cómo aparecer en resultados de IA y con SEO técnico de indexación: mismo criterio de claridad, URLs canónicas y estructura entendible por máquinas.
Úsalo para:
- Documentación y SaaS (onboarding de agentes)
- Blogs con muchas guías (índice temático)
- Sitios donde quieres señal de madurez técnica en auditorías Lighthouse
Si ya trabajas PageSpeed, indexación o Core Web Vitals con un equipo externo, encaja en el mismo checklist: muchas agencias de marketing digital que auditan rendimiento y SEO técnico están empezando a incluir llms.txt en revisiones pre-lanzamiento —poco esfuerzo, señal clara en Agentic Browsing.
Checklist final antes de publicar
- URL exacta:
https://tudominio.com/llms.txt(raíz, sin redirect roto) - Primera línea:
# Nombre del sitio - Segunda sección útil: blockquote
> resumen - Mínimo un
- [Texto](https://url-completa) - Más de 50 caracteres de contenido real
-
Content-Type: text/plain; charset=utf-8 - Enlaces absolutos (no
/rutarelativa) - Probado en Lighthouse Agentic Browsing
Resumen
Para score perfecto en el audit llms.txt de PageSpeed/Lighthouse: sirve un /llms.txt en 200 con H1, enlaces Markdown y sustancia. El formato es Markdown aunque la extensión sea .txt. Si ya tienes el archivo y fallas, casi seguro es por enlaces mal escritos —no por falta de fichero.
Mira el ejemplo en marcosamplina.com/llms.txt, adapta la plantilla a tu proyecto y vuelve a lanzar Lighthouse. En cinco minutos pasas de "existe pero falla" a follows recommendations.