This is the full developer documentation for LLMs Full Text # llms.txt > Стандарт разметки сайтов для больших языковых моделей (LLM) ## Что такое llms.txt? [Заголовок раздела «Что такое llms.txt?»](#что-такое-llmstxt) **llms.txt** — это стандарт markdown-файла, который размещается в корне сайта (`/llms.txt`) и предоставляет структурированную информацию о содержимом сайта для языковых моделей. Для AI-ассистентов Помогает Claude, ChatGPT и другим LLM понимать структуру вашей документации Простой формат Обычный Markdown с заголовками и ссылками — никаких сложных схем Дополняет robots.txt Работает вместе с robots.txt и sitemap.xml, не заменяя их Экономит токены Позволяет LLM получить нужную информацию без парсинга всего сайта ## Зачем нужен llms.txt? [Заголовок раздела «Зачем нужен llms.txt?»](#зачем-нужен-llmstxt) Контекстное окно LLM ограничено — модель не может обработать весь сайт целиком. Файл `llms.txt` решает эту проблему: * **Структура** — описывает важные разделы сайта * **Ссылки** — указывает на ключевые страницы документации * **Описания** — объясняет назначение каждого ресурса * **Приоритеты** — выделяет обязательные и опциональные материалы ## Быстрый старт [Заголовок раздела «Быстрый старт»](#быстрый-старт) ```markdown # Название проекта > Краткое описание проекта в одну-две строки ## Документация - [Быстрый старт](https://example.com/quickstart): Начните здесь - [API Reference](https://example.com/api): Полное описание API - [Примеры](https://example.com/examples): Готовые решения ## Optional - [Changelog](https://example.com/changelog): История изменений - [Contributing](https://example.com/contributing): Как внести вклад ``` # Продвинутые примеры > Сложные сценарии использования llms.txt ## Мультиязычный сайт [Заголовок раздела «Мультиязычный сайт»](#мультиязычный-сайт) Для сайтов с несколькими языками создавайте отдельные файлы: ### Структура файлов [Заголовок раздела «Структура файлов»](#структура-файлов) ```plaintext /llms.txt → Английская версия (default) /ru/llms.txt → Русская версия /es/llms.txt → Испанская версия ``` ### Пример /llms.txt (English) [Заголовок раздела «Пример /llms.txt (English)»](#пример-llmstxt-english) ```markdown # Documentation Hub > Comprehensive guides and API reference for developers. ## Getting Started - [Quick Start](https://docs.example.com/en/quickstart): 5-minute setup guide - [Installation](https://docs.example.com/en/install): System requirements ## API Reference - [REST API](https://docs.example.com/en/api/rest): HTTP endpoints - [GraphQL](https://docs.example.com/en/api/graphql): GraphQL schema ``` ### Пример /ru/llms.txt (Русский) [Заголовок раздела «Пример /ru/llms.txt (Русский)»](#пример-rullmstxt-русский) ```markdown # Документация > Подробные руководства и справочник API для разработчиков. ## Начало работы - [Быстрый старт](https://docs.example.com/ru/quickstart): Настройка за 5 минут - [Установка](https://docs.example.com/ru/install): Системные требования ## Справочник API - [REST API](https://docs.example.com/ru/api/rest): HTTP-эндпоинты - [GraphQL](https://docs.example.com/ru/api/graphql): Схема GraphQL ``` ## Версионированная документация [Заголовок раздела «Версионированная документация»](#версионированная-документация) Для проектов с несколькими версиями: ### Текущая версия [Заголовок раздела «Текущая версия»](#текущая-версия) ```markdown # MyLibrary v3.0 > Modern JavaScript utility library (current stable). ## Documentation - [Migration from v2](https://mylib.dev/docs/v3/migration): Breaking changes - [What's New](https://mylib.dev/docs/v3/changelog): New features in v3 - [API Reference](https://mylib.dev/docs/v3/api): Complete API docs ## Legacy - [v2 Documentation](https://mylib.dev/docs/v2/): Previous stable version - [v1 Documentation](https://mylib.dev/docs/v1/): Legacy version (deprecated) ``` ### Ссылка на llms.txt разных версий [Заголовок раздела «Ссылка на llms.txt разных версий»](#ссылка-на-llmstxt-разных-версий) ```plaintext https://mylib.dev/docs/v3/llms.txt https://mylib.dev/docs/v2/llms.txt https://mylib.dev/docs/v1/llms.txt ``` ## Монорепозиторий [Заголовок раздела «Монорепозиторий»](#монорепозиторий) Для проектов с несколькими пакетами: ```markdown # Acme Platform > Suite of tools for building modern web applications. ## Core Packages - [@acme/core](https://acme.dev/packages/core): Core utilities - [@acme/ui](https://acme.dev/packages/ui): React components - [@acme/cli](https://acme.dev/packages/cli): Command-line tools - [@acme/server](https://acme.dev/packages/server): Backend framework ## Package Documentation - [Core API](https://acme.dev/docs/core/api): Core package reference - [UI Components](https://acme.dev/docs/ui/components): Component gallery - [CLI Commands](https://acme.dev/docs/cli/commands): Available commands - [Server Setup](https://acme.dev/docs/server/setup): Backend configuration ## Guides - [Getting Started](https://acme.dev/docs/start): Initial setup - [Full Stack App](https://acme.dev/docs/tutorial): Build complete app - [Deployment](https://acme.dev/docs/deploy): Production deployment ## Optional - [Changelog](https://acme.dev/changelog): All package updates - [Roadmap](https://acme.dev/roadmap): Future plans ``` ## Микросервисная архитектура [Заголовок раздела «Микросервисная архитектура»](#микросервисная-архитектура) ```markdown # Microservices Platform > Distributed system with multiple services. ## Services - [API Gateway](https://platform.dev/docs/gateway): Request routing - [Auth Service](https://platform.dev/docs/auth): Authentication/authorization - [User Service](https://platform.dev/docs/users): User management - [Billing Service](https://platform.dev/docs/billing): Payments and subscriptions - [Notification Service](https://platform.dev/docs/notifications): Email/push notifications ## Infrastructure - [Kubernetes Setup](https://platform.dev/docs/k8s): K8s deployment - [Monitoring](https://platform.dev/docs/monitoring): Prometheus/Grafana - [Logging](https://platform.dev/docs/logging): ELK stack setup ## Development - [Local Setup](https://platform.dev/docs/local): Docker Compose environment - [Testing](https://platform.dev/docs/testing): Integration tests - [CI/CD](https://platform.dev/docs/cicd): GitHub Actions pipelines ## Optional - [Architecture](https://platform.dev/docs/architecture): System design docs - [ADRs](https://platform.dev/docs/adr): Architectural decisions ``` ## Полный llms.txt + llms-full.txt [Заголовок раздела «Полный llms.txt + llms-full.txt»](#полный-llmstxt--llms-fulltxt) ### llms.txt (индекс) [Заголовок раздела «llms.txt (индекс)»](#llmstxt-индекс) ```markdown # Framework > Modern web framework for Node.js. ## Core - [Getting Started](https://framework.dev/docs/start): Quick setup - [Routing](https://framework.dev/docs/routing): URL routing - [Middleware](https://framework.dev/docs/middleware): Request handling ## Advanced - [Database](https://framework.dev/docs/database): ORM integration - [Auth](https://framework.dev/docs/auth): Authentication - [Caching](https://framework.dev/docs/cache): Redis caching ## Optional - [Plugins](https://framework.dev/docs/plugins): Extending the framework ``` ### llms-full.txt (полный контент) [Заголовок раздела «llms-full.txt (полный контент)»](#llms-fulltxt-полный-контент) ```markdown # Framework > Modern web framework for Node.js. ## Table of Contents - [Getting Started](#getting-started) - [Routing](#routing) - [Middleware](#middleware) - [Database](#database) --- ## Getting Started Source: https://framework.dev/docs/start Last updated: 2024-01-15 ### Installation \`\`\`bash npm install @framework/core \`\`\` ### Quick Example \`\`\`javascript import { createApp } from '@framework/core' const app = createApp() app.get('/', (req, res) => { res.send('Hello World!') }) app.listen(3000) \`\`\` --- ## Routing Source: https://framework.dev/docs/routing Last updated: 2024-01-10 Routes are defined using HTTP method helpers... [полный контент страницы] --- ## Middleware Source: https://framework.dev/docs/middleware Last updated: 2024-01-12 Middleware functions have access to request and response... [полный контент страницы] ``` ## Генерация с помощью CI/CD [Заголовок раздела «Генерация с помощью CI/CD»](#генерация-с-помощью-cicd) ### GitHub Action [Заголовок раздела «GitHub Action»](#github-action) ```yaml name: Update llms.txt on: push: paths: - 'docs/**' schedule: - cron: '0 0 * * 0' # Weekly jobs: update: 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/**" \ -t "My Docs" \ > public/llms.txt - name: Generate llms-full.txt run: | npx llmstxt gen-full https://docs.example.com/sitemap.xml \ -ep "**/blog/**" \ > public/llms-full.txt - name: Commit and push run: | git config user.name "GitHub Action" git config user.email "action@github.com" git add public/llms.txt public/llms-full.txt git diff --staged --quiet || git commit -m "Update llms.txt" git push ``` # Базовые примеры > Простые примеры llms.txt для разных типов сайтов ## Документация проекта [Заголовок раздела «Документация проекта»](#документация-проекта) Минимальный пример для open-source проекта: ```markdown # FastHTML > Python library for building fast, interactive web applications with HTMX. ## Documentation - [Getting Started](https://fastht.ml/docs/): Quick start guide for new users - [Tutorial](https://fastht.ml/docs/tutorial): Step-by-step walkthrough - [API Reference](https://fastht.ml/docs/api): Complete API documentation ## Examples - [Todo App](https://github.com/fasthtml/examples/todo): Basic todo application - [Blog](https://github.com/fasthtml/examples/blog): Blog with comments ## Optional - [Changelog](https://fastht.ml/changelog): Version history - [Contributing](https://github.com/fasthtml/CONTRIBUTING.md): How to contribute ``` ## API сервис [Заголовок раздела «API сервис»](#api-сервис) Для SaaS продукта с REST API: ```markdown # Stripe API > Payment processing platform for internet businesses. Stripe API uses REST with predictable resource-oriented URLs. All requests must be authenticated with API key. ## API Reference - [Authentication](https://stripe.com/docs/api/authentication): API key usage - [Errors](https://stripe.com/docs/api/errors): Error codes and handling - [Pagination](https://stripe.com/docs/api/pagination): List pagination ## Core Resources - [Customers](https://stripe.com/docs/api/customers): Customer management - [Payments](https://stripe.com/docs/api/payment_intents): Payment processing - [Subscriptions](https://stripe.com/docs/api/subscriptions): Recurring billing ## SDKs - [Node.js](https://github.com/stripe/stripe-node): Official Node.js library - [Python](https://github.com/stripe/stripe-python): Official Python library - [Ruby](https://github.com/stripe/stripe-ruby): Official Ruby library ## Optional - [Webhooks](https://stripe.com/docs/webhooks): Event notifications - [Testing](https://stripe.com/docs/testing): Test mode and fixtures ``` ## Персональный сайт [Заголовок раздела «Персональный сайт»](#персональный-сайт) Для портфолио или CV: ```markdown # John Developer > Full-stack developer specializing in React and Node.js. Based in San Francisco. Open to remote work. ## Portfolio - [Projects](https://johndeveloper.com/projects): Featured work samples - [Blog](https://johndeveloper.com/blog): Technical articles ## Contact - [About](https://johndeveloper.com/about): Background and skills - [Resume](https://johndeveloper.com/resume.pdf): Downloadable CV ## Optional - [GitHub](https://github.com/johndeveloper): Open source contributions - [LinkedIn](https://linkedin.com/in/johndeveloper): Professional network ``` ## Образовательный курс [Заголовок раздела «Образовательный курс»](#образовательный-курс) ```markdown # Learn Python > Complete Python programming course from basics to advanced topics. Self-paced course with hands-on exercises and projects. ## Fundamentals - [Introduction](https://learnpython.org/intro): What is Python - [Installation](https://learnpython.org/install): Setting up Python - [Variables](https://learnpython.org/variables): Data types and variables - [Control Flow](https://learnpython.org/control): If/else, loops ## Intermediate - [Functions](https://learnpython.org/functions): Defining and calling functions - [Classes](https://learnpython.org/oop): Object-oriented programming - [Modules](https://learnpython.org/modules): Importing and creating modules ## Projects - [Calculator](https://learnpython.org/projects/calc): Build a calculator - [Web Scraper](https://learnpython.org/projects/scraper): Scrape websites - [API Client](https://learnpython.org/projects/api): Consume REST APIs ## Optional - [Exercises](https://learnpython.org/exercises): Practice problems - [Solutions](https://learnpython.org/solutions): Exercise solutions ``` ## E-commerce [Заголовок раздела «E-commerce»](#e-commerce) ```markdown # TechShop > Online electronics store with fast shipping. Free shipping on orders over $50. 30-day returns. ## Products - [Catalog](https://techshop.com/products): All products - [New Arrivals](https://techshop.com/new): Latest products - [Best Sellers](https://techshop.com/best): Top selling items - [Deals](https://techshop.com/deals): Current promotions ## Customer Service - [Shipping](https://techshop.com/shipping): Shipping options and times - [Returns](https://techshop.com/returns): Return policy - [FAQ](https://techshop.com/faq): Frequently asked questions - [Contact](https://techshop.com/contact): Get in touch ## Optional - [About](https://techshop.com/about): Company information - [Reviews](https://techshop.com/reviews): Customer testimonials ``` ## Блог [Заголовок раздела «Блог»](#блог) ```markdown # Tech Blog > Articles about web development, DevOps, and software architecture. Published weekly. Subscribe for updates. ## Categories - [Frontend](https://techblog.dev/frontend): React, Vue, CSS - [Backend](https://techblog.dev/backend): Node.js, Python, Go - [DevOps](https://techblog.dev/devops): Docker, Kubernetes, CI/CD - [Architecture](https://techblog.dev/architecture): Design patterns, scaling ## Popular - [React Hooks Guide](https://techblog.dev/react-hooks): Complete hooks tutorial - [Docker for Beginners](https://techblog.dev/docker-intro): Getting started with Docker - [API Design](https://techblog.dev/api-design): REST API best practices ## Optional - [Archive](https://techblog.dev/archive): All posts by date - [Authors](https://techblog.dev/authors): Meet the writers ``` ## Минимальный вариант [Заголовок раздела «Минимальный вариант»](#минимальный-вариант) Абсолютный минимум — только заголовок: ```markdown # My Project ``` Но рекомендуется добавить хотя бы описание и одну ссылку: ```markdown # My Project > Brief description of what this project does. ## Documentation - [Docs](https://example.com/docs): Main documentation ``` # Начало работы > Создайте свой первый llms.txt за 5 минут ## Что такое llms.txt? [Заголовок раздела «Что такое llms.txt?»](#что-такое-llmstxt) **llms.txt** — это файл в формате Markdown, который размещается по адресу `/llms.txt` на вашем сайте. Он помогает языковым моделям (Claude, ChatGPT, Gemini) понять структуру вашего сайта и найти нужную информацию. ### Проблема [Заголовок раздела «Проблема»](#проблема) * Контекстное окно LLM ограничено (обычно 100-200K токенов) * HTML-страницы содержат много «мусора» (навигация, реклама, скрипты) * LLM не может обработать весь сайт целиком ### Решение [Заголовок раздела «Решение»](#решение) Файл `llms.txt` предоставляет: * Краткое описание проекта * Структурированный список важных страниц * Описание каждого ресурса для LLM ## Создание llms.txt вручную [Заголовок раздела «Создание llms.txt вручную»](#создание-llmstxt-вручную) ### Шаг 1: Создайте файл [Заголовок раздела «Шаг 1: Создайте файл»](#шаг-1-создайте-файл) Создайте файл `llms.txt` в корне вашего сайта: ```markdown # Мой проект > Краткое описание проекта — что он делает и для кого предназначен. Дополнительная информация о проекте, которая поможет LLM понять контекст. ## Документация - [Быстрый старт](https://example.com/docs/quickstart): Пошаговое руководство для новых пользователей - [Установка](https://example.com/docs/installation): Требования и инструкции по установке - [API Reference](https://example.com/docs/api): Полное описание всех эндпоинтов ## Руководства - [Аутентификация](https://example.com/guides/auth): Как настроить авторизацию - [Деплой](https://example.com/guides/deploy): Развёртывание в production ## Optional - [Changelog](https://example.com/changelog): История изменений - [Contributing](https://example.com/contributing): Как внести вклад в проект ``` ### Шаг 2: Разместите на сайте [Заголовок раздела «Шаг 2: Разместите на сайте»](#шаг-2-разместите-на-сайте) Файл должен быть доступен по URL: ```plaintext https://вашсайт.com/llms.txt ``` ### Шаг 3: Проверьте [Заголовок раздела «Шаг 3: Проверьте»](#шаг-3-проверьте) Откройте URL в браузере и убедитесь, что файл отображается корректно. ## Автоматическая генерация [Заголовок раздела «Автоматическая генерация»](#автоматическая-генерация) Для больших сайтов используйте инструменты автоматизации: ```bash # Генерация из sitemap.xml npx llmstxt gen https://example.com/sitemap.xml > llms.txt # Генерация с полным контентом npx llmstxt gen-full https://example.com/sitemap.xml > llms-full.txt ``` ## Интеграции [Заголовок раздела «Интеграции»](#интеграции) ### Astro + Starlight [Заголовок раздела «Astro + Starlight»](#astro--starlight) Используйте плагин `starlight-llms-txt`: ```bash pnpm add starlight-llms-txt ``` astro.config.mjs ```javascript import starlightLlmsTxt from 'starlight-llms-txt' export default defineConfig({ integrations: [ starlight({ plugins: [starlightLlmsTxt()], }), ], }) ``` ### VitePress [Заголовок раздела «VitePress»](#vitepress) ```bash npm install vitepress-plugin-llms ``` ### Docusaurus [Заголовок раздела «Docusaurus»](#docusaurus) ```bash npm install docusaurus-plugin-llms-txt ``` ## Следующие шаги [Заголовок раздела «Следующие шаги»](#следующие-шаги) * [Формат файла](/specification/format/) — подробная спецификация * [Секции](/specification/sections/) — обязательные и опциональные разделы * [Инструменты](/tools/llmstxt-cli/) — автоматизация генерации # Экосистема llms.txt > Инструменты, плагины и интеграции ## Официальные ресурсы [Заголовок раздела «Официальные ресурсы»](#официальные-ресурсы) | Ресурс | Описание | | --------------------------------------------------------------- | -------------------------- | | [llms.txt спецификация](https://llmstxt.org) | Официальный сайт стандарта | | [AnswerDotAI/llms-txt](https://github.com/AnswerDotAI/llms-txt) | Оригинальный репозиторий | | [llms-txt-hub](https://llmstxt.com) | Каталог 329+ сайтов | ## Инструменты генерации [Заголовок раздела «Инструменты генерации»](#инструменты-генерации) ### CLI инструменты [Заголовок раздела «CLI инструменты»](#cli-инструменты) | Инструмент | Язык | Описание | | ---------------------------------------------------------------------- | ------- | ------------------------ | | [llmstxt](https://github.com/dotenvx/llmstxt) | Node.js | Генерация из sitemap.xml | | [llmstxt-architect](https://github.com/rlancemartin/llmstxt_architect) | Python | AI-генерация с LLM | | [llms\_txt2ctx](https://pypi.org/project/llms-txt/) | Python | Конвертация в контекст | ### Веб-сервисы [Заголовок раздела «Веб-сервисы»](#веб-сервисы) | Сервис | Описание | | ---------------------------------- | --------------------------- | | [llm.codes](https://llm.codes) | Конвертация JS-документации | | [llmstxt.com](https://llmstxt.com) | Генератор и хаб | ## Плагины для фреймворков [Заголовок раздела «Плагины для фреймворков»](#плагины-для-фреймворков) ### Astro / Starlight [Заголовок раздела «Astro / Starlight»](#astro--starlight) ```bash pnpm add starlight-llms-txt ``` astro.config.mjs ```javascript import starlightLlmsTxt from 'starlight-llms-txt' export default defineConfig({ integrations: [ starlight({ plugins: [starlightLlmsTxt()], }), ], }) ``` ### VitePress [Заголовок раздела «VitePress»](#vitepress) ```bash npm install vitepress-plugin-llms ``` .vitepress/config.js ```javascript import llmsPlugin from 'vitepress-plugin-llms' export default { vite: { plugins: [llmsPlugin()], }, } ``` ### Docusaurus [Заголовок раздела «Docusaurus»](#docusaurus) ```bash npm install docusaurus-plugin-llms-txt ``` docusaurus.config.js ```javascript module.exports = { plugins: ['docusaurus-plugin-llms-txt'], } ``` ### Drupal [Заголовок раздела «Drupal»](#drupal) Рецепт для Drupal 10.3+: * [Drupal llms.txt recipe](https://drupal.org/project/llmstxt) ## Расширения и утилиты [Заголовок раздела «Расширения и утилиты»](#расширения-и-утилиты) ### Браузерные расширения [Заголовок раздела «Браузерные расширения»](#браузерные-расширения) | Расширение | Описание | | ----------------------------------------------------------------------------- | --------------------------------- | | [LLMs.txt Checker](https://chrome.google.com/webstore/detail/llmstxt-checker) | Chrome: проверка наличия llms.txt | ### IDE расширения [Заголовок раздела «IDE расширения»](#ide-расширения) | Расширение | Описание | | -------------------------------------------------------------------------- | --------------------------------------- | | [PagePilot](https://marketplace.visualstudio.com/items?itemName=pagepilot) | VS Code: загрузка контекста из llms.txt | ### Raycast [Заголовок раздела «Raycast»](#raycast) ```bash # Raycast extension для llms.txt raycast://extensions/llmstxt ``` ## MCP интеграции [Заголовок раздела «MCP интеграции»](#mcp-интеграции) ### mcpdoc [Заголовок раздела «mcpdoc»](#mcpdoc) Использование llms.txt как источника для MCP: ```json { "mcpServers": { "docs": { "command": "uvx", "args": [ "--from", "mcpdoc", "mcpdoc", "--urls", "LangGraph:https://langchain-ai.github.io/langgraph/llms.txt", "--transport", "stdio" ] } } } ``` ### Несколько источников [Заголовок раздела «Несколько источников»](#несколько-источников) ```json { "mcpServers": { "multi-docs": { "command": "uvx", "args": [ "--from", "mcpdoc", "mcpdoc", "--urls", "React:https://react.dev/llms.txt", "Next.js:https://nextjs.org/llms.txt", "Tailwind:https://tailwindcss.com/llms.txt", "--transport", "stdio" ] } } } ``` ## Библиотеки [Заголовок раздела «Библиотеки»](#библиотеки) ### Python [Заголовок раздела «Python»](#python) ```bash pip install llms-txt ``` ```python from llms_txt import parse_llms_txt, to_context # Парсинг with open('llms.txt') as f: data = parse_llms_txt(f.read()) # Конвертация в контекст context = to_context(data, include_optional=False) ``` ### JavaScript [Заголовок раздела «JavaScript»](#javascript) ```javascript import { parseLlmsTxt } from 'llmstxt-parser' const response = await fetch('https://example.com/llms.txt') const content = await response.text() const parsed = parseLlmsTxt(content) console.log(parsed.title) // "Project Name" console.log(parsed.description) // "Brief description" console.log(parsed.sections) // { "Docs": [...], "API": [...] } ``` ### PHP [Заголовок раздела «PHP»](#php) ```php composer require llmstxt/parser use LlmsTxt\Parser; $parser = new Parser(); $data = $parser->parse(file_get_contents('llms.txt')); ``` ## Сайты с llms.txt [Заголовок раздела «Сайты с llms.txt»](#сайты-с-llmstxt) ### По категориям [Заголовок раздела «По категориям»](#по-категориям) | Категория | Примеры | | --------------- | --------------------------------------- | | AI/ML | Anthropic, Cohere, Hugging Face, CrewAI | | Developer Tools | Astro, Vercel, Stripe, Resend | | Databases | DuckDB, Upstash, Turso | | Integration | Zapier, Make, Activepieces | ### Полный каталог [Заголовок раздела «Полный каталог»](#полный-каталог) Смотрите [llms-txt-hub](https://llmstxt.com) для полного списка 329+ сайтов. ## Стандарты и совместимость [Заголовок раздела «Стандарты и совместимость»](#стандарты-и-совместимость) ### Связь с другими стандартами [Заголовок раздела «Связь с другими стандартами»](#связь-с-другими-стандартами) | Стандарт | Назначение | Связь с llms.txt | | ----------- | --------------------- | ------------------------------ | | robots.txt | Правила для краулеров | Дополняет, не заменяет | | sitemap.xml | Список всех страниц | llms.txt — курированный subset | | humans.txt | Информация о команде | Разные цели | ### Версионирование [Заголовок раздела «Версионирование»](#версионирование) Текущая версия спецификации: **1.0** Спецификация стабильна и обратно совместима. # Формат файла > Полная спецификация формата llms.txt ## Обзор [Заголовок раздела «Обзор»](#обзор) Файл `llms.txt` использует формат Markdown с определённой структурой. Он размещается в корне сайта по адресу `/llms.txt`. ## Структура файла [Заголовок раздела «Структура файла»](#структура-файла) ```markdown # Заголовок H1 (обязательно) > Блок-цитата с кратким описанием (рекомендуется) Дополнительный текст описания (опционально) ## Секция H2 (опционально) - [Название ссылки](URL): Описание ресурса - [Другая ссылка](URL): Что содержит этот ресурс ## Optional - [Дополнительный ресурс](URL): Можно пропустить при нехватке контекста ``` ## Обязательные элементы [Заголовок раздела «Обязательные элементы»](#обязательные-элементы) ### Заголовок H1 [Заголовок раздела «Заголовок H1»](#заголовок-h1) Единственный **обязательный** элемент — заголовок первого уровня с названием проекта: ```markdown # FastHTML ``` или ```markdown # Документация API v2 ``` ## Рекомендуемые элементы [Заголовок раздела «Рекомендуемые элементы»](#рекомендуемые-элементы) ### Блок-цитата (blockquote) [Заголовок раздела «Блок-цитата (blockquote)»](#блок-цитата-blockquote) Краткое описание проекта в 1-2 предложения: ```markdown > FastHTML — это Python-библиотека для создания быстрых веб-приложений > с использованием HTMX и современных веб-стандартов. ``` ### Описательный текст [Заголовок раздела «Описательный текст»](#описательный-текст) Дополнительная информация после блок-цитаты: ```markdown Важные особенности: - Не требует JavaScript-фреймворков - Поддержка Server-Side Rendering - Интеграция с FastAPI ``` Заметка В описательном тексте нельзя использовать заголовки (H2 и выше). Разрешены: параграфы, списки, блоки кода. ## Секции со ссылками [Заголовок раздела «Секции со ссылками»](#секции-со-ссылками) ### Формат H2 секций [Заголовок раздела «Формат H2 секций»](#формат-h2-секций) Каждая секция начинается с заголовка H2: ```markdown ## Документация - [Быстрый старт](https://example.com/quickstart): Начните здесь - [Установка](https://example.com/install): Системные требования и установка ``` ### Формат ссылок [Заголовок раздела «Формат ссылок»](#формат-ссылок) Каждая ссылка состоит из: ```markdown - [Название](URL): Описание ``` | Элемент | Обязательность | Пример | | -------- | -------------- | -------------------------------- | | Название | Обязательно | `[API Reference]` | | URL | Обязательно | `(https://docs.example.com/api)` | | Описание | Рекомендуется | `: Полное описание эндпоинтов` | ### Примеры ссылок [Заголовок раздела «Примеры ссылок»](#примеры-ссылок) ```markdown - [Getting Started](https://docs.example.com/start): Быстрый старт за 5 минут - [API Reference](https://docs.example.com/api): REST API документация - [Examples](https://github.com/example/repo/examples): Примеры кода на GitHub ``` ## Специальная секция Optional [Заголовок раздела «Специальная секция Optional»](#специальная-секция-optional) Секция `## Optional` имеет особое значение: ```markdown ## Optional - [Changelog](https://example.com/changelog): История изменений - [Contributing](https://example.com/contributing): Гайд для контрибьюторов - [Advanced Topics](https://example.com/advanced): Углублённые темы ``` Совет Ресурсы в секции `Optional` могут быть пропущены, если LLM нужен более короткий контекст. Используйте её для второстепенной информации. ## Расположение файла [Заголовок раздела «Расположение файла»](#расположение-файла) ### Основное расположение [Заголовок раздела «Основное расположение»](#основное-расположение) ```plaintext https://example.com/llms.txt ``` ### Альтернативные пути [Заголовок раздела «Альтернативные пути»](#альтернативные-пути) Для подразделов сайта можно создавать отдельные файлы: ```plaintext https://example.com/docs/llms.txt https://example.com/api/llms.txt ``` ## Связанные файлы [Заголовок раздела «Связанные файлы»](#связанные-файлы) ### Markdown-версии страниц [Заголовок раздела «Markdown-версии страниц»](#markdown-версии-страниц) Рекомендуется предоставлять `.md` версии HTML-страниц: ```plaintext https://example.com/page.html → https://example.com/page.html.md https://example.com/docs/ → https://example.com/docs/index.html.md ``` ### Расширенные форматы [Заголовок раздела «Расширенные форматы»](#расширенные-форматы) Некоторые проекты генерируют дополнительные файлы: | Файл | Назначение | | ---------------- | --------------------------------------- | | `llms.txt` | Базовый файл со ссылками | | `llms-full.txt` | Полный контент всех страниц | | `llms-small.txt` | Минимальная версия | | `llms-ctx.txt` | Контекст без URL (для вставки в промпт) | ## Парсинг [Заголовок раздела «Парсинг»](#парсинг) Файл можно распарсить простым regex (\~20 строк кода): ```python import re def parse_llms_txt(content: str) -> dict: result = {'title': '', 'description': '', 'sections': {}} # Извлечь H1 h1_match = re.search(r'^# (.+)$', content, re.MULTILINE) if h1_match: result['title'] = h1_match.group(1) # Извлечь blockquote bq_match = re.search(r'^> (.+)$', content, re.MULTILINE) if bq_match: result['description'] = bq_match.group(1) # Извлечь секции и ссылки current_section = 'default' for line in content.split('\n'): if line.startswith('## '): current_section = line[3:].strip() result['sections'][current_section] = [] elif line.startswith('- ['): match = re.match(r'- \[(.+?)\]\((.+?)\)(?:: (.+))?', line) if match: result['sections'].setdefault(current_section, []).append({ 'title': match.group(1), 'url': match.group(2), 'description': match.group(3) or '' }) return result ``` ## Валидация [Заголовок раздела «Валидация»](#валидация) Проверьте ваш `llms.txt`: 1. Есть заголовок H1 2. Все ссылки рабочие 3. Описания информативны для LLM 4. Нет дублирующихся ссылок 5. Секция Optional содержит только второстепенные ресурсы # Секции и структура > Организация разделов в llms.txt ## Типы секций [Заголовок раздела «Типы секций»](#типы-секций) ### Основные секции [Заголовок раздела «Основные секции»](#основные-секции) Рекомендуемые названия секций для документации: | Секция | Назначение | Приоритет | | -------------- | ----------------------- | --------- | | `## Docs` | Основная документация | Высокий | | `## API` | API Reference | Высокий | | `## Guides` | Руководства и туториалы | Средний | | `## Examples` | Примеры кода | Средний | | `## Reference` | Справочные материалы | Средний | ### Дополнительные секции [Заголовок раздела «Дополнительные секции»](#дополнительные-секции) | Секция | Назначение | Приоритет | | -------------- | ---------------------- | ------------------- | | `## Blog` | Статьи и новости | Низкий | | `## Changelog` | История изменений | Низкий | | `## Community` | Сообщество, форумы | Низкий | | `## Optional` | Второстепенные ресурсы | Может быть пропущен | ## Секция Optional [Заголовок раздела «Секция Optional»](#секция-optional) ### Назначение [Заголовок раздела «Назначение»](#назначение) Секция `## Optional` имеет **специальное значение** в спецификации. Ресурсы в ней могут быть пропущены при формировании контекста для LLM. ### Когда использовать [Заголовок раздела «Когда использовать»](#когда-использовать) ```markdown ## Optional - [Changelog](https://example.com/changelog): История версий - [Roadmap](https://example.com/roadmap): Планы развития - [Contributing](https://example.com/contributing): Как внести вклад - [Code of Conduct](https://example.com/coc): Правила сообщества - [License](https://example.com/license): Лицензия MIT ``` ### Логика обработки [Заголовок раздела «Логика обработки»](#логика-обработки) ```python def get_context(llms_txt, include_optional=True): sections = parse_llms_txt(llms_txt) if not include_optional: sections.pop('Optional', None) return sections ``` Совет Инструменты вроде `llms_txt2ctx` позволяют генерировать контекст с опцией `--no-optional` для экономии токенов. ## Порядок секций [Заголовок раздела «Порядок секций»](#порядок-секций) ### Рекомендуемый порядок [Заголовок раздела «Рекомендуемый порядок»](#рекомендуемый-порядок) 1. **H1 заголовок** — название проекта 2. **Blockquote** — краткое описание 3. **Описательный текст** — важные детали 4. **Основные секции** — Docs, API, Guides 5. **Дополнительные секции** — Examples, Reference 6. **Optional** — всегда последняя ### Пример полной структуры [Заголовок раздела «Пример полной структуры»](#пример-полной-структуры) ```markdown # FastHTML > Modern Python web framework for building fast, interactive web applications. Key features: - No JavaScript required - HTMX integration - Server-side rendering ## Documentation - [Getting Started](https://fastht.ml/docs/): Quick start guide - [Tutorial](https://fastht.ml/docs/tutorial): Step-by-step tutorial - [API Reference](https://fastht.ml/docs/api): Complete API docs ## Guides - [Forms](https://fastht.ml/docs/guides/forms): Working with forms - [Database](https://fastht.ml/docs/guides/db): Database integration - [Deployment](https://fastht.ml/docs/guides/deploy): Production deployment ## Examples - [Todo App](https://github.com/fasthtml/examples/todo): Basic todo application - [Blog](https://github.com/fasthtml/examples/blog): Blog with comments - [E-commerce](https://github.com/fasthtml/examples/shop): Shopping cart demo ## Optional - [Changelog](https://fastht.ml/changelog): Version history - [Contributing](https://github.com/fasthtml/fasthtml/CONTRIBUTING.md): Contribution guide - [Discord](https://discord.gg/fasthtml): Community chat ``` ## Локализация секций [Заголовок раздела «Локализация секций»](#локализация-секций) ### Мультиязычные сайты [Заголовок раздела «Мультиязычные сайты»](#мультиязычные-сайты) Для сайтов с несколькими языками можно создавать отдельные файлы: ```plaintext /llms.txt → Основной (английский) /ru/llms.txt → Русская версия /zh/llms.txt → Китайская версия ``` ### Переводы названий секций [Заголовок раздела «Переводы названий секций»](#переводы-названий-секций) ```markdown ## Документация - [Быстрый старт](https://example.com/ru/docs/start): Начните здесь - [Справочник API](https://example.com/ru/docs/api): Описание API ``` ## Группировка ссылок [Заголовок раздела «Группировка ссылок»](#группировка-ссылок) ### По типу контента [Заголовок раздела «По типу контента»](#по-типу-контента) ```markdown ## Tutorials - [Beginner Tutorial](url): For new users (30 min) - [Advanced Tutorial](url): Deep dive (2 hours) - [Video Course](url): Video walkthrough ## API Reference - [REST API](url): HTTP endpoints - [GraphQL API](url): GraphQL schema - [SDK Reference](url): Client libraries ``` ### По платформе [Заголовок раздела «По платформе»](#по-платформе) ```markdown ## JavaScript - [npm Package](url): Installation and usage - [Browser Guide](url): Browser integration ## Python - [PyPI Package](url): pip installation - [Django Integration](url): Django setup ``` ## Избегайте [Заголовок раздела «Избегайте»](#избегайте) ### Слишком много секций [Заголовок раздела «Слишком много секций»](#слишком-много-секций) ❌ Плохо: ```markdown ## Getting Started ## Installation ## Configuration ## Basic Usage ## Advanced Usage ## Troubleshooting ## FAQ ## API ## REST ## GraphQL ## WebSocket ... ``` ✅ Хорошо: ```markdown ## Documentation - [Getting Started](url): Includes installation, config, basic usage - [Advanced Guide](url): Advanced topics and troubleshooting ## API Reference - [Complete API](url): REST, GraphQL, WebSocket ``` ### Пустые секции [Заголовок раздела «Пустые секции»](#пустые-секции) Не создавайте секции без ссылок: ```markdown ## Coming Soon (пусто) ``` ### Дублирование ссылок [Заголовок раздела «Дублирование ссылок»](#дублирование-ссылок) Одна ссылка должна быть только в одной секции. # llm.codes > Конвертация JS-документации в Markdown для LLM ## Обзор [Заголовок раздела «Обзор»](#обзор) **llm.codes** — это веб-сервис для конвертации JavaScript-heavy документации в чистый Markdown, оптимизированный для языковых моделей. **Сайт:** [llm.codes](https://llm.codes) **Репозиторий:** [github.com/amantus-ai/llm-codes](https://github.com/amantus-ai/llm-codes) ## Проблема [Заголовок раздела «Проблема»](#проблема) Современная документация часто использует: * Client-side rendering (React, Vue) * Динамическую загрузку контента * JavaScript-навигацию AI-ассистенты (Claude Code, Cursor) не могут выполнять JavaScript и видят пустые страницы. ## Решение [Заголовок раздела «Решение»](#решение) llm.codes: 1. Загружает страницы через headless browser (Firecrawl) 2. Дожидается рендеринга JavaScript 3. Извлекает основной контент 4. Конвертирует в чистый Markdown 5. Удаляет навигацию, рекламу, boilerplate ## Поддерживаемые сайты [Заголовок раздела «Поддерживаемые сайты»](#поддерживаемые-сайты) ### Языки и фреймворки [Заголовок раздела «Языки и фреймворки»](#языки-и-фреймворки) | Категория | Сайты | | ---------- | ------------------------------------------------------------ | | **Языки** | Python, TypeScript, Rust, Go, Java, Ruby, PHP, Swift, MDN | | **Web** | React, Vue.js, Angular, Next.js, Nuxt, Svelte, Django, Flask | | **Mobile** | React Native, Flutter, Android, Apple Developer | | **CSS** | Tailwind CSS, Bootstrap, Material-UI, Chakra UI | ### Платформы [Заголовок раздела «Платформы»](#платформы) | Категория | Сайты | | ------------- | ------------------------------------------------ | | **Cloud** | AWS, Google Cloud, Azure, Vercel, Netlify | | **Databases** | PostgreSQL, MongoDB, MySQL, Redis, Elasticsearch | | **DevOps** | Docker, Kubernetes, Terraform, GitHub, GitLab | | **AI/ML** | PyTorch, TensorFlow, Hugging Face, LangChain | **Всего:** 69+ сайтов документации ## Использование [Заголовок раздела «Использование»](#использование) ### Веб-интерфейс [Заголовок раздела «Веб-интерфейс»](#веб-интерфейс) 1. Откройте [llm.codes](https://llm.codes) 2. Вставьте URL документации 3. Настройте глубину краулинга 4. Нажмите “Convert” 5. Скопируйте Markdown ### API [Заголовок раздела «API»](#api) ```bash curl "https://llm.codes/api/scrape" \ -H "Content-Type: application/json" \ -d '{ "url": "https://docs.python.org/3/library/asyncio.html", "depth": 1 }' ``` ## Параметры [Заголовок раздела «Параметры»](#параметры) | Параметр | Описание | Диапазон | | --------- | ----------------- | -------- | | `depth` | Глубина краулинга | 0-5 | | `maxUrls` | Максимум страниц | 1-1000 | ### Глубина краулинга [Заголовок раздела «Глубина краулинга»](#глубина-краулинга) * **0** — только указанная страница * **1** — страница + прямые ссылки * **2** — рекомендуется для большинства случаев * **5** — полный раздел документации ## Оптимизации [Заголовок раздела «Оптимизации»](#оптимизации) ### Фильтрация контента [Заголовок раздела «Фильтрация контента»](#фильтрация-контента) llm.codes удаляет: * Навигацию и сайдбары * Хедеры и футеры * Рекламу и баннеры * Дублирующийся контент * Строки совместимости (iOS 14.0+, etc.) ### Результат [Заголовок раздела «Результат»](#результат) Сокращение размера до **70%** при сохранении всей полезной информации. ## Кэширование [Заголовок раздела «Кэширование»](#кэширование) * Результаты кэшируются **30 дней** * Redis-backed для скорости * Повторные запросы мгновенны ## Интеграция с AI [Заголовок раздела «Интеграция с AI»](#интеграция-с-ai) ### Claude Code [Заголовок раздела «Claude Code»](#claude-code) ```bash # Получить документацию curl -s "https://llm.codes/api/scrape?url=https://docs.example.com" \ | claude "Explain how to use this API" ``` ### В промптах [Заголовок раздела «В промптах»](#в-промптах) ```text Below is the documentation for the XYZ library: [paste llm.codes output] Based on this documentation, help me implement... ``` ## Сравнение с другими инструментами [Заголовок раздела «Сравнение с другими инструментами»](#сравнение-с-другими-инструментами) | Инструмент | JS Rendering | Краулинг | Фильтрация | | ---------- | ------------ | -------- | ---------- | | llm.codes | ✅ | ✅ | ✅ | | curl | ❌ | ❌ | ❌ | | wget | ❌ | ✅ | ❌ | | llmstxt | ❌ | ✅ | Базовая | ## Самостоятельный хостинг [Заголовок раздела «Самостоятельный хостинг»](#самостоятельный-хостинг) ```bash git clone https://github.com/amantus-ai/llm-codes cd llm-codes npm install npm run dev ``` ### Переменные окружения [Заголовок раздела «Переменные окружения»](#переменные-окружения) ```bash FIRECRAWL_API_KEY=fc-... # Обязательно UPSTASH_REDIS_URL=... # Опционально (для кэша) ``` ## Use Cases [Заголовок раздела «Use Cases»](#use-cases) ### Apple Developer Docs [Заголовок раздела «Apple Developer Docs»](#apple-developer-docs) Apple использует тяжёлый JavaScript. llm.codes — единственный способ получить контент для LLM: ```plaintext https://llm.codes/?url=https://developer.apple.com/documentation/swiftui ``` ### React документация [Заголовок раздела «React документация»](#react-документация) Новая React документация (react.dev) также требует JS: ```plaintext https://llm.codes/?url=https://react.dev/reference/react/hooks ``` ## Ограничения [Заголовок раздела «Ограничения»](#ограничения) * Только белый список из 69 сайтов * Требуется Firecrawl API key для self-hosting * Rate limiting для публичного API * Нет поддержки авторизованного контента ## Связь с llms.txt [Заголовок раздела «Связь с llms.txt»](#связь-с-llmstxt) llm.codes **дополняет** стандарт llms.txt: 1. **llms.txt** — индекс страниц со ссылками 2. **llm.codes** — получение контента конкретных страниц Workflow: ```plaintext llms.txt → выбрать нужные URL → llm.codes → получить Markdown ``` # llmstxt-architect > AI-генерация llms.txt с помощью LLM ## Обзор [Заголовок раздела «Обзор»](#обзор) **llmstxt-architect** — это Python-инструмент, который использует языковые модели (Claude, GPT, Ollama) для автоматической генерации качественных описаний в `llms.txt`. **Репозиторий:** [github.com/rlancemartin/llmstxt\_architect](https://github.com/rlancemartin/llmstxt_architect) ## Преимущества [Заголовок раздела «Преимущества»](#преимущества) В отличие от простого извлечения meta-описаний, llmstxt-architect: * **Анализирует контент** — читает содержимое страниц * **Генерирует описания** — использует LLM для создания осмысленных описаний * **Объясняет релевантность** — описывает, когда и зачем читать страницу ## Установка [Заголовок раздела «Установка»](#установка) ```bash # Быстрый запуск через uvx curl -LsSf https://astral.sh/uv/install.sh | sh uvx --from llmstxt-architect llmstxt-architect --help # Или установка через pip pip install llmstxt-architect ``` ## Базовое использование [Заголовок раздела «Базовое использование»](#базовое-использование) ### С Anthropic Claude [Заголовок раздела «С Anthropic Claude»](#с-anthropic-claude) ```bash export ANTHROPIC_API_KEY=sk-ant-... llmstxt-architect \ --urls https://docs.example.com \ --max-depth 2 \ --llm-name claude-3-5-sonnet-latest \ --llm-provider anthropic \ --project-dir output ``` ### С OpenAI [Заголовок раздела «С OpenAI»](#с-openai) ```bash export OPENAI_API_KEY=sk-... llmstxt-architect \ --urls https://docs.example.com \ --max-depth 2 \ --llm-name gpt-4o \ --llm-provider openai \ --project-dir output ``` ### С локальной моделью (Ollama) [Заголовок раздела «С локальной моделью (Ollama)»](#с-локальной-моделью-ollama) ```bash # Запустите Ollama ollama serve llmstxt-architect \ --urls https://docs.example.com \ --max-depth 1 \ --llm-name llama3.2:latest \ --llm-provider ollama \ --project-dir output ``` ## Параметры [Заголовок раздела «Параметры»](#параметры) | Параметр | Описание | По умолчанию | | ------------------ | ------------------------------------- | --------------- | | `--urls` | URL для обработки | Обязательно | | `--max-depth` | Глубина краулинга (1-5) | 5 | | `--llm-name` | Название модели | claude-3-sonnet | | `--llm-provider` | Провайдер (anthropic, openai, ollama) | anthropic | | `--project-dir` | Директория для результатов | llms\_txt | | `--output-file` | Имя выходного файла | llms.txt | | `--blacklist-file` | Файл с URL для исключения | - | | `--extractor` | Метод извлечения (default, bs4) | default | ## Обновление существующего llms.txt [Заголовок раздела «Обновление существующего llms.txt»](#обновление-существующего-llmstxt) ### Обновить только описания [Заголовок раздела «Обновить только описания»](#обновить-только-описания) ```bash llmstxt-architect \ --existing-llms-file https://example.com/llms.txt \ --update-descriptions-only \ --llm-name claude-3-5-sonnet-latest \ --llm-provider anthropic \ --project-dir updated ``` Сохраняет структуру и секции, обновляет только описания ссылок. ### Из локального файла [Заголовок раздела «Из локального файла»](#из-локального-файла) ```bash llmstxt-architect \ --existing-llms-file ./llms.txt \ --update-descriptions-only \ --llm-provider ollama \ --llm-name llama3.2 \ --project-dir updated ``` ## Исключение URL [Заголовок раздела «Исключение URL»](#исключение-url) Создайте файл `blacklist.txt`: ```text # Deprecated pages https://example.com/old-api/ https://example.com/v1/ # Not relevant https://example.com/jobs/ https://example.com/legal/ ``` Запуск: ```bash llmstxt-architect \ --urls https://example.com \ --blacklist-file blacklist.txt \ --project-dir output ``` ## Python API [Заголовок раздела «Python API»](#python-api) ```python import asyncio from llmstxt_architect.main import generate_llms_txt async def main(): await generate_llms_txt( urls=["https://docs.example.com"], max_depth=2, llm_name="claude-3-5-sonnet-latest", llm_provider="anthropic", project_dir="output", ) asyncio.run(main()) ``` ### Кастомный экстрактор [Заголовок раздела «Кастомный экстрактор»](#кастомный-экстрактор) ```python from bs4 import BeautifulSoup def custom_extractor(html: str) -> str: soup = BeautifulSoup(html, 'html.parser') # Удалить навигацию и футер for tag in soup.find_all(['nav', 'footer', 'aside']): tag.decompose() # Извлечь только main content main = soup.find('main') or soup.find('article') if main: return main.get_text(separator='\n', strip=True) return soup.get_text(separator='\n', strip=True) await generate_llms_txt( urls=["https://docs.example.com"], extractor=custom_extractor, # ... ) ``` ## Структура выходных файлов [Заголовок раздела «Структура выходных файлов»](#структура-выходных-файлов) ```plaintext project-dir/ ├── llms.txt # Итоговый файл ├── summaries/ │ ├── summarized_urls.json # Чекпоинт прогресса │ ├── docs_example_com_page1.txt │ ├── docs_example_com_page2.txt │ └── ... # Индивидуальные саммари ``` ## Промпт для генерации [Заголовок раздела «Промпт для генерации»](#промпт-для-генерации) По умолчанию LLM получает такой промпт: ```text Create a concise summary for this documentation page. The summary should explain: 1. When should an LLM read this page? 2. What key topics are covered? Keep the summary to 1-2 sentences maximum. ``` ### Кастомный промпт [Заголовок раздела «Кастомный промпт»](#кастомный-промпт) ```bash llmstxt-architect \ --urls https://example.com \ --summary-prompt "Summarize this API documentation. Focus on endpoints and use cases." \ --project-dir output ``` ## Чекпоинты и продолжение [Заголовок раздела «Чекпоинты и продолжение»](#чекпоинты-и-продолжение) Инструмент сохраняет прогресс каждые 5 документов: ```bash # Если процесс прервался, просто запустите снова llmstxt-architect --urls https://example.com --project-dir output # Обработанные URL будут пропущены ``` ## Интеграция с MCP [Заголовок раздела «Интеграция с MCP»](#интеграция-с-mcp) Используйте сгенерированный `llms.txt` с MCP-сервером: ```json { "mcpServers": { "docs": { "command": "uvx", "args": [ "--from", "mcpdoc", "mcpdoc", "--urls", "Docs:./output/llms.txt", "--transport", "stdio" ] } } } ``` ## Примеры результатов [Заголовок раздела «Примеры результатов»](#примеры-результатов) Проекты, использующие llmstxt-architect: * [LangGraph llms.txt](https://langchain-ai.github.io/langgraph/llms.txt) * [LangChain llms.txt](https://python.langchain.com/llms.txt) ## Сравнение с llmstxt CLI [Заголовок раздела «Сравнение с llmstxt CLI»](#сравнение-с-llmstxt-cli) | Аспект | llmstxt CLI | llmstxt-architect | | ----------------- | ---------------- | ---------------------- | | Источник описаний | Meta-теги | AI-генерация | | Качество описаний | Зависит от сайта | Высокое | | Скорость | Быстро | Медленнее (API вызовы) | | Стоимость | Бесплатно | Оплата API | | Глубина анализа | Поверхностный | Анализ контента | # llmstxt CLI > Генерация llms.txt из sitemap.xml ## Обзор [Заголовок раздела «Обзор»](#обзор) **llmstxt** — это CLI-инструмент для автоматической генерации файлов `llms.txt` из `sitemap.xml` вашего сайта. **Репозиторий:** [github.com/dotenvx/llmstxt](https://github.com/dotenvx/llmstxt) ## Установка [Заголовок раздела «Установка»](#установка) ```bash # Глобальная установка npm install -g llmstxt # Или запуск через npx (без установки) npx llmstxt gen https://example.com/sitemap.xml ``` ## Команды [Заголовок раздела «Команды»](#команды) ### gen — Базовая генерация [Заголовок раздела «gen — Базовая генерация»](#gen--базовая-генерация) Создаёт `llms.txt` со списком страниц и описаниями: ```bash npx llmstxt gen https://example.com/sitemap.xml > llms.txt ``` **Результат:** ```markdown # Example Site > Description from meta tags ## Section - [Page Title](https://example.com/page): Meta description ``` ### gen-full — Полная генерация [Заголовок раздела «gen-full — Полная генерация»](#gen-full--полная-генерация) Создаёт файл с полным контентом всех страниц: ```bash npx llmstxt gen-full https://example.com/sitemap.xml > llms-full.txt ``` **Включает:** * Оглавление (Table of Contents) * Полный текст каждой страницы в Markdown * Даты последнего обновления ## Опции [Заголовок раздела «Опции»](#опции) ### Фильтрация путей [Заголовок раздела «Фильтрация путей»](#фильтрация-путей) ```bash # Исключить пути 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/**" ``` ### Очистка заголовков [Заголовок раздела «Очистка заголовков»](#очистка-заголовков) Удаление повторяющегося текста из заголовков: ```bash # Удалить "| Example" из всех заголовков npx llmstxt gen https://example.com/sitemap.xml \ --replace-title 's/\| Example//' ``` ### Кастомные метаданные [Заголовок раздела «Кастомные метаданные»](#кастомные-метаданные) ```bash npx llmstxt gen https://example.com/sitemap.xml \ --title "My Documentation" \ --description "Official docs for My Project" ``` ### Контроль параллелизма [Заголовок раздела «Контроль параллелизма»](#контроль-параллелизма) ```bash # Ограничить количество одновременных запросов npx llmstxt gen https://example.com/sitemap.xml \ --concurrency 3 ``` ## Полный пример [Заголовок раздела «Полный пример»](#полный-пример) ```bash 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` | Макс. параллельных запросов | ## Как это работает [Заголовок раздела «Как это работает»](#как-это-работает) 1. **Парсинг sitemap.xml** — извлечение всех URL 2. **Загрузка страниц** — параллельная загрузка с контролем concurrency 3. **Извлечение метаданных:** * `` — заголовок страницы * `<meta name="description">` — описание * `<meta property="og:description">` — fallback * `<meta name="twitter:description">` — fallback 4. **Группировка** — страницы группируются по URL-путям 5. **Генерация Markdown** — форматирование в llms.txt ## Интеграция в CI/CD [Заголовок раздела «Интеграция в CI/CD»](#интеграция-в-cicd) ### GitHub Actions [Заголовок раздела «GitHub Actions»](#github-actions) ```yaml 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 ``` ## Troubleshooting [Заголовок раздела «Troubleshooting»](#troubleshooting) ### Пустой результат [Заголовок раздела «Пустой результат»](#пустой-результат) Проверьте, что: 1. sitemap.xml доступен и содержит URL 2. Страницы имеют `<title>` теги 3. Фильтры не исключают все страницы ### Медленная генерация [Заголовок раздела «Медленная генерация»](#медленная-генерация) Уменьшите `--concurrency` для избежания rate limiting: ```bash npx llmstxt gen https://example.com/sitemap.xml -c 2 ``` ### Некорректные заголовки [Заголовок раздела «Некорректные заголовки»](#некорректные-заголовки) Используйте `--replace-title` для очистки: ```bash npx llmstxt gen url -rt 's/ - My Site$//' ```