Discoverability

llms.txt

Структурированный markdown-файл на корне сайта с инструкциями и навигацией для LLM-агентов.

Что такое llms.txt?

llms.txt — это Markdown-файл по адресу /llms.txt, который сайт публикует специально для языковых моделей (LLM). Он помогает AI-агентам быстро понять суть сайта, найти важные страницы и получить контекст без парсинга всего HTML.

Стандарт предложен Jeremy Howard (основатель Answer.AI, создатель fast.ai) в 2024 году. Большинство современных сайтов содержат HTML, JavaScript и рекламные блоки — «шум», который LLM вынуждены парсить ради полезного контента. llms.txt даёт чистый вход: один файл с упорядоченными ссылками и описаниями.

По расположению похож на robots.txt, по назначению — на README.md: не ограничивает, а направляет.

Зачем сайту llms.txt?

llms.txt решает три проблемы одновременно:

  1. GEO-точность. Когда AI-помощник цитирует ваш сайт в ответе, он делает это точнее при наличии структурированного контекста. Страницы с llms.txt цитируются корректнее.

  2. Agentic workflows. Агент, выполняющий задачу («найди API-документацию», «сравни условия»), навигирует по llms.txt напрямую — без обхода всего сайта.

  3. Контроль представления. Вы сами определяете, что агент узнает о вас в первую очередь: продукт, документация, контакты, условия.

Как реализовать llms.txt?

Минимальный llms.txt по спецификации llmstxt.org:

# Agent Ready Scanner

> Бесплатный публичный сканер AI-готовности сайтов по 23 открытым стандартам.

## Documentation
- [О проекте](/about)
- [FAQ](/faq)
- [Глоссарий стандартов](/glossary)
- [Тарифы реализации](/tiers)

## API
- [Документация сканера](/scanner)

Структура файла:

  • # H1 — название продукта или сайта (обязательно)
  • > blockquote — одна строка tagline (рекомендуется)
  • ## Section — разделы с markdown-ссылками (минимум один)
  • Разделы ## Documentation, ## Examples, ## Optional — рекомендованные имена
  • Раздел ## Optional — менее важные ссылки, которые LLM может игнорировать при ограниченном контексте

Технические требования:

  • Путь: /llms.txt (строго на корне, без поддиректорий)
  • Отдавать с Content-Type: text/plain или text/markdown
  • Кодировка: UTF-8
  • Размер: разумный (< 100 KB — LLM читает его целиком)

Для статических сайтов (Astro, Next.js, Hugo):

Создайте файл public/llms.txt — он будет доступен по /llms.txt автоматически.

Для динамических сайтов:

Создайте endpoint, который генерирует файл на лету (если ссылки меняются динамически, например, в блоге).

// Пример для Astro (src/pages/llms.txt.ts)
export async function GET() {
  const content = `# My Site\n\n> Description\n\n## Documentation\n- [Docs](/docs)\n`;
  return new Response(content, {
    headers: { 'Content-Type': 'text/plain; charset=utf-8' }
  });
}

Опциональный llms-full.txt:

Для сайтов с большим количеством контента спецификация рекомендует также публиковать llms-full.txt — расширенную версию с полным текстом всех страниц. llms.txt указывает на него в секции ## Optional.

Как мы проверяем llms.txt?

Наш сканер делает GET /llms.txt и проверяет:

  1. HTTP 200 — файл существует и доступен
  2. Content-Typetext/plain или text/markdown
  3. Непустое содержимое — файл не пустой
  4. Markdown-заголовок — минимум один # Заголовок в файле
  5. Markdown-ссылки — минимум одна [текст](url) ссылка

Если все 5 условий выполнены — статус pass. Если файл отсутствует (HTTP 404) или пустой — fail. Если Content-Type некорректный — fail с пояснением.

Типичные ошибки: файл есть, но сервер возвращает HTML (кастомная 404 с кодом 200), нет ни одной markdown-ссылки, файл слишком большой (>500 KB — предупреждение).

Источники и спецификации