aggregateRating bien configuré : le champ que Google rejette en silence
C'est dans aggregateRating que la plupart des rich snippets en étoiles échouent silencieusement. Les champs obligatoires, les règles d'exactitude, et pourquoi vos étoiles n'apparaissent pas.
Quels champs aggregateRating exige-t-il réellement ?
aggregateRating est un objet compact, et les éléments qui comptent sont peu nombreux. Vous avez besoin d'un ratingValue, la note moyenne, et d'un compteur indiquant combien de notations l'ont produit. Ce compteur peut prendre la forme d'un reviewCount (le nombre d'avis rédigés) ou d'un ratingCount (le nombre de notes, y compris les étoiles sans texte), mais vous devez en fournir au moins un.
Tout le reste est optionnel. bestRating et worstRating ont par défaut les valeurs 5 et 1 ; vous ne les déclarez que si votre échelle diffère. La plupart des boutiques n'en ont jamais besoin.
- ratingValue : la note moyenne, par exemple "4,6".
- reviewCount ou ratingCount : au moins un est obligatoire.
- bestRating : optionnel, vaut 5 par défaut.
- worstRating : optionnel, vaut 1 par défaut.
reviewCount ou ratingCount : lequel utiliser ?
Utilisez ratingCount quand votre total inclut des notes en étoiles sans texte rédigé, et reviewCount quand chaque entrée du total correspond à un avis écrit. La distinction est importante car les deux chiffres sont souvent différents ; déclarer le mauvais gonfle votre total d'une façon facile à détecter.
Si cent personnes ont laissé une note et que quarante d'entre elles ont rédigé un texte, reviewCount vaut 40 et ratingCount vaut 100. Vous pouvez déclarer les deux. Ce que vous ne pouvez pas faire, c'est inscrire 100 dans reviewCount quand seulement 40 avis rédigés existent : le nom du champ est une déclaration sur ce que le chiffre représente.
Quelle est la règle de correspondance entre le compteur et les avis visibles ?
Les directives de données structurées de Google exigent que l'aggregateRating reflète les avis qu'un utilisateur peut effectivement voir sur cette page. Le compteur dans votre balisage et les avis affichés sur la page doivent former le même ensemble. Quand ils divergent, le balisage est traité comme non représentatif de la page, ce qui justifie la suppression du rich snippet en étoiles.
Cela piège les boutiques qui affichent dix avis sur une page produit mais déclarent un compteur de deux cents dans le schéma. L'intention peut être honnête (le produit a bien deux cents avis quelque part), mais si la page n'en présente que dix, le balisage surestime ce que la page contient.
Pourquoi un agrégat global ou gonflé est-il rejeté ?
Un motif de rejet courant est l'application d'une note globale unique à chaque produit. La boutique calcule une moyenne sur l'ensemble des avis et l'applique à chaque page produit, de sorte qu'un nouveau produit hérite de la réputation d'un best-seller. Google considère cela comme trompeur, car l'aggregateRating sur un Product est une déclaration sur ce produit, pas sur la boutique.
Le gonflement fonctionne de la même façon : augmenter artificiellement le compteur, récupérer des notes d'une variante abandonnée ou comptabiliser des avis qui ne sont plus affichés. Chacun de ces cas crée un désaccord entre la page visible et le balisage déclaré, et c'est ce désaccord qui entraîne la suppression du rich snippet.
- Une note globale de boutique appliquée à chaque page produit.
- Un compteur supérieur au nombre d'avis affichés sur la page.
- Des notes reprises d'un autre produit ou d'une variante différente.
- Des compteurs incluant des avis masqués, supprimés ou non publiés.
Pourquoi mes étoiles sont-elles toujours absentes alors que le balisage est valide ?
La validation confirme la syntaxe, pas l'éligibilité. Votre aggregateRating peut être parfaitement formé et ne produire aucune étoile si le compteur contredit la page visible, si le balisage est injecté par un script que le robot d'exploration n'exécute pas, ou si Google choisit simplement de ne pas afficher le rich snippet pour cette requête. Les deux premiers cas sont corrigeables ; le troisième appartient à Google.
Le problème d'injection est le plus discret. De nombreuses applications d'avis affichent la note dans un widget JavaScript après le chargement, de sorte que l'aggregateRating qu'un client voit n'atteint jamais le HTML que lit le robot. Le champ est correct. Il n'est simplement pas là où le robot cherche.
Comment configurer aggregateRating correctement, à chaque fois ?
Un aggregateRating correct est rendu côté serveur, spécifique à chaque produit et exact : le ratingValue et le compteur figurent dans le HTML de la page avant l'exécution de tout script, ils décrivent ce produit et non l'ensemble de la boutique, et le compteur correspond aux avis affichés sur la page. La plupart des applications d'avis ont été conçues pour le client sur la page et affichent les étoiles dans un widget, ce qui paraît correct à l'oeil mais se lit incorrectement par un robot. Transformer les avis que vous avez déjà en balisage lisible, spécifique à chaque produit et fidèle au compteur, pour que la note apparaisse dans les résultats de recherche et reste citée par les moteurs de réponse IA : c'est précisément l'écart que BeyondReviews est conçu à combler.
- Faut-il déclarer reviewCount et ratingCount en même temps ?
- Non, vous devez en fournir au moins un. Utilisez reviewCount quand chaque entrée est un avis rédigé, ratingCount quand le total inclut des notes en étoiles sans texte. Vous pouvez déclarer les deux si vous disposez des deux chiffres, mais n'en fournir aucun rend l'aggregateRating invalide.
- Puis-je utiliser ma note globale de boutique sur chaque produit ?
- Non. L'aggregateRating sur un Product est une déclaration sur ce produit : une note globale unique appliquée à chaque page est traitée comme trompeuse et constitue un motif courant de suppression des étoiles. Chaque produit doit avoir sa propre note et son propre compteur.
- Faut-il déclarer bestRating ?
- Seulement si votre échelle n'est pas sur 5. bestRating vaut 5 par défaut et worstRating vaut 1 par défaut, donc une boutique avec un système classique de cinq étoiles peut omettre les deux. Déclarez-les si vous notez sur 10 ou toute autre échelle, afin que le ratingValue soit interprété correctement.
- Mon balisage est valide mais je n'ai toujours pas d'étoiles. Pourquoi ?
- La validation vérifie la syntaxe, pas l'éligibilité. Les causes probables sont un compteur qui contredit les avis visibles, un balisage injecté par un script que le robot n'exécute jamais, ou Google qui choisit de ne pas afficher le rich snippet pour cette requête. Vérifiez d'abord le HTML rendu et le compteur visible.
Comment vérifier que mon aggregateRating est valide ?
Lisez le HTML rendu, pas le widget. Ouvrez la page produit, affichez le code source ou utilisez le Rich Results Test, et vérifiez que l'objet aggregateRating est présent dans le HTML serveur avec un ratingValue et un compteur. Comptez ensuite les avis réellement affichés sur la page et vérifiez que les deux chiffres racontent une histoire cohérente.
Le Rich Results Test signale les champs obligatoires manquants, mais ne détecte pas un chiffre vraisemblable qui surestime la page. Cette partie vous appartient : l'outil valide la forme, pas l'exactitude. Un compteur de trois cents à côté de douze avis visibles passe la validation et expose quand même à un rejet manuel.