11487 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

j'ai implémenté les micro-données sur un site et j'ai utilisé le JSON-LD, avec ce générateur pour entrer les données :
https://technicalseo.com/tools/schema-markup-generator/
Celui de Google est peu pratique à mon avis. J'ai pas mal retouché à la main, mais les tests avec l'outil de google sont probants, 0 erreurs, 0 avertissement ainsi que les tests avec celui de shema.org : https://validator.schema.org/. Que je teste l'URL du site ou le fichier JSON-LD copié directement, le résultat est toujours bon.
Pourtant, plusieurs sites de tests de données structurées me signalent des erreurs, ainsi que le validateur JSON-LD. Et certains tests m'indiquent que les données structurées ne sont tout simplement pas présentes sur mon site.

Alors, je ne comprends pas ce qui se passe. Voici le code JSON-LD installé sur le site :
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
 "itemListElement":
 [
  {
   "@type": "ListItem",
   "position": 1,
   "item":
   {
    "@id": "https://musiquenvrac.fr/#goni",
    "name": "Goni"
    }
  },
  {
   "@type": "ListItem",
  "position": 2,
  "item":
   {
     "@id": "https://musiquenvrac.fr/#seve",
     "name": "Sève montante"
     }
  },
  {
   "@type": "ListItem",
  "position": 3,
  "item":
   {
     "@id": "https://musiquenvrac.fr/#3/4",
     "name": "Trois temps quatre"
     }
  },
  {
   "@type": "ListItem",
  "position": 4,
  "item":
   {
     "@id": "https://musiquenvrac.fr/#bala",
     "name": "Bala"
   }
  }
 ]
}
  "@type": "Article",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://musiquenvrac.fr"
  },
  "headline": "Musique Originale [N'goni, Balafon, Piano, Kora et MA0]- Téléchargez !",
  "description": "Compositions musicales instrumentales pour l'image, aux rythmes et sonorités variées",
  "image": "https://musiquenvrac.fr/Images/Seve-Montante-1.jpg",  
  "author": {
    "@type": "Person",
    "name": "Pierre Ponthus",
    "url": "https://musiquenvrac.fr"
  },  
  "publisher": {
    "@type": "Organization",
    "name": "Pierre Ponthus",
    "logo": {
      "@type": "ImageObject",
      "url": "https://musiquenvrac.fr/favicon.ico"
    }
  },
  "datePublished": "2021-12-04",
  "dateModified": "2021-12-04"
}
</script>


Merci pour un éclaircissement.
Modérateur
Bonjour,

Il semble qu'il faudrait une virgule et non une accolade fermante après le cochet fermant (ligne 42 et 43 du code).

Amicalement,
Merci d'avoir regardé, mais si j'enlève l'accolade comme tu me le dit (et aussi celles qui sont sur les autres parties identiques, en-dessous et que je teste le code, j'ai :
-----
error
1 invalid item detected
Invalid items are not eligible for Google Search's rich results. Learn more

Parsing error: Missing '}' or object member name
-----
Je remets comme à l'origine et tout est OK sur le test de Google. Tente le test en direct avec l'URL du site :
https://search.google.com/test/rich-results
Tout est bon. Ce serait pas la première fois que des tests font apparaître des incohérences; et les données structurées apparaissent sur Google trois semaines après leur implantation, ou jamais... Pas facile de vérifier dans ces conditions.
upload/1640167404-67790-screenshot2021-12-22richresul.png
Modérateur
Bonjour,

Il faut bien remplacer l'accolade par une virgule après le crochet fermant. Il est possible que le validateur de google s'arrêtait après l'accolade qu'il prend pour une fin de données (et ignore le reste), et du coup, il ne détectait pas d'erreur. Par contre https://jsononline.net/json-validator voit cette erreur.

Il y a 2 fois la propriété @type ligne 3 et ligne 43 (qui est une erreur), ce que le validateur de google voit (si on essaie de valider après avoir remplacé l'accolade en trop par une virgule), mais ce que ne voit pas https://jsononline.net/json-validator.

Amicalement,
Modifié par parsimonhi (22 Dec 2021 - 13:22)
Bonjour,
tout ça est un peu obscur pour moi, chaque fois que j'enlève une accolade, j'ai encore des erreurs. Du coup, j'ai refait un script JSON-LD. J'ai utilisé le même générateur :
https://technicalseo.com/tools/schema-markup-generator/
mais cette fois j'ai pris soin de ne rien ajouter à la main, après le générateur. Le nouveau code passe le test sur le site https://jsononline.net/json-validator. Par contre, ce script est beaucoup moins complet que l'autre. J'aimerais ajouter ce qui se nomme "BreadcrumbList" et qui permet de créer un fil d'ariane. Sur le générateur cité, soit je pars sur "Article" soit sur "BreadcrumbList", je n'arrive pas à additionner les deux. C'était la raison pour laquelle j'avais ajouté du code à la main dans l'autre version. Ce code est très sensible au moindre écart.
Je vais me contenter de ça pour le moment, au moins c'est valide partout et il y a les "headline".
Merci de ton aide, mais des précision sur mon problème ci-dessus seraient les bienvenues.
Modérateur
Bonjour,

Avec tes dernières explications, je comprends un peu mieux comment tu en est arrivé à ton JSON-LD.

Tu n'arrives pas à "additionner" les deux JSON-LD que tu as généré automatiquement parce que certaines propriétés de ton objet principal dans le modèle "Article" sont aussi dans le modèle "BreadcrumbList". En particulier, dans le code initial de ton post, on a à la fois :
"@type": "BreadcrumbList",

et
"@type": "Article",
.

Ce n'est juste pas possible d'avoir dans un même objet 2 propriétés qui ont le même nom. Et comme @type est un mot clé avec une signification particulière dans JSON-LD, tu ne peux pas le renommer en autre chose genre @type2.

Le plus simple est effectivement de choisir l'un ou l'autre modèle, mais pas de les mettre ensemble.

Amicalement,
Meilleure solution
Merci, je comprends maintenant.
Un peu dommage que l'on ne puisse pas créer un fil d'ariane en plus.
J'ai effectué plusieurs test du nouveau code, tous sont bons. Reste à attendre que monsieur Google ou Bing veuille bien faire apparaître ces données structurées dans les recherches. Certains disent que ça prend parfois trois semaines.
Bonne journée.