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

Формат файла

Полная спецификация формата llms.txt

Файл llms.txt использует формат Markdown с определённой структурой. Он размещается в корне сайта по адресу /llms.txt.

# Заголовок H1 (обязательно)
> Блок-цитата с кратким описанием (рекомендуется)
Дополнительный текст описания (опционально)
## Секция H2 (опционально)
- [Название ссылки](URL): Описание ресурса
- [Другая ссылка](URL): Что содержит этот ресурс
## Optional
- [Дополнительный ресурс](URL): Можно пропустить при нехватке контекста

Единственный обязательный элемент — заголовок первого уровня с названием проекта:

# FastHTML

или

# Документация API v2

Краткое описание проекта в 1-2 предложения:

> FastHTML — это Python-библиотека для создания быстрых веб-приложений
> с использованием HTMX и современных веб-стандартов.

Дополнительная информация после блок-цитаты:

Важные особенности:
- Не требует JavaScript-фреймворков
- Поддержка Server-Side Rendering
- Интеграция с FastAPI

Каждая секция начинается с заголовка H2:

## Документация
- [Быстрый старт](https://example.com/quickstart): Начните здесь
- [Установка](https://example.com/install): Системные требования и установка

Каждая ссылка состоит из:

- [Название](URL): Описание
ЭлементОбязательностьПример
НазваниеОбязательно[API Reference]
URLОбязательно(https://docs.example.com/api)
ОписаниеРекомендуется: Полное описание эндпоинтов
- [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
- [Changelog](https://example.com/changelog): История изменений
- [Contributing](https://example.com/contributing): Гайд для контрибьюторов
- [Advanced Topics](https://example.com/advanced): Углублённые темы
https://example.com/llms.txt

Для подразделов сайта можно создавать отдельные файлы:

https://example.com/docs/llms.txt
https://example.com/api/llms.txt

Рекомендуется предоставлять .md версии HTML-страниц:

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 строк кода):

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 содержит только второстепенные ресурсы