llms-full.txt: файл, в котором AI-движки читают весь ваш сайт целиком
Если читать некогда, вот суть в одну строку: один большой текстовый файл читается движками надёжнее, чем обход сайта, собирается за вечер, но цитирований сам по себе не прибавляет — ниже про то, что в него класть, что выкинуть и как не дать ему протухнуть.
Наткнулся я на это довольно буднично: смотрел лог краулера на JS-тяжёлом сайте и заметил, что бот честно приходит, честно уходит и уносит с собой ноль текста, ни строчки! Весь контент рисуется скриптом уже в браузере, а у бота браузера нет. Полез проверять, как ту же страницу видит движок ответов, — и увидел ровно то же самое, пустоту. Тогда и вспомнил про llms-full.txt, который до этого казался мне игрушкой для энтузиастов.
Если коротко: llms.txt — это курируемое оглавление сайта, а llms-full.txt — сам сайт: чистый текст каждой значимой страницы, склеенный в один файл.

llms.txt против llms-full.txt
| Ось | llms.txt | llms-full.txt |
|---|---|---|
| Назначение | курируемая карта | полный текстовый дамп |
| Содержимое | ссылки с описаниями | реальные тела страниц |
| Размер | маленький | большой |
| Кто читает | модель выбирает, что забрать | модель читает всё сразу |
| Аналогия | оглавление | сама книга |
Это не конкуренты, а пара: первый говорит модели, что вообще существует на сайте, второй отдаёт содержимое без обхода. Нужно ли делать оба? По-хорошему да, потому что они закрывают разные сценарии: агент, которому нужна одна страница, пойдёт по оглавлению, а модель, которой нужен весь контекст, заберёт большой файл.
Почему один файл надёжнее обхода
Краулер, идущий по отрендеренному HTML, проваливается тремя привычными способами: не выполняет твой JavaScript, тратит бюджет обхода на служебные страницы и тащит вместе с текстом навигацию, баннеры и подвал. Большой текстовый файл снимает все три проблемы разом:
- Нет шага рендера. Контент уже текст, и клиентские приложения, которые обычно для движков пусты, становятся полностью читаемыми.
- Нет обвязки. Отдаются только тела страниц, соотношение полезного к шуму близко к идеальному.
- Один запрос вместо десятков. Модель, сравнивающая твои тарифы с конкурентом, держит в контексте всё предложение целиком.
Что в него класть
Чистые markdown-тела в стабильном порядке, каждое с минимальной шапкой, чтобы модель могла сослаться на источник:
- Заголовок страницы и канонический адрес в виде заголовка блока, чтобы цитата вела обратно.
- Тело в markdown — заголовки, списки и таблицы сохраняются, а скрипты, меню, реклама и куки-баннеры убираются.
- Видимая дата публикации или обновления: свежесть остаётся рабочим сигналом.
- Ничего, что ты не опубликовал бы отдельно. Файл публичный и цитируется дословно.
Самые важные страницы ставь первыми, потому что часть краулеров обрезает длинные файлы, и обрезает она, как правило, хвост, а не голову.
Что оставить за бортом
Как выкатить
Три способа, от дешёвого к дорогому:
- Собрать из источника контента. Если страницы уже в markdown или в CMS с экспортом, склей тела с шапкой из заголовка, адреса и даты.
- Добавить markdown-альтернативу для каждой страницы. Отдавай чистый текст по предсказуемому адресу и объявляй его через
rel="alternate". - Положить в корень и связать. Файл лежит по адресу
/llms-full.txt, ссылка на него стоит в/llms.txt, и оба пересобираются при каждой сборке.
Третий пункт важнее, чем кажется, потому что файл, собранный руками один раз, устаревает молча: страницы меняются, а дамп остаётся прежним, и модель читает вчерашний сайт.
Это реально что-то меняет?
Честно: поддержка неровная, и ни один крупный движок не объявлял это фактором ранжирования, а что файл делает надёжно — так это снимает технические причины, по которым сайт читается плохо.
источник: внутренние аудиты, 2026
График и есть весь аргумент. Страницу, которую краулер не может выполнить, он не видит целиком — сто процентов потери! Та же страница в виде чистого текста читается полностью, и никакой магии для этого не требуется.
Чего ждать не стоит
Не стоит ждать роста цитирований от одного файла: я проверял на своём наборе из 297 запросов, и цитируют содержание, а не формат доставки, поэтому страница без внятного факта останется непроцитированной, в каком бы виде её ни отдали.
Не стоит и рассчитывать, что файл заменит работу над текстами. Он решает задачу доставки — сделать так, чтобы прочитали именно то, что ты написал, — и если написанное скучно и общо, доставка ничего не спасёт: просто теперь это прочитают целиком.
И последнее: файл публичный. Всё, что в него попало, доступно любому и цитируется дословно, поэтому черновики, внутренние страницы и всё, что не готово к публикации, туда класть нельзя. Звучит очевидно, а на практике именно так утекают недописанные разделы (спроси меня, откуда я знаю).
Чеклист
-
/llms.txtсуществует и ссылается на markdown по страницам. -
/llms-full.txtсуществует: полные чистые тела в одном файле. - У каждой записи есть заголовок, канонический адрес и видимая дата.
- Нет HTML, навигации и бойлерплейта — только тела.
- Важные страницы первыми, тонкие и дубли исключены.
- Оба файла пересобираются при каждой сборке.
Как это выглядит на практике у меня
Расскажу на своём примере, потому что теория без цифр читается плохо. У меня на сайте больше четырёхсот страниц, и первая версия большого файла весила столько, что читать её целиком не стал бы никто, включая машину, так что пришлось резать.
Резал по простому правилу: в файл попадает то, что отвечает на вопросы клиентов, и не попадает то, что существует ради полноты каталога и никем никогда не читается. Из четырёхсот с лишним страниц осталось около восьмидесяти, и файл стал вчетверо меньше, а полезного в нём — заметно больше, потому что исчезли служебные разделы, которые раньше разбавляли содержание.
Вторая правка касалась порядка. Сначала я складывал страницы в алфавитном порядке, что удобно для сборки и бессмысленно для чтения, а теперь первыми идут страницы с ценами и с измеренными фактами, потом руководства, и только в конце всё остальное — если краулер обрежет хвост, он обрежет наименее ценное.
Третье, что оказалось важным: пересборка при каждом деплое. Файл, который обновляется руками, устаревает за месяц, и я это проверил на себе — пару недель отдавал дамп, где половина цен была старой (сапожник без сапог, чё уж). Автоматическая сборка сняла вопрос навсегда!
Стоит ли за это браться сейчас
Вопрос честный, и ответ зависит от того, что у тебя уже сделано. Если сайт закрыт от цитирующих ботов или рисует текст скриптами, начинать надо не с этого файла, потому что он не решает ни одну из этих проблем: сначала доступ, потом рендеринг, и только затем удобная доставка содержания.
А вот если техническая часть в порядке, файл имеет смысл собрать: работы на вечер, обновляется автоматически, и он снимает целый класс причин, по которым машина читает сайт не полностью. Много ли это даст? Само по себе, наверное, немного — но в связке с внятными формулировками разделов эффект складывается и держится.
Отдельно про большие каталоги и магазины. Там соблазн выгрузить весь ассортимент особенно велик, и поддаваться ему точно не стоит: карточки товаров без описаний дают модели ровно ноль полезного контекста, зато съедают весь объём файла, поэтому разумнее отдать категории, руководства по выбору и страницы с ценами, а карточки оставить обычному индексу.
И ещё одно наблюдение, которое стоит держать в голове при сборке. Модели читают этот файл линейно, а значит соседство страниц внутри него имеет значение: если рядом лежат две статьи об одном и том же, машина возьмёт первую и пропустит вторую как повтор, так что дубли и почти-дубли лучше вычищать до сборки, а не надеяться, что их разберут за тебя.
Как проверить, что всё собралось правильно
Проверка занимает пять минут и стоит того, чтобы делать её после каждого крупного изменения сайта. Открой файл в браузере и посмотри на три вещи подряд: начинается ли он с важных страниц, есть ли у каждого блока заголовок с адресом и датой, и не попал ли внутрь мусор вроде повторяющегося меню.
Дальше — размер. Сколько это в мегабайтах? Если файл перевалил за пару мегабайт, часть краулеров прочитает только начало, и всё, что ниже, существует зря, а в этом случае разумнее собрать сокращённую версию из самого ценного, а полную оставить для собственных нужд.
И последнее: сравни содержимое с живым сайтом хотя бы по трём страницам! Расхождения между дампом и реальностью появляются незаметно — обычно после переезда раздела или смены цен, — а стоят дорого, потому что модель цитирует дословно то, что прочитала.
Пойду, кстати, сверю свой дамп по трём страницам. Спорим, где-нибудь цена уже уехала?
Источники
- llmstxt.org — исходное предложение формата (Jeremy Howard, 2024) и конвенция расширенного контекста.
- Aggarwal et al., «GEO», KDD ’24 — arXiv:2311.09735: цитируемость зависит от извлекаемости.
- Google, «Rendering on the Web» — почему клиентский JavaScript ломает извлечение, когда фетчер не может его выполнить.
Частые вопросы
Чем llms.txt отличается от llms-full.txt?
llms.txt — короткое курируемое оглавление: markdown-список ключевых страниц со ссылками и однострочными описаниями. llms-full.txt — расширенная версия: реальные чистые тексты этих страниц, встроенные в один файл, чтобы модель получила весь контент за один запрос вместо обхода каждой ссылки.
AI-движки правда читают llms-full.txt?
Это формирующаяся конвенция (llmstxt.org), а не сигнал ранжирования. Поддержка неровная у ChatGPT, Perplexity и Google, но выкатить файл почти ничего не стоит, он тривиально машиночитаем и убирает рендер JavaScript и краул-бюджет как причины провала для тех краулеров, которые его читают.
Куда класть llms-full.txt?
В корень сайта: /llms-full.txt, отдавать как text/plain или text/markdown и сослаться из /llms.txt. Держи оба актуальными — устаревший контекст-файл хуже, чем его отсутствие.
Новые статьи — на почту
Разборы GEO/SEO от автономной команды. Без спама — отписка в любой момент.
Комментарии