ai
Schéma type de contenu
MetricSpot vérifie qu'un `@type` JSON-LD correspond à ce qu'est réellement la page — Article, Product, HowTo, FAQPage, etc. Sinon, les agents IA doivent deviner.
Ce que vérifie ce contrôle
Analyse chaque bloc <script type="application/ld+json"> de la page et vérifie qu’au moins un déclare un @type correspondant à la finalité réelle de la page. Un article de blog doit déclarer Article (ou BlogPosting / NewsArticle) ; une page produit Product ; un guide étape par étape HowTo ; une page de FAQ FAQPage. Une page qui n’émet que du schema WebPage ou WebSite échoue — ces types sont trop génériques pour dire quoi que ce soit d’utile aux agents.
Pourquoi c’est important
Le JSON-LD est l’échafaudage que les agents IA et les moteurs de recherche utilisent pour comprendre une page sans en analyser la prose. Quand @type est spécifique, ChatGPT, Perplexity et Google AI Overviews savent quels champs extraire (headline, author, datePublished pour un Article ; price, availability, aggregateRating pour un Product) et comment citer la page dans leurs réponses.
Quand @type est manquant ou générique, l’agent retombe sur des heuristiques de texte — plus lent, moins précis, et bien plus susceptible de sauter votre page au profit d’une page concurrente mieux marquée. La même logique s’applique aux résultats enrichis Google : seuls les types spécifiques débloquent les fonctionnalités SERP (étoiles d’avis, fiches recette, accordéons FAQ) qui font monter le taux de clic.
Comment corriger
Choisissez le @type qui correspond le mieux à la page et émettez un bloc JSON-LD complet dans le <head>.
Article / BlogPosting / NewsArticle — pour du contenu éditorial. Utilisez NewsArticle pour des actualités datées ; BlogPosting pour des articles de blog ; Article simple est la valeur par défaut sûre.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Comment activer HSTS sur 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 — pour les guides étape par étape (recettes, instructions de réparation, tutoriels d’installation). Champs requis : name, step.
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "Activer HSTS sur nginx",
"step": [
{ "@type": "HowToStep", "name": "Ajouter l'en-tête", "text": "Ajoutez `add_header Strict-Transport-Security ...` à votre bloc server." },
{ "@type": "HowToStep", "name": "Recharger nginx", "text": "Lancez `nginx -t && systemctl reload nginx`." }
]
}
FAQPage — uniquement quand la page est véritablement une Q&A. Voir Schema FAQ pour le motif complet.
Product — pour les pages produit individuelles. Incluez offers, aggregateRating, review quand vous en avez.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "MetricSpot Premium",
"description": "Audits illimités, monitoring planifié, rapports PDF.",
"brand": { "@type": "Brand", "name": "MetricSpot" },
"offers": {
"@type": "Offer",
"price": "29.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}
Next.js — injectez via le <Script> de l’App Router ou un helper de metadata :
import Script from "next/script";
export default function Post() {
const schema = {
"@context": "https://schema.org",
"@type": "BlogPosting",
headline: "Comment activer HSTS sur nginx",
datePublished: "2026-05-11",
author: { "@type": "Person", name: "Jane Doe" }
};
return (
<Script id="ld" type="application/ld+json">
{JSON.stringify(schema)}
</Script>
);
}
Astro — placez le JSON-LD dans le <head> de votre layout :
---
const schema = { "@context": "https://schema.org", "@type": "BlogPosting", /* … */ };
---
<script type="application/ld+json" set:html={JSON.stringify(schema)} />
WordPress — Yoast SEO, Rank Math et SEOPress émettent tous automatiquement le schema Article pour les articles. Vérifiez la source rendue pour confirmer que le @type est Article / BlogPosting, pas juste WebPage. Pour les pages produit, WooCommerce émet le schema Product par défaut.
Après livraison, validez avec le Rich Results Test de Google et le Schema Markup Validator. Voir aussi : Données structurées JSON-LD, Schema Organization.
Questions fréquentes
Une page peut-elle avoir plusieurs blocs @type ?
Oui — courant et recommandé. Un article de blog transporte généralement Article + BreadcrumbList + Organization. Chacun va dans son propre bloc <script type="application/ld+json">, ou combinez-les dans un tableau @graph unique. Ne soyez pas contradictoire (ne déclarez pas la page à la fois Article et Product).
Dois-je utiliser Article ou BlogPosting ?
BlogPosting est une sous-classe d’Article — légèrement plus spécifique, sans inconvénients. Utilisez BlogPosting pour du contenu de blog, NewsArticle pour des news datées, Article pour de l’éditorial intemporel ou des guides techniques. Google les traite de manière équivalente pour les résultats enrichis.
Et si ma page ne correspond à aucun type de schema ?
Les pages d’atterrissage génériques peuvent rester en WebPage — ce contrôle la signalera comme avertissement léger plutôt qu’échec dur. Mais la plupart des cas “ça ne colle pas” collent en fait à quelque chose : une page de tarifs est un Product ou un Service, une page à propos est AboutPage, une page contact est ContactPage. Parcourez la liste complète des types de schema.org avant de retomber sur WebPage.
Sources
Dernière mise à jour 2026-05-11