llmstxt CLI
Генерация llms.txt из sitemap.xml
llmstxt — это CLI-инструмент для автоматической генерации файлов llms.txt из sitemap.xml вашего сайта.
Репозиторий: github.com/dotenvx/llmstxt
Установка
Заголовок раздела «Установка»# Глобальная установкаnpm install -g llmstxt
# Или запуск через npx (без установки)npx llmstxt gen https://example.com/sitemap.xmlКоманды
Заголовок раздела «Команды»gen — Базовая генерация
Заголовок раздела «gen — Базовая генерация»Создаёт llms.txt со списком страниц и описаниями:
npx llmstxt gen https://example.com/sitemap.xml > llms.txtРезультат:
# Example Site
> Description from meta tags
## Section
- [Page Title](https://example.com/page): Meta descriptiongen-full — Полная генерация
Заголовок раздела «gen-full — Полная генерация»Создаёт файл с полным контентом всех страниц:
npx llmstxt gen-full https://example.com/sitemap.xml > llms-full.txtВключает:
- Оглавление (Table of Contents)
- Полный текст каждой страницы в Markdown
- Даты последнего обновления
Фильтрация путей
Заголовок раздела «Фильтрация путей»# Исключить путиnpx llmstxt gen https://example.com/sitemap.xml \ --exclude-path "**/blog/**" \ --exclude-path "**/privacy**" \ --exclude-path "**/terms**"
# Включить только определённые путиnpx llmstxt gen https://example.com/sitemap.xml \ --include-path "**/docs/**" \ --include-path "**/api/**"Очистка заголовков
Заголовок раздела «Очистка заголовков»Удаление повторяющегося текста из заголовков:
# Удалить "| Example" из всех заголовковnpx llmstxt gen https://example.com/sitemap.xml \ --replace-title 's/\| Example//'Кастомные метаданные
Заголовок раздела «Кастомные метаданные»npx llmstxt gen https://example.com/sitemap.xml \ --title "My Documentation" \ --description "Official docs for My Project"Контроль параллелизма
Заголовок раздела «Контроль параллелизма»# Ограничить количество одновременных запросовnpx llmstxt gen https://example.com/sitemap.xml \ --concurrency 3Полный пример
Заголовок раздела «Полный пример»npx llmstxt@latest gen https://docs.example.com/sitemap.xml \ -ep "**/blog/**" \ -ep "**/changelog/**" \ -ep "**/privacy**" \ -ep "**/terms**" \ -rt 's/\| Docs//' \ -t 'Example Docs' \ -d 'Official documentation for Example' \ -c 5 \ > llms.txtОпции (краткая форма)
Заголовок раздела «Опции (краткая форма)»| Полная форма | Краткая | Описание |
|---|---|---|
--exclude-path | -ep | Исключить пути (glob) |
--include-path | -ip | Включить пути (glob) |
--replace-title | -rt | Regex замена в заголовках |
--title | -t | Кастомный заголовок |
--description | -d | Кастомное описание |
--concurrency | -c | Макс. параллельных запросов |
Как это работает
Заголовок раздела «Как это работает»- Парсинг sitemap.xml — извлечение всех URL
- Загрузка страниц — параллельная загрузка с контролем concurrency
- Извлечение метаданных:
<title>— заголовок страницы<meta name="description">— описание<meta property="og:description">— fallback<meta name="twitter:description">— fallback
- Группировка — страницы группируются по URL-путям
- Генерация Markdown — форматирование в llms.txt
Интеграция в CI/CD
Заголовок раздела «Интеграция в CI/CD»GitHub Actions
Заголовок раздела «GitHub Actions»name: Generate llms.txt
on: push: branches: [main] schedule: - cron: '0 0 * * 0' # Каждое воскресенье
jobs: generate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- name: Generate llms.txt run: | npx llmstxt gen https://docs.example.com/sitemap.xml \ -ep "**/blog/**" > public/llms.txt
- name: Commit changes run: | git config --local user.email "action@github.com" git config --local user.name "GitHub Action" git add public/llms.txt git commit -m "Update llms.txt" || exit 0 git pushTroubleshooting
Заголовок раздела «Troubleshooting»Пустой результат
Заголовок раздела «Пустой результат»Проверьте, что:
- sitemap.xml доступен и содержит URL
- Страницы имеют
<title>теги - Фильтры не исключают все страницы
Медленная генерация
Заголовок раздела «Медленная генерация»Уменьшите --concurrency для избежания rate limiting:
npx llmstxt gen https://example.com/sitemap.xml -c 2Некорректные заголовки
Заголовок раздела «Некорректные заголовки»Используйте --replace-title для очистки:
npx llmstxt gen url -rt 's/ - My Site$//'