🗺️llms.txt, robots.txt и sitemap.xml: кто за что отвечает и где не дублируют
Три файла в корне сайта, которые постоянно путают. Разбираем, что делает каждый — доступ, карта URL и смысловая карта для LLM — и как они работают вместе, а не вместо.
Три текстовых файла в корне сайта — robots.txt, sitemap.xml, llms.txt — регулярно валят в одну кучу. «Зачем llms.txt, если есть sitemap?», «robots.txt же и так всё закрывает», «поставил llms.txt — теперь AI меня видит». Каждое из этих утверждений — про непонимание, кто из трёх за что отвечает. На самом деле у них три разные задачи, и они не заменяют, а дополняют друг друга. Разберём по полкам.
Коротко: три файла — три задачи
- robots.txt — про доступ. Кому из ботов можно ходить по сайту и куда. Это охранник на входе.
- sitemap.xml — про полноту. Список всех страниц, которые есть на сайте, чтобы поисковый краулер ничего не пропустил. Это опись помещений.
- llms.txt — про смысл. Короткая человекочитаемая карта: что это за сайт, о чём он и куда смотреть в первую очередь. Это табличка «вы здесь» с указателями.
Дальше — каждый подробнее.
robots.txt — контроль доступа
robots.txt отвечает на один вопрос: какому боту куда можно. User-agent + Allow/Disallow. Он не про содержание и не про смысл — только про доступ. Именно здесь вы решаете, пускать ли GPTBot, OAI-SearchBot, PerplexityBot и остальных (полный разбор — в справочнике AI-краулеров).
Чего robots.txt не делает:
- Не прячет страницу из выдачи.
Disallowговорит «не сканируй», но URL всё равно может попасть в индекс — без сниппета, «голой» ссылкой, если на неё кто-то ссылается. Чтобы страницы не было в выдаче, нужен мета-тегnoindexна самой странице, а неDisallowв robots. - Не гарантирует запрет. Добросовестные боты слушаются, недобросовестные — нет. robots.txt — просьба, не замок.
sitemap.xml — карта существующих URL
sitemap.xml (или sitemap-index.xml, если карт несколько) — это машинный список всех страниц сайта в формате XML, который вы предъявляете поисковым краулерам Google и Яндекса. По каждому URL можно указать дату последнего изменения (lastmod), частоту обновления и приоритет. Задача — чтобы краулер узнал обо всех страницах, включая те, на которые мало внутренних ссылок, и не потратил краулинговый бюджет впустую.
Чего sitemap не делает:
- Не управляет индексацией. Наличие URL в sitemap — подсказка «вот эта страница существует и вот когда обновилась», а не команда «проиндексируй». Google сам решает, что брать.
- Не про доступ и не про смысл. Это просто перечень адресов. Робот, который не имеет права ходить по сайту (закрыт в robots), sitemap не «разблокирует».
Важная деталь: sitemap должен быть актуальным. Устаревшая карта с несуществующими URL (404) — это шум, который снижает доверие краулера. Поэтому sitemap правильно генерировать автоматически при сборке сайта, а не поддерживать руками.
llms.txt — смысловая карта для LLM
llms.txt — самый молодой из трёх и самый недопонятый. Это человекочитаемый файл в формате markdown, который объясняет языковой модели, что за сайт перед ней и куда смотреть. Не список всех URL (это работа sitemap), а курированная карта смысла: H1 с названием сайта, одно предложение-описание, разделы с несколькими ключевыми ссылками и коротким пояснением к каждой.
Разница с sitemap принципиальная. Sitemap говорит «вот 400 страниц» — модель в них утонет. llms.txt говорит «этот сайт про GEO-оптимизацию, вот 8 главных материалов, вот как связаться» — модель получает суть за один запрос. Полный разбор формата — в отдельной статье llms.txt — минимум.
Честно про статус: llms.txt — не утверждённый стандарт, а растущая конвенция. Ни один крупный вендор официально не подтвердил, что использует его как ранжирующий сигнал; Google прямо заявлял, что в поиске его не учитывает. Но на практике часть AI-краулеров файл запрашивает при первом визите на домен, и стоит он 15 минут. Позиция здравого смысла: сделать по-нормальному и не переоценивать эффект.
Таблица: чем они отличаются
| robots.txt | sitemap.xml | llms.txt | |
|---|---|---|---|
| Про что | доступ | полнота URL | смысл сайта |
| Формат | директивы | XML | markdown |
| Для кого | все краулеры | поисковые боты | языковые модели |
| Что содержит | кому куда можно | список всех страниц | курированную карту |
| Статус | стандарт | стандарт | конвенция |
| Обязателен | де-факто да | желательно | по желанию |
Частые заблуждения — по пунктам
- «llms.txt заменяет sitemap». Нет. Sitemap — про полноту (все URL для поисковика), llms.txt — про приоритет и смысл (главное для модели). Разные аудитории, разные задачи.
- «llms.txt заменяет robots.txt». Нет. robots.txt управляет доступом, llms.txt — навигацией по смыслу. llms.txt никого не пускает и не закрывает.
- «sitemap заставляет Google проиндексировать». Нет, это подсказка, а не команда.
- «Disallow в robots прячет страницу из выдачи». Нет, для этого
noindex.Disallowможет, наоборот, оставить URL в индексе без описания.
Как они работают вместе
Правильный сетап — это все три, каждый на своём месте:
- robots.txt пускает нужных ботов (поисковые + AI-поисковые), режет обучающие, если хотите, и в конце указывает
Sitemap: https://site.ru/sitemap-index.xml. - sitemap.xml генерируется автоматически при билде, перечисляет все живые страницы с актуальным
lastmod. - llms.txt лежит в корне, даёт модели смысловую карту: что за сайт, главные разделы, как связаться.
Ни один не дублирует другой. robots.txt пускает → sitemap показывает, что есть → llms.txt объясняет, что из этого главное.
Как проверить все три
curl -s https://site.ru/robots.txt | head -20
curl -sI https://site.ru/sitemap-index.xml | head -1 # ждём 200
curl -s https://site.ru/llms.txt | head -20
Проверьте: в robots.txt есть строка Sitemap:; sitemap отдаёт 200 и в нём нет мёртвых URL; llms.txt заполнен до конца, а не заглушка на два слова (короткий llms.txt вреднее его отсутствия — он создаёт впечатление, что сайт пустой). Три файла, пятнадцать минут проверки — и вы точно не мешаете сами себе.
Автор: Денис Б., seodb.tech — SEO / GEO / AI-поиск. Смежные разборы: robots.txt для AI-краулеров · llms.txt — минимум · GEO-чек-лист перед запуском лендинга.