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 решает три проблемы одновременно:
-
GEO-точность. Когда AI-помощник цитирует ваш сайт в ответе, он делает это точнее при наличии структурированного контекста. Страницы с
llms.txtцитируются корректнее. -
Agentic workflows. Агент, выполняющий задачу («найди API-документацию», «сравни условия»), навигирует по
llms.txtнапрямую — без обхода всего сайта. -
Контроль представления. Вы сами определяете, что агент узнает о вас в первую очередь: продукт, документация, контакты, условия.
Как реализовать 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 и проверяет:
- HTTP 200 — файл существует и доступен
- Content-Type —
text/plainилиtext/markdown - Непустое содержимое — файл не пустой
- Markdown-заголовок — минимум один
# Заголовокв файле - Markdown-ссылки — минимум одна
[текст](url)ссылка
Если все 5 условий выполнены — статус pass. Если файл отсутствует (HTTP 404) или пустой — fail. Если Content-Type некорректный — fail с пояснением.
Типичные ошибки: файл есть, но сервер возвращает HTML (кастомная 404 с кодом 200), нет ни одной markdown-ссылки, файл слишком большой (>500 KB — предупреждение).