
Hai un sito web e vuoi comparire nelle risposte di ChatGPT, Perplexity o Google AI Overview?
Prima di pensare alla visibilità, c'è una domanda ancora più importante: le AI riescono davvero ad accedere alle informazioni del tuo sito e a recuperarle?
È un po' come avere un negozio pieno di prodotti, ma con la porta d'ingresso bloccata: puoi avere ottimi contenuti, ma se il sistema AI non riesce ad arrivare fino a loro, difficilmente potrà utilizzarli.
In qersto articolo, attraverso un concreto esempio prtatico, effettuiamo un AI Crawlability Audit.
Un AI Crawlability Audit serve a capire se i crawler utilizzati dai sistemi di Intelligenza Artificiale riescono a:
Possiamo immaginarlo come un percorso:
IL CRAWLER RIESCE A ENTRARE?
↓
RIESCE A RICEVERE LA PAGINA?
↓
TROVA IL CONTENUTO?
↓
RIESCE A INTERPRETARLO?
Se qualcosa si interrompe lungo questo percorso, possiamo avere un problema di AI crawlability o di AI retrievability.
Per fare un primo audit non servono strumenti SEO costosi.
Possiamo utilizzare:
robots.txt;L'obiettivo non è diventare programmatori, ma è vedere cosa riceve realmente un crawler AI quando visita il nostro sito.
Per rendere tutto più semplice utilizziamo un sito immaginario: ristoranteveganoroma.it
Immaginiamo che sia la homepage di un ristorante vegano a Roma.
La pagina contiene:
Ristorante vegano a Roma
Cucina 100% vegetale
Ingredienti freschi
Menu stagionale
Roma centro
Il proprietario vuole capire:
"ChatGPT e gli altri sistemi AI riescono realmente a leggere queste informazioni?"
Iniziamo il nostro audit.
Il primo controllo riguarda il file:
robots.txt
Il file robots.txt è un piccolo file che si trova normalmente alla radice del sito:
https://ristoranteveganoroma.it/robots.txt
Può contenere indicazioni che permettono o impediscono l'accesso ai crawler.
Per esempio:
User-agent: *
Allow: /
Significa, in termini molto semplici: non sto impedendo ai crawler di accedere al sito.
Al contrario, una regola come:
User-agent: *
Disallow: /
indicherebbe un blocco molto più ampio.
Il robots.txt è importante, ma non è sufficiente per stabilire se un sito è realmente accessibile all'AI.
Dobbiamo fare un passo in più.
A questo punto dobbiamo verificare cosa succede quando un crawler AI chiede una pagina al server.
Se utilizzi Windows possiamo usare PowerShell.
PowerShell è uno strumento già presente in Windows che permette di impartire comandi al computer attraverso una finestra di testo.
Probabilmente la vedrai come una semplice finestra nera o blu.
Per il nostro test ci limiteremo a copiare e incollare alcuni comandi.
Apriamo PowerShell e scriviamo:
curl.exe -I -A "OAI-SearchBot" https://ristoranteveganoroma.it/
Che cosa stiamo facendo?
Stiamo chiedendo al sito:
"Cosa mi rispondi se a visitarti è OAI-SearchBot?"
Il risultato potrebbe essere:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
La parte più importante è:
200 OK
Significa semplicemente:
Il server ha ricevuto la richiesta e ha risposto correttamente.
È come bussare alla porta e sentirsi rispondere:
"Sì, sono qui. Puoi entrare."
Questo è un buon segnale.
Ma non significa ancora che abbiamo superato l'audit.
Immaginiamo due situazioni.
Crawler
↓
200 OK
↓
HTML completo
↓
Ristorante vegano a Roma
↓
Menu
↓
Servizi
↓
Contatti
Perfetto.
Crawler
↓
200 OK
↓
HTML
↓
quasi nessun contenuto
↓
JavaScript
↓
contenuto caricato successivamente
Qui abbiamo un problema.
Il server risponde correttamente, ma non necessariamente sta consegnando al crawler tutte le informazioni importanti.
Per questo dobbiamo guardare cosa c'è realmente dentro l'HTML.
Possiamo salvare l'HTML che il server restituisce a OAI-SearchBot.
Utilizziamo:
curl.exe -A "OAI-SearchBot" https://ristoranteveganoroma.it/ -o oai-homepage.html
Abbiamo creato un file:
oai-homepage.html
Questo file contiene ciò che il server ha restituito alla nostra richiesta.
Ed è qui che il test diventa interessante.
Non stiamo più chiedendo: "Cosa vedo sullo schermo?"
Stiamo chiedendo: "Che cosa riceve realmente il crawler?"
Supponiamo che il sito abbia questo H1:
<h1>Ristorante vegano a Roma</h1>
Possiamo cercare quella frase direttamente nel file.
In PowerShell:
Select-String -Path oai-homepage.html -Pattern "Ristorante vegano a Roma"
Se la frase viene trovata, significa che è presente nell'HTML ricevuto dal crawler.
Possiamo fare la stessa cosa con informazioni strategiche come:
Menu completamente vegano
oppure:
Ristorante vegano nel centro di Roma
oppure:
Cucina vegetale italiana
Questo è un controllo molto più concreto rispetto al semplice 200 OK.
Possiamo verificare quanti H1 sono presenti nella pagina.
Prima carichiamo il file:
$html = Get-Content -Path oai-homepage.html -Raw
Poi:
([regex]::Matches($html, "<h1")).Count
Se il risultato è:
1
abbiamo trovato un H1.
Per esempio:
<h1>Ristorante vegano a Roma</h1>
Questo significa che il titolo principale della pagina è effettivamente presente nel documento HTML che abbiamo ricevuto.
Questo è uno dei controlli più importanti.
Immaginiamo che sullo schermo vediamo: Ristorante vegano a Roma, ma cercando quella frase nell'HTML non troviamo nulla.
Potrebbe significare, per esempio, che quel contenuto viene costruito o inserito successivamente attraverso JavaScript.
Il percorso potrebbe essere:
SERVER
↓
HTML iniziale
↓
JavaScript
↓
contenuto aggiunto
Questo non significa automaticamente che JavaScript sia un problema.
Significa che dobbiamo capire come viene effettivamente fornito il contenuto al crawler.
La domanda corretta quindi non è: "Il sito usa JavaScript?"
ma:
"Le informazioni importanti sono disponibili nel documento che il crawler riceve?"
Questa distinzione è fondamentale.
Possiamo ripetere il controllo con diversi User-Agent.
Perplexity
curl.exe -I -A "PerplexityBot" https://ristoranteveganoroma.it/
Claude
curl.exe -I -A "Claude-SearchBot" https://ristoranteveganoroma.it/
ChatGPT
curl.exe -I -A "ChatGPT-User" https://ristoranteveganoroma.it/
curl.exe -I -A "Googlebot" https://ristoranteveganoroma.it/
Se tutti restituiscono:
200 OK
abbiamo un primo segnale positivo.
Ma ricordiamolo ancora una volta:
200 OK significa che il server ha risposto. Non significa che il contenuto sia necessariamente completo e facilmente recuperabile.
Qui introduciamo un altro termine tecnico: la Retriavability-
Retrievability (Recuperabilità) riguarda: la capacità di un sistema AI di recuperare le informazioni che gli servono da una pagina.
Facciamo un esempio.
Il crawler riesce a entrare nel sito del ristorante.
Ma trova soltanto:
Ristorante Verde Roma
Benvenuti nel nostro sito.
Il menu, la tipologia di cucina e i servizi vengono caricati successivamente.
Il sito è quindi:
accessibile, ma le informazioni potrebbero non essere altrettanto facilmente recuperabili.
Possiamo quindi distinguere:
| Controllo | Domanda |
|---|---|
| Crawlability | L'AI riesce ad arrivare al sito? |
| Retrievability | Riesce a recuperare le informazioni? |
| Interpretabilità | Riesce a capire cosa rappresentano? |
Ora passiamo a un altro elemento importante: i dati strutturati.
Puoi pensarli come una sorta di etichetta esplicativa applicata alle informazioni della pagina.
Per esempio, il sito potrebbe dire semplicemente: Verde Roma è un ristorante vegano a Roma.
Con i dati strutturati possiamo specificare:
Nome: Verde Roma
Tipo: Restaurant
Cucina: Vegan
Località: Roma
Una delle tecnologie più utilizzate per farlo è Schema.org, generalmente attraverso JSON-LD.
Nel nostro file HTML possiamo cercare:
([regex]::Matches($html, "application/ld\+json")).Count
Se otteniamo:
2
significa che abbiamo trovato due blocchi di dati strutturati JSON-LD.
Possiamo poi analizzarne il contenuto.
Per esempio:
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Verde Roma",
"servesCuisine": "Vegan",
"address": {
"@type": "PostalAddress",
"addressLocality": "Roma",
"addressCountry": "IT"
}
}
In questo caso stiamo dicendo in maniera strutturata:
Questa entità è un ristorante, si chiama Verde Roma, offre cucina vegana e si trova a Roma.
Un sito non contiene soltanto "testo"; contiene persone, aziende, prodotti, luoghi, servizi, organizzazioni e argomenti.
Nel nostro esempio:
Verde Roma
↓
Ristorante
↓
Cucina vegana
↓
Roma
Possiamo quindi descrivere il sito attraverso entità e relazioni.
Per esempio, se il ristorante ha uno chef:
Mario Rossi
│
│ lavora per
↓
Verde Roma
Queste relazioni aiutano a rendere più chiaro il significato delle informazioni.
Possiamo inoltre collegare la pagina all'attività che descrive.
Per esempio:
{
"@type": "WebPage",
"@id": "https://ristoranteveganoroma.it/#webpage",
"url": "https://ristoranteveganoroma.it/",
"name": "Ristorante vegano a Roma",
"about": {
"@id": "https://ristoranteveganoroma.it/#restaurant"
}
}
In parole semplici:
Questa pagina parla di questa specifica attività.
Abbiamo quindi costruito una relazione:
PAGINA WEB
↓
parla di
↓
RISTORANTE
↓
è
↓
RISTORANTE VEGANO
↓
si trova a
↓
ROMA
Questo è il tipo di struttura che rende il contenuto più esplicito e interpretabile.
A questo punto possiamo applicare lo stesso ragionamento anche a Google AI Overview.
Essere presenti nell'indice di Google è importante, ma non equivale automaticamente a essere utilizzati in una risposta generata dall'AI.
Per questo possiamo chiederci:
Google riesce a recuperare le informazioni importanti?
L'AI Crawlability Audit può quindi essere considerato un controllo tecnico preliminare prima di lavorare sulla visibilità nelle risposte AI.
A questo punto abbiamo controllato quattro elementi fondamentali:
Il crawler riesce a raggiungere il sito?
Il server risponde correttamente?
Il contenuto importante è presente nell'HTML ricevuto?
Il sito fornisce informazioni strutturate che aiutano a comprendere le entità e le loro relazioni?
Possiamo rappresentarlo così:
ROBOTS.TXT
↓
ACCESSO
↓
RISPOSTA SERVER
↓
HTML
↓
CONTENUTO IMPORTANTE
↓
DATI STRUTTURATI
↓
ENTITÀ
↓
RELAZIONI
Se vuoi effettuare un primo controllo sul tuo sito, puoi utilizzare questa checklist.
robots.txt è raggiungibileQuesto punto è fondamentale.
Se il tuo sito supera tutti i controlli, non significa automaticamente che ChatGPT, Perplexity o Google AI Overview lo citeranno.
Significa che hai eliminato alcuni possibili ostacoli tecnici.
Possiamo immaginare il percorso così:
ACCESSO
↓
RECUPERO
↓
COMPRENSIONE
↓
UTILIZZO
↓
CITAZIONE
↓
AI VISIBILITY
L'AI Crawlability Audit lavora soprattutto sui primi livelli.
La GEO interviene poi anche su quelli successivi.
Ed è qui che il concetto diventa particolarmente interessante.
Puoi avere:
Crawlability ✅
Retrievability ✅
ma avere comunque:
AI Visibility ❌
Perché?
Perché essere accessibili non significa necessariamente essere la fonte migliore da utilizzare.
Entrano allora in gioco altri fattori:
Quindi:
L'AI Crawlability Audit non ti dice se sei già visibile nell'AI. Ti dice se esistono ostacoli tecnici che potrebbero impedirti di essere recuperato.
Quando si parla di GEO, spesso la prima domanda è:
"Come faccio a comparire su ChatGPT?"
Ma prima dovremmo farne un'altra:
"ChatGPT e gli altri sistemi AI riescono ad arrivare al mio sito e a recuperare le informazioni importanti?"
L'AI Crawlability Audit serve proprio a rispondere a questa domanda.
E non è necessario essere sviluppatori.
Con pochi controlli possiamo verificare:
1. Il crawler può entrare?
↓
2. Il server gli restituisce la pagina?
↓
3. Il contenuto importante è presente nell'HTML?
↓
4. Le informazioni sono strutturate e comprensibili?
↓
5. Le entità e le loro relazioni sono chiare?
Solo dopo ha senso concentrarsi sui livelli successivi della GEO:
Retrievability → Utilization → Citation → AI Visibility.