Bonjour. Nous recevons actuellement ce message dans notre Google Search Console. Je ne suis pas tout à fait sûr de ce que cela signifie. Pourriez-vous m’apporter plus de précisions sur ce problème ? Existe-t-il une solution ? De plus, j’aimerais mentionner que nous avons essayé d’utiliser plusieurs thèmes pour la plateforme, mais la même erreur persiste.
Les données structurées aident essentiellement à fournir plus de contexte aux moteurs de recherche.
Google Search ne trouve pas de champ urlfacultatif dans ce sujet.
Vous pouvez constater sur validator.schema.org qu’il est parfaitement valide sans aucun avertissement.
Il n’y a rien à craindre.
Cela dit, si Google Search met en évidence ce champ, ce serait une raison valable de l’ajouter dans Discourse.
Comme l’a expliqué @Arkshine ci-dessus, il ne s’agit pas d’un bug, mais plutôt d’une suggestion de Google pour ajouter un champ facultatif dans le schéma. Je vais examiner la question.
La première chose à noter est que le lien que vous avez montré indique que le lien n’a pas de schéma de forum de discussion. Ce lien n’a qu’un schéma « fil d’Ariane », aucun schéma « Forum de discussion » du tout. Cela se produit parce que vous testez le lien en mode « smartphone », et non en mode « ordinateur de bureau ».
Lorsque vous basculez le lien vers les tests sur ordinateur, le schéma « Forum de discussion » apparaît, et il signale le problème de « champ url manquant ».
Je dois souligner qu’il s’agit, selon moi, d’un bug important dans Discourse : le schéma n’apparaît pas en mode smartphone. Google ne saurait pas le signaler (car Google ne signale que les erreurs dans le schéma présent), mais l’exploration et l’indexation par smartphone sont le défaut de Google depuis des années, il est donc important que tout schéma apparaisse en mode smartphone et en mode bureau.
Cela se produit parce que le premier message n’est pas inclus à partir de la deuxième page dans la vue du crawler. @sam devons-nous inclure le premier message sur toutes les pages dans la vue du crawler pour corriger les problèmes de schéma ?
L’autre option serait de remplacer le schéma microdata par JSON-LD (que Google recommande). Cela découplerait les données rendues des données structurées et fonctionnerait également sur mobile (comme Dan l’a souligné ci-dessus).
Nous utilisons déjà le schéma JSON-LD dans le plugin solved.
Contrairement à notre préférence générale pour les données structurées, nous recommandons de fournir le balisage DiscussionForumPosting en Microdata (ou RDFa) si possible. Cela vous évite d’avoir à dupliquer de grands blocs de texte dans le balisage. Cependant, il ne s’agit que d’une recommandation, et JSON-LD est toujours entièrement pris en charge.
Cette balise de lien entière ne devrait être définie que pour post.is_first_post - pas besoin de la répéter avec le même URL pour chaque élément Comment.
Sur meta.discourse.org, les guillemets sont actuellement corrompus : \u003clink itemprop=\u0026#39;mainEntityOfPage\u0026#39; href=\"…\"\u003e
Voir Schema Markup Validator
Oui, nous le faisons maintenant conformément au commit récent, mais même après cela, il nous manque certains champs requis (author, datePublished, text) pour les pages suivantes (?page=2).
Excellente trouvaille ! Corrigé dans cette PR :
Oh oui. Ceci a également été confirmé par @rrlevering ici :
Donc, je suppose que nous devrons améliorer le schéma microdata tout en veillant à ne pas dupliquer le contenu sur les pages suivantes.
Merci pour la correction de la propriété mainEntityOfPage.
Et belle trouvaille concernant la balise meta par rapport à la balise link \u003clink itemprop='url' content='\u003c%= @topic_view.absolute_url %\u003e'\u003e
Encore mieux : \u003clink itemprop='url' href='\u003c%= @topic_view.absolute_url %\u003e'\u003e
Voir :
– Ce lien est ancien, mais YouTube utilise toujours \u003clink itemprop='url' href='…'\u003e aujourd’hui. –
« Pour fournir une URL en HTML5, […] [pour la balise link] utilisez l’attribut href »
« Si vous utilisez une URL comme valeur de l’attribut content d’un élément meta, cela représentera une chaîne de caractères (ressemblant à une URL), pas une URL. »
Note spéciale sur : Soit text, soit image, soit video
→ « Ceci n’est pas requis si vous représentez un message sur une autre page (avec une url externe) comme dans les pages ultérieures de forums ou les pages de catégories de forums. » ←
Propriétés recommandées
url
[…]
Note spéciale sur : url
« L’URL canonique de la discussion. Dans les fils de discussion multi-pages, définissez cette propriété sur l’URL de la première page. Pour une discussion unique, il s’agit généralement de l’URL actuelle. »
Donc, je conclus :
Nous n’avons pas besoin d’ajouter text à nouveau sur page=2+ (FAIT)
Nous devons ajouter la propriété optionnelle url - en particulier aux page=2+ (FAIT)
Nécessité d’une investigation plus approfondie :
Ces « propriétés requises » author, author.name et datePublished sont-elles vraiment requises sur page=2+ ou pouvons-nous nous en passer ?
→ validator.schema.org ne se plaint pas des propriétés manquantes sur page=2+. (FAIT)
→ Attendre et vérifier la « Console de recherche Google → Rapport : Améliorations → Forum de discussion » pour de nouvelles données en direct après que ces corrections déjà implémentées soient en ligne pendant un certain temps. (À FAIRE)
Validateur général : https://validator.schema.org/
Ceci vérifie la conformité des données structurées avec les définitions du Schéma et la conformité du balisage avec HTML/XML.
→ Les exigences vérifiées suivent le Standard™ et sont assez larges et pas spécifiques.
→ Je recommande de corriger chaque bug détecté.
Google Search Console
Rapport : Améliorations → Forum de discussion : https://search.google.com/search-console/r/discussion-forum?hl=en
Ceci donne un retour d’information direct sur les informations traitées par le robot d’exploration de Google.
→ Ces rapports sont en quelque sorte des faits contraignants concernant le SEO de Google : Si Google annonce que quelque chose ne va pas, Google pense aussi que c’est mal - même si ce n’est pas le cas.
→ Si quelque chose est signalé comme « invalide » ou « à améliorer », je recommande de réfléchir d’abord à une solution. Et s’il n’y a pas d’effets secondaires connus, implémentez toujours une solution.
Google : Test des résultats enrichis
https://search.google.com/test/rich-results?hl=en
Ceci ne donne qu’un retour d’information simulé et n’est pas le robot d’exploration de Google.
Mon avis : Outil marketing de Google pour dire aux propriétaires de sites « Faites quelque chose concernant vos données structurées ! ».
→ Cet outil est quelque peu négligé par Google et n’est pas toujours à jour avec les dernières recommandations techniques fournies par Google lui-même.
→ Le Test des résultats enrichis ne donne pas toujours le même résultat que la Google Search Console – en cas de doute : Faites davantage confiance à la Google Search Console.
Laissez-moi écrire une pseudocode pour la vérification actuelle affichée dans la Search Console. Je pense que cela aidera beaucoup sur ces fils de discussion. Je pourrais vous envoyer le ShEx ou le SHACL mais ceux-ci sont beaucoup moins lisibles par l’homme.
if not (IsDeletedContent() OR IsExternalContent())
then if not ("text" OR "articleBody" OR "sharedContent" OR "image" or "video")
then report(OneOfThreeRequired("text", "image", "video"))
if not ("author")
then Report(Required("author"))
if not("datePublished")
then Report(Required("datePublished")
L’idée est que si le DiscussionForumPosting/OP a son contenu sur la page actuelle, il devrait y avoir un champ de contenu quelconque.
Si le DiscussionForumPosting fait référence à du contenu sur une page différente (comme sur la page d’origine d’un contenu multi-pages), il peut simplement avoir un stub qui contient n’importe quoi (comme le titre du sujet de l’OP) puis référence l’URL de la première page. C’est la vérification IsExternalContent() qui vérifie simplement si url != page URL.
Le deuxième exemple dans nos docs était censé modéliser exactement ce cas (la 14ème page fait référence à un stub de message de la première page).
author et date sont actuellement requis dans tous les cas dans nos règles de validation. C’est surtout pour éviter un saut supplémentaire pour trouver ces données. Vous pourriez au moins voir à quel point connaître la date de l’OP pourrait être utile pour comprendre à quel point le commentaire est obsolète. Pouvez-vous simplement y insérer des méta-éléments avec ces données ? Je ne me souciais pas autant de ces champs en ce qui concerne le gonflement de la page avec des données redondantes.
Est-ce qu’ajouter l’URL de l’author alors que son chemin est bloqué par notre robots.txt par défaut a encore du sens ? Devrions-nous supprimer le blocage du robots.txt maintenant que nous promouvons ces URL ?