SEO
Come aggiungere schema markup senza rompere il sito
Lo schema markup è un blocco JSON-LD che descrive la pagina a una macchina. Ecco come aggiungerlo, validarlo e non rompere l'HTML.
In sintesi
- Lo schema markup è un dato per la macchina: non cambia l'HTML visibile e non è un fattore di ranking diretto.
- JSON-LD va in un tag script dedicato, validato con JSON.parse prima del deploy.
- Google usa un sottoinsieme di schema.org: FAQ e HowTo hanno perso i rich result tra agosto e settembre 2023.
Lo schema markup è un blocco di dati strutturati, di solito JSON-LD, che descrive a una macchina cosa rappresenta la pagina senza cambiare ciò che l'utente vede. Si aggiunge con uno script nel documento e si valida prima del deploy.
Il formato: JSON-LD
Google documenta tre sintassi, JSON-LD, microdata e RDFa, e raccomanda JSON-LD. Il blocco vive in un <script type="application/ld+json"> e non deve essere annidato in un altro script. Il vocabolario è schema.org, licenza CC BY-SA 3.0; la documentazione di Google Search Central, proprietaria ma gratuita, elenca i tipi che producono un rich result.
Il blocco minimo
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Article headline",
"datePublished": "2026-11-01",
"dateModified": "2026-11-01",
"author": {
"@type": "Person",
"name": "Enea Zani",
"url": "https://eneawork.it"
}
}
Dove metterlo in Next.js
In un server component, renderizza lo script con dangerouslySetInnerHTML e serializza l'oggetto con JSON.stringify. Sostituisci ogni < con \u003c: senza questa sostituzione una stringa che contiene </script> chiude il blocco e rompe la pagina. Il componente next/script non serve, perché JSON-LD è un dato da leggere nel documento iniziale, non codice da caricare.
Come verificarlo prima del deploy
cat > check-jsonld.mjs ]*application\/ld\+json[^>]*>([\s\S]*?)/g)];
for (const [i, block] of blocks.entries()) {
JSON.parse(block[1]);
console.log(`JSON-LD ${i}: valid`);
}
console.log(`${blocks.length} blocks parsed`);
EOF
curl -s https://ui.eneawork.it/ > page.html
node check-jsonld.mjs page.html
Lo script legge il file HTML, estrae ogni blocco application/ld+json e chiama JSON.parse. Un errore di sintassi compare con il numero del blocco; un blocco valido non garantisce che Google lo usi, ma un blocco invalido garantisce che non lo usi. Per i rich result usa il Rich Results Test e lo Schema Markup Validator, entrambi gratuiti.
Cosa Google usa davvero
Google non usa ogni tipo di schema.org. I rich result coprono un sottoinsieme documentato, per esempio Article, BreadcrumbList, Product, Event e Recipe. Da agosto 2023 i rich result FAQ sono limitati a siti governativi e sanitari autorevoli; da settembre 2023 i rich result HowTo sono stati rimossi. Aggiungere FAQPage a un blog non produce più le domande espandibili in SERP, anche se il markup resta utile per descrivere l'entità.
Il catalogo EneUI
Per una pagina di prodotto o una FAQ il catalogo offre record reali: FAQ di Kokonut UI, licenza MIT, e la categoria FAQ dentro i 1.556 blocchi del catalogo. Un accordion non genera FAQPage da solo: il markup va aggiunto leggendo le domande visibili, e deve corrispondere al testo in pagina. Dati verificati il 1 novembre 2026.
La limitazione
Lo schema markup descrive, non garantisce. Google può ignorare un tipo non supportato, limitare un rich result o applicare un'azione manuale se il markup contraddice il contenuto visibile; nessun validatore vede quella differenza, perché il confronto è semantico e lo fa una persona.
Dove continuare
La sequenza per farsi indicizzare è in indicizzare un sito su Google; il posto dei metadati in App Router è in struttura Next.js App Router. Se il sito è su WordPress o su componenti React, il confronto è in WordPress, Wix o componenti React.
Domande frequenti
Dove va inserito il JSON-LD?
Nel documento HTML, dentro un tag script con type application/ld+json. Può stare in head o in body: Google legge entrambi, purché il blocco non sia annidato in un altro script.
Devo aggiungere FAQPage a ogni pagina?
No. Aggiungilo solo se la pagina contiene domande e risposte visibili. La restrizione di Google limita i rich result FAQ ai siti governativi e sanitari autorevoli.
Lo schema markup migliora il ranking?
No, non è un fattore di ranking diretto. Aiuta Google a capire l'entità e può produrre rich result, che cambiano il modo in cui il risultato appare.
Posso avere più blocchi JSON-LD nella stessa pagina?
Sì. Puoi usare un blocco per tipo o un unico @graph; l'importante è che gli identificatori non duplichino la stessa entità con dati diversi.
Come trovo un errore di sintassi?
Estrai il blocco e passalo a JSON.parse: il messaggio indica posizione e carattere. Gli strumenti di Google segnalano errori di sintassi e proprietà mancanti, non un markup che contraddice il testo visibile.