Как нейросети читают ваш сайт и почему JS-рендер прячет ваш контент
Второй момент техничнее. Многие краулеры нейросетей не выполняют JavaScript. Если тело страницы рисует скрипт уже в браузере, такой краулер получает пустую оболочку: меню, подвал, каркас — и ни одного слова о вашем продукте. Человек видит полноценную страницу, бот — заготовку без смысла.
Для продуктовой команды отсюда два вывода. Контент должен приходить готовым в исходном HTML. И текст внутри страницы стоит собирать фрагментами, каждый из которых читается отдельно. Ниже — как это устроено и что проверить за вечер.
Что значит «нейросеть читает сайт» с технической стороны
Современные ассистенты работают через RAG — подход, при котором модель в момент запроса ищет свежие данные во внешних источниках и достраивает ответ на найденных фрагментах, а не опирается только на то, что запомнила при обучении.
Механика по шагам:
- Текст сайта заранее нарезается на чанки — фрагменты по 200-500 токенов
- Каждый чанк переводится в вектор — набор чисел, который кодирует смысл куска
- Система оценивает близость векторов к запросу и достает несколько самых релевантных фрагментов
- Из этих фрагментов собирается ответ, под ним — ссылки на источники
Главное следствие: модель цитирует конкретный абзац. Поэтому каждый кусок текста конкурирует за место в ответе сам по себе, в отрыве от соседних.
Что такое чанк и почему ваш абзац конкурирует в одиночку
Чанк — это короткий самостоятельный фрагмент текста, который система рассматривает отдельно от остального. Границы чанков проходят по заголовкам: модель делит страницу по ее структуре.
Отсюда правило: каждый раздел должен читаться вне контекста. Тест — прочитать раздел под одним H2 так, будто остального текста на странице нет. Если смысл держится только на предыдущих абзацах, после нарезки фрагмент развалится, и нейросеть его не возьмет.
Из той же логики — не смешивать в одном абзаце цену, кейс и этапы работы. Один абзац — один законченный ответ на один вопрос. Тогда система достает блок целиком и вставляет в ответ без потери смысла.
Почему JavaScript-рендер прячет контент от нейросетей
Часть краулеров нейросетей не исполняет JavaScript. Краулер ChatGPT не рендерит скрипты; Gemini и Copilot — могут. Если сайт собран как SPA на React или Angular и весь текст подставляется скриптом уже в браузере, краулер без рендеринга видит пустой каркас.
В геоаудитах нам регулярно попадается такая картина: на сайте услуг, собранном на тяжелом фреймворке, в браузере страница выглядит полной, а в исходном HTML тело пустое — меню и подвал на месте, описания услуги нет. Пользователь видит рабочую страницу, краулер без рендеринга — молчащий каркас.
Краулеры устроены иначе, чем человек в браузере:
- Не кликают, не скроллят, не наводят курсор — то, что подгружается по действию, для них недоступно
- Идут по ссылкам примерно на пять уровней вглубь — слишком глубокая вложенность отрезает страницы
- Читают HTML, JSON-LD и XML, а JavaScript игнорируют
Отсюда вывод: текст, который видит пользователь, и текст, который получает нейросеть, — разные вещи, если страницу рисует скрипт.
Как за минуту проверить, видит ли нейросеть ваш текст
Два быстрых способа, оба без инструментов.
Способ первый — исходный код страницы. Откройте ее, нажмите Ctrl+U (или правый клик — «Просмотр кода страницы»). В исходном HTML найдите предложение из описания вашей услуги. Если предложения там нет, краулер без рендеринга его не увидит.
Способ второй — отключить JavaScript в браузере и перезагрузить страницу. Если основной текст исчез, его рисует скрипт — значит, та же помеха ждет краулеры, которые JS не выполняют.
Если оба способа показывают пустую страницу, дальше можно не искать: до контента нейросеть не добирается, и остальная оптимизация работает вхолостую.
Что чинить: server-side rendering и чистый HTML
Корень проблемы — рендеринг на стороне клиента, когда HTML собирается в браузере. Решение — отдавать готовый HTML с сервера:
- Server-side rendering (Next.js, Nuxt.js): тело страницы приходит уже собранным, до выполнения скриптов
- Статическая генерация или пререндер: вариант для страниц, которые меняются редко
- Семантические теги HTML5 (section, article, header), и сразу за section — заголовок h2-h6; так парсеру проще держать структуру и резать чанки по границам
Отдельная, но частая помеха — запрет ботов в robots.txt. Если краулеры нейросетей закрыты в robots.txt, даже аккуратный HTML до них не дойдет. Проверьте, что GPTBot и другие AI-боты не закрыты.
Как разметить страницу, чтобы фрагменты извлекались правильно
Когда контент доступен в HTML, остается оформить его под нарезку. Параметры извлекаемой страницы:
- Иерархия заголовков: H1 — название, H2 — разделы, H3 — подразделы; по этим границам и режутся чанки
- Заголовок-вопрос: H2 формулируется как вопрос пользователя, прямой ответ — в первых двух-трех строках под ним
- Один тезис на абзац: короткие абзацы без монолитов, каждый закрывает один вопрос
- Определения внутри текста: термин расшифровывается тут же, без ссылки на отдельный глоссарий, и нейросеть точнее связывает понятие
- Конкретика вместо общих слов: цифры, шаги, факты; точные данные в тексте поднимают шанс попасть в ответ
- Повтор ключевой мысли в разных формулировках: одна идея, сказанная иначе в разных разделах, надежнее попадает в выдачу
Почему это касается коммерческих страниц, а не только блога
Краулеры ходят и по блогу, и по страницам услуг, категорий, листингов. JS-рендер прячет описание услуги ровно так же, как статью. А цена ошибки выше, чем в классическом поиске: в одном ответе нейросеть приводит от двух до семи источников против десяти ссылок на странице обычной выдачи. Конкуренция за цитату жестче, и читаемость страницы для бота — входной билет, без которого остальное не считается.
HITZ — GEO-агентство. Помогаем брендам попадать в ответы нейросетей и поисковиков. Telegram: t.me/hitzmedia. Сайт: hitz.agency.
Автор статьи Марат Аксанов — Performance-маркетолог.