Un llms.txt no se vuelve útil sólo por existir en la raíz de un sitio. Debe describir un sitio real, enlazar páginas públicas relevantes y mantenerse sincronizado con ellas. Para una escuela de inteligencia artificial, eso significa presentar con claridad qué ofrece, dónde está su información pública y cómo comprobar que los enlaces siguen funcionando.
AIClases es una escuela online en español para aprender herramientas, crear proyectos y automatizar tareas reales. Su índice público aclara también un matiz importante: los certificados de finalización dependen de los requisitos de cada curso. Esa precisión importa porque un índice breve no debería convertir una condición concreta en una promesa universal.
El descubrimiento funciona mejor cuando la página, la cabecera y el documento enlazado cuentan la misma historia.
Un ejemplo mínimo que se puede leer
La primera versión no necesita ser larga. Necesita ser honesta, estable y fácil de recorrer. Este ejemplo de estructura usa páginas reales de AIClases. Es una muestra mínima, no una copia del índice completo: contexto antes del primer H2 y listas de enlaces bajo cada H2.
# AIClases
> Escuela online de inteligencia artificial en español para aprender herramientas, crear proyectos y automatizar tareas reales. Los certificados de finalización dependen de los requisitos de cada curso.
Incluye solo información pública, relevante y estable. Revisa la selección cuando cambien las rutas o la oferta.
## Páginas públicas
- [Inicio de AIClases](https://aiclases.com/): presentación de la escuela.
- [Cursos de AIClases](https://aiclases.com/cursos): temarios y condiciones actuales de acceso.
La estructura sigue la convención de v2: un título H1, una descripción corta en blockquote y listas bajo encabezados H2. El valor está en la selección. Un sitemap puede enumerar muchas rutas; este documento sirve para explicar cuáles representan mejor el sitio y cómo se relacionan entre sí.
Una curación pequeña y bien agrupada suele ser más útil que una lista extensa sin contexto.
Markdown como compañero del HTML
El HTML sigue siendo la página principal para las personas. El Markdown puede ser una representación más sencilla del mismo contenido para herramientas que prefieren texto plano. La relación entre ambos debe ser explícita y no contradictoria.
En una página que publique una versión Markdown, el HTML podría declarar:
<link
rel="alternate"
type="text/markdown"
href="/blog/ejemplo-llms-txt-markdown-validacion-2026.md"
>
El sitio también puede anunciar un índice o una representación alternativa mediante cabeceras HTTP:
Link: <https://aiclases.com/llms.txt>; rel="describedby"; type="text/plain"
Link: <https://aiclases.com/blog/ejemplo-llms-txt-markdown-validacion-2026.md>; rel="alternate"; type="text/markdown"
Esos fragmentos son patrones de implementación, no una afirmación de que cada sitio publique hoy las dos rutas. La regla práctica es más simple: sólo declares una relación si el recurso existe, responde desde la URL anunciada y representa el mismo tema que la página que lo enlaza. Un enlace Markdown que termina en una página HTML genérica añade fricción y puede hacer que el lector descarte todo el camino.
La relación describedby comunica que el recurso describe la página; alternate comunica que ofrece una representación alternativa. La especificación también deja espacio para las convenciones de ruta: puede haber un archivo .md junto al HTML o una ruta equivalente documentada por el sitio. Lo que no cambia es la necesidad de consistencia.
Validación reproducible con curl y fetch
Antes de publicar, guarda una comprobación que otra persona pueda repetir. El estado 200 es el primer filtro, no la prueba completa. Revisa también el tipo de contenido, las redirecciones y el texto que realmente llegó.
set -eu
BASE="https://aiclases.com"
INDEX="$BASE/llms.txt"
curl -fsS -D headers.txt -o llms.txt "$INDEX"
grep -qi '^content-type: text/plain' headers.txt
grep -q '^# AIClases' llms.txt
printf 'Índice validado: %s\n' "$INDEX"
curl -fsSI "$BASE/" | sed -n '1,8p'
Para un índice propio, el chequeo puede extenderse a los enlaces que contiene. Este ejemplo no intenta interpretar todo Markdown; sólo extrae URLs absolutas y confirma que cada una responda:
const base = "https://aiclases.com";
const indexResponse = await fetch(`${base}/llms.txt`);
if (!indexResponse.ok) {
throw new Error(`Índice no disponible: ${indexResponse.status}`);
}
const index = await indexResponse.text();
const links = [...index.matchAll(/https?:\/\/[^\s)>]+/g)]
.map(([url]) => url.replace(/[.,;]+$/, ""));
for (const url of [...new Set(links)]) {
const response = await fetch(url, { redirect: "follow" });
if (!response.ok) {
throw new Error(`${url} respondió ${response.status}`);
}
console.log(`${response.status} ${url}`);
}
En producción conviene guardar la fecha, la URL final después de redirecciones y el hash del documento validado. Así puedes distinguir un cambio de contenido de un cambio de transporte. También puedes ejecutar una prueba separada para cada relación HTML o cabecera que declares; de nada sirve que el índice esté correcto si el descubrimiento apunta a un recurso inexistente.
Curación y drift: dos problemas distintos
La curación es una decisión editorial: qué páginas merecen entrar, cómo se agrupan y qué descripción ayuda a entenderlas. El drift ocurre después, cuando el sitio cambia y el índice conserva una promesa que ya no coincide con la página enlazada.
Un enlace roto es el caso más evidente. El más peligroso devuelve 200 pero cambió de propósito. Por ejemplo, si una línea promete el catálogo de cursos y la ruta ahora muestra una pantalla genérica, el chequeo HTTP pasa aunque la selección dejó de ser útil. Por eso conviene comparar tres cosas: la URL, el título o descripción que la acompaña y el contenido visible que recibe el lector.
El drift aparece cuando el estado HTTP sigue siendo correcto, pero la promesa del enlace ya no describe la página.
AIClases ya publica un índice en /llms.txt. El archivo es una ayuda para lectores y herramientas. Su presencia no garantiza indexación ni posiciones en búsquedas con IA. Esa es una buena frontera editorial: informar qué se ofrece y cómo recorrerlo sin prometer un resultado que el archivo no puede controlar.
Un mantenimiento razonable puede ser mensual o dispararse después de una migración de rutas. En cada revisión:
- elimina enlaces que ya no son públicos o relevantes;
- confirma que las páginas principales siguen respondiendo y conservan el tema anunciado;
- revisa que el idioma, el nombre del producto y la descripción sigan actualizados;
- comprueba que la versión Markdown, el HTML y las cabeceras no se contradigan;
- registra el cambio para que la siguiente persona sepa qué se verificó.
La prueba no tiene que convertirse en una plataforma compleja. Un script pequeño, una revisión de pull request o una tarea de mantenimiento bastan si dejan evidencia y fallan cuando aparece un enlace desactualizado.
Dos conexiones útiles dentro del sitio
El hub de comparaciones de AIClases es un ejemplo actual de páginas programáticas agrupadas por una intención de decisión: comparar herramientas. Puedes usarlo para comprobar si cada página aporta una diferencia útil antes de incluirla en un índice. Una plantilla repetida no justifica que todas sus URLs entren en llms.txt.
La guía llms.txt, GEO y LEO para tu marca ayuda a separar descripción verificable, contenido citable y observación de cómo un asistente representa una marca. Este artículo aporta el ejemplo y la validación técnica; no abre una segunda página para competir con ese enfoque.
Para seguir
La especificación de llms.txt v2 explica el formato y el propósito del archivo; sus cambios recientes detallan las relaciones de descubrimiento; y la especificación de agent-readiness reúne recomendaciones prácticas sobre enlaces, cobertura y validación.
Para practicar con un punto de partida concreto, abre ChatGPT para Principiantes, un curso gratuito. Si ya lo dominas, consulta los temarios actuales y las opciones de acceso. Las condiciones de certificados dependen de cada curso.
