Могут ли AI-краулеры читать контент, который отрисовывает JavaScript
Часто нет. Googlebot рендерит JavaScript отдельным, более поздним шагом, а большинство AI-краулеров не заявляют, что делают это, и сам Google отмечает, что не все боты умеют выполнять JavaScript. Если ваш текст появляется только после выполнения скриптов, AI-краулер может получить пустую страницу. Отдавайте основной контент в исходном HTML через серверный рендеринг или статические страницы.
Одностраничные приложения и клиентские фреймворки повсюду, и в браузере они выглядят нормально. Краулер, который читает только HTML от вашего сервера, видит другое: <div id="root"></div>, несколько тегов script и почти никакого текста. Для AI-ответов на такой странице нечего цитировать.
На этой странице
Почему AI-краулеры не видят контент на JavaScript
Выполнять JavaScript дорого. Краулеру нужно скачать скрипты, выполнить их в движке браузера и дождаться загрузки данных. Google делает это для Поиска: он обходит страницы, ставит их в очередь на рендеринг и рендерит в headless Chromium, когда хватает ресурсов. Тем не менее Google рекомендует серверный рендеринг или пререндеринг, потому что он быстрее для пользователей и краулеров, и отмечает, что не все боты умеют выполнять JavaScript.
OpenAI, Anthropic и Perplexity не заявляют в документации по краулерам, что их агенты выполняют JavaScript. Apple сообщает, что Applebot может рендерить страницы в браузере. Без чёткого заявления безопасно считать, что AI-краулеры читают только исходный HTML.
Как проверить, что получает краулер
Смотрите на сырой HTML, а не на отрисованную страницу. Инструменты разработчика в браузере показывают DOM после выполнения скриптов, а краулер получает не это. Используйте view-source или сохраните сырой HTML из командной строки и поищите в нём:
curl -s -o page.html \
-A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot" \
https://example.com/page
# Is a sentence from your main text in the raw HTML?
grep -c "a sentence from your main content" page.html
Результат 0 означает, что фразы нет в HTML, который отправил сервер, и краулеры, не выполняющие скрипты, её не найдут. Остальное видно по беглому взгляду на файл: в статье с серверным рендерингом там весь текст; у клиентской оболочки пустой корневой элемент и список скриптов.
Какие страницы в зоне наибольшего риска
- Одностраничные приложения на React, Vue, Angular или Svelte, которые отрисовывают всё в браузере.
- Страницы, которые после загрузки получают основной текст из API, например описание товара, цены или отзывы.
- Контент во вкладках, аккордеонах и разделах «загрузить ещё», который запрашивается только по клику.
- Страницы за логином, платной стеной или окном согласия, которые краулер пройти не может.
- Страницы, которые задают
noindexили канонический URL только через JavaScript. Google предупреждает, что, увидевnoindexв исходном HTML, он может вовсе пропустить рендеринг.
Как исправить контент, существующий только в JavaScript
Решение — отправлять важный контент уже в первом ответе. Выберите самый лёгкий вариант из доступных вашему стеку:
- Серверный рендеринг (SSR): фреймворки вроде Next.js, Nuxt, SvelteKit и Angular SSR отрисовывают страницу на сервере и затем гидратируют её в браузере.
- Статическая генерация или пререндеринг: собирайте HTML при деплое для страниц, которые меняются редко, таких как статьи, документация и лендинги.
- Прогрессивное улучшение: размещайте текст, заголовки, ссылки, цены и JSON-LD в HTML, а JavaScript используйте только для интерактивности.
- Встраивайте важное: если вкладки скрывают контент, положите его весь в HTML и переключайте видимость через CSS или скрипт, а не загружайте по клику.
Не нужно переводить на это целое приложение сразу. Начните со страниц, на которые хотите получать цитирования: статьи, документация, страницы продукта и цен. Личные кабинеты и панели управления могут остаться клиентскими, потому что они всё равно за логином.
Не отдавайте краулерам другую страницу, чем пользователям, в зависимости от user agent. Один и тот же HTML для всех проще поддерживать, и он исключает любые сомнения в клоакинге.
Блокируют ли AI-краулеров экраны логина, согласия и платной стены
Да. Краулер не входит в аккаунт, не нажимает на баннер cookie и не проходит проверки. Anthropic заявляет, что её боты не пытаются обходить CAPTCHA. Если менеджер согласий подменяет страницу полноэкранным оверлеем в HTML или перенаправляет новых посетителей на страницу согласия, краулер получит именно это, а не ваш контент.
Убедитесь, что публичные страницы отдают контент в HTML независимо от состояния согласия, а баннер — это оверлей, а не замена страницы. Держите страницы, которые хотите видеть в цитатах, вне стен логина и проверьте, что краулера не перенаправляет на страницу входа.
Как AISeeWhy находит страницы только на JavaScript
AISeeWhy читает исходный HTML в том виде, в каком его получает каждый краулер, не выполняя скрипты. Если на странице почти нет видимого текста, но есть корневой элемент фреймворка и скрипты, он сообщает о находке P1: контент требует JavaScript. Он также отмечает редиректы, которые ведут краулеров не на ту страницу, что получает браузер.
Частые вопросы
Рендерит ли Googlebot JavaScript?
Да. Google обходит HTML, ставит страницы в очередь на рендеринг и рендерит их в headless Chromium, когда хватает ресурсов. Всё равно Google рекомендует серверный рендеринг или пререндеринг.
Выполняют ли краулеры ChatGPT, Claude и Perplexity JavaScript?
В документации их вендоров об этом не сказано. Пока вендор не заявит иное, считайте, что краулер читает исходный HTML, и позаботьтесь, чтобы ваш контент в нём был.
Хорошая ли идея динамический рендеринг для ботов?
Как временная мера он работает, но добавляет второй путь рендеринга, который нужно поддерживать. Серверный рендеринг или статический HTML отдают один и тот же контент всем и остаются более простым долгосрочным решением.
Учитывается ли JSON-LD, добавленный через JavaScript?
Google может прочитать его после рендеринга, но краулеры, не выполняющие скрипты, его не увидят. Размещайте JSON-LD в исходном HTML.
Источники
- Google Search Central: основы JavaScript SEO
- Apple: об Applebot
- OpenAI: обзор краулеров OpenAI
- Anthropic: собирает ли Anthropic данные из веба и как владельцам сайтов заблокировать краулер?
- Perplexity: краулеры Perplexity