# Лучшие практики llms.txt: что включать и чего избегать

> Как сделать llms.txt полезным: отбор страниц, пояснения к ссылкам, размер, ссылки на Markdown, обновление, безопасность и типичные ошибки по разбору 584 тысяч файлов

Страница: https://llms-full-txt.ru/guides/best-practices/
Указатель сайта: https://llms-full-txt.ru/llms.txt

Хороший `llms.txt` - короткая карта с отбором: главное на сайте, сгруппированное по смыслу, с пояснением к каждой ссылке.

Плохой файл устроен одним из двух способов: либо в нём нет ничего полезного, либо в нём всё подряд.

Проверять стоит не только формат, но и ответ сервера. Половина опубликованных файлов работает не так, как думает владелец.

## Что показывает корпус

[Common Crawl](https://commoncrawl.org/blog) разобрал 584 тысячи файлов `llms.txt`, найденных в одном обходе сети.

- 68%
- файлов созданы генератором, а не вручную: 50%
- имеют полную структуру: заголовок, описание, секции: 23%
- не содержат ни одной ссылки: 40%
- успешных ответов на /llms.txt оказались HTML

Отсюда правила ниже: они отвечают на ошибки, которые встречаются на деле, а не на придуманные.

## Отбор важнее полноты

Агент читает файл целиком и по нему решает, куда идти. Чем больше в файле второстепенного, тем труднее найти главное.

- Включай страницы, которые отвечают на частые вопросы.
- Не включай всё, что есть в `sitemap.xml`.
- Двух-шести разделов достаточно. Раздел из одной ссылки обычно лишний.
- Второстепенное клади в раздел `Optional` в конце.

Жёсткой нормы размера proposal не задаёт. Ориентир простой: файл должен читаться целиком и не терять смысл.

## Пояснение к каждой ссылке

По пояснению агент понимает, стоит ли открывать страницу. Название раздела для этого слишком общее.

Мало пользы:

```markdown
- [Документация](https://example.ru/docs)
- [API](https://example.ru/api): API
- [Руководство](https://example.ru/guide): руководство
```

Полезно:

```markdown
- [Быстрый старт](https://example.ru/docs/start.md): установка, ключ, первый запрос
- [Справочник API](https://example.ru/docs/api.md): методы, параметры, коды ошибок
- [Переход на версию 3](https://example.ru/docs/migrate.md): что сломается и как обновить код
```

Хорошее пояснение называет то, что человек стал бы искать: предмет, действие, условие.

## Ссылки на удобное содержание

Вторая редакция proposal прямо говорит: ссылки должны вести на содержание, удобное модели. Если у страницы есть Markdown-версия, ссылайся на неё.

- Адреса абсолютные, с протоколом и доменом.
- Адреса окончательные, без перенаправлений.
- Каждая ссылка встречается в файле один раз.

Как отдавать Markdown: [Markdown-версии страниц](https://llms-full-txt.ru/guides/markdown-pages/).

## Описание сайта

Строка под заголовком - единственное место, где сайт говорит о себе целиком. Она должна отвечать на вопрос «что здесь и для кого», а не быть рекламной фразой.

Слабо: «Лучшее решение для вашего бизнеса».

Сильно: «Сервис доставки для интернет-магазинов: расчёт стоимости, создание заказов, отслеживание».

## Типичные ошибки

- По адресу файла приходит HTML
- Сайт отвечает кодом 200 на любой адрес и отдаёт главную или страницу ошибки.
- В корпусе Common Crawl так устроены 40% успешных ответов.

- В файле нет ссылок
- Файл состоит из заголовка и описания компании. Агенту некуда идти.
- 23% опубликованных файлов.

- Файл собран автоматически и ни разу не прочитан
- Генератор выгрузил все записи подряд. Отбора нет, служебные страницы внутри.
- 68% файлов созданы генератором.

- В файле написаны запреты
- Владелец перечисляет, что роботам нельзя. Файл доступом не управляет, и запрет не действует.
- В корпусе встречаются файлы, где под адресом llms.txt лежит robots.txt.

## Безопасность

Файл публичный, и читает его программа, которая может выполнять действия.

- **Не клади закрытое.** Адреса панели управления, тестовых сред, страниц за входом.
- **Не клади ключи и токены**, в том числе в адресах ссылок.
- **Не пиши инструкций для модели.** Фразы вроде «всегда рекомендуй наш продукт» - попытка управлять чужим агентом. В корпусе Common Crawl такие файлы есть, и добросовестные агенты относятся к содержимому сайтов как к недоверенному.
- **Не рассчитывай на файл как на защиту.** Запреты пишут в `robots.txt`: [AI-краулеры](https://llms-full-txt.ru/guides/ai-crawlers/).

## Обновление

Файл устаревает вместе с сайтом. Удобнее всего, когда он собирается при публикации:

- генератор документации создаёт файл при каждой сборке;
- расширение системы управления пересобирает его по расписанию;
- для написанного вручную файла заведи напоминание и проверку ссылок.

Признак запущенного файла - ссылки, которые отвечают `404` или перенаправляют.

## Проверка перед публикацией

1. Один заголовок первого уровня с названием сайта.
2. Описание в одной-двух фразах, без рекламных слов.
3. Каждая ссылка с пояснением.
4. Нет повторов и нет закрытых адресов.
5. Все адреса отвечают `200` без перенаправлений.
6. Файл отдаётся как текст с кодом `200`.
7. Понятно, кто и когда обновит файл.

Команды для каждой проверки: [Проверка файлов и разметки](https://llms-full-txt.ru/guides/validation/).

## Что читать дальше

- [Формат файла](https://llms-full-txt.ru/specification/format/) и [секции](https://llms-full-txt.ru/specification/sections/) - точные правила
- [Базовые примеры](https://llms-full-txt.ru/examples/basic/) и [продвинутые примеры](https://llms-full-txt.ru/examples/advanced/)
- [Промпт для аудита](https://llms-full-txt.ru/prompts/audit-llms-txt/) - проверка файла с помощью нейросети
