📚 Pour replacer ce tutoriel dans une stratégie SEO complète (Google Business Profile, Schema LocalBusiness, citations locales, backlinks éthiques au Sénégal et en Côte d’Ivoire), consultez notre guide pilier : SEO local au Sénégal et en Afrique de l’Ouest — guide pratique 2026.
Prérequis
- Niveau : bases HTML, lecture JSON.
- Outils : validateur officiel Rich Results Test et Schema Markup Validator.
- Temps estimé : 30 min par type de page.
Pourquoi Schema.org ?
Schema.org permet d’obtenir des résultats enrichis dans Google : étoiles, prix, FAQ déroulantes, fil d’Ariane, horaires d’ouverture. Impact CTR mesuré : +15 à +40 %. C’est l’optimisation SEO qui déplace le plus de clics, et elle est purement technique (zéro dépendance au contenu éditorial).
Pourquoi Schema.org
Les données structurées aident Google à comprendre votre contenu. Résultats enrichis (étoiles, prix, FAQ) augmentent le CTR de 15 à 40 %.
Article de blog
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Optimiser ses formules Excel pour gros volumes",
"description": "Sept techniques pour diviser par 10 le temps de calcul Excel.",
"image": ["https://example.sn/covers/excel-perf.webp"],
"datePublished": "2026-04-22T08:00:00+00:00",
"dateModified": "2026-04-22T10:30:00+00:00",
"author": {
"@type": "Person",
"name": "Aminata Diop",
"url": "https://example.sn/auteurs/aminata-diop"
},
"publisher": {
"@type": "Organization",
"name": "ITSkillsCenter",
"logo": { "@type": "ImageObject", "url": "https://example.sn/logo.png" }
},
"mainEntityOfPage": "https://example.sn/blog/optimiser-formules-excel"
}
</script>
Produit e-commerce
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Formation Excel Niveau 2",
"image": "https://example.sn/formations/excel-n2.webp",
"description": "Formation en ligne, 24 sessions, certificat.",
"brand": { "@type": "Brand", "name": "ITSkillsCenter" },
"sku": "FORMATION-EXCEL-N2",
"offers": {
"@type": "Offer",
"url": "https://example.sn/formations/excel-n2",
"priceCurrency": "XOF",
"price": "150000",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "143",
"bestRating": "5"
}
}
</script>
LocalBusiness (SEO local)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"name": "ITSkillsCenter",
"image": "https://example.sn/storefront.jpg",
"@id": "https://example.sn/#organization",
"url": "https://example.sn",
"telephone": "+221 77 123 45 67",
"address": {
"@type": "PostalAddress",
"streetAddress": "Rue de la République",
"addressLocality": "Dakar",
"postalCode": "11000",
"addressCountry": "SN"
},
"geo": { "@type": "GeoCoordinates", "latitude": 14.693425, "longitude": -17.447938 },
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "08:30", "closes": "18:00"
}],
"sameAs": ["https://www.facebook.com/itsc","https://www.linkedin.com/company/itsc"]
}
</script>
FAQPage (résultats enrichis questions)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "Combien de temps dure la formation ?",
"acceptedAnswer": { "@type": "Answer", "text": "La formation dure 3 mois à raison de 2 sessions de 2h par semaine." }
}, {
"@type": "Question",
"name": "Le certificat est-il reconnu ?",
"acceptedAnswer": { "@type": "Answer", "text": "Oui, le certificat ITSkillsCenter est reconnu par les entreprises partenaires au Sénégal et en France." }
}]
}
</script>
BreadcrumbList
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Accueil", "item": "https://example.sn/" },
{ "@type": "ListItem", "position": 2, "name": "Formations", "item": "https://example.sn/formations" },
{ "@type": "ListItem", "position": 3, "name": "Excel Niveau 2", "item": "https://example.sn/formations/excel-n2" }
]
}
</script>
Course (formation en ligne)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Course",
"name": "Formation Python pour Data Analysts",
"description": "De l'installation à pandas avancé en 12 sessions.",
"provider": { "@type": "Organization", "name": "ITSkillsCenter" },
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "Online",
"courseWorkload": "PT48H",
"inLanguage": "fr",
"startDate": "2026-05-15",
"endDate": "2026-08-15",
"offers": { "@type": "Offer", "price": "180000", "priceCurrency": "XOF" }
}
}
</script>
Génération dynamique côté serveur
// Next.js / Express
function jsonLd(article) {
return {
"@context": "https://schema.org",
"@type": "Article",
headline: article.title,
datePublished: article.published_at,
author: { "@type": "Person", name: article.author.name },
};
}
// Rendu dans la page
<script type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd(article)) }} />
Tester et valider
# Google Rich Results Test
https://search.google.com/test/rich-results
# Schema Markup Validator
https://validator.schema.org/
# Ligne de commande
curl -s https://example.sn/ | grep -A100 'application/ld+json' | jq
Erreurs fréquentes
JSON-LD invalide
Cause : guillemets oubliés, virgule en trop, caractères mal échappés.
Solution : validez TOUJOURS avant déploiement avec Rich Results Test. Préférez la génération côté serveur via JSON.stringify().
Données structurées qui ne correspondent pas au contenu visible
Cause : on déclare 5 étoiles dans le JSON-LD, mais le site n’affiche pas ces étoiles.
Solution : Google considère cela comme du spam structured data → action manuelle. Le contenu déclaré DOIT apparaître visiblement sur la page.
Multiple @type contradictoires
Cause : on déclare à la fois Article et Product sur la même page.
Solution : un @type principal par page, en cohérence avec le contenu réel.
Pas de mise à jour dateModified
Cause : on garde la date d’origine après mise à jour.
Solution : mettez à jour dateModified à chaque édition substantielle. Booster le « contenu frais » qui plaît à Google.
Dans la continuité
- SEO on-page
- Title et meta description
- Référence : Schema.org — Full vocabulary
- Doc Google : Google — Structured Data
- Générateur : Merkle Schema Generator
Pourquoi structurer vos pages avec Schema.org
Pour une PME a Dakar ou Douala qui souhaite ressortir dans Google, la balise meta description ne suffit plus. Les donnees structurees Schema.org indiquent explicitement aux moteurs ce que represente chaque page : un article, une recette, un produit, une FAQ. Resultat : votre extrait dans les resultats peut s’enrichir d’une note moyenne, d’une image, d’une liste deroulante, voire d’un prix. Ces « rich results » augmentent typiquement le taux de clic de 15 a 30 %.
Ce tutoriel pas-a-pas montre comment integrer 4 schemas essentiels (Article, FAQPage, HowTo, Product) avec la syntaxe JSON-LD recommandee par Google, puis comment les valider avant mise en ligne.
Etape 1 : Comprendre les 3 syntaxes possibles
Schema.org accepte trois syntaxes : Microdata (attributs HTML imbriques), RDFa (autre famille d’attributs), et JSON-LD (un bloc script separe). Google recommande explicitement JSON-LD depuis 2017 car il est decouplé du HTML visible et plus facile a maintenir. Tout ce qui suit utilise JSON-LD.
Le bloc se place dans le <head> ou juste avant la fermeture de </body>. La balise est <script type= »application/ld+json »> et le contenu est un objet JSON valide. Une seule erreur de virgule invalide tout le bloc, donc validez systematiquement.
Etape 2 : Implementer un schema Article
Pour un article de blog ou un tutoriel, le type Article (ou ses sous-types BlogPosting, NewsArticle) couvre l’essentiel. Voici un exemple complet a coller juste avant </head> :
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Les balises de donnees structurees Schema.org",
"image": "https://itskillscenter.io/wp-content/uploads/exemple.jpg",
"datePublished": "2026-05-05T08:00:00+00:00",
"dateModified": "2026-05-05T08:00:00+00:00",
"author": {
"@type": "Person",
"name": "Equipe ITSkillsCenter"
},
"publisher": {
"@type": "Organization",
"name": "ITSkillsCenter",
"logo": {
"@type": "ImageObject",
"url": "https://itskillscenter.io/logo.png"
}
}
}
</script>
Les champs headline, image, datePublished, author et publisher sont obligatoires pour qu’un Article soit eligible aux rich results. Headline doit faire moins de 110 caracteres. L’image doit avoir au moins 1200 pixels de large.
Etape 3 : Ajouter une FAQPage pour ressortir avec un accordeon
Le schema FAQPage transforme une section « questions frequentes » en accordeon dans Google (sous reserve d’eligibilite, Google ayant restreint l’affichage en 2023 aux sites institutionnels et gouvernementaux pour la majorite des requetes). Le code reste neanmoins lu par Bing et utile pour Google Discover.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Schema.org est-il gratuit ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Oui, Schema.org est un standard ouvert et gratuit, soutenu par Google, Bing, Yahoo et Yandex."
}
},
{
"@type": "Question",
"name": "Faut-il un plugin pour WordPress ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Non, vous pouvez injecter le JSON-LD via Rank Math, Yoast ou directement dans le theme."
}
}
]
}
</script>
Verifiez que les questions du JSON correspondent exactement a celles affichees a l’utilisateur. Sinon, Google considere cela comme du spam structure et vous risquez une penalite manuelle.
Etape 4 : Decrire un tutoriel avec HowTo
Pour un tutoriel pas-a-pas, le schema HowTo decrit chaque etape, son numero, son texte et son image. Google a aussi reduit l’affichage des HowTo en 2023, mais le balisage reste utile pour la comprehension semantique et les autres moteurs.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "Installer Node.js sur Windows",
"step": [
{
"@type": "HowToStep",
"position": 1,
"name": "Telecharger l'installateur",
"text": "Rendez-vous sur nodejs.org et telechargez la version LTS."
},
{
"@type": "HowToStep",
"position": 2,
"name": "Lancer l'installation",
"text": "Executez le fichier .msi et suivez les ecrans en gardant les options par defaut."
}
]
}
</script>
Chaque HowToStep peut aussi inclure une image et une video. Le champ totalTime au format ISO 8601 (ex : « PT15M » pour 15 minutes) est utile pour informer l’utilisateur.
Etape 5 : Marquer un produit avec Product et Offer
Pour une boutique en ligne, le schema Product enrichi par Offer permet d’afficher le prix, la disponibilite et la note. C’est l’un des rich results les plus performants en termes de CTR.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Casque audio sans fil",
"image": "https://exemple.com/casque.jpg",
"description": "Casque Bluetooth avec reduction de bruit active.",
"brand": {
"@type": "Brand",
"name": "AudioPlus"
},
"offers": {
"@type": "Offer",
"url": "https://exemple.com/casque",
"priceCurrency": "XOF",
"price": "59000",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "37"
}
}
</script>
Les notes (aggregateRating) ne doivent jamais etre inventees. Google verifie qu’elles correspondent a des avis reellement collectes et affiches sur la page. Le code devise XOF correspond au franc CFA BCEAO, XAF au franc CFA BEAC.
Etape 6 : Valider votre balisage
Apres avoir ajoute le JSON-LD, validez-le avec deux outils gratuits : le Rich Results Test de Google (search.google.com/test/rich-results) et le Schema Markup Validator (validator.schema.org). Le premier indique si la page est eligible aux rich results, le second verifie la conformite stricte au standard.
Le signal de reussite : « Page is eligible for rich results » en vert dans le Rich Results Test. En cas d’erreur, le message indique exactement le champ fautif. Corrigez et revalidez avant publication.
Etape 7 : Surveiller les performances dans Search Console
Une fois en ligne, ouvrez Google Search Console et consultez la section « Ameliorations » : un rapport par type de schema (Article, FAQ, HowTo, Produits) y apparait sous 7 a 14 jours. Surveillez le nombre d’elements valides, les avertissements et les erreurs. Les erreurs critiques bloquent l’eligibilite et doivent etre traitees en priorite.
Mesurez aussi le CTR avant/apres dans la section « Performances » en filtrant sur les pages concernees. Une augmentation du CTR de 5 a 15 % en 30 jours est un signal positif. Voir aussi nos guides sur SEO technique WordPress et configuration Rank Math.
Pieges courants a eviter
Premier piege : marquer du contenu invisible pour l’utilisateur. Google considere cela comme du cloaking et applique une sanction. Deuxieme piege : utiliser plusieurs blocs JSON-LD contradictoires sur la meme page (ex : deux Article avec des dates differentes). Un seul bloc par type, propre et coherent. Troisieme piege : oublier la mise a jour de dateModified quand vous editez l’article. Sans cela, Google considere votre contenu comme obsolete.
Avec ces 7 etapes, comptez 30 minutes par template (Article, Product, FAQ, HowTo) pour un site WordPress. Une fois les templates en place, chaque nouvel article herite automatiquement du balisage.
Integrer Schema.org dans WordPress sans plugin
Si vous ne souhaitez pas dependre d’un plugin, ouvrez le fichier functions.php de votre theme enfant et ajoutez une fonction qui injecte le JSON-LD dans wp_head. Recuperez les champs dynamiques avec get_the_title(), get_the_date(‘c’), get_the_modified_date(‘c’), get_the_author_meta(‘display_name’) et get_post_thumbnail_url(). Cette approche evite le surpoids des plugins SEO complets quand le besoin est uniquement le balisage structure.
Pour un site multi-langue, generez le champ inLanguage dynamiquement (ex : « fr-SN » pour le Senegal, « fr-CI » pour la Cote d’Ivoire). Cela aide Google a servir vos pages aux bons utilisateurs geographiquement.
Cas particulier : combiner plusieurs schemas sur une meme page
Une page tutoriel peut legitimement contenir Article + HowTo + FAQPage + BreadcrumbList. La regle : un seul script JSON-LD par type, mais plusieurs scripts dans le head sont autorises. Vous pouvez aussi tout regrouper dans un tableau « @graph » qui contient plusieurs noeuds. Cette seconde approche est preferee par les outils Yoast et Rank Math car elle facilite les references croisees entre noeuds (ex : un Article qui reference son auteur Person via @id).
Le @graph se construit ainsi : « @context »: « https://schema.org », « @graph »: [ { « @type »: « Article », « @id »: « https://exemple.com/article/#article », … }, { « @type »: « Person », « @id »: « https://exemple.com/auteur/#person », … } ]. Chaque noeud a son @id unique, et les autres noeuds y font reference.
Mises a jour Google a surveiller en 2026
Google ajuste regulierement quels schemas declenchent des rich results. En 2026, les schemas les plus stables pour les rich results restent Product, Recipe, LocalBusiness, Event et VideoObject. FAQPage et HowTo ne s’affichent que pour des sites institutionnels ou gouvernementaux. Le balisage reste neanmoins utile pour Bing, DuckDuckGo, Yandex et les assistants vocaux. Surveillez le blog officiel « Google Search Central » pour les annonces de mise a jour.
Avec ces ajouts, votre site beneficie d’une comprehension semantique optimale et d’une opportunite reelle d’amelioration du CTR sur les requetes ou les rich results s’affichent encore.
Checklist finale avant publication
Avant de publier, parcourez cette checklist : (1) le bloc JSON-LD est-il valide selon Schema Markup Validator ? (2) Tous les champs obligatoires sont-ils presents ? (3) L’image fait-elle au moins 1200 px de large ? (4) Les dates sont-elles au format ISO 8601 avec fuseau horaire ? (5) Les notes affichees sur la page correspondent-elles aux notes du JSON-LD ? Cocher ces 5 points evite 90 % des erreurs detectees ulterieurement par Search Console.
Pour creuser ce sujet, chaque type de schema a sa propre documentation officielle sur schema.org/docs/full.html. Consultez-la quand vous abordez un type plus rare comme JobPosting, Course, LocalBusiness ou Recipe : les exigences exactes y sont detaillees champ par champ.