Специфікація llms.txt
Нижче — повний розбір формату llms.txt за чинним текстом пропозиції. Формулювання специфікації
наводимо мовою оригіналу з перекладом, щоб не втратити нюанси: у цьому документі кожне слово має значення,
бо саме за ним пишуть парсери.
Суть пропозиції
Специфікація формулює задачу так: вебсторінки зроблені для людей. HTML загортає інформацію в навігацію, рекламу та JavaScript, і зворотне перетворення на чистий текст складне й неточне. Контекстні вікна моделей, хоч і виросли, все одно замалі для сайту цілком, а кожен зайвий токен коштує часу й грошей.
«We propose adding a
/llms.txtmarkdown file to websites to provide LLM-friendly content. The file can be placed at the site root, or at any path within it, covering the pages under that path.»«Ми пропонуємо додавати на сайти Markdown-файл
/llms.txt, щоб надати контент, зручний для мовних моделей. Файл можна розмістити в корені сайту або за будь-яким шляхом усередині нього — тоді він покриває сторінки під цим шляхом.» llmstxt.org
Ключова ідея — розділення покажчика й деталей. Сам файл лишається малим: у ньому назва, коротке резюме та перелік посилань. Уся глибина живе за посиланнями й підвантажується лише тоді, коли агенту це справді потрібно.
Формат: секції в суворому порядку
Специфікація перелічує секції в порядку, у якому вони мають іти у файлі:
- Необовʼязковий byte-order mark (BOM) — три байти
EF BB BF. У v2 дозволено явно. - H1 з назвою проєкту або сайту. Це єдина обовʼязкова секція.
- Блок-цитата з коротким резюме — ключова інформація, потрібна для розуміння решти файлу.
- Нуль або більше Markdown-секцій будь-якого типу, окрім заголовків: абзаци, списки тощо. Тут детальніші пояснення про проєкт і про те, як інтерпретувати надані файли.
- Нуль або більше секцій, розділених заголовками H2, які містять «переліки файлів» — URL, за якими доступні подробиці.
- Кожен «перелік файлів» — це Markdown-список, у якому обовʼязкове гіперпосилання
[назва](URL), а далі необовʼязково двокрапка й нотатки про файл.
- Кожен «перелік файлів» — це Markdown-список, у якому обовʼязкове гіперпосилання
Еталонний приклад зі специфікації
# Title
> Optional description goes here
Optional details go here
## Section name
- [Link title](https://link_url): Optional link details
## Optional
- [Link title](https://link_url)Як це насправді розбирається
Формальний опис словами доповнює референсна реалізація на Python. Саме її регулярні вирази є найточнішим визначенням формату — якщо текст специфікації й парсер розходяться, парсер виграє на практиці, бо ним користуються інструменти.
# розбиття на секції за H2
start, *rest = re.split(fr'^##\s*(.*?$)', txt, flags=re.MULTILINE)
# рядок-посилання
title = named_re('title', r'[^\]]+')
url = named_re('url', r'[^\)]+')
desc = named_re('desc', r'.*')
pat = fr'-\s*\[{title}\]\({url}\){desc_pat}'
# блок заголовка
pat = fr'^#\s*{title}\n+{summ_pat}\n+{info}'З цих виразів випливають цілком конкретні наслідки, про які варто знати:
| Особливість парсера | Наслідок для вашого файлу |
|---|---|
URL читається як [^\)]+ |
Кругла дужка ) всередині адреси обриває розбір. Кодуйте її як %29. |
Назва читається як [^\]]+ |
Квадратна дужка ] у тексті посилання ламає конструкцію. |
Розбиття йде по ^## |
Заголовок ### теж потрапляє під шаблон і стає секцією з назвою, що починається з #. Не використовуйте H3. |
| Секції складаються у словник за назвою | Дві секції з однаковою назвою — друга мовчки перезаписує першу. Дублікати назв неприпустимі. |
Для рядка-посилання застосовується search, а не fullmatch |
Текст перед дефісом толерується, але покладатися на це не варто. |
Якщо шаблон H1 не збігся, повертається None |
Файл без H1 призводить офіційний парсер до помилки виконання. Це не «попередження», а відмова. |
Перевірити свій файл на всі ці випадки можна нашим валідатором — він відтворює логіку офіційного парсера й окремо позначає рядки, які його зламають.
Розміщення файлу
Файл має називатися саме llms.txt. Канонічне місце — корінь: /llms.txt.
Версія v2 дозволила підкаталоги й описала, що це означає:
«A file covers the URLs under its path, and where more than one file applies, agents should use the most specific one.»
«Файл покриває URL під своїм шляхом, а якщо підходить кілька файлів, агенти мають використовувати найбільш конкретний.» llmstxt.org
Практичний приклад: /docs/llms.txt описує все, що лежить під /docs/. Якщо на сайті є
і /llms.txt, і /docs/llms.txt, то для сторінки /docs/api/ застосовується
другий. Ця зміна зʼявилася, зокрема, щоб проєкти на GitHub Pages, які контролюють лише свій підкаталог,
могли повноцінно брати участь.
Що змінилося у версії v2
Перша версія вийшла у вересні 2024 року, коли сама ідея регулярного читання сайтів мовними моделями була радше прогнозом. Версія v2 (10 серпня 2026) зафіксувала те, що показали два роки практики.
| Тема | Було у v1 | Стало у v2 |
|---|---|---|
| Виявлення файлу | Нічого не сказано | Додано link relations: rel="alternate" type="text/markdown" та rel="describedby", у тому числі через HTTP-заголовок Link: |
| Markdown-версії сторінок | Лише page.html.md |
Дозволено й page.md — заміну розширення, бо частина інструментів робить саме так |
| Підкаталоги | Дозволялися, але без пояснення сенсу | Визначено: файл покриває сторінки під своїм шляхом, застосовується найбільш конкретний |
Секція Optional |
Мала механічне значення для інструменту llms_txt2ctx |
Втратила механічне значення; лишилася домовленістю про другорядні посилання |
| Модель споживання | Описувалося розгортання файлу в контекст | Прямо сказано: агент переглядає або шукає у файлі, потім іде за релевантними посиланнями |
| BOM | Не згадувався | Дозволений явно |
Співіснування з наявними стандартами
Специфікація окремо пояснює, що llms.txt не замінює sitemap.xml. Причини названі
прямо: sitemap зазвичай не містить LLM-читабельних версій сторінок; не дозволяє посилань на зовнішні сайти,
навіть якщо вони потрібні для розуміння; і перелічує документи, які в сумі не вміщаються в контекстне вікно
та містять багато зайвого.
Щодо robots.txt формулювання ще чіткіше: у них різні призначення. robots.txt повідомляє
автоматизованим інструментам, який доступ до сайту вважається прийнятним. Інформація з llms.txt натомість
використовується на вимогу, коли агенту потрібні відомості з певної теми під час допомоги користувачу.
Рекомендації автора щодо змісту
Специфікація завершується короткими практичними порадами:
- використовуйте стислу, ясну мову;
- додавайте до посилань короткі інформативні описи;
- уникайте двозначних термінів і непоясненого жаргону;
- перевіряйте файл так: дайте агенту лише ваш
llms.txtяк стартову точку й ставте запитання про ваш контент.
Остання порада — найкорисніша й найчастіше ігнорована. Це функціональний тест, який показує, чи вистачає агенту вашого покажчика, щоб знайти відповідь.