Обычно разговор про 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 и строится так:
- H1-заголовок — название сайта или проекта.
- Блок с описанием — обязательная секция с заголовком H2 и текстом: кто вы, что за проект, кому он полезен. Ещё здесь часто указывают базовую информацию: официальное имя, ссылки на профили, ключевые факты, которые модель должна знать наверняка, чтобы не выдумывать.
- Список разделов — второй обязательный блок, заголовок 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 ключевым запросам вашей целевой аудитории.
Без шаблонных отчётов — просто скажу, где вы есть, а где вас нет, и что с этим делать.