Come funziona questo controllo
Scanaris cerca nell'HTML della tua pagina tutti i tag <script type="application/ld+json">, prova a interpretare ciascuno come JSON e verifica che il risultato contenga @context o @type, che è ciò che distingue un blocco schema.org da un JSON qualsiasi. Basta che uno sia valido perché non ci sia rilievo. Se non ce n'è nessuno, o quelli presenti non si possono interpretare (una virgola di troppo, virgolette non chiuse), apre un rilievo di gravità bassa. Non valuta se il tipo scelto sia adatto né se manchino proprietà; solo se esiste qualcosa che Google e gli assistenti IA possano leggere.
Perché è importante
I dati strutturati sono il modo di dire a una macchina, senza ambiguità, cos'è la tua pagina: questa è un'organizzazione con questo nome e questo logo, questo è un articolo scritto da questa persona in questa data, questo è un prodotto a questo prezzo con queste valutazioni. Google li usa per i risultati arricchiti (stelle, prezzi, domande espandibili, breadcrumb) e per capire le entità. Gli assistenti IA li usano per lo stesso scopo ma con più peso, perché risparmiano loro di interpretare l'HTML: una pagina con Article e Organization ben definiti ha più probabilità di essere citata con attribuzione corretta di una in cui il modello deve indovinare chi l'ha scritta. È gravità bassa perché non averli non ti toglie da nessun indice; ti rende solo più difficile da capire.
Come risolvere
Nella home, come minimo Organization e WebSite:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://tuodominio.it/#org",
"name": "La tua azienda",
"url": "https://tuodominio.it/",
"logo": "https://tuodominio.it/logo.png",
"sameAs": ["https://github.com/tuaazienda", "https://www.linkedin.com/company/tuaazienda"]
},
{
"@type": "WebSite",
"url": "https://tuodominio.it/",
"name": "La tua azienda",
"publisher": { "@id": "https://tuodominio.it/#org" }
}
]
}
</script>
- Per tipo di pagina:
ArticleoBlogPostingnei post (conauthor,datePublished,dateModified);Productconoffersnelle schede prodotto;SoftwareApplicationse vendi software;FAQPagedove ci sono domande e risposte reali;BreadcrumbListper i breadcrumb. - Nuxt:
useHead({ script: [{ type: 'application/ld+json', innerHTML: JSON.stringify(data) }] })in ogni pagina, oppure il modulo schema.org che lo genera dai componenti. - Next.js: un tag
<script type="application/ld+json">nel layout o nella pagina con il JSON serializzato. - WordPress: Yoast e Rank Math generano
Organization,WebSite,Articlee breadcrumb senza toccare codice.
I dati devono coincidere con ciò che si vede nella pagina: Google penalizza il marcare valutazioni o prezzi che non esistono. E il sameAs con i tuoi profili pubblici è ciò che collega la tua entità a quello che i modelli già sanno di te da altre fonti.
Verifica che sia risolto
curl -s https://tuodominio.it | grep -oE '<script type="application/ld\+json">[^<]*' | head -c 600
Deve uscire il tuo JSON. Poi incollalo nel test dei risultati arricchiti di Google o nel validatore di schema.org: entrambi ti dicono se è sintatticamente corretto e quali proprietà consigliate mancano.
Domande frequenti
JSON-LD o microdati nell'HTML?
JSON-LD. È il formato che Google raccomanda, va in un blocco a parte senza sporcare il template ed è il più facile da generare da qualsiasi framework.
Ho messo FAQPage e Google non mostra le domande espandibili.
Dal 2023 Google mostra quel risultato arricchito solo ai siti governativi e sanitari. La marcatura resta utile perché gli assistenti IA estraggano le tue domande e risposte, ed è per questo che questo controllo la misura. Perché alcuni siti vengono citati e altri no lo racconta dati strutturati e citazioni dell'IA.
Questo sostituisce titolo e descrizione?
No, li integra. Titolo e meta description restano ciò che Google mostra; li misura metadati SEO. I dati strutturati sono ciò che le macchine capiscono in più.