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.