Читают ли LLM JavaScript? Что видят AI-краулеры

tb

tobecited

Редакция • 5 мин чтения • 11 авг. 2026 г. • Обновлено 12 авг. 2026 г.

В основном — нет. Краулеры AI-ассистентов — GPTBot, ClaudeBot, PerplexityBot — запрашивают с сервера сырой HTML и отбрасывают JavaScript; контент, зависящий от клиентского рендеринга, в их пайплайн не попадает. Существенное исключение — Googlebot: он выполняет JavaScript, и результат этого рендеринга питает AI-функции Google, но ничьи больше.

Это единственное различие определяет, сможет ли AI-ассистент процитировать ваши цены, описать продукт и вообще вас порекомендовать. Далее: измеренное поведение по каждому краулеру, двухминутный тест для самопроверки и варианты исправления, упорядоченные по инженерным затратам, — ни один не требует переписывания приложения.

Какие AI-краулеры выполняют JavaScript?

Самые надёжные публичные измерения принадлежат Vercel и MERJ, которые проанализировали трафик AI-краулеров на своей edge-сети в конце 2024 года. Вывод их исследования однозначен: краулеры OpenAI и Anthropic загружают .js-файлы как сырой текст и выбрасывают их без выполнения; контент, внедрённый во время выполнения, никогда не попадает в модель. Текущий состав:

  • GPTBot и OAI-SearchBot (OpenAI, документация ботов) получают HTML, отданный сервером, и не выполняют JavaScript.
  • ClaudeBot (Anthropic, документация краулера) загружает страницы без этапа рендеринга.
  • PerplexityBot в том же наборе данных не показал исполнения JavaScript.
  • Googlebot выполняет полноценный конвейер рендеринга (документация Google по JavaScript SEO) — и AI Overviews Google наследуют этот отрендеренный индекс.

Это наблюдаемое поведение на момент измерений, а не контрактные гарантии. Возможности краулеров меняются, поэтому тест из следующего раздела стоит держать в чек-листе релизов, а не выполнять разово.

Как AI-ассистент читает страницу без браузера?

Пайплайн — это HTTP GET-запрос, а не браузерная сессия. Краулер запрашивает URL, получает от сервера сырую HTML-строку, удаляет навигацию и шаблонную обвязку и подаёт оставшийся текст в контекстное окно модели. Ни построения DOM, ни гидратации, ни fetch-вызовов после загрузки не происходит — рендеринг страниц в headless-браузере в масштабах веба на порядки дороже простого получения разметки, и приведённые выше измерения подтверждают, что основные AI-краулеры эту цену не платят.

Следствие бинарное: любой факт, присутствующий в исходном HTML-ответе — цена в разметке, описание продукта, ответ из FAQ, — модель читает. Факт, который React-, Vue- или Angular-приложение запрашивает у API и внедряет после загрузки, с точки зрения модели просто не произошёл.

Как проверить, что AI действительно видит на моём сайте?

Две минуты, никаких устанавливаемых инструментов:

  1. Запросите важную для выручки страницу так, как это делает краулер, и найдите в ответе критичный факт — цену, название продукта, зону обслуживания: curl -s https://yourdomain.com/pricing | grep '\$'
  2. Либо откройте страницу в браузере, отключите JavaScript в инструментах разработчика и перезагрузите. То, что осталось на экране, примерно соответствует тому, что видит краулер без рендеринга.
  3. Повторите для всех страниц, приносящих деньги: главная, цены, страницы продуктов и любая страница, которую вы хотите, чтобы AI-ассистент цитировал.

Если искомый факт отсутствует в сыром ответе, ни одна AI-система, пропускающая рендеринг, не сможет его процитировать — независимо от того, насколько хорошо страница выглядит в браузере.

Какое решение — SSR, SSG или предрендеринг?

Три стандартных варианта, по возрастанию вовлечённости инфраструктуры:

  • Статическая генерация сайта (SSG) собирает страницы в HTML на этапе сборки. Это самый дешёвый в обслуживании и наиболее надёжный вариант для контента, меняющегося при деплое, — маркетинговые страницы, документация, блоги.
  • Серверный рендеринг (SSR) строит HTML на каждый запрос и подходит для контента, который меняется в зависимости от пользователя или времени.
  • Предрендеринг дооснащает существующее одностраничное приложение: сервис или промежуточный слой определяет пользовательские агенты ботов и отдаёт им отрендеренный HTML-снапшот, оставляя само приложение нетронутым.

Полное переписывание приложения требуется редко. Гибридные фреймворки — Next.js, Nuxt, SvelteKit — позволяют выбирать режим рендеринга на уровне маршрута, поэтому практический шаг — точечный: серверно рендерить страницы, несущие ваши факты, а интерактивное приложение оставить клиентским. Дашборд за аутентификацией может навсегда остаться чистым SPA; легитимному краулеру там всё равно не место.

Режим рендеринга определяет и судьбу структурированных данных. Блок JSON-LD, впрыснутый скриптом после загрузки, отбрасывается вместе с остальным JavaScript, поэтому Schema-разметка, рассчитанная на AI, обязана приезжать в серверном ответе — как и любой другой факт страницы.

Полностью ли одностраничные приложения невидимы для AI?

Не полностью — честный ответ различает два канала. Данные для обучения моделей поступают из массовых обходов, которые не выполняют рендеринг, так что чисто клиентский сайт даёт им мало. Живой поиск снисходительнее: AI-поисковые продукты опираются на устоявшиеся поисковые индексы, и если Google или Bing отрендерили и проиндексировали ваш контент, ассистент всё ещё может извлечь факты о вас из вторых рук.

Полагаться на такую видимость — плохая стратегия. Она зависит от чужого бюджета на рендеринг и графика обновления, тогда как краулеры, которые напрямую запрашивают ваши страницы в момент ответа, — те самые, что рассмотрены в измерениях, — по-прежнему видят пустую оболочку. Серверно отданный HTML помещает ваши факты сразу во все каналы; добавленный поверх этого выверенный файл llms.txt даёт AI-читателям сжатое изложение главного.

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

Выполняет ли GPTBot JavaScript?

Нет. Измерения на сети Vercel показывают, что GPTBot загружает JavaScript-файлы, но не исполняет их — обрабатывается только HTML, отданный сервером. Контент, внедряемый скриптами после загрузки страницы, для него невидим.

Видят ли Google AI Overviews контент, создаваемый JavaScript?

В целом да. AI Overviews строятся на поисковом индексе Google, а Googlebot выполняет JavaScript перед индексацией. Однако отрендеренное представление доступно только Google — ассистенты OpenAI, Anthropic и Perplexity запрашивают ваш сырой HTML напрямую и не получают ничего из него.

Нужно ли мне переписывать сайт на React?

Нет. Проблема не в React, а в исключительно клиентском рендеринге. Перенос публичных страниц на Next.js с SSR или SSG либо размещение слоя предрендеринга перед существующим приложением доставляют краулерам полный HTML, оставляя компоненты без изменений.

Посмотрите на сайт глазами AI

Тест с curl, приведённый выше, сообщает, машиночитаемы ли ваши факты. Он не отвечает на вопрос, что AI с ними делает: когда покупатель спрашивает ChatGPT или Claude о лучшем варианте в вашем сегменте, какие бренды возвращаются? Запустите бесплатный аудит — он задаёт AI-ассистентам реальные вопросы покупателей, показывает, кого именно они называют, и выдаёт готовые к вставке исправления для того, чего не хватает, — от серверно отданных фактов до правильного llms.txt. Три минуты до проверяемого ответа. Про вторую сторону этого вопроса — как проверить, упоминает ли AI ваш бренд: что спрашивать и как считать то, что вернулось.

#JavaScript#AI crawlers#SSR#technical SEO