Читают ли LLM JavaScript? Что видят AI-краулеры
tobecited
Редакция • 5 мин чтения • 11 авг. 2026 г. • Обновлено 16 сент. 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 действительно видит на моём сайте?
Две минуты, никаких устанавливаемых инструментов:
- Запросите важную для выручки страницу так, как это делает краулер, и найдите в ответе критичный факт — цену, название продукта, зону обслуживания:
curl -s https://yourdomain.com/pricing | grep '\$' - Либо откройте страницу в браузере, отключите JavaScript в инструментах разработчика и перезагрузите. То, что осталось на экране, примерно соответствует тому, что видит краулер без рендеринга.
- Повторите для всех страниц, приносящих деньги: главная, цены, страницы продуктов и любая страница, которую вы хотите, чтобы AI-ассистент цитировал.
Если искомый факт отсутствует в сыром ответе, ни одна AI-система, пропускающая рендеринг, не сможет его процитировать — независимо от того, насколько хорошо страница выглядит в браузере.
Какое решение — SSR, SSG или предрендеринг?
Три стандартных варианта, по возрастанию вовлечённости инфраструктуры:
- Статическая генерация сайта (SSG) собирает страницы в HTML на этапе сборки. Это самый дешёвый в обслуживании и наиболее надёжный вариант для контента, меняющегося при деплое, — маркетинговые страницы, документация, блоги.
- Серверный рендеринг (SSR) строит HTML на каждый запрос и подходит для контента, который меняется в зависимости от пользователя или времени.
- Предрендеринг дооснащает существующее одностраничное приложение: сервис или промежуточный слой определяет пользовательские агенты ботов и отдаёт им отрендеренный HTML-снапшот, оставляя само приложение нетронутым.
Полное переписывание приложения требуется редко. Гибридные фреймворки — Next.js, Nuxt, SvelteKit — позволяют выбирать режим рендеринга на уровне маршрута, поэтому практический шаг — точечный: серверно рендерить страницы, несущие ваши факты, а интерактивное приложение оставить клиентским. Дашборд за аутентификацией может навсегда остаться чистым SPA; легитимному краулеру там всё равно не место.
Режим рендеринга определяет и судьбу структурированных данных. Блок JSON-LD, впрыснутый скриптом после загрузки, отбрасывается вместе с остальным JavaScript, поэтому Schema-разметка, рассчитанная на AI, обязана приезжать в серверном ответе — как и любой другой факт страницы.
Полностью ли одностраничные приложения невидимы для AI?
Не полностью — честный ответ различает два канала. Данные для обучения моделей поступают из массовых обходов, которые не выполняют рендеринг, так что чисто клиентский сайт даёт им мало. Живой поиск снисходительнее: AI-поисковые продукты опираются на устоявшиеся поисковые индексы, и если Google или Bing отрендерили и проиндексировали ваш контент, ассистент всё ещё может извлечь факты о вас из вторых рук.
Полагаться на такую видимость — плохая стратегия. Она зависит от чужого бюджета на рендеринг и графика обновления, тогда как краулеры, которые напрямую запрашивают ваши страницы в момент ответа, — те самые, что рассмотрены в измерениях, — по-прежнему видят пустую оболочку. Серверно отданный HTML помещает ваши факты сразу во все каналы.
Часто задаваемые вопросы
Выполняет ли 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, что лучше на вашем рынке, чьи имена он называет? Запустите бесплатную проверку: она задаёт ассистентам настоящие вопросы покупателей и показывает, кого они называют. Разбор сайта и готовые правки — от серверных фактов до нормального llms.txt — приходят в полном аудите. Вторая половина вопроса, что спрашивать и как считать ответы, лежит в как проверить, упоминает ли AI ваш бренд.