Czy crawlery AI mogą czytać treści renderowane przez JavaScript

Opublikowano

Krótka odpowiedź

Często nie. Googlebot renderuje JavaScript w późniejszym kroku, ale większość crawlerów AI nie deklaruje, że to robi, a sam Google zaznacza, że nie wszystkie boty potrafią uruchamiać JavaScript. Jeśli Twój tekst pojawia się dopiero po uruchomieniu skryptów, crawler AI może dostać pustą stronę. Serwuj główną treść w początkowym HTML przez renderowanie po stronie serwera lub strony statyczne.

Aplikacje jednostronicowe i frameworki działające po stronie klienta są wszędzie i w przeglądarce wyglądają dobrze. Crawler, który czyta tylko HTML wysłany przez serwer, widzi coś innego: <div id="root"></div>, kilka znaczników script i niewiele tekstu albo wcale. Dla odpowiedzi AI taka strona nie ma czego cytować.

Na tej stronie
  1. Dlaczego crawlery AI nie widzą treści z JavaScript
  2. Jak sprawdzić, co dostaje crawler
  3. Które strony są najbardziej zagrożone
  4. Jak naprawić treści dostępne tylko przez JavaScript
  5. Czy ekrany logowania, zgody i paywalla też blokują crawlery AI
  6. Jak AISeeWhy wykrywa strony tylko na JavaScript

Dlaczego crawlery AI nie widzą treści z JavaScript

Uruchamianie JavaScript jest kosztowne. Crawler musi pobrać skrypty, wykonać je w silniku przeglądarki i poczekać na załadowanie danych. Google robi to dla Wyszukiwarki: przeszukuje strony, kolejkuje je do renderowania i renderuje w headless Chromium, gdy pozwalają na to zasoby. Mimo to Google zaleca renderowanie po stronie serwera lub prerendering, bo jest szybsze dla użytkowników i crawlerów, i zaznacza, że nie wszystkie boty potrafią uruchamiać JavaScript.

OpenAI, Anthropic i Perplexity nie podają w dokumentacji crawlerów, że ich agenci wykonują JavaScript. Apple podaje, że Applebot może renderować strony w przeglądarce. Bez jasnej deklaracji bezpiecznie jest zakładać, że crawlery AI czytają tylko początkowy HTML.

Jak sprawdzić, co dostaje crawler

Patrz na surowy HTML, a nie na wyrenderowaną stronę. Narzędzia deweloperskie przeglądarki pokazują DOM po wykonaniu skryptów, a crawler dostaje coś innego. Użyj view-source albo zapisz surowy HTML z wiersza poleceń i przeszukaj go:

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

Wynik 0 oznacza, że zdania nie ma w HTML wysłanym przez serwer, więc crawlery, które nie uruchamiają skryptów, go nie znajdą. Resztę widać po rzucie oka na plik: w artykule renderowanym po stronie serwera jest cały tekst; powłoka kliencka ma pusty element główny i listę skryptów.

Które strony są najbardziej zagrożone

Jak naprawić treści dostępne tylko przez JavaScript

Rozwiązaniem jest wysłanie ważnych treści już w pierwszej odpowiedzi. Wybierz najlżejszą opcję, na jaką pozwala Twój stos:

Nie musisz przerabiać całej aplikacji naraz. Zacznij od stron, które mają być cytowane: artykułów, dokumentacji, stron produktu i cennika. Panele konta i dashboardy mogą pozostać po stronie klienta, bo i tak są za logowaniem.

Unikaj serwowania crawlerom innej strony niż użytkownikom w zależności od user agenta. Ten sam HTML dla wszystkich jest prostszy w utrzymaniu i wyklucza wszelkie wątpliwości co do cloakingu.

Czy ekrany logowania, zgody i paywalla też blokują crawlery AI

Tak. Crawler się nie loguje, nie klika banera cookie i nie rozwiązuje weryfikacji. Anthropic podaje, że jej boty nie będą próbować omijać CAPTCHA. Jeśli menedżer zgód zastępuje stronę pełnoekranową nakładką w HTML albo przekierowuje nowych odwiedzających na stronę zgody, crawler dostaje to zamiast Twojej treści.

Zadbaj, by strony publiczne renderowały treść w HTML niezależnie od stanu zgody, a baner był nakładką, a nie zamiennikiem strony. Trzymaj strony, które mają być cytowane, poza ścianami logowania i sprawdź, czy crawler nie jest przekierowywany na stronę logowania.

Jak AISeeWhy wykrywa strony tylko na JavaScript

AISeeWhy czyta początkowy HTML w takiej postaci, w jakiej dostaje go każdy crawler, bez uruchamiania skryptów. Gdy na stronie jest niemal zero widocznego tekstu, za to są element główny frameworka i skrypty, zgłasza zalecenie P1, że treść wymaga JavaScript. Oznacza też przekierowania, które kierują crawlery gdzie indziej niż do strony, którą dostaje przeglądarka.

Najczęstsze pytania

Czy Googlebot renderuje JavaScript?

Tak. Google przeszukuje HTML, kolejkuje strony do renderowania i renderuje je w headless Chromium, gdy pozwalają na to zasoby. Google nadal zaleca renderowanie po stronie serwera lub prerendering.

Czy crawlery ChatGPT, Claude i Perplexity uruchamiają JavaScript?

Dokumentacja crawlerów ich dostawców tego nie podaje. Dopóki dostawca nie stwierdzi inaczej, zakładaj, że crawler czyta początkowy HTML, i zadbaj, by Twoja treść w nim była.

Czy renderowanie dynamiczne dla botów to dobry pomysł?

Działa jako rozwiązanie tymczasowe, ale dodaje drugą ścieżkę renderowania do utrzymania. Renderowanie po stronie serwera lub statyczny HTML serwują tę samą treść wszystkim i są prostszym rozwiązaniem na dłuższą metę.

Czy JSON-LD dodany przez JavaScript się liczy?

Google może go odczytać po renderowaniu, ale crawlery, które nie uruchamiają skryptów, go nie zobaczą. Umieść JSON-LD w początkowym HTML.

Źródła

Więcej artykułów