Pot crawlerele AI să citească conținut redat de JavaScript?
Adesea, nu. Googlebot redă JavaScript într-un pas ulterior, dar majoritatea crawlerelor AI nu documentează că ar face-o, iar Google însuși notează că nu toți boții pot rula JavaScript. Dacă textul tău apare doar după ce rulează scripturile, un crawler AI poate primi o pagină goală. Livrează conținutul principal în HTML-ul inițial, prin randare pe server sau pagini statice.
Aplicațiile single-page și framework-urile client-side sunt peste tot și în browser arată bine. Un crawler care citește doar HTML-ul trimis de serverul tău vede altceva: un <div id="root"></div>, câteva taguri script și puțin text sau deloc. Pentru răspunsurile AI, pagina aceea nu are nimic de citat.
Pe această pagină
De ce nu văd crawlerele AI conținutul JavaScript?
Rularea JavaScript e costisitoare. Un crawler trebuie să descarce scripturile, să le execute într-un motor de browser și să aștepte încărcarea datelor. Google face asta pentru Search: parcurge paginile, le pune la coadă pentru redare și le redă cu Chromium headless când resursele permit. Chiar și așa, Google recomandă randarea pe server sau prerandarea, pentru că sunt mai rapide pentru utilizatori și crawlere, și notează că nu toți boții pot rula JavaScript.
OpenAI, Anthropic și Perplexity nu afirmă în documentația crawlerelor lor că agenții lor execută JavaScript. Apple spune că Applebot poate reda pagini într-un browser. Fără o declarație clară, presupunerea sigură pentru crawlerele AI este că citesc doar HTML-ul inițial.
Cum verific ce primește un crawler?
Uită-te la HTML-ul brut, nu la pagina redată. Instrumentele pentru dezvoltatori din browser arată DOM-ul după ce au rulat scripturile, ceea ce nu e ce primește un crawler. Folosește view-source sau salvează HTML-ul brut din linia de comandă și caută în el:
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
Un rezultat 0 înseamnă că propoziția nu se află în HTML-ul trimis de server, deci crawlerele care nu rulează scripturi nu o vor găsi. O privire rapidă asupra fișierului spune restul: un articol randat pe server are tot textul acolo; o carcasă client-side are un element rădăcină gol și o listă de scripturi.
Care pagini sunt cele mai expuse?
- Aplicații single-page construite cu React, Vue, Angular sau Svelte, care redau totul în browser.
- Pagini care preiau textul principal de la un API după încărcare, precum detaliile produselor, prețurile sau recenziile.
- Conținut din taburi, acordeoane sau secțiuni „încarcă mai mult”, cerut doar la clic.
- Pagini din spatele unui login, al unui paywall sau al unui ecran de consimțământ pe care crawlerul nu îl poate trece.
- Pagini care setează
noindexsau URL-ul canonic doar prin JavaScript. Google avertizează că, dacă vedenoindexîn HTML-ul original, poate sări complet peste redare.
Cum remediez conținutul disponibil doar prin JavaScript?
Soluția este să trimiți conținutul important în primul răspuns. Alege cea mai ușoară opțiune pe care o permite stack-ul tău:
- Randare pe server (SSR): framework-uri precum Next.js, Nuxt, SvelteKit și Angular SSR redau pagina pe server și o hidratează în browser.
- Generare statică sau prerandare: construiește HTML-ul la deploy pentru paginile care se schimbă rar, precum articolele, documentația și paginile de destinație.
- Îmbunătățire progresivă: pune textul, titlurile, linkurile, prețurile și JSON-LD în HTML și folosește JavaScript doar pentru interacțiune.
- Include direct ce contează: dacă taburile ascund conținut, pune-l tot în HTML și comută vizibilitatea cu CSS sau script, în loc să-l preiei la clic.
Nu trebuie să convertești o aplicație întreagă dintr-odată. Începe cu paginile pe care vrei să le vezi citate: articole, documentație, pagini de produs și de prețuri. Zonele de cont și dashboard-urile pot rămâne client-side, pentru că oricum sunt în spatele unui login.
Evită să oferi crawlerelor o pagină diferită de cea a utilizatorilor, în funcție de user agent. Redarea aceluiași HTML pentru toți este mai simplu de întreținut și elimină orice îndoială legată de cloaking.
Blochează și ecranele de login, consimțământ și paywall crawlerele AI?
Da. Un crawler nu se autentifică, nu dă clic pe un banner de cookie-uri și nu rezolvă verificări. Anthropic afirmă că boții săi nu încearcă să ocolească CAPTCHA-urile. Dacă un manager de consimțământ înlocuiește pagina cu un overlay pe tot ecranul în HTML sau redirecționează vizitatorii noi către o pagină de consimțământ, crawlerul primește asta în loc de conținutul tău.
Asigură-te că paginile publice își redau conținutul în HTML indiferent de starea consimțământului, cu bannerul ca overlay, nu ca înlocuitor. Ține paginile pe care vrei să fie citate în afara ecranelor de login și verifică dacă un crawler nu este redirecționat către o pagină de autentificare.
Cum detectează AISeeWhy paginile doar-JavaScript?
AISeeWhy citește HTML-ul inițial așa cum îl primește fiecare crawler, fără a rula scripturi. Când o pagină are aproape niciun text vizibil, dar are un element rădăcină de framework și scripturi, raportează o constatare P1 conform căreia conținutul are nevoie de JavaScript. Semnalează și redirecționările care trimit crawlerele în altă parte decât la pagina primită de un browser.
Întrebări frecvente
Redă Googlebot JavaScript?
Da. Google parcurge HTML-ul, pune paginile la coadă pentru redare și le redă cu Chromium headless când resursele permit. Google recomandă totuși randarea pe server sau prerandarea.
Rulează crawlerele ChatGPT, Claude și Perplexity JavaScript?
Documentația furnizorilor lor despre crawlere nu spune acest lucru. Până când un furnizor afirmă altceva, presupune că crawlerul citește HTML-ul inițial și asigură-te că conținutul tău se află în el.
Este o idee bună redarea dinamică pentru boți?
Funcționează ca soluție provizorie, dar adaugă o a doua cale de redare de întreținut. Randarea pe server sau HTML-ul static livrează același conținut tuturor și este soluția mai simplă pe termen lung.
Contează JSON-LD adăugat prin JavaScript?
Google îl poate citi după redare, dar crawlerele care nu rulează scripturi nu îl vor vedea. Pune JSON-LD în HTML-ul inițial.
Surse
- Google Search Central: bazele SEO pentru JavaScript
- Apple: despre Applebot
- OpenAI: prezentare generală a crawlerelor OpenAI
- Anthropic: Anthropic colectează date de pe web și cum pot proprietarii de site-uri să blocheze crawlerul?
- Perplexity: crawlerele Perplexity