Лучшие практики
Лучшие практики создания llms.txt — эффективные описания ссылок, оптимальный размер файла, частые ошибки, безопасность, чеклист валидации и CI/CD
Эффективные описания
Заголовок раздела «Эффективные описания»Описание ссылки — контекст для LLM. От него зависит, загрузит ли модель страницу.
❌ Плохо:
- [Docs](https://example.com/docs): Документация- [API](https://example.com/api): API- [Guide](https://example.com/guide): Гайд✅ Хорошо:
- [Quick Start](https://example.com/docs/start): Установка, конфигурация и первый запуск за 5 минут- [REST API](https://example.com/api/rest): Аутентификация, эндпоинты, примеры запросов и ответов- [Migration Guide](https://example.com/docs/migrate): Обновление с v2 на v3, breaking changesПравила описаний:
- Конкретность — что именно найдёт LLM на странице
- Ключевые слова — термины, по которым LLM будет искать
- Уникальность — каждое описание отличается от других
- Длина — 10-20 слов, достаточно для понимания контекста
Оптимальный размер
Заголовок раздела «Оптимальный размер»| Файл | Рекомендуемый размер | Максимум |
|---|---|---|
| llms.txt | 1-4K токенов | ~8K токенов |
| llms-full.txt | 10-50K токенов | ~100K токенов |
Diminishing returns
Заголовок раздела «Diminishing returns»При большом количестве ссылок (ориентир — более 50) эффективность падает. LLM должна просканировать весь файл — чем больше ссылок, тем больше «разбавлен» каждый ресурс. Точный порог зависит от модели и контекстного окна.
Оптимальная структура:
- 3-6 секций
- 5-15 ссылок на секцию
- 20-50 ссылок всего
llms.txt vs полный HTML
Заголовок раздела «llms.txt vs полный HTML»Для сравнения: средний сайт документации — 500K+ токенов в HTML. llms.txt даёт ту же структурную информацию в 1-4K токенов. Экономия контекста: 99%+.
Частые ошибки
Заголовок раздела «Частые ошибки»1. Слишком много секций
Заголовок раздела «1. Слишком много секций»❌ 12 секций по 2-3 ссылки — плохо. Визуальный шум без пользы.
✅ 4-6 секций с логической группировкой.
2. Отсутствие описаний
Заголовок раздела «2. Отсутствие описаний»❌ - [Auth](https://example.com/auth)✅ - [Auth](https://example.com/auth): OAuth 2.0, JWT-токены, управление сессиямиБез описания LLM не знает, стоит ли загружать страницу.
3. Битые URL
Заголовок раздела «3. Битые URL»Ссылки на несуществующие страницы — хуже, чем отсутствие llms.txt. LLM «тратит» обращение на 404.
4. Внутренние/admin страницы
Заголовок раздела «4. Внутренние/admin страницы»Не включайте в llms.txt то, что не должно быть публичным:
/admin/,/internal/- Staging-URL
- Страницы за аутентификацией
5. Устаревший контент
Заголовок раздела «5. Устаревший контент»llms.txt ведёт на удалённые или перенесённые страницы. Регенерируйте файл при изменении структуры сайта.
6. Путаница с sitemap.xml
Заголовок раздела «6. Путаница с sitemap.xml»sitemap.xml — полный список всех URL для поисковых краулеров. llms.txt — курированный набор ключевых страниц с описаниями. Это разные инструменты для разных задач.
Безопасность
Заголовок раздела «Безопасность»Не включайте в llms.txt:
- Internal/admin URL
- Staging/dev-среды
- API-ключи и credentials
- Приватную документацию
- URLs с токенами аутентификации
llms.txt — публичный файл. Всё, что вы туда добавляете, видит весь интернет.
Чеклист валидации
Заголовок раздела «Чеклист валидации»Перед публикацией проверьте:
- Заголовок H1 — название проекта
- Blockquote — краткое описание (1-2 предложения)
- Все ссылки рабочие (нет 404)
- Каждая ссылка имеет описание
- Нет дублирующихся ссылок
- Нет internal/admin URL
- Секция Optional — только второстепенные ресурсы
- Размер файла < 8K токенов
Скрипт автопроверки
Заголовок раздела «Скрипт автопроверки»#!/bin/bash# validate-llms-txt.sh — проверка llms.txt
FILE="${1:-llms.txt}"
echo "Validating: $FILE"echo "---"
# H1 checkif grep -q '^# ' "$FILE"; then echo "✓ H1 title found"else echo "✗ Missing H1 title"fi
# Blockquote checkif grep -q '^> ' "$FILE"; then echo "✓ Blockquote found"else echo "⚠ No blockquote (recommended)"fi
# Link countLINKS=$(grep -c '^\- \[' "$FILE")echo " Links: $LINKS"
# Links without descriptionsNO_DESC=$(grep '^\- \[' "$FILE" | grep -cv ':')if [ "$NO_DESC" -gt 0 ]; then echo "⚠ $NO_DESC links without descriptions"else echo "✓ All links have descriptions"fi
# Check for broken URLsecho "Checking URLs..."grep -oP 'https?://[^\)]+' "$FILE" | while read -r url; do STATUS=$(curl -s -o /dev/null -w "%{http_code}" --max-time 5 "$url") if [ "$STATUS" != "200" ]; then echo " ✗ $STATUS $url" fidone
echo "---"echo "Done."Стратегия обновления
Заголовок раздела «Стратегия обновления»Когда регенерировать
Заголовок раздела «Когда регенерировать»- Добавлена/удалена страница документации
- Изменена структура сайта
- Переехали URL (redirect)
- Крупный релиз продукта
CI/CD автогенерация
Заголовок раздела «CI/CD автогенерация»Для фреймворков с плагинами (Astro, MkDocs, Nuxt) — llms.txt генерируется автоматически при каждом билде.
Для остальных — добавьте шаг в CI/CD:
name: Update llms.txton: push: paths: ['docs/**']jobs: update: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npx llmstxt gen https://example.com/sitemap.xml > public/llms.txt - run: | git add public/llms.txt git diff --staged --quiet || git commit -m "Update llms.txt" git pushМониторинг битых ссылок
Заголовок раздела «Мониторинг битых ссылок»Периодически проверяйте ссылки в llms.txt. Используйте скрипт из чеклиста выше или инструменты вроде linkchecker.