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.