как составить llms txt

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

Речь про два файла: llms.txt и llms-full.txt. Это по сути карта сайта, написанная не для Яндекса и Google, а для языковых моделей. Спрос на тему растёт: по данным Wordstat, запрос «llms txt» только за последний год вырос больше чем в полтора раза. При этом на Neyrogram про этот слой ещё никто не писал — все наши материалы про GEO касаются контента и стратегии. Пора закрыть дыру.

Разберу, что это за файлы, зачем они сайту и как составить первый llms.txt за один вечер. Без теории «что такое GEO» — если вы тут впервые, начните с общего гайда про попадание в ответы нейросетей, а сюда возвращайтесь за технической частью.

Зачем сайту файл, который никто из людей не читает

Чтобы понять смысл llms.txt, надо отмотать на шаг назад и посмотреть, как вообще нейросеть добирается до вашего контента.

Когда человек ищет что-то в ChatGPT Search, Perplexity или Алисе, под капотом работает не магия, а обычный краулер. Он ходит по сайтам, скачивает HTML-страницы, извлекает текст и кладёт его в индекс, на который потом опирается модель. Краулеры эти вам знакомы по логам сервера: GPTBot и OAI-SearchBot от OpenAI, PerplexityBot, ClaudeBot от Anthropic, Google-Extended от Google, YandexSearchMonitoring у Яндекса.

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

llms.txt решает ровно эту задачу. Это один текстовый файл в формате markdown, который лежит в корне домена и коротко объясняет модели, что за сайт перед ней и где лежит его суть. Никакой вёрстки, никакого шума — только структура и ссылки. Модель читает этот файл вместо того, чтобы реконструировать картину по сотням страниц.

Чем llms.txt отличается от robots.txt и sitemap.xml

Самая частая путаница — три файла, которые вроде бы про одно. На деле у них три разные роли:

robots.txt — это про запреты. Он говорит краулеру, куда ходить можно, а куда нельзя, и это его единственная работа. Причём файл адресован роботам вообще — и поисковым, и LLM. Он не описывает контент, он описывает границы доступа.

sitemap.xml — это про полноту. Он перечисляет все URL сайта, чтобы поисковик ничего не пропустил. Тоже нейтральный: просто список адресов с метаданными, без всякой оценки важности для чтения.

llms.txt — это про приоритеты и смысл. Он не запрещает и не перечисляет всё подряд, а отбирает самое главное и описывает его человеческим языком. По сути это curated-версия сайта: «вот что я из себя представляю, вот мои ключевые разделы, вот где их читать в чистом виде».

Забегая вперёд: robots.txt и llms.txt работают в паре. Первый открывает дверь боту, второй кладёт на стол уже разобранную папку с документами. Забыть открыть бота в robots.txt — и весь llms.txt будет лежать красиво, но никто до него не дойдёт.

llms.txt против llms-full.txt — где какая роль

Файлов два, и путать их не стоит, хотя название почти одно и то же.

llms.txt — это оглавление. Небольшой файл, который лежит по адресу https://вашдомен/llms.txt. В нём короткое описание проекта и список разделов со ссылками на markdown-версии страниц. Идеальный размер — чтобы модель прочитала его целиком за один запрос, не подавившись. Он отвечает на вопрос «что здесь есть и куда смотреть в первую очередь».

llms-full.txt — это полная выжимка контента. Один большой файл, куда собран текстовый markdown всех страниц, на которые ссылается llms.txt. Модель, которой не хватило оглавления, скачивает один этот файл и получает весь отобранный контент разом — без тысячи отдельных запросов к каждой странице.

На практике это выглядит так: краулер забирает оглавление /llms.txt, находит в нём ссылку на /llms-full.txt, и дальше у него весь материал в одном месте. Для маленького сайта хватит одного llms.txt с парой-тройкой ссылок. Для большого — связка из двух файлов снимает 90% работы по навигации.

Как LLM-краулеры читают сайт сегодня

Чтобы понять, почему llms.txt так сильно выигрывает у «просто откройте сайт индексному боту», посмотрим на реальную механику.

Классический путь краулера: зашёл на URL → скачал HTML → распарсил → выкинул <script>, <style>, навигацию → извлёк основной текст → отправил в пайплайн. На каждом шаге потери. HTML-страница современного сайта — это сотни килобайт, из которых к читаемому тексту относятся единицы процентов. Плюс краулеры работают по бюджету: у каждого есть лимит на домен, и тратится он на скачивание, а не на пользу.

Markdown-файл переворачивает эту логику. Это уже чистый текст с лёгкой разметкой заголовков и списков — ровно тот формат, который модель понимает нативно, потому что markdown — её родной язык разметки. Никакого парсинга, никакого вычленения главного из шума: файл и есть главное.

Мои наблюдения по логам: после добавления llms.txt и llms-full.txt краулеры начинают ходить по паре URL вместо десятков страниц, а это ровно то поведение, которое и нужно. Меньше запросов — меньше нагрузки — но контент при этом доходит целиком, а не обрывками.

Отдельно про YandexSearchMonitoring. Яндекс со своей Алисой и Нейро держит собственного мониторингового бота, и он, как и остальные, ценит, когда сайт даёт заранее подготовленный слой для чтения. Точных публичных гарантий, что именно llms.txt подтянет вас в ответ Нейро, никто не даёт, но техническая логика та же: чем удобнее краулеру, тем выше шанс, что контент окажется в выборке.

Структура llms.txt по стандарту

Стандарт llms.txt — это де-факто спецификация, предложенная в 2024 году разработчиком Джереми Ховардом и командой Answer.AI. Официального RFC нет, но формат уже достаточно устоялся, и крупные сервисы его потихоньку подхватывают.

Файл пишется строго в markdown и строится так:

  1. H1-заголовок — название сайта или проекта.
  2. Блок с описанием — обязательная секция с заголовком H2 и текстом: кто вы, что за проект, кому он полезен. Ещё здесь часто указывают базовую информацию: официальное имя, ссылки на профили, ключевые факты, которые модель должна знать наверняка, чтобы не выдумывать.
  3. Список разделов — второй обязательный блок, заголовок H2, дальше маркированный список. Каждый пункт — это ссылка в markdown-формате [Название раздела](URL), где URL ведёт на markdown-версию соответствующей страницы или раздела.

Спецификация делит поля на два типа. Required — то, что должно быть всегда: заголовок, блок описания, блок со ссылками. Optional — то, что можно добавить по желанию: даты обновления, указания на llms-full.txt, дополнительная мета-информация. Никакого HTML, никаких таблиц со стилями — только markdown.

Что писать в файл, а что — не пихать

Главная ошибка новичков — желание запихнуть в llms.txt весь сайт. Это в корне неверно. Файл не про полноту, он про отбор.

В llms.txt кладём:

  • самые важные для цитирования страницы: главную, ключевые разделы, страницы услуг или продуктов, которые должны попасть в ответы;
  • факты о бренде, которые модель обязана знать точно: чем занимаетесь, с какого года, где работаете, чем отличаетесь;
  • ссылки на то, что реально отвечает на вопросы аудитории, а не на весь архив подряд.

Не кладём:

  • страницы политики конфиденциальности, «о компании» с вакансиями и прочую вспомогательную шелуху;
  • дамп блога целиком ради объёма — модель не должна утонуть в вторичном контенте;
  • служебные и технические страницы, которые не несут ответа ни на один вопрос.

Простой тест для каждого пункта: ответит ли эта страница на чей-то реальный запрос? Если нет — ей в llms.txt не место. Лучше 10 точных ссылок, чем 500 случайных.

Ещё пара практических правил. Каждая ссылка в файле должна вести на markdown-версию страницы, а не на HTML. Формулировки в описании — короткие и фактурные, без «мы лучшие на рынке». Модель цитирует то, что ей проще понять и проверить, а не то, что громче заявлено.

И не забудьте про частоту обновления. Файл, который не пересматривали полгода, начинает врать: ссылки протухают, разделы меняются. Приучитесь обновлять llms.txt вместе с каждой заметной правкой структуры сайта.

Как llms.txt встраивается в остальной GEO-стек

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

robots.txt — первым делом проверяем, что нужные боты не закрыты. Прописываем в разделе User-agent записи для GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot, Google-Extended, YandexSearchMonitoring. Если бот запрещён тут, до llms.txt он просто не достучится. Это фундамент.

sitemap.xml — продолжает работать как и работал, для поисковых систем. llms.txt его не отменяет и не заменяет: один про полноту для SEO, второй про приоритеты для LLM. Живут параллельно.

Schema.org и JSON-LD — это про явное объявление сущностей: продукт, организация, событие, FAQ. Разметка помогает и классическому поиску, и LLM понять структуру данных. llms.txt поверх этого даёт навигацию по смысловым блокам. Слои не конфликтуют, а дополняют друг друга: разметка объясняет «что это за объект», llms.txt — «где искать самое важное».

Порядок внедрения я бы выстроил так: сначала открыть ботов в robots.txt, потом навести порядок в markdown-версиях ключевых страниц, потом собрать llms.txt со ссылками на них, и только затем — при большом объёме — склеить llms-full.txt. Разметку Schema наводите параллельно, она независимая.

Мини-гайд: как составить llms.txt за вечер

Дальше — пошагово, чтобы вы могли сделать это прямо сегодня, не дожидаясь подрядчика.

Шаг 1. Соберите markdown-версии. Отберите 5–15 страниц, которые реально должны цитироваться. Для каждой подготовьте markdown-версию: вычищенный текст с заголовками и списками, без навигации и скриптов. Их можно разместить как отдельные файлы .md или свернуть все в один llms-full.txt.

Шаг 2. Напишите оглавление. Создайте файл llms.txt в корне домена. Шаблон минимально достаточного варианта:

Название проекта

Краткое описание: кто вы и чем полезны, одним-двумя предложениями.

Описание

Здесь — 2–3 абзаца о проекте: чем занимаетесь, для кого, ключевые факты,

которые модель должна знать точно. Без воды и оценочных эпитетов.

Разделы

- [Главная](https://домен.ru/index.md)

- [Услуги](https://домен.ru/uslugi.md)

- [Ключевая статья](https://домен.ru/stati/glavnaya.md)

Полный контент: [llms-full.txt](https://домен.ru/llms-full.txt)

Шаг 3. Положите файл в корень. Адрес должен быть ровно https://домен.ru/llms.txt. Это условие стандарта — краулеры ищут файл именно там, сканировать весь сайт в поисках его никто не будет. Если у вас несколько языковых версий, возможны варианты вида /ru/llms.txt, но базовый — строго в корне.

Шаг 4. Проверьте отдачу. Файл должен отдаваться по HTTPS с кодом 200 и корректным Content-Type (текстовым, без HTML-обёртки). Проверить можно обычным curl или через онлайн-генераторы и валидаторы — запросы «llms txt генератор» и «llms txt проверить» уже ищут достаточно активно, и инструментов под это появляется всё больше.

Шаг 5. Вернитесь к robots.txt. Убедитесь, что LLM-боты не закрыты и что на сайте нет блокировок, которые перекроют доступ к каталогу с markdown-файлами.

Всё. На маленьком сайте это занимает вечер. Дальше остаётся только следить за логами: появятся запросы ботов именно к /llms.txt — значит, связка заработала.

Честно об ограничениях

Здесь я обязан остудить пыл, иначе получится очередной «просто добавьте файл — и нейросеть зацитирует вас первым».

Во-первых, llms.txt — это не официальный стандарт. Это предложение, которое де-факто приняло сообщество, но никакой регулирующий орган и ни один вендор не обязал его использовать. Формат может измениться, а могут и не подхватить до конца.

Во-вторых, принятие неоднородное. Часть сервисов уже смотрит на llms.txt как на один из сигналов, другие пока работают преимущественно по классическому обходу HTML. Точного списка «кто поддерживает на 100%» нет — публичные заявления вендоров на эту тему осторожные, и цифрами это не подкреплено. Я бы не строил стратегию на гарантиях.

В-третьих, файл не заменяет контент. Он только облегчает доставку. Если на страницах нечего цитировать, никакой llms-full.txt вас не вытащит. Слой работает поверх нормального контента, а не вместо него.

И главное — no guarantee. Ни один машинно-читаемый файл не обещает попадания в ответы. llms.txt повышает шансы, что контент окажется в выборке и не потеряется по дороге. А вот попадёт ли модель именно на него в конкретном ответе — решают совсем другие факторы. Держите это в голове, когда будете презентовать тему клиенту или руководству.

При этом задел делать стоит уже сейчас. Спрос на тему растёт, краулеры становятся умнее, и сайт, который говорит с ними на их языке, со временем оказывается в выигрыше просто потому, что его удобнее читать. Это не магия с мгновенным результатом. Это гигиена, которая копится.

Коротко: что запомнить

llms.txt — это карта сайта для языковых моделей, а llms-full.txt — выжимка отобранного контента одним файлом. Первый отвечает на вопрос «где главное», второй даёт это главное целиком.

Файл не отменяет robots.txt и sitemap.xml и работает только тогда, когда боты открыты и контент есть что цитировать. Внутри — markdown, короткое описание и список ссылок на markdown-версии страниц, ничего лишнего.

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

Спасибо, что дочитали до конца.

Если хотите понять, работает ли GEO у вас — заходите на geouseo.ru

Я бесплатно проверю: упоминают ли вас ChatGPT, Gemini или Яндекс GPT по 5 ключевым запросам вашей целевой аудитории.

Без шаблонных отчётов — просто скажу, где вы есть, а где вас нет, и что с этим делать.