Types schema.org : mapping, champs et gabarits
Mapping type de page vers types schema.org
| Type de page | Types à poser | Résultat enrichi possible (2026) |
|---|---|---|
| Tout le site (socle) | Organization ou LocalBusiness + WebSite, en @graph, une fois (home ou toutes pages) | Logo, knowledge panel |
| Article de blog, guide | Article ou BlogPosting (+ author Person, + BreadcrumbList) | Affichage enrichi (Discover, À la une) |
| Actualité de rédaction | NewsArticle | À la une |
| Fiche produit | Product + Offer (+ AggregateRating et Review si avis réels affichés) | Étoiles, prix, stock : oui |
| Page ou bloc FAQ | FAQPage + Question/Answer | Réservé aux sites gouvernementaux et santé reconnus depuis 2023 ; valeur = compréhension machine |
| Tutoriel pas à pas | HowTo | Rich result supprimé en 2023 ; ne le poser que si la structure aide la compréhension machine, sinon Article suffit |
| Entreprise locale | LocalBusiness (sous-type le plus précis : Restaurant, Dentist, Plumber…) | Panel local |
| Page à propos, accueil corporate | Organization (logo, sameAs, contactPoint) | Logo, knowledge panel |
| Page auteur, dirigeant | Person (sameAs, jobTitle, worksFor), relié aux Article via @id | E-E-A-T lisible machine |
| Page service B2B | Service (provider vers l’Organization) | Pas de rich result dédié ; graphe d’entités |
| Recette | Recipe | Oui, riche |
| Événement | Event | Oui |
| Offre d’emploi | JobPosting | Oui (Google Jobs) |
| Page avec vidéo | VideoObject | Oui |
| Comparatif, liste | ItemList (+ types des éléments) | Carrousels selon type |
| Fil d’ariane | BreadcrumbList sur tout le site | Chemin affiché dans les résultats |
Le balisage Sitelinks SearchBox n’est plus supporté par Google depuis 2024 : ne le génère plus.
Socle @graph : Organization + WebSite
À poser une fois, les @id servent de référence à tous les autres blocs.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://exemple.fr/#organisation",
"name": "Exemple SAS",
"url": "https://exemple.fr/",
"logo": {
"@type": "ImageObject",
"url": "https://exemple.fr/img/logo-1200.png"
},
"sameAs": [
"https://www.linkedin.com/company/exemple",
"https://www.youtube.com/@exemple"
]
},
{
"@type": "WebSite",
"@id": "https://exemple.fr/#site",
"url": "https://exemple.fr/",
"name": "Exemple",
"publisher": {"@id": "https://exemple.fr/#organisation"}
}
]
}Pièges : logo en URL relative ; logo trop petit (viser 1200 px de large, minimum 112 x 112) ; sameAs vers des profils morts.
Article / BlogPosting
Requis en pratique : headline, image, datePublished, author. Recommandés : dateModified, publisher (@id de l’Organization), mainEntityOfPage, description.
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Comment choisir une veste imperméable : le guide 2026",
"image": ["https://exemple.fr/img/guide-vestes-cover.jpg"],
"datePublished": "2026-07-20T09:00:00+02:00",
"dateModified": "2026-07-25T14:30:00+02:00",
"author": {
"@type": "Person",
"name": "Claire Martin",
"url": "https://exemple.fr/equipe/claire-martin"
},
"publisher": {"@id": "https://exemple.fr/#organisation"},
"mainEntityOfPage": "https://exemple.fr/blog/choisir-veste-impermeable"
}Pièges : headline différent du titre visible ; datePublished sans fuseau ; author en simple chaîne (préférer Person avec url ou @id, c’est le signal E-E-A-T machine) ; image plus petite que 1200 px.
Product
Requis : name + au moins un parmi offers, review, aggregateRating. Recommandés : image, description, sku, gtin/gtin13 si disponible, brand. Dans Offer : price (nombre), priceCurrency, availability (URL schema.org), url ; priceValidUntil si promo datée.
Pièges : prix en chaîne avec symbole (« 129,90 € » : non ; 129.90 + “EUR” : oui) ; availability en texte libre ; aggregateRating sans avis visibles sur la page (risque d’action manuelle) ; prix du balisage différent du prix affiché ; balisage Product sur une page catégorie (réservé aux fiches ; pour les listes, ItemList).
FAQPage
mainEntity : liste de Question, chacune avec acceptedAnswer (Answer, champ text). Les questions et réponses doivent être visibles sur la page, dans le même wording.
Pièges : FAQ balisée sur toutes les pages du site avec le même contenu (signal spam) ; réponses tronquées par rapport au visible ; promettre le rich result (réservé gouvernement/santé depuis 2023).
LocalBusiness
Requis en pratique : @type le plus précis possible, name, address (PostalAddress complète), telephone. Recommandés : geo, openingHoursSpecification, priceRange, url, image, sameAs vers la fiche Google Business Profile.
{
"@context": "https://schema.org",
"@type": "Dentist",
"@id": "https://cabinet-exemple.fr/#local",
"name": "Cabinet dentaire Exemple",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 rue des Lilas",
"addressLocality": "Lyon",
"postalCode": "69003",
"addressCountry": "FR"
},
"telephone": "+33478000000",
"geo": {"@type": "GeoCoordinates", "latitude": 45.7594, "longitude": 4.8595},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "19:00"
}],
"url": "https://cabinet-exemple.fr/"
}Pièges : rester sur LocalBusiness générique quand un sous-type précis existe ; NAP (nom, adresse, téléphone) incohérent avec la fiche Google Business Profile et le pied de page ; horaires du balisage différents des horaires affichés.
Person
Champs utiles : name, url, jobTitle, worksFor (@id de l’Organization), sameAs (LinkedIn et autres profils réels), image. À relier aux Article via author. C’est le bloc E-E-A-T : il matérialise qui écrit et sa légitimité.
BreadcrumbList
itemListElement : ListItem avec position (à partir de 1), name, item (URL). Le dernier élément (page courante) peut omettre item. Piège : positions non séquentielles, ou fil d’ariane balisé différent du fil affiché.
Règles transverses (rappel)
- JSON-LD dans un
<script type="application/ld+json">, en head ou body. - Contenu visible uniquement ; jamais d’avis, prix ou FAQ fabriqués.
- URLs absolues ; dates ISO 8601 avec fuseau ; durées ISO 8601 ; prix en nombre + ISO 4217 ; pays en ISO 3166-1.
- Un @graph unique ou des blocs séparés, mais un type donné déclaré une seule fois par page (attention aux doublons avec le plugin SEO).
- @id stables et réutilisés sur tout le site : c’est ce qui transforme des blocs isolés en graphe d’entités.
- Injection dans le HTML initial de préférence ; GTM en dernier recours (dépend du rendu JS, invisible pour la plupart des crawlers IA).
- Test : Rich Results Test (éligibilité Google) + validator.schema.org (syntaxe et vocabulaire).
Données structurées et moteurs génératifs
Les moteurs de réponse et les assistants extraient plus fiablement les faits explicités en JSON-LD : entité, auteur, date, prix, adresse, notes. Concrètement : un Product bien balisé augmente les chances que le bon prix et la bonne dispo soient cités ; un Person relié aux articles installe l’auteur comme entité ; un LocalBusiness complet fiabilise les réponses locales. Le JSON-LD étant dans le HTML initial, il reste lisible par les crawlers IA qui ne rendent pas le JS. La suite logique de ce travail : seo-citation-optimizer.