Un essere umano che legge una pagina capisce al volo che "14 marzo" è la data di pubblicazione, che il nome in fondo è l'autore e che il numero con il simbolo dell'euro è un prezzo. Per un programma non è così ovvio. I dati strutturati sono informazioni aggiuntive, in un formato standard, che descrivono esplicitamente di cosa parla una pagina e quali sono le sue proprietà principali.
Schema.org: il vocabolario comune
Schema.org è un vocabolario condiviso, nato dalla collaborazione tra i principali motori di ricerca, che definisce tipi (come Article, Organization, Person, Product, Event, LocalBusiness) e le loro proprietà (come headline, author, datePublished, price). I tipi sono organizzati in una gerarchia: NewsArticle e BlogPosting sono specializzazioni di Article, che a sua volta deriva da CreativeWork.
Il vocabolario si può esprimere in tre sintassi: Microdata, RDFa e JSON-LD. Le prime due inseriscono attributi direttamente negli elementi HTML; JSON-LD, invece, mette tutti i dati in un blocco separato.
Perché JSON-LD
JSON-LD è il formato più pratico per diversi motivi:
- è separato dal markup visibile, quindi puoi modificare il layout senza toccare i dati strutturati e viceversa;
- è facile da generare da un modello o da un generatore statico, partendo dagli stessi dati che producono la pagina;
- è leggibile e verificabile a colpo d'occhio;
- è il formato raccomandato nella documentazione di Google.
Si inserisce in un elemento script con un tipo specifico, che il browser non esegue:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Dati strutturati con Schema.org e JSON-LD",
"datePublished": "2025-02-10",
"dateModified": "2025-03-01",
"author": {
"@type": "Person",
"name": "Nome Autore",
"url": "https://www.esempio.it/chi-sono/"
},
"image": "https://www.esempio.it/img/copertina.jpg"
}
</script>
@context indica il vocabolario, @type il tipo dell'entità descritta. Le date seguono il formato ISO 8601.
Esempi utili per la maggior parte dei siti
Organizzazione o persona
Sulla home page di un sito aziendale o personale puoi descrivere l'entità che sta dietro al sito:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Esempio Srl",
"url": "https://www.esempio.it/",
"logo": "https://www.esempio.it/img/logo.png",
"sameAs": [
"https://www.linkedin.com/company/esempio"
]
}
La proprietà sameAs collega l'entità ai suoi profili ufficiali su altre piattaforme, aiutando i motori a capire che si tratta della stessa organizzazione.
Breadcrumb
Il percorso di navigazione aiuta a rappresentare la posizione della pagina nel sito:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Guide", "item": "https://www.esempio.it/guide/" },
{ "@type": "ListItem", "position": 2, "name": "SEO", "item": "https://www.esempio.it/guide/seo/" }
]
}
Più entità nella stessa pagina
Puoi inserire più blocchi JSON-LD oppure usare @graph per raccoglierli in uno solo, collegando le entità tra loro con identificativi @id. Per esempio, l'articolo può indicare come publisher l'organizzazione descritta altrove nel grafo, senza ripeterne tutti i dati.
Cosa ottieni (e cosa no)
I dati strutturati possono rendere una pagina idonea ai risultati arricchiti: stelle di valutazione, prezzi, date di eventi, breadcrumb al posto dell'URL e altri formati speciali. Tre precisazioni importanti:
- Idonea non significa garantita: il motore decide se e quando mostrare un risultato arricchito.
- I tipi che generano risultati arricchiti e i loro requisiti cambiano nel tempo: alcuni vengono introdotti, altri limitati. Prima di investire su un tipo specifico, controlla la documentazione aggiornata del motore di ricerca.
- I dati strutturati non sono di per sé un fattore che fa salire la pagina in classifica; aiutano la comprensione e la presentazione.
La regola fondamentale: corrispondenza con il contenuto visibile
I dati strutturati devono descrivere ciò che l'utente vede nella pagina. Inserire recensioni che non compaiono, prezzi diversi da quelli mostrati o domande e risposte nascoste è contrario alle linee guida dei motori di ricerca e può portare a provvedimenti manuali che tolgono l'idoneità ai risultati arricchiti. Il modo più sicuro per rispettare la regola è generare JSON-LD e HTML visibile dalla stessa fonte di dati.
Generare i dati automaticamente
In un generatore statico o in un CMS, il blocco JSON-LD va prodotto dal modello della pagina, non scritto a mano. Un esempio concettuale in JavaScript:
const datiStrutturati = {
'@context': 'https://schema.org',
'@type': 'BlogPosting',
headline: articolo.titolo,
datePublished: articolo.data,
author: { '@type': 'Person', name: articolo.autore }
};
const json = JSON.stringify(datiStrutturati).replace(/</g, '\\u003c');
La sostituzione del carattere < evita che un titolo contenente </script> chiuda prematuramente il blocco: è una piccola precauzione di sicurezza da non dimenticare quando i dati provengono da input editabili.
Verificare
- Lo strumento di test dei risultati arricchiti di Google indica se la pagina è idonea e segnala errori e avvisi.
- Il validatore ufficiale di Schema.org controlla la correttezza rispetto al vocabolario, indipendentemente da un motore specifico.
- Nella Search Console, i report sui miglioramenti mostrano gli errori rilevati su tutto il sito nel tempo.
Distingui gli errori (che rendono il dato inutilizzabile) dagli avvisi (proprietà consigliate mancanti): i secondi non bloccano nulla, ma completarli rende i dati più ricchi.
In sintesi
- I dati strutturati descrivono in modo esplicito il contenuto della pagina con il vocabolario Schema.org.
- JSON-LD è il formato più comodo: separato dal markup e facile da generare.
- Possono rendere la pagina idonea ai risultati arricchiti, senza garanzie.
- Devono sempre corrispondere al contenuto visibile: generali dalla stessa fonte dei dati della pagina.
- Verifica con gli strumenti di test e monitora gli errori nel tempo.