ai

Schema del tipo di contenuto

MetricSpot verifica un `@type` JSON-LD che corrisponda a cos'è davvero la pagina — Article, Product, HowTo, FAQPage, ecc. Senza, gli agenti IA devono indovinare.

Cosa verifica questo controllo

Parsifica ogni blocco <script type="application/ld+json"> sulla pagina e verifica che almeno uno dichiari un @type corrispondente allo scopo effettivo della pagina. Un post di blog dovrebbe dichiarare Article (o BlogPosting / NewsArticle); una pagina prodotto Product; una guida step-by-step HowTo; una pagina FAQ FAQPage. Una pagina che emette solo schema WebPage o WebSite fallisce — questi tipi sono troppo generici per dire qualcosa di utile agli agenti.

Perché è importante

JSON-LD è l’impalcatura che agenti IA e motori di ricerca usano per capire una pagina senza parsare la prosa. Quando @type è specifico, ChatGPT, Perplexity e Google AI Overviews sanno quali campi estrarre (headline, author, datePublished per un Article; price, availability, aggregateRating per un Product) e come citare la pagina nelle risposte.

Quando @type manca o è generico, l’agente ripiega su euristiche basate sul testo del corpo — più lente, meno accurate e molto più propense a saltare la tua pagina a favore di un concorrente con marcatura migliore. La stessa logica si applica ai rich result Google: solo i tipi specifici sbloccano le funzionalità SERP (stelle delle recensioni, schede ricetta, accordion FAQ) che alzano il click-through rate.

Come sistemarlo

Scegli il @type che meglio corrisponde alla pagina ed emetti un blocco JSON-LD completo nell’<head>.

Article / BlogPosting / NewsArticle — per contenuto editoriale. Usa NewsArticle per notizie datate; BlogPosting per post di blog; il semplice Article è il default sicuro.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "How to enable HSTS on nginx",
  "datePublished": "2026-05-11",
  "dateModified": "2026-05-11",
  "author": {
    "@type": "Person",
    "name": "Jane Doe",
    "url": "https://example.com/authors/jane-doe"
  },
  "image": "https://example.com/og/hsts.png",
  "mainEntityOfPage": "https://example.com/blog/hsts"
}
</script>

HowTo — per guide step-by-step (ricette, istruzioni di riparazione, tutorial di setup). Campi richiesti: name, step.

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "Enable HSTS on nginx",
  "step": [
    { "@type": "HowToStep", "name": "Add the header", "text": "Add `add_header Strict-Transport-Security ...` to your server block." },
    { "@type": "HowToStep", "name": "Reload nginx", "text": "Run `nginx -t && systemctl reload nginx`." }
  ]
}

FAQPage — solo quando la pagina è genuinamente un Q&A. Vedi Schema FAQ per il pattern completo.

Product — per pagine prodotto individuali. Includi offers, aggregateRating, review quando li hai.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "MetricSpot Premium",
  "description": "Unlimited audits, scheduled monitoring, PDF reports.",
  "brand": { "@type": "Brand", "name": "MetricSpot" },
  "offers": {
    "@type": "Offer",
    "price": "29.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}

Next.js — inietta tramite <Script> dell’App Router o un helper di metadati:

import Script from "next/script";

export default function Post() {
  const schema = {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    headline: "How to enable HSTS on nginx",
    datePublished: "2026-05-11",
    author: { "@type": "Person", name: "Jane Doe" }
  };
  return (
    <Script id="ld" type="application/ld+json">
      {JSON.stringify(schema)}
    </Script>
  );
}

Astro — imposta il JSON-LD nell’<head> del tuo layout:

---
const schema = { "@context": "https://schema.org", "@type": "BlogPosting", /* … */ };
---
<script type="application/ld+json" set:html={JSON.stringify(schema)} />

WordPress — Yoast SEO, Rank Math e SEOPress emettono tutti automaticamente schema Article per i post. Controlla il sorgente renderizzato per confermare che @type sia Article / BlogPosting, non solo WebPage. Per le pagine prodotto, WooCommerce emette di default lo schema Product.

Dopo aver pubblicato, valida con il Rich Results Test di Google e il Schema Markup Validator. Vedi anche: Dati strutturati JSON-LD, Schema organization.

Domande frequenti

Una pagina può avere più blocchi @type?

Sì — comune e consigliato. Un post di blog tipicamente spedisce Article + BreadcrumbList + Organization. Ognuno va nel suo blocco <script type="application/ld+json">, oppure combinali in un singolo array @graph. Non andare in conflitto (non dichiarare la pagina sia come Article sia come Product).

Dovrei usare Article o BlogPosting?

BlogPosting è una sottoclasse di Article — leggermente più specifica, nessuno svantaggio. Usa BlogPosting per contenuti di blog, NewsArticle per notizie datate, Article per contenuti editoriali evergreen o guide tecniche. Google li tratta equivalentemente per i rich result.

E se la mia pagina non rientra in nessun tipo di schema?

Le pagine landing generiche possono rimanere su WebPage — questo controllo le segnalerà come warning soft piuttosto che come fallimento netto. Ma la maggior parte dei casi “non rientra” in realtà rientra in qualcosa: una pagina pricing è un Product o Service, una pagina about è AboutPage, una pagina contatti è ContactPage. Sfoglia l’elenco completo dei tipi di schema.org prima di accontentarti di WebPage.

Fonti

Ultimo aggiornamento 2026-05-11