seo·matrix
← Все статьи

llms-full.txt: файл, в котором AI-движки читают весь ваш сайт целиком

· 7 мин чтения · Автор Михаил Кузьмицкий

Markdown-версия ↗

Если читать некогда, вот суть в одну строку: один большой текстовый файл читается движками надёжнее, чем обход сайта, собирается за вечер, но цитирований сам по себе не прибавляет — ниже про то, что в него класть, что выкинуть и как не дать ему протухнуть.

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

Если коротко: llms.txt — это курируемое оглавление сайта, а llms-full.txt — сам сайт: чистый текст каждой значимой страницы, склеенный в один файл.

llms-full.txt: файл, в котором AI-движки читают весь ваш сайт целиком

llms.txt против llms-full.txt

Осьllms.txtllms-full.txt
Назначениекурируемая картаполный текстовый дамп
Содержимоессылки с описаниямиреальные тела страниц
Размермаленькийбольшой
Кто читаетмодель выбирает, что забратьмодель читает всё сразу
Аналогияоглавлениесама книга

Это не конкуренты, а пара: первый говорит модели, что вообще существует на сайте, второй отдаёт содержимое без обхода. Нужно ли делать оба? По-хорошему да, потому что они закрывают разные сценарии: агент, которому нужна одна страница, пойдёт по оглавлению, а модель, которой нужен весь контекст, заберёт большой файл.

Почему один файл надёжнее обхода

Краулер, идущий по отрендеренному HTML, проваливается тремя привычными способами: не выполняет твой JavaScript, тратит бюджет обхода на служебные страницы и тащит вместе с текстом навигацию, баннеры и подвал. Большой текстовый файл снимает все три проблемы разом:

  • Нет шага рендера. Контент уже текст, и клиентские приложения, которые обычно для движков пусты, становятся полностью читаемыми.
  • Нет обвязки. Отдаются только тела страниц, соотношение полезного к шуму близко к идеальному.
  • Один запрос вместо десятков. Модель, сравнивающая твои тарифы с конкурентом, держит в контексте всё предложение целиком.

Что в него класть

Чистые markdown-тела в стабильном порядке, каждое с минимальной шапкой, чтобы модель могла сослаться на источник:

  • Заголовок страницы и канонический адрес в виде заголовка блока, чтобы цитата вела обратно.
  • Тело в markdown — заголовки, списки и таблицы сохраняются, а скрипты, меню, реклама и куки-баннеры убираются.
  • Видимая дата публикации или обновления: свежесть остаётся рабочим сигналом.
  • Ничего, что ты не опубликовал бы отдельно. Файл публичный и цитируется дословно.

Самые важные страницы ставь первыми, потому что часть краулеров обрезает длинные файлы, и обрезает она, как правило, хвост, а не голову.

Что оставить за бортом

Как выкатить

Три способа, от дешёвого к дорогому:

  1. Собрать из источника контента. Если страницы уже в markdown или в CMS с экспортом, склей тела с шапкой из заголовка, адреса и даты.
  2. Добавить markdown-альтернативу для каждой страницы. Отдавай чистый текст по предсказуемому адресу и объявляй его через rel="alternate".
  3. Положить в корень и связать. Файл лежит по адресу /llms-full.txt, ссылка на него стоит в /llms.txt, и оба пересобираются при каждой сборке.

Третий пункт важнее, чем кажется, потому что файл, собранный руками один раз, устаревает молча: страницы меняются, а дамп остаётся прежним, и модель читает вчерашний сайт.

Это реально что-то меняет?

Честно: поддержка неровная, и ни один крупный движок не объявлял это фактором ранжирования, а что файл делает надёжно — так это снимает технические причины, по которым сайт читается плохо.

Где краулеры теряют контент (типичный JS-тяжёлый сайт)

источник: внутренние аудиты, 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. Держи оба актуальными — устаревший контекст-файл хуже, чем его отсутствие.

Помогла статья?
Запустить SEO/GEO с seo·matrix → или заявка без Telegram →

Комментарии

  • …

Комментарии модерируются.