SEO
Schema FAQPage passo per passo, senza rich result
FAQPage si aggiunge in JSON-LD con una Question per ogni domanda visibile. Dal 2023 non dà rich result alla maggior parte dei siti, ma resta markup valido.
In sintesi
- FAQPage richiede una Question per ogni domanda visibile e la stessa risposta in testo.
- Il markup non è più un rich result per la maggior parte dei siti dal 2023.
- La verifica utile confronta il JSON-LD con il testo servito, non con il sorgente del CMS.
FAQPage si aggiunge con un blocco JSON-LD che contiene una Question per ogni domanda visibile in pagina, con la stessa risposta in testo semplice. Da agosto 2023 Google mostra i rich result FAQ solo a siti governativi e sanitari autorevoli: per tutti gli altri il markup resta valido ma non cambia la SERP.
Il blocco minimo
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Does FAQPage still produce a rich result?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Not for most sites: since August 2023 only authoritative government and health sites get it."
}
}
]
}
@type FAQPage, mainEntity è un array di Question, ogni Question ha name e acceptedAnswer con @type Answer e text. Il testo è quello visibile, non una sintesi: se il markup dice una cosa e la pagina un'altra, il contrasto è spam strutturato e Google può applicare un'azione manuale.
Le cinque regole
- Una Question per domanda visibile, nello stesso ordine della pagina.
- La risposta è testo semplice: un tag dentro text viene letto come carattere, non come markup.
- Niente FAQPage su pagine senza domande: il markup descrive ciò che esiste.
- Una sola FAQPage per pagina, con tutte le domande dentro mainEntity.
- La lingua del markup è quella della pagina: una risposta tradotta a metà non corrisponde più al testo visibile.
Verificare che markup e pagina coincidano
cat > check-faq.mjs /gi, " ")
.replace(//gi, " ")
.replace(/]+>/g, " ")
.replace(/&/g, "&")
.replace(/'/g, "'")
.replace(/\s+/g, " ");
const blocks = [...html.matchAll(/]+application\/ld\+json[^>]*>([\s\S]*?)/gi)];
const nodes = blocks.flatMap((b) => {
const data = JSON.parse(b[1]);
return [data].concat(Array.isArray(data["@graph"]) ? data["@graph"] : []);
});
const faq = nodes.find((n) => n["@type"] === "FAQPage");
if (!faq) { console.log("no FAQPage block"); process.exit(1); }
let missing = 0;
for (const q of faq.mainEntity) {
const answers = [].concat(q.acceptedAnswer).map((a) => String(a.text).replace(/\s+/g, " ").trim());
const ok = answers.every((a) => text.includes(a));
if (!ok) missing++;
console.log((ok ? "ok " : "MISSING ") + q.name);
}
console.log(faq.mainEntity.length + " questions · " + missing + " not in the visible text");
EOF
curl -s https://ui.eneawork.it/blog/schema-faq-page-guida > page.html
node check-faq.mjs page.html
Lo script estrae il blocco FAQPage, toglie script e tag dal documento e cerca ogni risposta nel testo visibile. Un MISS significa che il JSON-LD è stato modificato dopo la pagina, o che la risposta è stata accorciata solo nel markup. Il controllo va eseguito sull'HTML servito, non sul sorgente del CMS.
Perché le domande non compaiono nella SERP
Da agosto 2023 Google ha limitato i rich result FAQ ai siti governativi e sanitari riconosciuti come autorevoli, e a settembre 2023 ha rimosso i rich result HowTo. Aggiungere FAQPage a un blog non fa comparire le domande espandibili: il markup resta utile per descrivere l'entità e per i motori che leggono JSON-LD, non per il layout del risultato.
Il catalogo EneUI
Un accordion non genera FAQPage da solo. Il catalogo ha record reali da cui partire: FAQ di Kokonut UI, licenza MIT, i 24 blocchi della categoria FAQ e faq-01 di Shadcn UI Blocks. Il markup si scrive leggendo le domande del blocco, non inventandole. Dati verificati il 1 novembre 2026.
La limitazione
Il markup non controlla ciò che Google mostra. Un validatore conferma la sintassi e le proprietà, non la corrispondenza semantica con la pagina; quella la verifica una persona, riga per riga, ed è l'unico controllo che conta.
Dove continuare
Il formato generale è in come aggiungere schema markup; la sequenza per entrare nell'indice è in indicizzare un sito su Google. Se la base del sito è ancora da scegliere, il confronto è in WordPress, Wix o componenti React.
Domande frequenti
FAQPage produce ancora rich result?
No, per la maggior parte dei siti. Da agosto 2023 Google mostra le domande espandibili solo a siti governativi e sanitari autorevoli.
Dove va inserito il blocco FAQPage?
In un tag script con type application/ld+json, in head o in body. Deve stare nel documento iniziale, non essere inserito dopo il caricamento.
Posso usare HTML dentro le risposte?
No. Il campo text accetta testo semplice: un tag b o un link viene letto come carattere, e il validatore non lo segnala.
Serve una domanda per ogni voce dell'accordion?
Sì, se l'accordion è visibile e la risposta è nel DOM. Se il testo compare solo dopo un clic lato client, Google può non vederlo.
Meglio FAQPage o HowTo?
Nessuno dei due produce più rich result: HowTo è stato rimosso a settembre 2023. FAQPage resta il tipo giusto per domande e risposte.