Чи можуть 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