Aller au contenu principal
Retour au blog
SEO

Schema.org pour agences web : guide balisage complet

Sitelinks, breadcrumbs, FAQ, services, équipe, reviews : tous les balisages JSON-LD utiles pour une agence web ou digitale. Exemples concrets, validation Rich Results Test, retours d'impact CTR.

13 min956 mots

Schema.org est le vocabulaire commun que Google, Bing, Yandex et tous les moteurs de recherche utilisent pour comprendre votre site. Pour une agence web ou digitale, c'est l'occasion d'afficher des rich snippets (étoiles, FAQ, fil d'Ariane, événements) qui font la différence dans les résultats de recherche — gain CTR mesurable de 10 à 30%. Voici notre guide complet sur les balisages Schema.org qu'on déploie systématiquement chez Krealabs, avec exemples concrets et retours sur ce qui marche vraiment.

01ProfessionalService — la fondation pour agences

Le type ProfessionalService (sous-classe de LocalBusiness) est idéal pour une agence digitale. Il accepte tous les champs utiles : adresse postale, géolocalisation, services proposés, prix range, horaires, contact, zones desservies. À placer sur la home dans un script JSON-LD <type="application/ld+json">. Pour les variantes spécifiques métier, voir les sous-types : Restaurant, Dentist, AutoRepair, etc. Pour une agence web/digitale, ProfessionalService convient parfaitement. Inclure absolument knowsAbout (vos expertises) et areaServed (zones géographiques desservies).

02BreadcrumbList — fil d'Ariane visible dans Google

Sur chaque page intérieure, ajoutez un BreadcrumbList pour afficher le chemin de navigation sous le titre dans la SERP Google. Petit effort, vrai impact UX dans les SERP — l'utilisateur voit la hiérarchie de votre site, le contexte de la page. Sur un article de blog, les breadcrumbs montrent "Accueil > Blog > Catégorie > Titre article" avec liens cliquables. Mesuré sur nos sites : +5-8% de CTR après mise en place du BreadcrumbList.

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Accueil", "item": "https://krealabs.fr" },
    { "@type": "ListItem", "position": 2, "name": "Services", "item": "https://krealabs.fr/services" },
    { "@type": "ListItem", "position": 3, "name": "Développement web", "item": "https://krealabs.fr/services/developpement-web" }
  ]
}

03FAQPage — réponses dans la SERP

Sur votre page FAQ ou les pages avec questions fréquentes, ajoutez un balisage FAQPage. Google peut afficher directement les questions/réponses sous votre résultat dans la SERP, ce qui augmente considérablement la visibilité et le CTR. Attention en 2026 : Google a restreint le FAQPage rich snippet aux sites "officiels" (gouvernement, santé) sur les requêtes très concurrentielles. Mais pour les requêtes long-tail métier ("comment fonctionne un X", "combien coûte un Y"), ça marche encore très bien. Mesurer dans Search Console : rapport Performance > comparer CTR avant/après.

{
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "Combien coûte un site WordPress sur mesure ?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Cela dépend du projet : vitrine simple 4-6k€, WooCommerce 10-20k€..."
    }
  }]
}

04Article — pour articles de blog

Chaque article de blog doit avoir un balisage Article (ou ses sous-types : BlogPosting, NewsArticle, TechArticle). Champs obligatoires : headline, image, author (Person ou Organization), publisher (Organization avec logo), datePublished (ISO 8601), dateModified, mainEntityOfPage. Bonus : wordCount, articleSection, keywords, inLanguage. Cela permet à Google de proposer votre contenu dans Discover, Top Stories, et améliore le snippet (date, auteur affichés). On l'a implémenté sur tous les articles du blog Krealabs.

05Service — pour vos pages de services

Sur chaque page service (ex: /services/wordpress, /services/developpement-web), un Service avec serviceType, provider (votre Organization), areaServed, hasOfferCatalog. Aide Google à comprendre que vous proposez ces services concrets dans ces zones. Combiné avec ProfessionalService sur la home, ça structure clairement votre catalogue d'offres pour Google.

{
  "@type": "Service",
  "serviceType": "Création de site WordPress",
  "provider": { "@type": "ProfessionalService", "name": "Krealabs" },
  "areaServed": ["Rouen", "Normandie", "France"],
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "itemListElement": [
      { "@type": "Offer", "name": "Site vitrine WordPress" },
      { "@type": "Offer", "name": "WooCommerce" }
    ]
  }
}

06Person — pour pages équipe et auteurs

Sur votre page équipe (/equipe chez nous), un Person par membre avec name, jobTitle, image, sameAs (liens LinkedIn/GitHub/Twitter), knowsAbout. Sur les articles de blog, l'author dans l'Article schema peut renvoyer vers cette Person. Cela aide Google à construire la "Knowledge Graph" autour de votre équipe — les co-fondateurs et experts deviennent plus visibles dans les recherches nominatives.

07Review et AggregateRating — étoiles dans la SERP

Pour les agences avec témoignages clients, vous pouvez baliser les avis avec Review et un AggregateRating global (note moyenne, nombre d'avis). En 2026, Google est strict sur l'authenticité : pas de balisage de notes inventées, l'AggregateRating doit pointer sur une page qui affiche réellement les avis. Si fait correctement, les étoiles apparaissent dans la SERP — gain CTR souvent +15-25%. Important : vous ne pouvez baliser les avis QUE s'ils sont sur votre propre site, pas si vous compilez des avis Google externes.

08Outils de validation et debugging

Toujours valider vos balisages avant déploiement. Outils essentiels : 1) Google Rich Results Test (search.google.com/test/rich-results) — teste si Google va générer un rich snippet pour votre URL. 2) Schema.org Validator (validator.schema.org) — vérifie la conformité technique au standard. 3) Google Search Console > Améliorations — détecte les erreurs sur l'ensemble du site indexé. 4) Nodejs schema-dts pour TypeScript : typage strict des objets Schema, plus jamais de balisage cassé silencieusement.

// schema-dts pour typage strict en TypeScript
import { Person, Article, WithContext } from 'schema-dts'

const articleSchema: WithContext<Article> = {
  '@context': 'https://schema.org',
  '@type': 'Article',
  headline: 'Mon article',
  datePublished: '2026-01-15',
  author: { '@type': 'Person', name: 'Maxime Dubois' }
}

09Implémentation Next.js : pattern recommandé

Sur Next.js, le pattern qu'on utilise chez Krealabs : un dossier components/seo/ avec un composant par type de schema (OrganizationSchema, BreadcrumbSchema, ArticleSchema, FAQSchema). Chaque composant rend un <script type="application/ld+json"> avec les données passées en props. Insérés dans le layout ou la page concernée. Pour les types récurrents (BreadcrumbList sur toutes les pages internes), ça devient automatique. Sur WordPress, Yoast et RankMath gèrent la plupart des schemas mais on customise souvent avec du code pour des cas spécifiques (Service, Person).

En résumé

Le balisage Schema.org ne demande pas de gros efforts mais offre un retour clair en visibilité Google. Si vous gérez le site vous-même, des plugins existent (Rank Math, Yoast pour WordPress, le helper officiel pour Next.js). Si vous êtes sur du custom, c'est quelques scripts à ajouter. Sur nos sites clients après mise en place complète : +10 à +30% de CTR organique en moyenne, des positions stables, des rich snippets visibles. Si vous voulez un audit du balisage Schema actuel de votre site et un plan d'enrichissement, on le fait régulièrement chez Krealabs.

Schema.org
JSON-LD
Rich Snippets
SEO
Agence web
Structured Data
Maxime Dubois

Écrit par

Maxime Dubois

Co-fondateur · Krealabs

Découvrir l'équipe

À propos de cet article

Rédigé par

Maxime Dubois

Co-fondateur · Krealabs

Méthodologie

Rédigé à partir de notre travail d'agence et de la documentation officielle des outils cités. Pas d'IA générative pour le fond éditorial.

Publié le
Parlons projet

Un sujet à creuser ensemble ?

Si cet article t'a parlé et que tu as un projet en cours (ou naissant), écris-nous — premier échange offert.