I crawler di IA riescono a leggere i contenuti generati da JavaScript?
Spesso no. Googlebot esegue il rendering di JavaScript in una fase successiva, ma la maggior parte dei crawler di IA non documenta di farlo, e lo stesso Google osserva che non tutti i bot sanno eseguire JavaScript. Se il tuo testo compare solo dopo l'esecuzione degli script, un crawler di IA può ricevere una pagina vuota. Servi il contenuto principale nell'HTML iniziale con il rendering lato server o con pagine statiche.
Le single-page app e i framework lato client sono ovunque, e in un browser sembrano perfetti. Un crawler che legge solo l'HTML inviato dal tuo server vede altro: un <div id="root"></div>, qualche tag script e poco o nessun testo. Per le risposte dell'IA, quella pagina non ha nulla da citare.
In questa pagina
- Perché i crawler di IA non vedono i contenuti JavaScript?
- Come verifico che cosa riceve un crawler?
- Quali pagine sono più a rischio?
- Come risolvo il problema dei contenuti solo JavaScript?
- Anche le schermate di login, consenso e paywall bloccano i crawler di IA?
- Come rileva AISeeWhy le pagine solo JavaScript?
Perché i crawler di IA non vedono i contenuti JavaScript?
Eseguire JavaScript è costoso. Un crawler deve scaricare gli script, eseguirli in un motore di browser e aspettare il caricamento dei dati. Google lo fa per Search: scansiona, mette le pagine in coda per il rendering e le elabora con Chromium headless quando le risorse lo consentono. Ciononostante, Google consiglia il rendering lato server o il prerendering perché è più veloce per utenti e crawler, e osserva che non tutti i bot sanno eseguire JavaScript.
OpenAI, Anthropic e Perplexity non dichiarano nella documentazione dei loro crawler che i loro agenti eseguano JavaScript. Apple dice che Applebot può eseguire il rendering delle pagine in un browser. In assenza di una dichiarazione chiara, l'ipotesi prudente per i crawler di IA è che leggano solo l'HTML iniziale.
Come verifico che cosa riceve un crawler?
Guarda l'HTML grezzo, non la pagina renderizzata. Gli strumenti per sviluppatori del browser mostrano il DOM dopo l'esecuzione degli script, che non è ciò che riceve un crawler. Usa la visualizzazione del sorgente, oppure salva l'HTML grezzo dalla riga di comando e cercaci dentro:
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 risultato pari a 0 significa che la frase non è nell'HTML inviato dal server, quindi i crawler che non eseguono script non la troveranno. Un'occhiata al file ti dice il resto: un articolo con rendering lato server ha lì tutto il suo testo; un guscio lato client ha un elemento radice vuoto e un elenco di script.
Quali pagine sono più a rischio?
- Le single-page app costruite con React, Vue, Angular o Svelte che renderizzano tutto nel browser.
- Le pagine che recuperano il testo principale da un'API dopo il caricamento, come dettagli dei prodotti, prezzi o recensioni.
- I contenuti dentro schede, fisarmoniche o sezioni «carica altro» che vengono richiesti solo al clic.
- Le pagine dietro un login, un paywall o un muro di consenso che il crawler non può superare.
- Le pagine che impostano
noindexo l'URL canonico solo tramite JavaScript. Google avverte che, quando vedenoindexnell'HTML originale, può saltare del tutto il rendering.
Come risolvo il problema dei contenuti solo JavaScript?
La soluzione è inviare il contenuto importante già nella prima risposta. Scegli l'opzione più leggera che il tuo stack consente:
- Rendering lato server (SSR): framework come Next.js, Nuxt, SvelteKit e Angular SSR renderizzano la pagina sul server e la idratano nel browser.
- Generazione statica o prerendering: costruisci l'HTML al momento del deploy per le pagine che cambiano di rado, come articoli, documentazione e landing page.
- Progressive enhancement: metti testo, titoli, link, prezzi e JSON-LD nell'HTML e usa JavaScript solo per l'interazione.
- Includi ciò che conta: se alcune schede nascondono contenuti, mettili tutti nell'HTML e alterna la visibilità con CSS o script, invece di recuperarli al clic.
Non devi convertire un'intera app in una volta. Parti dalle pagine che vuoi vedere citate: articoli, documentazione, pagine di prodotto e dei prezzi. Le aree account e le dashboard possono restare lato client, perché sono comunque dietro un login.
Evita di servire ai crawler una pagina diversa da quella degli utenti in base allo user agent. Renderizzare lo stesso HTML per tutti è più semplice da mantenere ed evita ogni dubbio di cloaking.
Anche le schermate di login, consenso e paywall bloccano i crawler di IA?
Sì. Un crawler non effettua il login, non clicca su un banner dei cookie e non risolve le sfide. Anthropic afferma che i suoi bot non cercheranno di aggirare i CAPTCHA. Se un gestore del consenso sostituisce la pagina con un overlay a tutto schermo nell'HTML, o reindirizza i nuovi visitatori a una pagina di consenso, il crawler riceve quello al posto dei tuoi contenuti.
Assicurati che le pagine pubbliche mostrino il contenuto nell'HTML a prescindere dallo stato del consenso, con il banner come overlay e non come sostituzione. Tieni le pagine che vuoi vedere citate fuori dai muri di login e controlla che un crawler non venga reindirizzato a una pagina di accesso.
Come rileva AISeeWhy le pagine solo JavaScript?
AISeeWhy legge l'HTML iniziale così come lo riceve ciascun crawler, senza eseguire script. Quando una pagina ha quasi nessun testo visibile ma un elemento radice di framework e degli script, segnala un problema P1: il contenuto richiede JavaScript. Segnala anche i reindirizzamenti che mandano i crawler altrove rispetto alla pagina che riceve un browser.
Domande frequenti
Googlebot esegue JavaScript?
Sì. Google scansiona l'HTML, mette le pagine in coda per il rendering e le elabora con Chromium headless quando le risorse lo consentono. Google consiglia comunque il rendering lato server o il prerendering.
I crawler di ChatGPT, Claude e Perplexity eseguono JavaScript?
La documentazione dei crawler dei loro fornitori non lo dice. Finché un fornitore non afferma il contrario, presumi che il crawler legga l'HTML iniziale e assicurati che il tuo contenuto sia lì.
Il rendering dinamico per i bot è una buona idea?
Funziona come ripiego, ma aggiunge un secondo percorso di rendering da mantenere. Il rendering lato server o l'HTML statico servono lo stesso contenuto a tutti e sono la soluzione più semplice nel lungo periodo.
Il JSON-LD aggiunto da JavaScript conta?
Google può leggerlo dopo il rendering, ma i crawler che non eseguono script non lo vedranno. Metti il JSON-LD nell'HTML iniziale.
Fonti
- Google Search Central: nozioni di base sulla SEO con JavaScript
- Apple: informazioni su Applebot
- OpenAI: panoramica dei crawler di OpenAI
- Anthropic: Anthropic raccoglie dati dal web e come possono i proprietari dei siti bloccare il crawler?
- Perplexity: i crawler di Perplexity