Перейти к содержимому

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

Создаёт 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 description

Создаёт файл с полным контентом всех страниц:

Окно терминала
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-rtRegex замена в заголовках
--title-tКастомный заголовок
--description-dКастомное описание
--concurrency-cМакс. параллельных запросов
  1. Парсинг sitemap.xml — извлечение всех URL
  2. Загрузка страниц — параллельная загрузка с контролем concurrency
  3. Извлечение метаданных:
    • <title> — заголовок страницы
    • <meta name="description"> — описание
    • <meta property="og:description"> — fallback
    • <meta name="twitter:description"> — fallback
  4. Группировка — страницы группируются по URL-путям
  5. Генерация Markdown — форматирование в llms.txt
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 push

Проверьте, что:

  1. sitemap.xml доступен и содержит URL
  2. Страницы имеют <title> теги
  3. Фильтры не исключают все страницы

Уменьшите --concurrency для избежания rate limiting:

Окно терминала
npx llmstxt gen https://example.com/sitemap.xml -c 2

Используйте --replace-title для очистки:

Окно терминала
npx llmstxt gen url -rt 's/ - My Site$//'