llms.txt: нужен ли он сайту и как сделать правильно

Автор: Обновлено

Что такое llms.txt?

llms.txt - формат Markdown-файла в корне сайта, предложенный Джереми Говардом в сентябре 2024 года: заголовок, краткое описание и списки ссылок на ключевые страницы для LLM и агентов. Это не стандарт IETF или W3C и не часть robots.txt: файл ничего не разрешает и не запрещает. Google Search его игнорирует, а использование файла крупными AI-платформами официально не подтверждено.

TL;DR

  • -llms.txt - предложение одного автора (llmstxt.org, 2024), а не стандарт. Официальное руководство Google говорит, что Search этот файл не использует и для показа в генеративных функциях поиска он не нужен.
  • -По данным Ahrefs (137 210 доменов, май 2026) llms.txt есть примерно у 28% доменов выборки, и 97% этих файлов за месяц не получили ни одного запроса; 96% запросов к файлам сделали боты, на AI-ботов пришлось 19,5%.
  • -Ни OpenAI, ни Anthropic, ни Perplexity, ни Microsoft, ни Яндекс не заявляли, что их краулеры или ассистенты читают llms.txt. Статус: не подтверждено.
  • -Файл дёшев и безвреден. Больше всего он подходит документации и API, где его читают агенты-кодеры; для блога важнее чистая .md-версия каждой страницы и robots.txt, открытый для AI-ботов.
  • -Файл стоит генерировать из контента, проверять ссылки в CI и держать компактным: блог futurecraft.pro сократил свой llms.txt со 111 до 31,5 КБ.

llms.txt - это Markdown-файл в корне сайта с кратким описанием проекта и списком ключевых страниц для языковых моделей и агентов. Формат предложил Джереми Говард в сентябре 2024 года. С тех пор генераторы llms.txt появились в Yoast SEO и AIOSEO, файл публикуют документации Anthropic, Perplexity и Яндекса, а в Chrome Lighthouse есть отдельный аудит. При этом ни одна крупная AI-платформа не подтвердила, что читает этот файл, а Google прямо пишет, что поиск его игнорирует.

По данным Ahrefs за май 2026 года, 97% файлов llms.txt за месяц не получили ни одного запроса. К остальным 3% обращались в основном SEO-аудиторы и прочие боты: на названных AI-ботов пришлось 19,5% запросов.

Статья о том, что подтверждено про llms.txt, а что нет, кому файл действительно нужен, как сгенерировать его из контента и проверить в CI, зачем рядом с ним нужны .md-версии страниц и как измерить эффект. Примеры взяты из блога futurecraft.pro: генератор, инцидент с битыми ссылками, сокращение файла со 111 до 31,5 КБ.

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

Спецификация опубликована на llmstxt.org. Цель файла - дать агенту краткий контекст о сайте и ссылки на подробные материалы, причём сам файл должен быть достаточно компактным, чтобы поместиться в контекст модели.

Формат по порядку:

  1. H1 с названием проекта. Это единственный обязательный элемент.
  2. Blockquote с кратким описанием.
  3. Произвольные абзацы и списки без заголовков: ключевые факты, оговорки, указания.
  4. Ноль или больше разделов H2, каждый из которых содержит список ссылок вида [name](url): заметка.
  5. Раздел ## Optional: ссылки, которые агент может пропустить, если контекста не хватает.

Файл лежит в /llms.txt или в подпути, например /docs/llms.txt; если подходит несколько файлов, агент берёт самый специфичный. Отдельно спецификация предлагает отдавать чистую Markdown-версию каждой страницы по тому же адресу с суффиксом .md (page.html.md или page.md, для адресов без имени файла index.html.md). Для обнаружения этих версий предлагаются rel="alternate" type="text/markdown", для самого llms.txt rel="describedby", в теге <link> или в HTTP-заголовке Link:.

llms.txt - предложение одного автора, а не стандарт IETF или W3C. За ним нет процесса стандартизации, и никто из тех, кто мог бы читать файл, не брал на себя обязательств.

ФайлДля когоЧто делаетОбязателен ли
robots.txtВсе краулеры, включая AI-ботовРазрешает или запрещает обход по user-agentДе-факто стандарт (RFC 9309), соблюдается крупными ботами
sitemap.xmlПоисковые роботыПеречисляет все индексируемые URL с датамиНет, но помогает обходу
llms.txtLLM и агентыДаёт отобранный список ключевых страниц с описаниямиНет, поддержка не подтверждена
.md-версии страницАгенты, читающие страницуОтдают текст без вёрстки и скриптовНет, рекомендация спецификации llms.txt

Главное отличие от robots.txt в том, что llms.txt ничего не разрешает и не запрещает. Если цель - пустить или не пустить AI-ботов, работать нужно с robots.txt.

Кто читает llms.txt: что подтверждено, а что нет

Вокруг llms.txt много уверенных утверждений в обе стороны. Если оставить только первичные источники, на ноябрь 2026 года картина такая.

УтверждениеСтатусИсточник
Google Search не использует llms.txt и не требует егоПодтвержденоРуководство Google по оптимизации под генеративный поиск
Chrome Lighthouse проверяет доступность llms.txtПодтвержденоДокументация Lighthouse
Большинство файлов llms.txt не получают запросов, основная часть запросов идёт не от AI-платформПодтверждено на выборке AhrefsИсследование Ahrefs, май 2026
OpenAI, Anthropic, Perplexity используют llms.txt при ответах или индексацииНе подтвержденоОфициальных заявлений нет
Microsoft (Bing, Copilot) использует llms.txtНе подтвержденоЗаявлений не найдено
Яндекс (Поиск, Алиса) использует llms.txtНе подтвержденоЗаявлений не найдено
llms.txt повышает цитируемость в ответах LLMНе подтвержденоИсследований с контрольной группой нет

Формулировка «не подтверждено» здесь точнее, чем «не читают». Отсутствие заявления не доказывает отсутствие использования, а единичные запросы в логах не доказывают использование.

Публикация собственных файлов тоже ничего не доказывает. У Anthropic есть llms.txt документации со ссылкой на llms-full.txt, у Perplexity - docs.perplexity.ai/llms.txt, у Яндекса - llms.txt документации API Вебмастера. Это значит, что компании считают файл полезным для своих документаций, но не значит, что их краулеры читают llms.txt на чужих сайтах.

Позиция Google и Lighthouse: два разных сигнала

В мае 2026 года Google опубликовал руководство по оптимизации под генеративный поиск (анонс в Search Central Blog, 15 мая 2026). В разделе про llms.txt и специальную разметку сказано: Google Search эти файлы не использует и игнорирует, на видимость сайта они не влияют ни в плюс, ни в минус, а поддерживать их для других систем можно. Страница AI features and your website добавляет общий принцип: для показа в AI-функциях поиска не нужны новые машиночитаемые файлы, AI-текстовые файлы или разметка.

Джон Мюллер из Google высказывался на эту тему дважды. В июне 2025 года он написал в Bluesky, что ни одна AI-система сейчас не использует llms.txt (пересказ Search Engine Roundtable). В июне 2026 года, по пересказу Search Engine Journal выпуска подкаста Search Off the Record, он объяснил, почему файл не помогает выбирать источники: llms.txt заполняет сам владелец сайта, поэтому по нему нельзя отличить один сайт от другого. Узкая роль возможна, когда агент уже работает с сайтом.

Chrome Lighthouse смотрит на llms.txt с другой стороны. Его аудит llms.txt описан в разделе документации про agentic browsing и проверяет одно: не отвечает ли сервер ошибкой на запрос файла. Сам файл Chrome называет формирующейся конвенцией (emerging convention). Если файла нет и сервер отдаёт 404, аудит получает статус Not Applicable, потому что файл пока необязателен. Это сигнал для браузерных агентов, а не фактор ранжирования.

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

Данные логов: что видно и чего не видно

Самый крупный замер - исследование Ahrefs, опубликованное 15 июня 2026 года. Ahrefs взял 137 210 доменов с трафиком из своей Web Analytics за май 2026 года.

ПоказательЗначение
Доменов с llms.txtоколо 28% выборки (около 38 тыс.)
Файлов без единого запроса за май97%
Доля запросов от ботов96% (4% от людей)
Названные AI-боты19,5% запросов
GPTBot / ClaudeBot / OAI-SearchBotоколо 4,5% / 0,8% / 0,7%
SEO-аудиторы21,7% (из них 10,6% - краулеры самого Ahrefs)
Googlebotоколо 900 запросов, в рамках обычного обхода

Оговорки, которые делают сами авторы, важнее цифр. Запрос файла не означает, что модель использовала его содержимое. Запросы получили только около 1,1 тыс. доменов (около 22 тыс. запросов), и разбор ботов построен на этой части. Выборка смещена к техническим сайтам клиентов Ahrefs, поэтому 28% - оценка сверху. Соответствие файлов спецификации не проверялось.

Отдельные наблюдения практиков расходятся. SEO-специалист Рэй Мартинес показывал логи, где OpenAI запрашивал его llms.txt примерно каждые 15 минут (Search Engine Roundtable, июль 2025); другие замеры на небольших выборках видят от AI-ботов единичные запросы или ноль. Логи одного сайта не говорят ничего о поведении платформы в целом.

Для собственного сайта логи - единственный честный способ ответить на вопрос «читают ли мой файл». В блоге futurecraft.pro такого замера нет: логов запросов к /llms.txt у автора нет, а Метрика и GA4 ботов не видят. Поэтому утверждать, что файл что-то дал этому сайту, не на чем.

Нужен ли llms.txt вашему сайту

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

Тип сайтаНужен лиПочему
Документация, API, SDKДаАгенты-кодеры и IDE-ассистенты обращаются к документации прямо во время работы; оглавление со ссылками на .md экономит им контекст. Генерация часто встроена в платформу документации
SaaS с публичной справкойСкорее даТе же агенты, плюс вопросы пользователей к ассистентам о продукте; стоимость низкая
Блог, медиа, контентный сайтОпциональноПодтверждённой пользы нет; если контент в Markdown, файл и .md-версии делаются за вечер
Интернет-магазинПочти нетКаталог меняется постоянно, статичное оглавление из десятков ссылок быстро устаревает и не покрывает ассортимент
Лендинг из нескольких страницНетАгенту хватает самой страницы

Если сайт на WordPress, генератор есть в Yoast SEO (в том числе в бесплатной версии) и в AIOSEO. Mintlify и GitBook из списка на llmstxt.org генерируют файл сами, для VitePress и Docusaurus есть плагины. Писать свой генератор имеет смысл, когда контент лежит в репозитории, как в случае статического сайта на Astro, Hugo или Next.js.

Как выглядит правильный llms.txt

Минимальный файл по спецификации для условной документации API:

# Example API

> Документация REST API сервиса Example: аутентификация, эндпоинты, SDK для Python и TypeScript.

Все примеры используют API v2. Версия v1 отключена с 2026-01-01.

## Docs

- [Быстрый старт](https://example.com/docs/quickstart.md): ключ API и первый запрос
- [Аутентификация](https://example.com/docs/auth.md): OAuth 2.0 и сервисные токены
- [Справочник API](https://example.com/docs/api.md): все эндпоинты с параметрами

## Optional

- [Changelog](https://example.com/docs/changelog.md): история версий API

Правила, которые вытекают из спецификации и из практики:

  • Десятки ссылок. Файл задуман как оглавление, архив целиком туда не нужен. Всё второстепенное уходит в ## Optional.
  • Описание у каждой ссылки. Агент выбирает страницу по заметке после двоеточия, поэтому заметка должна говорить, что внутри, а не повторять заголовок.
  • Свободный текст - до первого H2. Парсеры трактуют каждый раздел H2 как список ссылок. Ключевые факты и указания по цитированию лучше держать абзацами после blockquote.
  • Ссылки на .md, если они есть. Спецификация просит вести ссылки на контент, удобный для LLM, например на Markdown-версии страниц.
  • Только живые адреса. Каждая ссылка должна отдавать 200, иначе агент получит битый маршрут.

Как сгенерировать llms.txt из контента

Когда статьи лежат в Markdown с frontmatter, llms.txt удобно собирать скриптом при каждой сборке. В блоге futurecraft.pro (Astro, около 130 статей в двух локалях) этим занимается scripts/generate-llms.mjs. Источник данных - frontmatter постов, разобранный через gray-matter: заголовок, описание, дата, обновление. Черновики с draft: true отфильтровываются, статьи сортируются по дате.

Статическая часть (H1, blockquote, ключевые факты, указания по цитированию, главные страницы, раздел Optional) лежит в скрипте шаблонными константами. Генерируются только списки статей и их число. Строка статьи собирается так:

function buildArticlesSection(heading, articles) {
  const lines = articles.map((a) => {
    const desc = a.description ? ` ${a.description}` : '';
    const updated = a.updated ? ` Updated: ${formatDate(a.updated)}.` : '';
    return `- [${a.title}](${a.url}):${desc} Published: ${formatDate(a.date)}.${updated}`;
  });
  return `## ${heading}\n\n${lines.join('\n')}\n`;
}

Скрипт запускается в CI отдельным шагом перед сборкой, поэтому выложенный файл не расходится с опубликованными статьями:

- name: Regenerate llms.txt
  run: node scripts/generate-llms.mjs

- name: Build
  run: npm run build

Тот же подход работает для любого генератора статических сайтов: единый источник правды - Markdown и frontmatter, а llms.txt, RSS и sitemap собираются из него. Подробнее о контенте в Markdown как основе всего пайплайна публикации - в статье про AI Content Engine.

Проверка ссылок в CI

В августе 2026 года в llms.txt блога оказались ссылки на страницы категории news в обеих локалях. Опубликованных статей в этой категории не было, Astro такие маршруты не строит, и ссылки отдавали 404. Человек этого не заметил бы, а агент, который пошёл бы по оглавлению, получил бы битый адрес. В том же файле нашёлся литеральный плейсхолдер <slug>.md в примере для агентов.

Исправлений два. Генератор собирает множество категорий, в которых есть опубликованные статьи, и вырезает ссылки на пустые. А SEO-аудит сборки читает dist/llms.txt, вытаскивает все внутренние URL и проверяет, что для каждого в сборке есть страница:

const llms = fs.readFileSync(path.join(distDir, 'llms.txt'), 'utf8');
if (Buffer.byteLength(llms) > 50_000) {
  errors.push(`llms.txt is ${Buffer.byteLength(llms)} bytes; keep it under 50 KB`);
}
const internalUrls = new Set(
  [...llms.matchAll(/https:\/\/futurecraft\.pro[^)\s]+/g)].map((m) => m[0]),
);
for (const url of internalUrls) {
  const pathname = localPath(url);
  if (!pathname || !generatedTargetExists(pathname)) {
    errors.push(`llms.txt: broken internal link ${url}`);
  }
}

Проверка размера появилась позже, вместе с сокращением файла. Плейсхолдер заменили живым адресом /blog/mcp-security-guide.md.

Размер: было 111 КБ, стало 31,5 КБ

Первая версия llms.txt блога была оглавлением всего архива: 347 строк, 111 245 байт (около 33 КБ после gzip). В ней были H1 и blockquote, ключевые факты, главные страницы и категории в двух локалях, по строке на каждую из примерно 130 статей на английском и столько же на русском, указания по цитированию и раздел о Markdown-версиях.

С духом спецификации такой файл расходился в двух местах. Во-первых, размер: 111 КБ - это десятки тысяч токенов, а спецификация просит файл, который помещается в контекст. По сути получился полный индекс, ближе к практике llms-full.txt. Во-вторых, ключевые факты, указания по цитированию и заметка о Markdown стояли под заголовками H2, а парсеры ждут в каждом H2 список ссылок.

В новой версии 151 строка и 31 564 байта (около 9,6 КБ после gzip):

  • Преамбула без заголовков: H1, blockquote, ключевые факты, указания по цитированию и заметка о .md-версиях идут абзацами до первого H2.
  • Main pages: главные страницы сайта на двух языках.
  • Key articles: 22 ключевые статьи в каждой локали. Это опорные гайды и страницы, которые чаще всего цитирует Copilot по данным Bing Webmaster Tools.
  • Latest articles: 10 последних статей на каждую локаль, кроме уже попавших в ключевые.
  • ## Optional: страницы категорий, RSS-ленты и sitemap. Через них агент доберётся до остального архива.

Две проверки держат файл в этих рамках. Генератор падает, если статья из списка ключевых не опубликована в какой-то локали, поэтому список нельзя забыть обновить после снятия статьи:

function featuredArticles(articles, locale) {
  const bySlug = new Map(articles.map((a) => [a.slug, a]));
  const missing = FEATURED_SLUGS.filter((slug) => !bySlug.has(slug));
  if (missing.length > 0) {
    throw new Error(`FEATURED_SLUGS not published in ${locale}: ${missing.join(', ')}`);
  }
  return FEATURED_SLUGS.map((slug) => bySlug.get(slug));
}

Вторая проверка - лимит 50 КБ в SEO-аудите и в смоук-тесте продакшена. Порог выбран с запасом над текущими 31,5 КБ, чтобы файл не разросся незаметно.

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

.md-версии страниц: что дают и как их отдать

Если llms.txt - оглавление, то .md-версия страницы - это само содержимое без вёрстки, меню и скриптов. Агенту не нужно разбирать HTML, и в контекст уходит меньше токенов. В отличие от llms.txt, у .md-версий есть наблюдаемый след: в отчёте AI Performance в Bing Webmaster Tools Copilot цитирует адрес /blog/prompt-library-template.md отдельно от HTML-версии той же статьи.

В блоге .md-версии устроены из четырёх частей.

1. Статический эндпоинт. Файлы src/pages/blog/[slug].md.ts и src/pages/ru/blog/[slug].md.ts при сборке создают /blog/<slug>.md и /ru/blog/<slug>.md для каждой опубликованной статьи нужной локали. Тело - заголовок, blockquote с описанием и строкой «автор, дата, канонический URL», затем исходный текст статьи:

export async function GET({ props }: APIContext) {
  const entry = (props as { entry: CollectionEntry<'blog'> }).entry;
  const slug = entry.slug.replace(/^en\//, '');
  const url = `${SITE}/blog/${slug}/`;
  const date = new Date(entry.data.date).toISOString().slice(0, 10);

  const lines = [`# ${entry.data.title}`, ''];
  if (entry.data.description) lines.push(`> ${entry.data.description}`);
  lines.push(`> Author: Roman Belov · Published: ${date} · Source: ${url}`, '', entry.body.trim(), '');

  return new Response(lines.join('\n'), {
    headers: { 'Content-Type': 'text/markdown; charset=utf-8' },
  });
}

Эндпоинт отдаёт исходник как есть, поэтому стоит проверить, что в нём нет импортов и MDX-компонентов. В статьях блога вне блоков кода их нет. Где в исходнике встречается обычный HTML, он и попадает в .md.

2. Согласование по заголовку Accept. Cloudflare Pages Function functions/_middleware.js перехватывает GET к адресу статьи с Accept: text/markdown (или с параметром ?format=md) и отдаёт готовый .md по каноническому URL:

const accept = context.request.headers.get('Accept') || '';
const wantsMd = accept.includes('text/markdown') || url.searchParams.get('format') === 'md';
const isArticle = /^\/(?:ru\/)?blog\/[^/]+\/?$/.test(url.pathname)
  && !url.pathname.includes('/category/') && !url.pathname.endsWith('.md');

if (context.request.method === 'GET' && wantsMd && isArticle && context.env.ASSETS) {
  const mdUrl = new URL(url.pathname.replace(/\/$/, '') + '.md', url.origin);
  const mdResp = await context.env.ASSETS.fetch(mdUrl);
  if (mdResp.ok) {
    return new Response(mdResp.body, {
      status: 200,
      headers: { 'Content-Type': 'text/markdown; charset=utf-8', 'Vary': 'Accept' },
    });
  }
}

Vary: Accept здесь обязателен: без него CDN может закэшировать Markdown и отдать его браузеру по тому же URL.

3. Ссылка из HTML. Layout добавляет в <head> статьи <link rel="alternate" type="text/markdown" href="/ru/blog/<slug>.md">, как предлагает спецификация.

4. Заголовки ответа. В public/_headers:

/blog/*.md
  Content-Type: text/markdown; charset=utf-8
  X-Robots-Tag: noindex, follow
  Link: <https://futurecraft.pro/blog/:splat/>; rel="canonical"

/ru/blog/*.md
  Content-Type: text/markdown; charset=utf-8
  X-Robots-Tag: noindex, follow
  Link: <https://futurecraft.pro/ru/blog/:splat/>; rel="canonical"

noindex убирает .md из поискового индекса, чтобы он не конкурировал с HTML-страницей. rel="canonical" сводит сигналы к HTML-версии; его добавили в октябре 2026 года как раз после того, как .md-адрес появился среди цитируемых Copilot страниц. Проверить заголовки на продакшене можно одной командой (адрес ведёт на Markdown-версию статьи о безопасности MCP):

curl -sI https://futurecraft.pro/ru/blog/mcp-security-guide.md \
  | grep -iE '^(content-type|x-robots-tag|link):'

Ссылки и картинки внутри .md эндпоинт переписывает в абсолютные (https://futurecraft.pro/ru/blog/...), не трогая блоки кода. В исходнике статьи они относительные, и агент, который получил файл без базового адреса, не смог бы по ним перейти. Одна оговорка остаётся: сам llms.txt ведёт на HTML-адреса статей, хотя спецификация советует ссылаться на контент, удобный для LLM, например на .md. Способ получить Markdown описан в преамбуле файла: суффикс .md или заголовок Accept. Довод за HTML-ссылки - в ответе ассистента должен оказаться канонический адрес страницы, а не служебный. Довод против - агенту приходится делать лишний шаг. Оба варианта рабочие.

llms.txt и GEO: что влияет на цитирование на самом деле

GEO (generative engine optimization) - работа над тем, чтобы AI-ассистенты брали страницы сайта источником ответа. Про llms.txt часто пишут как про главный инструмент GEO, хотя подтверждений этому нет. Больше влияют вещи, за которыми стоят документированные механизмы.

robots.txt для AI-ботов. Именно он решает, пустят ли краулер на сайт. В robots.txt блога явно разрешены боты OpenAI, Anthropic и Perplexity (OAI-SearchBot, GPTBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User), а также токены Google-Extended и Applebot-Extended. Закрыты CCBot, Bytespider и meta-externalagent: в файле они помечены как массовые краулеры для обучения. Ошибка в robots.txt может убрать сайт из ответов, а ошибка в llms.txt ни на что подтверждённо не влияет.

Доступный HTML. Текст должен читаться из HTML без исполнения JavaScript. Мюллер в том же выпуске подкаста, по пересказу SEJ, советует для обнаружения обычные HTML-страницы и внутренние ссылки.

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

Обычная индексация. Copilot ищет материал через индекс Bing, поэтому важно, чтобы страницы туда попали. Как ускорить индексацию через IndexNow и API Яндекс Вебмастера - в отдельной статье про IndexNow и API Вебмастера.

Есть наблюдение с этого сайта, но причинности оно не доказывает. С 6 августа по 5 ноября 2026 года отчёт AI Performance в Bing Webmaster Tools показал 3 536 цитирований 81 страницы блога в Copilot и у партнёров Microsoft, причём по месяцам цитирования росли: 972 в сентябре, 2 028 в октябре. llms.txt, .md-версии и открытый robots.txt работали весь этот период, контрольной группы нет, поэтому приписать рост цитирований llms.txt нельзя. Чаще всего цитируются длинные гайды с определениями и таблицами. Разбор данных - в кейсе GEO на практике: 3 500 цитирований в Copilot.

Чего не ждать от llms.txt и как измерить эффект

Чего не будет:

  • Роста позиций в Google. Google прямо пишет, что Search файл игнорирует.
  • Гарантии цитирований. Ни одна AI-платформа не обещала учитывать llms.txt при выборе источников.
  • Защиты контента. Файл ничего не запрещает. Чтобы закрыть сайт от обучения, нужен robots.txt, а для недобросовестных ботов - правила WAF.
  • Ускорения индексации. Это задача sitemap, IndexNow и API поисковых систем.
  • Защиты от галлюцинаций и гарантированного прироста. Утверждения вроде «llms.txt предотвращает галлюцинации» или «повышает вероятность цитирования на 20–25%» встречаются в русскоязычных гайдах без источника и методики.

Что можно измерить:

Что измеряемИнструментЧто покажет
Кто запрашивает /llms.txtЛоги веб-сервера или CDN, фильтр по пути и user-agentКакие боты и как часто берут файл. Не покажет, использован ли файл в ответе
Кто запрашивает .md-версииТе же логи по маске *.mdПользуются ли агенты Markdown-версиями
Цитирования в CopilotBing Webmaster Tools, AI PerformanceЧисло цитирований по страницам и grounding queries. Отдельно цитируемые .md-адреса
Доступность файлаChrome Lighthouse, аудит llms.txtНе отдаёт ли сервер ошибку
Битые ссылки в файлеПроверка в CIВсе ли адреса в llms.txt существуют

Логи важно сохранять с датами до и после изменений. Без них разговор об эффекте llms.txt остаётся на уровне мнений, и это относится к любому сайту, включая этот.

Чек-лист внедрения llms.txt

  1. Решите, нужен ли файл: документация и API - да, блог - по желанию, магазин и лендинг - скорее нет.
  2. Проверьте robots.txt: нужные AI-боты не должны быть закрыты.
  3. Соберите файл по спецификации: H1, blockquote, свободный текст без заголовков, разделы H2 со ссылками, ## Optional.
  4. Ограничьте объём: десятки ключевых ссылок, остальное через страницы категорий, RSS и sitemap в ## Optional.
  5. Дайте каждой ссылке описание, которое говорит, что на странице.
  6. Генерируйте файл из контента при каждой сборке, а не правьте вручную.
  7. Проверяйте в CI, что каждая ссылка в файле ведёт на существующую страницу, и ограничьте размер.
  8. Если контент в Markdown, отдавайте .md-версии страниц с X-Robots-Tag: noindex и Link: rel=canonical на HTML.
  9. Добавьте <link rel="alternate" type="text/markdown"> на страницы и, по желанию, согласование по Accept: text/markdown с Vary: Accept.
  10. Настройте измерение: логи запросов к /llms.txt и .md, AI Performance в Bing Webmaster Tools, аудит Lighthouse.

Источники

Часто задаваемые вопросы

Нужен ли llms.txt для Google и Яндекса?
Для Google Search - нет: официальное руководство Google по генеративному поиску говорит, что Search llms.txt не использует, и файл не помогает и не вредит видимости. От Яндекса публичных заявлений о llms.txt найти не удалось, при этом Яндекс сам публикует llms.txt для документации API Вебмастера.
Читают ли ChatGPT, Claude и Perplexity файл llms.txt?
Официальных подтверждений нет. В исследовании Ahrefs за май 2026 GPTBot дал около 4,5% запросов к файлам llms.txt, ClaudeBot около 0,8%, OAI-SearchBot около 0,7%. Факт запроса не доказывает, что содержимое файла используется в ответах.
Чем llms.txt отличается от sitemap.xml?
Sitemap.xml перечисляет все индексируемые URL для поисковых роботов в формате XML. llms.txt - короткий отобранный список ключевых страниц с описаниями в Markdown, рассчитанный на чтение языковой моделью. Sitemap нужен поисковикам, llms.txt - агентам, которые уже работают с сайтом.
Нужен ли llms-full.txt?
В спецификации llmstxt.org llms-full.txt не описан. Это практика документационных платформ: в одном файле лежит полный текст документации. Anthropic, например, ссылается на llms-full.txt из своего llms.txt. Для блога такой файл не обязателен.
Нужно ли отдавать .md-версию каждой страницы?
Спецификация llmstxt.org это рекомендует: та же страница по адресу с суффиксом .md. Если контент уже хранится в Markdown, эндпоинт получается небольшим: в Astro это один файл на локаль. Чтобы .md не конкурировал с HTML в индексе, отдавайте его с заголовками X-Robots-Tag: noindex и Link rel=canonical на HTML-страницу.
Как сделать llms.txt на WordPress?
В Yoast SEO есть встроенный генератор llms.txt, доступный и в бесплатной версии. AIOSEO тоже генерирует llms.txt, а llms-full.txt и настройки Markdown даёт только в Pro. На конструкторах сайтов сначала проверьте, можно ли положить файл в корень домена.
Может ли llms.txt навредить сайту?
Сам файл на ранжирование не влияет, Google прямо пишет, что он не помогает и не вредит. Навредить может качество: битые ссылки и устаревшие описания агент примет за факты о сайте. Поэтому файл стоит генерировать автоматически и проверять ссылки при каждой сборке.