Почему это критично именно для ИИ-краулеров
Поисковые системы научились обрабатывать страницы, где контент подгружается скриптами. Краулеры генеративных движков в основном этого не делают: они забирают исходный HTML и работают с тем, что в нём есть. Если ваш текст, заголовки и разметка появляются на странице только после исполнения скриптов, для такого бота страница пустая.
Внешне проблема никак не заметна. В браузере всё отображается, поисковая выдача в порядке, отчёты чистые. Отсутствует только цитирование - и объяснить его отсутствие невозможно, пока не посмотришь на страницу глазами бота.
Чаще всего с этим сталкиваются сайты на современных фреймворках с отрисовкой на стороне клиента, а также страницы, где ключевые блоки подгружаются отдельным запросом: отзывы, характеристики, цены, вкладки, аккордеоны, содержимое всплывающих блоков. Отдельная частая беда - разметка Schema.org, вставляемая скриптом после загрузки: для бота её просто нет.
Проверка занимает пять минут и относится к числу тех, что стоит делать в первую очередь: если страница пустая в исходном коде, все остальные пункты чеклиста по ней не работают.
Пошаговая инструкция
Проверять нужно не главную, а те страницы, по которым вы хотите попадать в ответы: статьи, страницы услуг, ответы на вопросы.
- Шаг 1 - откройте нужную страницу и посмотрите именно исходный код, а не панель разработчика. Панель показывает состояние после исполнения скриптов, исходный код - то, что получает бот.
- Шаг 2 - найдите в исходном коде поиском фразу из середины основного текста. Нашлась - контент в HTML есть. Не нашлась - он подгружается скриптом.
- Шаг 3 - проверьте так же ключевые элементы по отдельности: заголовок H1, подзаголовки, блок прямого ответа в начале страницы, вопросы и ответы, таблицы, цены.
- Шаг 4 - проверьте разметку: найдите в исходном коде блок JSON-LD. Если он отсутствует, а на странице разметка есть - значит она вставляется скриптом и для бота невидима.
- Шаг 5 - отдельно проверьте содержимое свёрнутых блоков: вкладок, аккордеонов, всплывающих окон. Часто текст в них лежит в HTML и всё в порядке, но иногда подгружается по клику - тогда его нет.
- Шаг 6 - если чего-то не хватает, поставьте задачу разработчику на отрисовку этих блоков на стороне сервера. Формулировать нужно предметно: какие именно элементы должны присутствовать в исходном HTML до исполнения скриптов.
- Шаг 7 - после доработки перепроверьте тем же способом и зафиксируйте результат по каждому типу страниц.
Обратите внимание на выборку: достаточно проверить по одной странице каждого типа. Внутри типа шаблон один, и если контент отрисовывается на сервере для одной статьи, он отрисовывается для всех.
Типичные ошибки
- Смотрят в панель разработчика - там страница уже собрана скриптами, и всё выглядит правильно. Проблема остаётся незамеченной. Исправление: смотреть исходный код страницы.
- Проверяют только главную - главная часто отрисовывается на сервере, а внутренние страницы нет. Исправление: по одной странице каждого типа.
- Забывают про разметку - текст в HTML есть, а JSON-LD вставляется скриптом. Все пункты про Schema.org при этом не работают. Исправление: искать блок разметки в исходном коде отдельно.
- Ставят задачу общими словами - «сделайте отрисовку на сервере». Разработчик делает главную, остальное остаётся. Исправление: перечислять конкретные страницы и блоки.
- Не перепроверяют после доработок - задачу закрыли, результат не подтвердили. Исправление: повторная проверка тем же способом, с фиксацией.
Что проверить в итоге
- Проверка сделана по исходному коду, а не по панели разработчика
- Проверена по одной странице каждого типа, не только главная
- Основной текст находится в исходном HTML поиском по фразе
- H1, подзаголовки, блок прямого ответа, вопросы и ответы, таблицы присутствуют в исходном коде
- Блок JSON-LD присутствует в исходном коде, а не вставляется скриптом
- Содержимое вкладок и свёрнутых блоков проверено отдельно
- По недостающим элементам поставлена предметная задача с перечнем страниц и блоков
- После доработки проведена повторная проверка