Проверка llms.txt и разметки
Как проверить llms.txt, llms-full.txt, Markdown-версии страниц и структурированные данные - код ответа, тип содержимого, структура, ссылки, валидаторы Google и Яндекса и типичные ошибки
Почему это не формальность
Заголовок раздела «Почему это не формальность»Common Crawl разобрал 584 тысячи файлов llms.txt, найденных в сети. Значительная часть из них не работает как задумано.
Самая частая поломка незаметна владельцу: сайт отвечает на /llms.txt кодом 200, но отдаёт главную страницу или страницу «не найдено».
Проверка llms.txt
Заголовок раздела «Проверка llms.txt»- Адрес
https://сайт/llms.txtотвечает кодом200без цепочки перенаправлений. - Тип содержимого
text/plainилиtext/markdown, кодировка UTF-8. - В ответе текст, а не HTML. Первая строка начинается с
#. - Заголовок первого уровня один.
- Под заголовком есть краткое описание, строка начинается с
>. - Ссылки записаны как
- [Название](адрес): пояснение. - Адреса в ссылках абсолютные и отвечают
200. - В файле нет закрытых страниц, черновиков и адресов с параметрами.
- Файл помещается в разумный объём: это карта, а не весь сайт.
robots.txtне закрывает файл от роботов, которым он адресован.
curl -sI https://example.ru/llms.txtcurl -s https://example.ru/llms.txt | head -n 5В первой команде смотри строки HTTP и content-type. Во второй первая строка должна начинаться с решётки.
Проверить все ссылки файла разом:
curl -s https://example.ru/llms.txt \ | grep -oE '\]\(https?://[^)]+\)' | tr -d '()]' \ | while read -r url; do printf '%s %s\n' "$(curl -s -o /dev/null -w '%{http_code}' "$url")" "$url" doneПравила формата: формат файла, секции.
Проверка llms-full.txt
Заголовок раздела «Проверка llms-full.txt»- Отвечает
200, тип текстовый. - Содержит текст страниц, а не список ссылок.
- Размер известен. Файл в десятки мегабайт агент целиком не прочитает.
- Собран из того же содержимого, что и сайт, и обновляется вместе с ним.
curl -sI https://example.ru/llms-full.txt | grep -i content-lengthКогда этот файл нужен, а когда нет: Что такое llms-full.txt.
Проверка Markdown-версий и связей
Заголовок раздела «Проверка Markdown-версий и связей»curl -sI -H 'Accept: text/markdown' https://example.ru/docs/install/curl -sI https://example.ru/docs/install/ | grep -i '^link'curl -s https://example.ru/docs/install/ | grep -iE 'rel="(alternate|describedby)"'- На запрос с
Accept: text/markdownили на адрес с.mdприходит текст, а не HTML. - Адрес из
rel="alternate"отвечает200. - Адрес из
rel="describedby"ведёт на существующийllms.txt.
Подробно: Markdown-версии страниц, обнаружение.
Проверка структурированных данных
Заголовок раздела «Проверка структурированных данных»| Инструмент | Что проверяет | Адрес |
|---|---|---|
| Rich Results Test | какие расширенные результаты Google может показать, ошибки и предупреждения | search.google.com/test/rich-results |
| Schema Markup Validator | соответствие словарю Schema.org без привязки к Google | validator.schema.org |
| Валидатор микроразметки Яндекса | как разметку видит Яндекс | webmaster.yandex.ru/site/tools/microtest/ |
| Search Console, Вебмастер | ошибки разметки на всём сайте со временем | отчёты об улучшениях и о разметке |
- Блок
application/ld+jsonесть в ответе сервера, а не появляется после скриптов. - JSON корректен: проверка открывается без ошибки разбора.
- Тип соответствует странице: товар -
Product, статья -BlogPostingилиArticle. - Обязательные свойства заполнены. Для товара это название, предложение, цена, валюта, наличие.
- Значения совпадают с видимой страницей: цена, наличие, автор, дата.
- На странице одно описание каждой сущности, без дубля от темы.
- Хлебные крошки в разметке совпадают с крошками на странице.
- Проверены страницы разных видов: товар с вариантами, товар без остатка, статья, главная.
curl -s https://example.ru/product/kettle/ \ | grep -c 'application/ld+json'Ноль значит, что в ответе сервера разметки нет. Больше единицы - повод посмотреть, не дублируются ли сущности.
Какие типы нужны и что в них должно быть: Структурированные данные и JSON-LD.
Типичные ошибки
Заголовок раздела «Типичные ошибки»- Когда подходит
- На /llms.txt приходит код 200, но это HTML
- Ловушка
- Сайт отдаёт главную или страницу ошибки на любой неизвестный адрес. Lighthouse и агент видят файл, которого нет.
- Где посмотреть
- Тип содержимого text/html, первая строка начинается с тега.
- Когда подходит
- Ссылки в файле относительные или ведут на старые адреса
- Ловушка
- Агент читает файл вне сайта и не может собрать адрес. Часть ссылок отвечает 404.
- Где посмотреть
- В списке есть пути без домена или адреса, которые перенаправляют.
- Когда подходит
- Цена в разметке не равна цене на странице
- Ловушка
- Разметку вывела тема из одного поля, а цену на экране показывает скидочный модуль из другого.
- Где посмотреть
- Валидатор ошибок не показывает: он проверяет форму, а не правду.
- Когда подходит
- Файл создан один раз и больше не обновляется
- Ловушка
- Генератор запускали вручную. Сайт изменился, карта осталась прежней.
- Где посмотреть
- В файле есть страницы, которых уже нет, и нет новых разделов.
Что проверка не показывает
Заголовок раздела «Что проверка не показывает»Валидатор подтверждает форму. Он не знает, верна ли цена, жив ли автор и читает ли кто-нибудь файл.
Читают ли файл на самом деле, видно только в журналах сервера: Как измерить видимость в AI.
Lighthouse тоже проверяет llms.txt, но только сам факт ответа: Lighthouse и llms.txt.