Générateur de schéma BreadcrumbList JSON-LD
Transformez un fil d’Ariane visible en données structurées sans numéroter les éléments ni construire manuellement un JSON imbriqué.
Lancer gratuitement
Indiquez les noms de pages et leurs URL absolues dans l’ordre affiché, de la page la plus générale jusqu’à la destination actuelle. Le générateur fournit un objet BreadcrumbList de schema.org et un script JSON-LD complet, prêt à être placé dans l’en-tête ou le corps. Il contrôle les listes vides, les lignes incorrectes, les libellés manquants et les URL non admises avant de produire le balisage.
Préparez le fil d’Ariane dans l’ordre de la page
Commencez par la hiérarchie que les visiteurs voient réellement. La première ligne représente généralement l’accueil ou la rubrique la plus large, puis viennent des pages de plus en plus précises, jusqu’à la page actuelle en dernière position. Chaque ligne doit contenir un nom visible et concis ainsi qu’une URL absolue HTTP ou HTTPS. Les URL absolues évitent toute ambiguïté pour les robots et rendent le balisage réutilisable entre modèles, domaines de préproduction et systèmes de gestion de contenu. Gardez des libellés conformes aux pages liées au lieu d’y accumuler des mots-clés. L’outil respecte strictement l’ordre fourni et attribue les positions à partir de un : déplacer une ligne modifie donc le sens du parcours. Il n’explore pas le site, ne déduit aucune hiérarchie et ne compare pas les entrées avec la navigation HTML. Vérifiez les redirections, les URL canoniques, l’orthographe et la casse avant la génération. Une liste vide est refusée, car elle ne décrit aucun parcours exploitable et révèle souvent un modèle défaillant ou une requête incomplète.
Comprenez le JSON-LD obtenu
Le résultat contient un objet de schéma destiné aux traitements automatisés et un script complet à insérer directement dans une page. Au premier niveau, le contexte renvoie vers schema.org et le type est BreadcrumbList. Chaque paire devient un ListItem doté d’une position commençant à un, du nom nettoyé de ses espaces périphériques et de son URL dans la propriété item. La mise en forme indentée facilite la relecture et garantit un résultat stable pour une entrée identique. Le générateur échappe aussi les caractères inférieur à dans les valeurs sérialisées afin qu’un texte fourni ne puisse pas fermer prématurément l’élément script dans du HTML. Seuls les noms non vides et les URL absolues HTTP ou HTTPS sont acceptés ; javascript, data, mailto et les chemins relatifs sont rejetés. L’algorithme est déterministe et n’effectue aucune requête réseau : il ne vérifie donc ni la disponibilité d’une URL ni l’indexabilité d’une page. Utilisez l’objet schema si une autre application assure la sérialisation, ou le champ jsonld pour obtenir immédiatement le balisage complet.
Publiez et contrôlez le balisage
Ajoutez un seul script généré à la page décrite par le parcours, dans l’en-tête du document ou dans le corps si votre outil de publication y autorise JSON-LD. Le fil structuré doit rester cohérent avec des liens réellement visibles et utilisables. Si votre CMS produit déjà des données structurées de fil d’Ariane, remplacez ou désactivez l’ancien bloc au lieu de publier deux versions dont les positions ou les URL divergent. Régénérez le balisage après un déplacement de page, un changement de nom de rubrique ou une modification des URL canoniques. Une fois en ligne, inspectez le HTML rendu plutôt que le seul modèle source : thèmes, gestionnaires de balises et extensions d’optimisation peuvent dupliquer, supprimer ou transformer les scripts. Servez-vous ensuite d’un outil de test des données structurées ou d’inspection d’un moteur de recherche pour relever les problèmes extérieurs au générateur, notamment les destinations inaccessibles, les balises canoniques contradictoires ou le balisage placé sur la mauvaise page. Un JSON-LD valide est une condition technique, pas une garantie d’affichage particulier. L’API coûte $0.002 par requête ; le navigateur peut exécuter la même logique sans transmettre vos données.
Cas d’usage
Balisage d’un modèle de page
Convertissez le parcours ordonné d’un modèle en script BreadcrumbList directement intégrable.
Sortie homogène du CMS
Produisez la même structure JSON-LD pour les articles, produits, catégories et sections documentaires.
Rétablissement des données manquantes
Créez un remplacement lorsque le fil est visible, mais qu’aucun parcours lisible par une machine n’est publié.
Questions fréquentes
Que se passe-t-il si la liste est vide ?
La requête échoue avec une erreur de saisie, car BreadcrumbList doit comporter au moins un élément utile.
Quel ordre faut-il respecter ?
Saisissez les pages du niveau le plus général jusqu’à la page actuelle. Le générateur conserve cet ordre et numérote à partir de un.
Puis-je employer des URL relatives ?
Non. Chaque élément exige une URL absolue HTTP ou HTTPS afin que les données structurées soient sans ambiguïté.
Le générateur vérifie-t-il l’existence des pages ?
Non. Sans accès réseau, il valide la syntaxe et le protocole, mais pas le statut, l’indexation, les redirections ni les URL canoniques.
Où faut-il placer le bloc produit ?
Insérez le script dans l’en-tête ou le corps selon votre système de publication, sans laisser un autre balisage identique.
Quel est le prix d’une requête API ?
Chaque requête API coûte $0.002. La même transformation déterministe peut aussi s’exécuter dans le navigateur.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/web/breadcrumb-schema-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"breadcrumbs":[{"name":"Home","url":"https://example.com/"},{"name":"Guides","url":"https://example.com/guides"},{"name":"Technical SEO","url":"https://example.com/guides/technical-seo"}]}'const res = await fetch("https://api.kit.forhosting.com/web/breadcrumb-schema-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"breadcrumbs": [
{
"name": "Home",
"url": "https://example.com/"
},
{
"name": "Guides",
"url": "https://example.com/guides"
},
{
"name": "Technical SEO",
"url": "https://example.com/guides/technical-seo"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/breadcrumb-schema-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"breadcrumbs": [
{
"name": "Home",
"url": "https://example.com/"
},
{
"name": "Guides",
"url": "https://example.com/guides"
},
{
"name": "Technical SEO",
"url": "https://example.com/guides/technical-seo"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/breadcrumb-schema-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"breadcrumbs":[{"name":"Home","url":"https://example.com/"},{"name":"Guides","url":"https://example.com/guides"},{"name":"Technical SEO","url":"https://example.com/guides/technical-seo"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"breadcrumbs":[{"name":"Home","url":"https://example.com/"},{"name":"Guides","url":"https://example.com/guides"},{"name":"Technical SEO","url":"https://example.com/guides/technical-seo"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/breadcrumb-schema-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"breadcrumbs": [
{
"name": "Home",
"url": "https://example.com/"
},
{
"name": "Guides",
"url": "https://example.com/guides"
},
{
"name": "Technical SEO",
"url": "https://example.com/guides/technical-seo"
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.breadcrumb_schema_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
timeout_sec | 30 |
max_crawl_pages | 25 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |