[ Definizione ]
Perché molti crawler AI non vedono il tuo sito
[ In breve ]
I crawler di OpenAI, Anthropic e Perplexity non eseguono JavaScript: leggono l'HTML che il server restituisce alla prima richiesta e proseguono. Googlebot, Gemini e Applebot invece renderizzano. Se prezzo, testi o navigazione compaiono solo dopo il rendering, per il primo gruppo la pagina è vuota, e si verifica in dieci minuti.
- Pubblicato
- Lettura
- 8 min
Che cosa fa esattamente un crawler AI quando visita una pagina?
Una richiesta HTTP, legge quello che il server risponde, passa all'indirizzo successivo. È tutto. Non apre un browser, non aspetta che gli script finiscano, non clicca niente. Quello che non è nella prima risposta del server, per lui non esiste.
È una differenza sostanziale rispetto a Googlebot, che da anni mantiene un servizio di rendering: scarica la pagina, la mette in coda, la esegue in un browser headless e poi indicizza il risultato. Con qualche ritardo e qualche limite, ma la esegue. L'abitudine costruita su quel comportamento è quella che oggi manda fuori strada: se una pagina funziona per Google, si dà per scontato che funzioni per tutti.
L'analisi di Vercel e MERJ su oltre cinquecento milioni di richieste, pubblicata a dicembre 2024, è la misurazione più ampia disponibile su questo. Il risultato è netto, e va letto con il suo perimetro: zero evidenze di esecuzione JavaScript nei crawler di OpenAI, Anthropic, Meta, ByteDance, Perplexity e Common Crawl. Scaricano anche i file JavaScript, in una percentuale non trascurabile delle richieste, ma non li eseguono. Googlebot e i sistemi che ne riusano l'infrastruttura restavano fuori da quell'affermazione, e lo sono ancora. Da allora nessuno dei fornitori citati ha annunciato il contrario, ma è una capacità che può cambiare senza preavviso: la data conta.
Quali crawler eseguono JavaScript e quali no?
La divisione non segue la logica che ci si aspetta. Non è una questione di quanto è grande il fornitore, è una questione di quale infrastruttura ha riutilizzato. Chi aveva già un motore di ricerca con un servizio di rendering lo sta usando; chi ha costruito il crawler da zero per addestrare modelli, no.
| Crawler | Esegue JavaScript | Nota |
|---|---|---|
| GPTBot | No | Addestramento. Scarica file JS senza eseguirli |
| OAI-SearchBot | No | Serve la ricerca in ChatGPT |
| ClaudeBot | No | Scarica JS in circa un quarto delle richieste |
| PerplexityBot | No | Legge la prima risposta del server |
| CCBot, Bytespider | No | Crawler di raccolta massiva |
| Googlebot | Sì | Servizio di rendering, con coda e ritardi |
| Google Gemini | Sì | Riusa l'infrastruttura di Googlebot |
| Applebot | Sì | Crawler basato su browser |
Che cosa sparisce più spesso?
Non il contenuto decorativo. Sparisce quasi sempre l'informazione che decide, perché è quella che viene caricata dopo, spesso da un servizio esterno, per ragioni di prestazioni o di gestione.
- Prezzo e disponibilità, quando arrivano da una chiamata al carrello o compaiono solo dopo la selezione di una variante.
- Contenuto dentro tab e accordion, se il pannello viene costruito al clic invece di essere nel documento e nascosto con CSS.
- Recensioni, quando sono servite da un widget di terze parti dentro un iframe o via script.
- Liste con caricamento progressivo: si vede la prima schermata, il resto del catalogo non esiste.
- Navigazione gestita solo lato client, che lascia il crawler senza link su cui procedere.
- Tutto ciò che sta dietro un banner di consenso implementato come blocco del rendering.
Come si verifica in dieci minuti?
Serve una sola cosa: guardare la pagina come la vede chi non esegue niente. Il modo più diretto è scaricare l'HTML dal terminale e cercarci dentro il testo che ti interessa. Se `curl` non ti è familiare, in un browser va bene anche disattivare JavaScript nelle impostazioni del sito e ricaricare, oppure usare Visualizza sorgente pagina, che mostra il documento servito e non quello ricostruito.
Attenzione a una trappola: gli strumenti per sviluppatori mostrano il DOM dopo l'esecuzione degli script, quindi lì il prezzo si vede sempre. Non è la vista giusta. La vista giusta è il sorgente della risposta, non l'ispettore.
- Scarica l'HTML servito di una pagina prodotto e cerca il prezzo, la disponibilità e l'identificatore.
- Ripeti su una pagina di categoria e conta quanti prodotti sono effettivamente nel documento.
- Cerca il testo del tuo paragrafo più importante. Se non c'è, nessun motore che non renderizza lo leggerà.
- Controlla che esistano link testuali verso le pagine che contano, raggiungibili senza JavaScript.
- Verifica che il tuo CDN o il tuo firewall non risponda con una sfida di sicurezza agli user agent dei crawler AI dichiarati.
Perché i crawler AI sprecano così tante richieste?
Perché scoprono male. Nello stesso studio, oltre un terzo delle richieste di ChatGPT e di Claude finisce su pagine inesistenti, contro circa l'otto per cento di Googlebot. Una parte segue anche redirect a catena. Sono crawler che indovinano gli indirizzi più di quanto li deducano.
La conseguenza pratica è controintuitiva e utile: con questi sistemi la scoperta pesa più dell'ottimizzazione. Una sitemap aggiornata, link interni testuali, URL stabili e redirect diretti valgono più di qualsiasi intervento fine sul contenuto, perché determinano se la pagina viene raggiunta.
Ne segue anche una regola sui redirect. Ogni catena è un punto in cui un crawler che ne segue pochi si ferma. Se hai migrato il sito e hai lasciato due o tre salti tra il vecchio indirizzo e il nuovo, li stai pagando qui.
Cosa fare se il sito è una single page application?
Non riscriverlo. È la reazione più costosa e quasi sempre non necessaria, perché il problema non riguarda tutto il sito allo stesso modo: riguarda le pagine che devono essere lette da un sistema esterno. Le altre possono restare come sono.
L'intervento minimo è rendere il contenuto disponibile nella risposta del server per quelle pagine: rendering lato server, generazione statica, oppure un servizio di prerendering davanti al sito. Quale delle tre dipende dallo stack, non dal problema. Il criterio è uno solo: dopo l'intervento, il testo che conta deve essere nell'HTML servito.
L'ordine giusto è per valore commerciale, non per facilità tecnica. Pagine prodotto e categorie prima, pagine servizio e contenuti fonte subito dopo, il resto quando c'è margine. Dieci pagine sistemate bene battono un progetto di migrazione che non finisce.
Come si dichiara l'accesso ai crawler AI?
In `robots.txt`, e la decisione va presa per gruppi separati invece che in blocco, perché i crawler AI non fanno tutti la stessa cosa. Quelli di ricerca servono risposte in tempo reale e possono citare la fonte; quelli di addestramento raccolgono materiale per costruire modelli e non citano nulla nell'immediato. Sono due scelte diverse, con due conseguenze diverse.
La confusione più costosa riguarda OpenAI, perché usa due agenti con nomi simili. `OAI-SearchBot` serve la ricerca dentro ChatGPT; `GPTBot` serve l'addestramento. Bloccare `GPTBot` non ti toglie dalla ricerca in ChatGPT, e bloccare `OAI-SearchBot` sì. Chi copia un blocco generico trovato online spesso ottiene l'esatto contrario di quello che voleva: resta nei dati di addestramento e sparisce dalle risposte con citazione.
C'è poi una categoria di blocchi che nessuno ha deciso. Molti firewall applicativi e servizi di protezione rispondono con una sfida di sicurezza agli user agent che non riconoscono, e i crawler AI non risolvono sfide. Il sito è aperto in `robots.txt` e chiuso di fatto, che è la situazione peggiore perché non appare da nessuna parte. Vale la pena controllare i log per gli user agent dichiarati e verificare quale codice di stato ricevono davvero.
Qualunque sia la scelta, conviene scriverla nel file come commento e per gruppo. Una riga che dice perché quel gruppo è consentito o bloccato rende la decisione reversibile fra sei mesi, quando le condizioni saranno cambiate e nessuno ricorderà il ragionamento.
Che cosa non risolve il rendering lato server?
Non ti rende citabile. Rende leggibile, che è una condizione necessaria e non sufficiente. Un motore che ora riesce a leggere la tua pagina può continuare a non scegliere te come fonte, perché quella è una decisione che dipende da autorevolezza e coerenza, non da accessibilità.
Non compensa una struttura di contenuto sbagliata. Se la risposta esiste ma è distribuita su sei paragrafi che vanno letti in sequenza, il rendering l'ha resa disponibile e non prelevabile. Sono due problemi diversi, con due lavori diversi.
Non garantisce che i crawler passino. Puoi essere perfettamente leggibile e ricevere poche visite di crawler, perché la frequenza dipende da quanto il tuo dominio è già noto e collegato. Il rendering è il primo gradino, non la scala.
[ Cosa portarsi via ]
- Guarda l'HTML servito, non l'ispettore del browser: sono due cose diverse e solo la prima è quella che conta.
- Se prezzo e disponibilità non sono nella risposta del server, il resto degli interventi è secondario.
- Con questi crawler la scoperta pesa più dell'ottimizzazione: sitemap, link testuali, URL stabili, redirect diretti.
- Non riscrivere il sito. Rendi disponibili nella risposta del server le pagine che devono essere lette, in ordine di valore commerciale.
- Il rendering rende leggibile, non citabile. Sono due problemi separati con due lavori separati.
Come si misura la visibilità su un motore generativo, spiegato per esteso. Leggi l'articolo
[ Fonti ]
[ Autore ]
Nicola Dussin
Fondatore di Creaitivo. Ogni misurazione è eseguita direttamente da me.
Profilo LinkedInVuoi la stessa lettura sul tuo caso?
La preview automatica dà un primo segnale in pochi secondi. La lettura utile la preparo io e arriva entro 48 ore.
Scrivimi il tuo caso