Vista crawler
La maggior parte dei bot non disegna mai la tua pagina. Prende l’HTML che il server invia, tiene le parole e se ne va. Questo controllo mostra quelle parole nell’ordine in cui un bot le incontra e segnala cosa manca.
Ogni pagina esiste in due copie
La prima copia è il documento HTML che esce dal tuo server. La seconda è quello che il browser ne ricava dopo aver caricato i fogli di stile, eseguito gli script e scaricato tutto quello che gli script richiedono. Le persone vedono sempre e solo la seconda copia.
I bot lavorano soprattutto sulla prima. Googlebot genera le pagine con un Chrome headless, ma in un secondo passaggio che può arrivare in ritardo e andare in timeout. Bingbot ne genera meno. I crawler che alimentano gli assistenti IA e i sistemi di anteprima delle app di chat e dei social in genere non eseguono affatto JavaScript. Se il tuo testo esiste solo nella seconda copia, una buona parte del tuo pubblico di macchine riceve una pagina vuota.
Questo controllo richiede la prima copia e si ferma lì. Non viene eseguito nulla e non viene applicato nessun foglio di stile.
Come leggere la vista in testo semplice
Percorriamo il corpo della pagina nell’ordine del sorgente e lo stampiamo come testo. Script, stili, template e disegni SVG inline vengono saltati. Il resto è marcato così:
#,##,###- Un titolo e il suo livello. Prova a leggere solo queste righe. Dovrebbero funzionare come indice della pagina.
- Parole sottolineate
- Un link. Passaci sopra con il mouse per vedere l’indirizzo a cui porta.
[Image: …]- Il testo
altdi un’immagine. Un’immagine senza attributoaltviene indicata come mancante, con il nome del file. Pulsanti e campi dei moduli compaiono tra parentesi allo stesso modo. - Testo marcato come nascosto
- Parole presenti nell’HTML ma con l’attributo
hiddeno uno stile inline comedisplay:none,visibility:hidden,font-size:0o un grandetext-indentnegativo. - Testo marcato noscript
- Contenuto dentro
<noscript>, che ricevono solo i bot e i visitatori senza JavaScript.
Sotto il testo trovi i numeri: dimensione dell’HTML, numero di parole visibili, quota dell’HTML che è testo, script, link e immagini. Una quota di testo tra il 10 e il 30% è tipica di una pagina fatta a mano o con un CMS. All’1 o 2%, il documento è soprattutto codice.
Cosa fa scattare ogni rilievo
| Rilievo | Regola applicata |
|---|---|
| Contenuto solo dopo JavaScript | Meno di 60 parole visibili, insieme a uno di questi: un contenitore di applicazione vuoto (#root, #app, #__next, #__nuxt, app-root e simili), tre o più script esterni, oltre 50 KB di script inline oppure oltre 150 KB nei file di script principali. |
| Pochissimo testo | Meno di 150 parole visibili. |
| La pagina chiede di non essere indicizzata | noindex o none in un meta tag robots o in un header X-Robots-Tag. |
| Google non ammesso | Il percorso della pagina corrisponde a una regola Disallow che si applica a Googlebot nel robots.txt. |
| Più testo nascosto che visibile | Le parole nascoste superano quelle visibili, con una soglia minima di 80. |
| Link che i bot non possono seguire | href="#", href="javascript:…" o un onclick senza href. |
| Nessun titolo di livello 1, immagini senza alt | Contati direttamente nell’HTML. |
L’ultimo blocco applica il tuo robots.txt a questo indirizzo per dieci crawler: Googlebot, Bingbot, Google-Extended, GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot, PerplexityBot, CCBot e Applebot-Extended. Un blocco su Googlebot conta come errore. Un blocco su un crawler IA viene solo riportato, perché è una scelta che hai il diritto di fare. Il controllo dell’accesso dei bot IA copre un elenco più lungo per tutto il sito.
Mettere il tuo testo nella prima copia
Se il controllo ha trovato un contenitore vuoto, la pagina è un’applicazione lato client. Il server invia un guscio e il browser lo riempie. Ecco i rimedi, dal più completo al meno completo:
- Genera sul server. Next.js, Nuxt, SvelteKit, Remix e Angular possono tutti produrre HTML completo per ogni richiesta e poi agganciarci gli script. Di solito è una scelta di configurazione, non una riscrittura.
- Genera pagine statiche in fase di build. Per i contenuti che cambiano di rado, strumenti come Astro, Gatsby o l’export statico dei framework qui sopra scrivono un file HTML completo per ogni pagina.
- Prerender per i bot. Un servizio di prerendering tiene un’istantanea generata e la serve ai crawler. Funziona, ma ora hai due versioni da curare.
Su un CMS classico come WordPress o Drupal l’HTML contiene già il testo e i rilievi sono più piccoli: un prezzo mostrato solo dentro un’immagine, un menu i cui link sono gestori onclick, o un numero di telefono in un’immagine banner con alt vuoto.
Il testo nascosto viene rilevato solo dall’attributo hidden e dagli stili inline. Il testo nascosto da una classe in un foglio di stile esterno qui conta come visibile, perché non carichiamo i fogli di stile. Menu richiusi, schede e fisarmoniche sono normali e i motori di ricerca non li penalizzano.
Domande frequenti
Google esegue JavaScript quando scansiona una pagina?
Sì, ma in un secondo momento. Google indicizza prima l’HTML che scarica, poi mette la pagina in coda per il rendering in un Chrome headless. Questo passaggio può arrivare più tardi e potrebbe non aspettare gli script lenti o i contenuti caricati allo scorrimento o al clic.
I crawler di ChatGPT, Claude e Perplexity eseguono JavaScript?
Di regola no. GPTBot, ClaudeBot, PerplexityBot e CCBot scaricano l’HTML e ne leggono il testo. Una pagina che ha bisogno degli script per mostrare il contenuto dà loro poco o niente.
Il testo nascosto fa male alla SEO?
Non quando fa parte dell’interfaccia. Menu, schede, fisarmoniche e finestre di dialogo vengono indicizzati normalmente. Quello che i motori di ricerca trattano come spam è il testo nascosto apposta ai visitatori per aggiungere parole chiave, come un testo bianco su sfondo bianco.
Qual è un buon rapporto testo/HTML?
Non c’è un obiettivo e non è un fattore di posizionamento. Le pagine costruite con cura spesso stanno tra il 10 e il 30%. Un valore molto basso è solo un indizio che il documento porta molto markup o script inline rispetto alla quantità di contenuto.
Perché la vista non mostra quasi nulla per il mio sito?
Il tuo server invia un guscio di applicazione e il contenuto viene aggiunto nel browser. Apri il sorgente della pagina (Ctrl+U o Cmd+Option+U) e cerca una frase della tua pagina. Se non c’è, nemmeno i bot che saltano JavaScript possono vederla.