Tu vedi una pagina completa. L’agente riceve un file HTML grezzo. Se il tuo contenuto viene assemblato nel browser da JavaScript, c’è una possibilità concreta che dall’altra parte sia arrivato solo un guscio vuoto. L’unica misurazione pubblica che ho trovato sul tema — condotta da Vercel e MERJ nel dicembre 2024 — conclude che nessuno dei principali crawler IA esegue JavaScript: i file JS li scaricano (l’11,50% delle richieste di ChatGPT, il 23,84% di quelle di Claude) ma non li eseguono mai. Google è l’eccezione: effettua il rendering con una versione evergreen di Chromium, pur fermandosi anch’esso a 2 MB. Il test in sé richiede due minuti e una riga di curl.
L’unica domanda che conta: cosa c’è nell’HTML iniziale?
C’è una differenza tra ciò che il tuo sito mostra e ciò che il tuo sito invia. Il browser riceve un documento HTML, scarica i file JavaScript, li esegue, effettua ulteriori chiamate API e da tutto questo assembla la pagina che vedi. L’intera catena avviene sulla macchina dell’utente, non sul tuo server. Un agente che richiede l’URL e si ferma lì riceve solo il primo passaggio.
Sulla maggior parte dei content management system classici il problema non si pone, perché l’HTML arriva dal server già completo. La difficoltà comincia quando il sito è costruito come un’applicazione lato client: React, Vue o Angular che generano il contenuto dopo il caricamento. In quel caso il documento che lascia il tuo server può essere tre kilobyte di tag vuoti con un <div id=”root”></div> nel mezzo, e tutto il resto viene costruito soltanto nel browser.
Un punto merita di essere sottolineato: non è una questione di permessi. Puoi dare a ogni bot accesso completo, restituire 200 a ogni richiesta e non comparire comunque in nessuna risposta — semplicemente perché non c’era contenuto da leggere. Ho analizzato il livello dei permessi separatamente nella mappa dei bot 2026; questo è il livello che viene subito dopo.
Cosa è stato davvero misurato — e cosa no
Il tema richiede cautela, perché è pieno di numeri che circolano senza fonte. Ciò che esiste: uno studio congiunto di Vercel e MERJ pubblicato il 17 dicembre 2024, che analizza log reali di siti di grandi dimensioni. La conclusione centrale è che nessuno dei principali crawler IA — GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot e gli altri — esegue JavaScript. Scaricano i file JS ma non li eseguono. L’eccezione nel loro elenco è AppleBot, che effettua il rendering tramite un browser.
Lo stesso studio dà anche un’idea dei volumi: circa 569 milioni di richieste mensili da GPTBot e circa 370 milioni da Claude, insieme all’incirca un quinto del volume di richieste di Googlebot in quel periodo.
Una precisazione doverosa: quella misurazione è del dicembre 2024 e riguarda un campione limitato di siti. Non è una misurazione su scala internet e non è un dato del 2026. Ho controllato la documentazione ufficiale di OpenAI, Anthropic e Perplexity — nessuna delle tre documenta se i propri bot eseguano il rendering di JavaScript. Quell’assenza è di per sé un risultato: non puoi fare affidamento su una promessa mai fatta, quindi l’unica ipotesi sicura è che il contenuto debba essere nell’HTML.
Google è l’eccezione, non la regola
Google Search Central afferma esplicitamente, in una pagina aggiornata il 4 marzo 2026, che Google Search esegue JavaScript con una versione evergreen di Chromium e che Googlebot mette in coda per il rendering tutte le pagine che restituiscono uno status code 200. Nello stesso documento Google aggiunge la precisazione più rilevante in questo contesto: non tutti i bot sono in grado di eseguire JavaScript.
Vale la pena conoscere due limiti pratici di Google. Primo, secondo la documentazione di Googlebot, il crawler preleva i primi 2 MB di un tipo di file supportato e si ferma lì. Se il tuo HTML è più pesante, tutto ciò che supera la soglia semplicemente non viene letto. Secondo, sulle funzionalità basate sull’IA, Google afferma che non esistono requisiti tecnici aggiuntivi oltre al fatto che la pagina sia indicizzata e idonea a comparire con uno snippet. Nessun file speciale e nessun markup dedicato: ciò che si legge bene in Search si legge bene anche lì.
Tre schemi che svuotano la pagina
Rendering lato client. Il caso classico. Il documento che arriva dal server contiene un guscio e il contenuto si carica dopo. Facile da individuare: il sorgente della pagina è molto più breve di ciò che l’occhio vede.
Contenuto che si apre solo con l’interazione. Accordion, tab, «carica altro», scroll infinito. Se il contenuto viene iniettato nel DOM solo dopo un clic, nel documento non esiste. Se è presente nell’HTML ed è semplicemente nascosto via CSS, c’è, e va benissimo così.
Livelli bloccanti davanti al contenuto. Un banner dei cookie che richiede il consenso prima che il contenuto si carichi, un paywall, una modale di login, o un livello di bot management che restituisce un challenge. In questi casi il bot una pagina la riceve — solo che non è la tua.
Come verificarlo in due minuti
Non serve nessuno strumento esterno. Bastano tre righe per sapere esattamente cosa esce dal tuo server:
curl -sA “GPTBot” https://example.com/page/ -o raw.html
wc -c raw.html
# 2. How many words of visible text does it actually contain
curl -sA “GPTBot” https://example.com/page/ \
| sed -e ‘s/<script[^<]*<\/script>//g’ -e ‘s/<[^>]*>/ /g’ \
| tr -s ‘ \n’ ‘ ‘ | wc -w
# 3. Is a key sentence from the page really in the document
curl -sA “GPTBot” https://example.com/page/ | grep -c “your key sentence”
L’interpretazione è semplice. Se la riga 2 restituisce un numero vicino al conteggio di parole che vedi sulla pagina, va tutto bene. Se restituisce 40 parole per una pagina da 1.200 parole, il contenuto viene costruito nel browser. Se la riga 3 restituisce 0, la tua frase centrale non esiste in nessuna risposta che verrà mai generata da quella pagina. Vale anche la pena rifare la stessa verifica con uno user-agent di browser ordinario e confrontare: un divario ampio tra i due indica un server che serve contenuti diversi ai bot.
Come confermare che il bot sia autentico
Prima di trarre conclusioni dal tuo log, assicurati che chi diceva di essere GPTBot lo sia davvero. Tutti i principali vendor pubblicano elenchi ufficiali di indirizzi IP, e Google pubblica anche un metodo di verifica tramite DNS inverso:
| Vendor | Fonte di verifica ufficiale | Nota |
|---|---|---|
| OpenAI | openai.com/gptbot.json openai.com/searchbot.json openai.com/chatgpt-user.json |
Un file separato per ogni bot |
| Anthropic | claude.com/crawling/bots.json | Un unico file per tutti i bot |
| Perplexity | perplexity.com/perplexitybot.json perplexity.com/perplexity-user.json |
Un file separato per ogni bot |
| developers.google.com/crawling/docs/ crawlers-fetchers/verify-google-requests |
Sia intervalli IP sia verifica DNS inversa su googlebot.com |
Google è l’unico dei quattro a offrire la verifica tramite DNS inverso. Con gli altri, confrontare l’IP con l’elenco ufficiale è l’unico controllo disponibile. Conviene scaricare questi file automaticamente invece di copiare gli intervalli a mano — cambiano.
Cosa fare quando la risposta è «la pagina è vuota»
La correzione dipende dall’architettura, ma la direzione è la stessa in ogni caso: spostare l’assemblaggio del contenuto dal browser al server.
- Rendering lato server o generazione statica. Nei framework moderni è un’impostazione per singola pagina, non una riscrittura. Il risultato è HTML completo già nella primissima risposta, il che migliora anche i tempi di caricamento per gli utenti umani.
- Assicurati che il contenuto principale non dipenda dall’interazione. Un accordion il cui contenuto è nell’HTML e viene nascosto via CSS è una soluzione perfettamente valida. Un accordion che recupera il contenuto al clic non lo è.
- Controlla cosa succede prima del consenso. Se il banner dei cookie blocca il contenuto fino al clic, il bot non vede nulla. Il contenuto deve essere nel documento anche quando non è stato cliccato nulla.
- Misura di nuovo; non dare per scontato. Dopo ogni modifica, la stessa riga di curl. La verifica richiede pochi secondi, e dare per scontato che abbia funzionato è esattamente ciò che ha creato il problema all’inizio.
E se ti interessa la domanda più ampia — cosa legge davvero un agente IA sul tuo sito prima ancora che si ponga la questione del rendering — ne ho scritto nel livello di scoperta.
Un ordine di priorità concreto
Se hai un’ora, questo è l’ordine che consiglio. Primo, esegui la verifica curl sulle tre pagine più importanti del sito — la home, la pagina di servizio principale e l’articolo con più traffico. Poi confronta il conteggio delle parole con ciò che è effettivamente visibile. Solo se c’è un divario ha senso aprire la questione architetturale. Sulla maggior parte dei siti WordPress e dei siti vetrina la risposta sarà che va tutto bene, ed è un ottimo esito — meglio saperlo che passare un mese a risolvere un problema che non hai.
Domande frequenti
I crawler IA eseguono JavaScript?
Nessuna delle grandi aziende lo documenta ufficialmente. L’unica misurazione pubblica esistente, di Vercel e MERJ nel dicembre 2024, ha rilevato che nessuno dei principali crawler IA esegue JavaScript — scaricano i file ma non li eseguono. In assenza di un impegno ufficiale, l’ipotesi sicura è che il contenuto debba essere presente nell’HTML iniziale.
Googlebot effettua il rendering?
Sì. Google afferma che Search esegue JavaScript con una versione evergreen di Chromium e che ogni pagina che restituisce uno status code 200 viene messa in coda per il rendering. C’è un limite tecnico: Googlebot scansiona i primi 2 MB di un tipo di file supportato e si ferma lì.
Come faccio a sapere se il mio contenuto è nell’HTML?
Preleva la pagina con curl, senza browser, rimuovi i tag e conta le parole. Se il numero è vicino a quello che vedi sulla pagina, il contenuto è renderizzato lato server. Se è nettamente inferiore, il contenuto viene costruito nel browser e non raggiunge mai l’agente.
Serve un file speciale per comparire nelle funzionalità IA di Google?
No. Google afferma che non ci sono requisiti tecnici aggiuntivi e che la condizione è che la pagina sia indicizzata e idonea a comparire nei risultati con uno snippet.
Come confermo che un bot nel mio log sia autentico?
OpenAI, Anthropic, Perplexity e Google pubblicano tutti elenchi IP ufficiali come file JSON. Google pubblica inoltre un metodo di verifica tramite DNS inverso sul dominio googlebot.com. Con gli altri vendor, il confronto con l’elenco IP è l’unica verifica disponibile.
- La mappa dei bot IA 2026: chi sta davvero scansionando il tuo sito e cosa puoi bloccare senza rischi
- Il livello di scoperta: cosa legge davvero un agente IA sul tuo sito
- Come scrivere una pagina che un agente IA possa davvero citare
- Dalla lettura all’azione: cosa serve perché un agente IA completi un compito sul tuo sito