La era de la búsqueda con IA ya está aquí. Búsqueda web de ChatGPT, Perplexity, Google AI Overviews... Las oportunidades de que los usuarios obtengan información a través de IA están creciendo rápidamente, y con ello aumenta la importancia de «que la IA entienda correctamente tu sitio web».

Aquí es donde entra llms.txt. Si robots.txt indica a los rastreadores "puedes / no puedes rastrear esta página", llms.txt es un indicador que le dice a la IA "esto es lo que cubre este sitio y aquí se leen los detalles". Sin embargo, no hay pruebas de que publicarlo haga que las respuestas de IA te citen, y en los registros de acceso de este sitio ningún rastreador de IA lo solicitó ni una vez en tres días y medio. Esta guía explica también en qué tipo de sitio vale la pena añadirlo.

En este artículo explicamos a fondo la especificación del formato de llms.txt, qué información incluir, los criterios para elegir entre archivo estático y generación dinámica, y el código de implementación en los principales frameworks.

1. ¿Qué es llms.txt?

llms.txt es un archivo de texto plano (formato Markdown) que se coloca en el directorio raíz de un sitio web y cuyo objetivo es transmitir a los LLM (modelos de lenguaje de gran tamaño) un resumen del sitio, su estructura y la lista de contenidos.

Información básica

CampoContenido
Nombre del archivollms.txt
UbicaciónRaíz del dominio (https://example.com/llms.txt). Desde la v2 también puede ubicarse en una subruta (/docs/llms.txt) y cubre las páginas que hay debajo
FormatoMarkdown (texto plano)
CodificaciónUTF-8
Propuesto porllmstxt.org (Jeremy Howard y otros)
Estado de estandarizaciónEstándar de facto (no es un RFC ni una especificación formal). Versión vigente: v2 (revisada en agosto de 2026)
Lectores principalesAgentes de IA que necesitan información mientras ayudan a un usuario (el uso previsto por la especificación, sobre todo agentes de programación que recorren documentación). Ningún proveedor ha declarado oficialmente que rastreadores de entrenamiento o búsqueda como GPTBot lo lean

En una frase

robots.txt = «no entres» / llms.txt = «nuestro sitio es esto»

Mientras robots.txt es un archivo de control de acceso (permitir/denegar), llms.txt es un archivo de descripción del contenido (autopresentación). No compiten entre sí; de hecho, están pensados para usarse juntos.

2. ¿Por qué es necesario? — Diferencias con robots.txt

Podrías pensar: «con el sitemap y las meta tags, la IA ya puede entender mi sitio, ¿no?». Es cierto hasta cierto punto, pero llms.txt ofrece ventajas propias.

Comparación de funciones: robots.txt / sitemap.xml / llms.txt

ArchivoPropósitoDestinatarioContenido
robots.txtPermitir/denegar rastreoTodos los crawlersReglas Allow/Disallow
sitemap.xmlLista de páginasMotores de búsquedaURLs, fechas de actualización, prioridad
llms.txtDescripción del sitioCrawlers LLMResumen, estructura, síntesis de contenidos

3 razones por las que llms.txt es necesario

Razón 1: Los LLM no pueden rastrear un sitio entero de forma eficiente

Googlebot rastrea miles de millones de páginas para construir un índice masivo, pero los crawlers de LLM no son tan exhaustivos. Con llms.txt puedes comunicar eficientemente a la IA: «este es el contenido más importante de mi sitio».

Razón 2: Hace que las respuestas de IA te citen — algo que se repite mucho, pero sin pruebas

A menudo se lee que llms.txt aumenta las probabilidades de que ChatGPT o Perplexity citen tu sitio, pero no hay datos ni declaraciones oficiales de los proveedores que lo demuestren. Google indica expresamente que no hacen falta archivos de texto para IA para aparecer en AI Overviews o AI Mode (Google Search Central). Es más exacto ver llms.txt como un índice que ayuda a los agentes a llegar rápido a la información correcta que como una forma de conseguir citas; en la sección 9 lo comprobamos con registros reales.

Para una explicación detallada de LLMO, consulta «¿Qué es LLMO?».

Razón 3: Puedes transmitir metainformación que sitemap.xml no incluye

sitemap.xml es solo una lista de URLs. Con llms.txt también puedes comunicar:

  • El tema y área de especialización del sitio
  • Resumen y categoría de cada contenido
  • Frecuencia de actualización y tamaño del sitio
  • Si tiene soporte multilingüe
  • Información de contacto

3. Especificación del formato — Qué escribir y cómo

Estructura del formato de llms.txt

H1 nombre del sitio → resumen en blockquote → grupo de secciones H2

1. Encabezado Obligatorio
# Nombre del sitio
> Breve descripción del sitio (1-2 frases)
Presenta el sitio con H1 + blockquote
2. Lista de secciones Recomendado
## Lista de secciones
- [Nombre de sección](URL): Descripción
- [Nombre de sección](URL): Descripción
Agrupación H2 + lista de enlaces
3. Lista de contenidos Recomendado
## Lista de contenidos
- [Título](URL): Resumen [Categoría]
- [Título](URL): Resumen [Categoría]
 ... (listar todos los contenidos)
Ayuda a la IA con resúmenes de una línea por artículo
4. Categorías / Etiquetas Opcional
## Categorías / Etiquetas
- slug-categoría: Descripción
- slug-categoría: Descripción
Hace explícita la estructura de información
5. Información del sitio Recomendado
## Información del sitio
- URL: https://example.com
- Sitemap: .../sitemap.xml
- Contact: email@example.com
Muestra el operador y la URL canónica

llms.txt se escribe en formato Markdown. El formato basado en la especificación de llmstxt.org es el siguiente.

Estructura básica

# Nombre del sitio

> Descripción del sitio. En 1 a 3 frases, comunica de forma concisa el tema, el público objetivo y el valor que ofrece.

## Nombre de sección 1

- [Título de página](URL): Resumen de la página

## Nombre de sección 2

- [Título de página](URL): Resumen de la página
- [Título de página](URL): Resumen de la página

Reglas del formato

ElementoSintaxis MarkdownFunción
Encabezado H1# Nombre del sitioNombre oficial del sitio. Solo uno por archivo
Bloque de cita> Texto de resumenDescripción del sitio. Se coloca justo después del H1
Encabezado H2## Nombre de secciónAgrupación de contenidos
Lista con enlaces- [Título](URL): DescripciónInformación de cada contenido individual

Ejemplo práctico

# My Tech Blog

> My Tech Blog is a software engineering blog covering web development, cloud infrastructure, and AI tools. Updated weekly with practical tutorials and comparisons.

## Main Sections

- [Articles](https://example.com/articles): 50+ in-depth technical articles
- [Tutorials](https://example.com/tutorials): Step-by-step coding tutorials

## Popular Articles

- [React vs Vue in 2026](https://example.com/articles/react-vs-vue): A detailed comparison of React and Vue.js for modern web development, covering performance, ecosystem, and learning curve.
- [Docker for Beginners](https://example.com/articles/docker-beginners): Complete guide to Docker containers for developers who have never used containerization.

## Site Information

- URL: https://example.com
- Sitemap: https://example.com/sitemap.xml
- Languages: en, ja
- Contact: admin@example.com

Notas importantes

  • Escribir en inglés por defecto. La especificación y los ejemplos de llms.txt están en inglés, lo que lo convierte en la mejor práctica. Para sitios multilingües, se recomienda escribir en inglés e indicar los idiomas soportados con Languages: ja, en, es, .... Sin embargo, para sitios en un solo idioma (por ejemplo, un sitio completamente en francés o ruso), es perfectamente válido escribir en el idioma del sitio. Los principales LLM (GPT, Claude, Gemini, etc.) procesan la mayoría de los idiomas con alta precisión, y los usuarios de estos sitios consultarán en el mismo idioma, garantizando respuestas coherentes
  • La codificación debe ser siempre UTF-8. Con otras codificaciones se producirán caracteres ilegibles
  • Las URLs deben ser absolutas (URLs completas que empiecen por https://)
  • Solo un H1 por archivo. Para dividir secciones, usa H2

4. Información a incluir — Obligatoria, recomendada y opcional

Muchas personas dudan sobre qué escribir, así que lo organizamos por nivel de prioridad.

Ten en cuenta que la especificación (llmstxt.org) solo exige el H1 con el nombre del sitio; la cita con el resumen y las listas de enlaces bajo H2 son formalmente opcionales. "Obligatorio" significa aquí el mínimo que esta guía considera necesario para que el archivo tenga sentido.

Información obligatoria (sin esto, llms.txt pierde su sentido)

InformaciónDónde se escribeEjemplo
Nombre del sitioEncabezado H1# AI Arte
Resumen del sitioBloque de cita> AI learning platform...
Secciones principalesH2 + lista de enlaces- [Articles](URL): Descripción

Información recomendada (mejora la comprensión de la IA)

InformaciónPor qué es necesaria
Lista completa de contenidosLa IA puede conocer toda la cobertura del sitio
Resumen de una línea por contenidoLa IA puede entender el contenido de cada página de antemano
Sistema de categorías/etiquetasMuestra la estructura informativa del sitio
URL del sitioIndica explícitamente la URL canónica
URL del SitemapDirige a la lista detallada de URLs
Idiomas soportadosImportante para sitios multilingües
ContactoIdentifica al operador del sitio

Información opcional (deseable pero no obligatoria)

  • Stack tecnológico: con qué está construido (framework, etc.)
  • Frecuencia de actualización: con qué periodicidad se añade contenido
  • Cantidad total de contenidos: número de artículos, etc.
  • Licencia/política de citas: si la IA puede citar o no
  • Información de API: si existe acceso programático

Información que no debe incluirse

  • Información confidencial: URL del panel de administración, endpoints de API internos, etc.
  • Datos personales: información personal innecesaria (dirección, teléfono, etc.)
  • Credenciales: claves de API, contraseñas, etc.

5. Diferencias entre llms.txt y llms-full.txt

llms-full.txt reúne todo el contenido de un sitio en un solo archivo. No forma parte de la especificación de llmstxt.org: es una convención que se extendió porque plataformas de documentación como Mintlify lo generan automáticamente junto con llms.txt (documentación de Mintlify). La especificación v2 recomienda, en lugar de juntarlo todo en un archivo, ofrecer una versión Markdown de cada página (page.md o page.html.md) y enlazarla desde llms.txt.

ArchivoContenidoTamaño aprox.Uso
llms.txtResumen, estructura y lista de enlaces del sitio1 - 50 KB«Índice» de todo el sitio
llms-full.txtTexto completo de todos los contenidos100 KB - varios MBProporcionar el texto íntegro a la IA

Cuándo es necesario llms-full.txt

  • Documentación técnica: referencias de API, documentación de bibliotecas, etc., donde la IA mejora sus respuestas al comprender el texto completo
  • Bases de conocimiento: colecciones de FAQ o glosarios, contenido que suele citarse de forma fragmentaria

Cuándo no es necesario llms-full.txt

  • Blogs y sitios de medios: con muchos artículos, unir todo el texto en un solo archivo resulta demasiado grande. El resumen de llms.txt es suficiente
  • Tiendas online: la información de productos se proporciona mejor con datos estructurados (JSON-LD, etc.)
  • Sitios corporativos: con pocas páginas, llms.txt solo ya los cubre

Para la mayoría de blogs y sitios de medios, llms.txt solo es suficiente. Considera llms-full.txt como algo orientado a documentación técnica.

6. Archivo estático vs generación dinámica — ¿Cuál elegir?

Archivo estático vs Generación dinámica — ¿cuál elegir?

Compensación: esfuerzo de implementación vs mantenimiento

Archivo estático
Colocar public/llms.txt directamente
+ Fácil de implementar (solo colocar)
+ Carga del servidor: cero
+ No necesita framework
- Se desactualiza si olvidas actualizar
- Edición manual con cada artículo
- Datos y categorías se desincronizan
Ideal para
Poco contenido (10 o menos)
Baja frecuencia (1 vez/mes o menos)
Generación dinámica
Generación automática desde la BD
+ Siempre actualizado
+ Se refleja al añadir artículos
+ Datos y categorías siempre exactos
- Más esfuerzo de implementación
- Acceso a BD en cada solicitud
- Necesita framework
Ideal para
Mucho contenido (10+ ítems)
Alta frecuencia (1 vez/semana o más)
Si dudas, Generación dinámica — «configurar y olvidar» reduce el coste operativo

Existen dos formas principales de gestionar llms.txt.

Opción 1: Archivo estático

Consiste en colocar directamente un archivo de texto en public/llms.txt (o ruta equivalente).

Ventajas:

  • Implementación muy sencilla (solo colocar el archivo)
  • Carga del servidor igual a cero
  • Funciona sin framework

Desventajas:

  • Hay que actualizar manualmente el archivo cada vez que se añade o modifica contenido
  • Si olvidas actualizar, se transmite información desactualizada a la IA
  • El número de contenidos y categorías puede desincronizarse con la realidad del sitio

Opción 2: Generación dinámica

La aplicación recibe la solicitud a /llms.txt, obtiene la información más reciente de la base de datos y genera el texto dinámicamente.

Ventajas:

  • Siempre refleja la información más reciente
  • Al añadir un artículo, se refleja automáticamente en llms.txt
  • El número de contenidos y los nombres de categorías siempre son exactos

Desventajas:

  • Requiere más esfuerzo de implementación (definición de ruta + controlador)
  • Se produce un acceso a la base de datos en cada solicitud (se puede mitigar con caché)
  • Necesita un framework

Criterios de decisión

CondiciónRecomendación
Menos de 10 contenidos y rara vez se añadenArchivo estático es suficiente
10 o más contenidos o actualización mensual o másSe recomienda generación dinámica
Usa WordPress / Laravel / Django, etc.La generación dinámica es fácil
Sitio estático (Hugo, Jekyll, Astro, etc.)Lo ideal es generar automáticamente durante el build
Operación unipersonal, mínimo mantenimientoGeneración dinámica (una vez creada, se puede olvidar)

Conclusión: en caso de duda, generación dinámica. Aunque el coste inicial de implementación es mayor, como se puede «instalar y olvidar», a largo plazo el coste operativo es menor. El peor escenario es empezar con un archivo estático y que la IA reciba información desactualizada porque olvidaste actualizarlo.

7. Implementación — Código por framework

A continuación, mostramos cómo implementar la generación dinámica de llms.txt en los principales frameworks.

Laravel (PHP)

Definición de ruta (routes/web.php):

use App\Http\Controllers\LlmsTxtController;

Route::get('/llms.txt', [LlmsTxtController::class, 'index']);

Controlador (app/Http/Controllers/LlmsTxtController.php):

class LlmsTxtController extends Controller
{
    public function index()
    {
        $articles = Article::published()
            ->with(['translations' => fn($q) => $q->where('locale', 'en')])
            ->orderBy('published_at')
            ->get();

        $lines = [];
        $lines[] = '# My Site Name';
        $lines[] = '';
        $lines[] = '> Site description here.';
        $lines[] = '';
        $lines[] = '## All Articles (' . $articles->count() . ')';
        $lines[] = '';

        foreach ($articles as $article) {
            $t = $article->translations->first();
            if (!$t) continue;
            $url = 'https://example.com/en/articles/' . $article->slug;
            $lines[] = '- [' . $t->title . '](' . $url . '): ' . $t->meta_description;
        }

        $content = implode("\n", $lines);
        return response($content, 200)
            ->header('Content-Type', 'text/plain; charset=utf-8');
    }
}

El punto clave es indicar explícitamente Content-Type: text/plain; charset=utf-8. Si lo olvidas, podría interpretarse como HTML.

Django (Python)

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('llms.txt', views.llms_txt, name='llms_txt'),
]

# views.py
from django.http import HttpResponse
from .models import Article

def llms_txt(request):
    articles = Article.objects.filter(
        status='published'
    ).order_by('published_at')

    lines = ['# My Site', '', '> Description.', '', '## Articles', '']
    for a in articles:
        lines.append(f'- [{a.title}](https://example.com/articles/{a.slug}): {a.meta_description}')

    content = '\n'.join(lines)
    return HttpResponse(content, content_type='text/plain; charset=utf-8')

Next.js (TypeScript)

// app/llms.txt/route.ts (App Router)
import { NextResponse } from 'next/server'

export async function GET() {
  // Obtener datos de la BD o CMS
  const posts = await getAllPosts()

  const lines = [
    '# My Site',
    '',
    '> Description.',
    '',
    '## Articles',
    '',
    ...posts.map(p =>
      `- [${p.title}](https://example.com/posts/${p.slug}): ${p.description}`
    ),
  ]

  return new NextResponse(lines.join('\n'), {
    headers: { 'Content-Type': 'text/plain; charset=utf-8' },
  })
}

WordPress (PHP)

Añadir en functions.php o como plugin:

// functions.php
add_action('init', function() {
    add_rewrite_rule('^llms\.txt$', 'index.php?llms_txt=1', 'top');
});

add_filter('query_vars', function($vars) {
    $vars[] = 'llms_txt';
    return $vars;
});

add_action('template_redirect', function() {
    if (!get_query_var('llms_txt')) return;

    header('Content-Type: text/plain; charset=utf-8');
    $posts = get_posts(['numberposts' => -1, 'post_status' => 'publish']);

    echo "# " . get_bloginfo('name') . "\n\n";
    echo "> " . get_bloginfo('description') . "\n\n";
    echo "## Articles (" . count($posts) . ")\n\n";

    foreach ($posts as $post) {
        $url = get_permalink($post);
        $desc = get_the_excerpt($post);
        echo "- [{$post->post_title}]({$url}): {$desc}\n";
    }
    exit;
});

En el caso de WordPress, no olvides guardar de nuevo la configuración de enlaces permanentes (flush de reglas de reescritura).

Generadores de sitios estáticos (Hugo / Astro, etc.)

Se escribe un script que genere automáticamente durante el build.

# build-llms-txt.sh (ejemplo para Hugo)
#!/bin/bash
echo "# My Site" > public/llms.txt
echo "" >> public/llms.txt
echo "> Site description." >> public/llms.txt
echo "" >> public/llms.txt
echo "## Articles" >> public/llms.txt
echo "" >> public/llms.txt

for file in content/posts/*.md; do
  title=$(grep '^title:' "$file" | sed 's/title: //')
  slug=$(basename "$file" .md)
  desc=$(grep '^description:' "$file" | sed 's/description: //')
  echo "- [${title}](https://example.com/posts/${slug}): ${desc}" >> public/llms.txt
done

Si se ejecuta antes del build en un pipeline CI (GitHub Actions, etc.), se actualiza automáticamente con cada despliegue.

8. Verificación tras la instalación

Una vez instalado llms.txt, verifica los siguientes puntos.

Lista de comprobación básica

Punto a verificarCómo comprobarlo
¿Es accesible por URL?curl https://tusitio.com/llms.txt
¿El Content-Type es correcto?curl -I para verificar text/plain; charset=utf-8
¿Se muestran bien los caracteres?Abrir directamente en el navegador y comprobar
¿Los enlaces son correctos?Comprobar que las URLs indicadas son accesibles
¿El código HTTP es 200?curl -o /dev/null -w "%{http_code}"
¿No está bloqueado en robots.txt?Verificar que no exista Disallow: /llms.txt en robots.txt

Comprobaciones adicionales para generación dinámica

  • Comprobar llms.txt después de añadir un artículo: ¿se refleja el nuevo artículo?
  • ¿Es correcto el recuento de contenidos? ¿Coincide el número en «All Articles (27)» con los artículos publicados realmente?
  • ¿No se incluyen artículos no publicados? Confirmar que no aparecen borradores ni publicaciones programadas

Herramientas de verificación

No existe un validador oficial del formato llms.txt (a 29 de septiembre de 2026). Lighthouse de Chrome incluye llms.txt entre sus auditorías de "agentic browsing", pero solo comprueba si al obtener el archivo se produce un error del servidor; si el archivo no existe (404), la auditoría se marca como no aplicable (Chrome for Developers). Comprueba el contenido con los métodos siguientes.

  • Pedir a ChatGPT o Claude que lo lean: pregunta «lee https://tusitio.com/llms.txt y dime de qué trata este sitio»
  • Previsualizador de Markdown: pega el contenido de llms.txt en un previsualizador y comprueba que la estructura se renderiza correctamente
  • Herramientas de auditoría SEO: algunas herramientas de auditoría SEO están empezando a incluir la verificación de la existencia de llms.txt

9. Medición real: ¿los rastreadores de IA leen llms.txt?

Se suele decir que "si lo publicas, la IA lo leerá", pero si alguien lo solicita de verdad se puede comprobar en los registros de acceso de tu propio servidor. Este sitio (arte.itlibra.com) sirve un /llms.txt generado dinámicamente, así que contamos las solicitudes por User-Agent entre el 26 de septiembre a las 07:20 y el 29 de septiembre a las 12:54 UTC (unos tres días y medio, 86.696 solicitudes en total).

Rastreador (User-Agent)Solicitudes totales en el periodorobots.txtllms.txt
OAI-SearchBot (búsqueda de OpenAI)866200
ChatGPT-User (ChatGPT abre una página a petición del usuario)1.27520
ClaudeBot (Anthropic)502290
Claude-User (Claude abre una página a petición del usuario)438700
PerplexityBot1.086190
Googlebot2.186140
bingbot4.362210

En ese periodo, /llms.txt se solicitó solo tres veces: dos desde la línea de comandos (curl) y una por una herramienta de auditoría de sitios. Los rastreadores de IA leyeron artículos cientos de veces, pero no abrieron llms.txt ni una vez. Muchos sí consultaron robots.txt, así que no es que ignoren los archivos pequeños: simplemente no buscan llms.txt.

Son tres días y medio de registros de un solo sitio, y otros sitios o periodos más largos pueden dar otro resultado. Aun así, junto con las declaraciones oficiales, el panorama queda claro.

  • Google: afirma que "You don't need to create new machine readable files, AI text files, or markup" (no hace falta crear archivos legibles por máquina, archivos de texto para IA ni marcado nuevos) para aparecer en AI Overviews o AI Mode (AI features and your website)
  • La especificación (v2, agosto de 2026): prevé que llms.txt se use en el momento de la inferencia, cuando un agente necesita información mientras ayuda a un usuario, más que para el entrenamiento, y dice que quienes más lo usan son los agentes de programación que recorren documentación de software (llmstxt.org)
  • Lighthouse de Chrome: sus auditorías de "agentic browsing" incluyen llms.txt, pero una página solo falla si al obtener el archivo hay un error del servidor. Si no existe (404), se marca como no aplicable y no resta nada (Chrome for Developers)

Cómo decidir si añadirlo

Tipo de sitioDecisiónMotivo
Documentación de una API o bibliotecaAñadirlo (y versiones Markdown de cada página)Los agentes de programación sí lo siguen; es el uso principal que prevé la especificación
Blog o medioNo hace daño, pero no esperes más visitas ni más citasEn los registros de este sitio, los rastreadores de IA leían los artículos directamente. Lo primero es la calidad de los artículos y no bloquear a los rastreadores de IA en robots.txt
Web corporativa pequeñaSin prisaCon pocas páginas bastan la portada y el sitemap

Si lo añades, tus propios registros son la forma fiable de saber si se usa. En registros de acceso con el formato estándar de nginx o Apache (combined), esta línea cuenta los User-Agent que solicitaron /llms.txt, de más a menos frecuente.

grep ' /llms.txt ' access.log | awk -F'"' '{print $6}' | sort | uniq -c | sort -rn

10. Ejemplos reales de llms.txt en sitios web

OpenAI, Anthropic y Google (Gemini API) publican un llms.txt para su propia documentación de desarrolladores (así figura en la página de la especificación). No encontramos estadísticas sobre la tasa de adopción, así que la tabla siguiente es solo una orientación de tendencias.

Características de los sitios con mayor adopción

Tipo de sitioTasa de adopciónMotivo
Servicios y herramientas de IAAltaLa propia industria de IA tiene alta conciencia de LLMO
Documentación técnicaAltaNecesidad de transmitir información precisa a la IA
Blogs de tecnologíaMediaAlta sensibilidad hacía las tendencias técnicas
Sitios corporativosBajaEl conocimiento aún no está extendido
Tiendas onlineBajaSe prioriza el uso de datos estructurados (JSON-LD)

Características de un buen llms.txt

  • Descripción clara y concisa -- la especialidad del sitio se entiende de un vistazo
  • Todos los contenidos listados con resumen -- la IA puede captar la visión general
  • Sistema de categorías explícito -- se entiende la estructura de la información
  • Generación dinámica -- siempre actualizado

Características de un mal llms.txt

  • Solo nombre del sitio y contacto -- demasiado poca información para ayudar a la IA
  • Texto completo de todos los contenidos copiado -- llms.txt es un «índice», no el «texto completo». El texto íntegro es responsabilidad de llms-full.txt
  • Información desactualizada y abandonada -- dice «10 articles» pero en realidad hay 50, lo que perjudica la credibilidad
  • Contiene información confidencial -- URLs del panel de administración o claves de API expuestas

Preguntas Frecuentes

P. ¿Si no instalo llms.txt, mi sitio no aparecerá en los resultados de búsqueda de IA?

No. La IA puede leer tus páginas directamente y citarlas sin llms.txt. Google indica expresamente que no hacen falta archivos de texto para IA para aparecer en AI Overviews o AI Mode, y en los registros de este sitio los rastreadores de IA leyeron artículos cientos de veces pero nunca abrieron llms.txt. No es algo que te perjudique no tener: es un archivo opcional para cuando quieres guiar a los agentes.

P. Si estoy bloqueando crawlers de IA con robots.txt, ¿tiene sentido llms.txt?

Si usas Disallow en robots.txt para User-agent: GPTBot, etc., ese bot no rastreará tu sitio. Sin embargo, llms.txt es independiente de las reglas de robots.txt. Existe la posibilidad de que la IA acceda a llms.txt por otra vía (por ejemplo, cuando un usuario pega directamente la URL). Si estás bloqueando deliberadamente a los crawlers de IA, lo coherente sería no instalar llms.txt tampoco.

P. ¿En qué idioma se debe escribir llms.txt?

Para sitios multilingües, en inglés. Para sitios en un solo idioma, el idioma del sitio también es válido. La especificación y los ejemplos están predominantemente en inglés, lo que lo convierte en la opción más lógica para sitios multilingües. Sin embargo, si el contenido del sitio está completamente en un solo idioma, escribir llms.txt en ese idioma es aceptable. Los principales LLM procesan la mayoría de los idiomas con alta precisión, y los usuarios consultarán en el mismo idioma del sitio, obteniendo respuestas coherentes.

P. ¿Hay un límite de tamaño para llms.txt?

La especificación no fija ningún límite; solo dice que el archivo debe ser lo bastante pequeño para caber en el contexto. Como referencia, el llms.txt de este sitio enumera 225 artículos y 40 capítulos de cursos, una línea cada uno, y ocupa unos 116 KB (a 29 de septiembre de 2026). Si el tuyo crece mucho, acorta los resúmenes de una línea, pasa los enlaces secundarios a ## Optional o divídelo en varios llms.txt por subruta, como permite la v2. Para ofrecer el texto completo, enlaza las versiones Markdown de cada página.

P. ¿Con qué frecuencia debería actualizarlo?

Con generación dinámica, la información más reciente se devuelve con cada solicitud, así que no hay que preocuparse. Con archivo estático, lo ideal es actualizarlo cada vez que se añade o modifica contenido. Como mínimo, revísalo y actualízalo una vez al mes. Si el riesgo de que quede desactualizado es alto, se recomienda pasar a generación dinámica.

P. ¿Afecta al SEO?

No afecta a la posición en Google. Google explica que, también para AI Overviews y AI Mode, no hacen falta archivos de texto para IA ni marcado especial, y que siguen valiendo los fundamentos habituales del SEO (Google Search Central). Tampoco hay pruebas de que aumente las citas en ChatGPT o Perplexity. Si quieres saber si sirve de algo, revisa tus propios registros de acceso, como en la sección 9.

P. ¿Existe algún plugin para WordPress?

Sí. La lista de llmstxt.org incluye Yoast SEO y AIOSEO como plugins de WordPress con generación de llms.txt (a 29 de septiembre de 2026). Uses el que uses, revisa siempre el contenido generado. También puedes hacerlo tú mismo con unas decenas de líneas en functions.php, así que el plugin no es imprescindible.