Implémenter JSON-LD schema pour améliorer votre SEO avec les données structurées. Guide complet des types (Article, Product, Organization).
Introduction et importance
JSON-LD Schema (JSON for Linking Data) est un format pour décrire le contenu d'une page web de façon lisible par les machines. Google l'utilise pour générer des rich snippets (extraits enrichis) dans les résultats de recherche.
Exemple du résultat :
- ❌ Avant : Titre + Description simple
- ✅ Après : Titre + Description + Étoiles + Prix + Disponibilité
Avantages JSON-LD :
- ✅ Meilleure apparence dans Google (étoiles, prix, avis)
- ✅ Augmente CTR (+20-30% selon études)
- ✅ Aide Google comprendre votre contenu
- ✅ Voice search optimization (Alexa, Google Assistant)
- ✅ Schema.org standard (universel)
Différence entre schema.org et JSON-LD
schema.org = vocabulaire (définition des données)
JSON-LD = format pour appliquer ce vocabulaire
Autres formats possibles :
- Microdata (
itemscope, itemtype) — désuet, complexe - RDFa — standardisé mais rare
- JSON-LD — ✅ Recommandé par Google (simple et puissant)
Pourquoi JSON-LD ?
- ✅ Facile à ajouter en
<script> - ✅ Pas besoin de modifier le HTML
- ✅ Lisible et maintenable
- ✅ Google le recommande explicitement
Syntaxe et structure
Structure basique :
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Titre de l'article",
"description": "Description courte",
"image": "https://example.com/image.jpg",
"author": {
"@type": "Person",
"name": "Auteur"
},
"datePublished": "2026-04-17"
}
</script>
Propriétés essentielles :
@context— URL du vocabulaire (toujourshttps://schema.org)@type— Type de contenu (Article, Product, Event, etc.)- Propriétés spécifiques au type
Imbrication d'objets :
{
"@type": "Person",
"name": "Alice",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Rue de Paris",
"addressLocality": "Paris",
"postalCode": "75001",
"addressCountry": "FR"
}
}
Schema Article
Pour les articles de blog :
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "JSON-LD Schema : structured data pour le SEO",
"description": "Implémenter JSON-LD schema pour améliorer votre SEO...",
"image": "https://example.com/image.jpg",
"datePublished": "2026-04-17T16:30:00Z",
"dateModified": "2026-04-17T18:00:00Z",
"author": {
"@type": "Person",
"name": "Mezgani Said"
},
"publisher": {
"@type": "Organization",
"name": "AngularForAll",
"logo": "https://example.com/logo.png"
}
}
</script>
Articles avec notes/ratings :
{
"@type": "NewsArticle",
"headline": "...",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"bestRating": "5",
"worstRating": "1",
"ratingCount": "125"
}
}
Schema Product
Pour les produits e-commerce :
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Laptop Dell XPS 13",
"image": [
"https://example.com/photo1.jpg",
"https://example.com/photo2.jpg"
],
"description": "13-inch laptop ultrabook...",
"sku": "0446310786",
"brand": {
"@type": "Brand",
"name": "Dell"
},
"offers": {
"@type": "Offer",
"price": "999.99",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "Example Store"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.4",
"reviewCount": "89"
}
}
</script>
Résultat affichage Google :
- ⭐ Étoiles de rating
- 💰 Prix visibilisé
- ✅ En stock/Hors stock affiché
- 🔍 Nombre d'avis visible
Schema Organization
Pour présenter votre entreprise :
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "AngularForAll",
"url": "https://angularforall.com",
"logo": "https://angularforall.com/logo.png",
"description": "Blog de tutoriels web",
"contact": "+33 1 23 45 67 89",
"email": "contact@angularforall.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Rue de Paris",
"addressLocality": "Paris",
"postalCode": "75001",
"addressCountry": "FR"
},
"sameAs": [
"https://www.facebook.com/angularforall",
"https://twitter.com/angularforall",
"https://linkedin.com/company/angularforall"
]
}
</script>
Impact :
- Améliore Knowledge Panel sur Google
- Affiche contact et adresse
- Liens vers réseaux sociaux
Schema LocalBusiness
Pour les commerces locaux, restaurants, services :
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Boulangerie Dupont",
"image": "https://example.com/boulangerie.jpg",
"telephone": "+33 1 23 45 67 89",
"email": "contact@boulangerie.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "15 Rue de la Paix",
"addressLocality": "Paris",
"postalCode": "75008",
"addressCountry": "FR"
},
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "20:00"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "28"
}
}
</script>
Impact Google Maps/Search :
- 📍 Affiche localisation
- ⏰ Affiche horaires d'ouverture
- ⭐ Affiche avis et rating
- ☎️ Affiche téléphone en résultats
Rich Snippets et affichage Google
Rich Snippets = extraits enrichis dans Google
| Type | Affichage Google | Cas d'usage |
|---|---|---|
| Article | Titre + Image + Date + Auteur | Blog posts, actualités |
| Product | Titre + Étoiles + Prix | E-commerce |
| LocalBusiness | Nom + Étoiles + Adresse + Horaires | Restaurants, services |
| Event | Titre + Date + Prix | Événements |
Avant/Après impact :
- CTR augmente de 20-40%
- Position moyenne reste pareille mais visibilité accrue
- Voice search amélioré
Validation et test
Google Rich Results Test :
- Aller sur
search.google.com/test/rich-results - Coller l'URL de votre page
- Cliquer "Tester l'URL"
- Voir les rich snippets détectés
Schema.org Validator :
validator.schema.org
# Ou en ligne : https://validator.schema.org
Erreurs courantes détectées :
- ❌ Propriété requise manquante (ex: @type)
- ❌ Type d'objet incorrect
- ❌ Valeurs invalides (ex: prix négatif)
- ❌ Structure mal formée
Vérifier aussi avec Search Console :
Google Search Console → Améliorations → Rich results
# Voir le nombre d'éléments valides/invalides
Bonnes pratiques
Checklist JSON-LD :
- ✅ Placement : dans
<head>ou fin<body> - ✅ Type
type="application/ld+json"(pas "text/javascript") - ✅ JSON valide (pas d'erreurs de syntaxe)
- ✅ @context toujours présent
- ✅ Propriétés recommandées remplies
- ✅ Validé avec Google Rich Results Test
Production checklist :
- ✅ Tester avec Rich Results Test
- ✅ Vérifier dans Search Console
- ✅ Monitorer les rich results actifs/invalides
- ✅ Mettre à jour si contenu change
- ✅ Ne pas surcharger avec schema inutile
À éviter :
- ❌ Schema caché (content boosting, cloaking)
- ❌ Info contradictoire (schema différent du contenu visible)
- ❌ Schema pour produits n'existant pas
- ❌ Trop de propriétés inutiles
Template production :
<!-- Dans le <head> -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "<?php echo $title ?>",
"description": "<?php echo $description ?>",
"image": "<?php echo $image_url ?>",
"datePublished": "<?php echo $published_date ?>",
"author": {
"@type": "Person",
"name": "<?php echo $author ?>"
}
}
</script>