Hallo. Wir erhalten derzeit diese Nachricht in unserer Google Search Console. Ich bin mir nicht ganz sicher, was das bedeutet. Könnten Sie mir mehr Klarheit über dieses Problem verschaffen? Gibt es eine Lösung? Außerdem möchte ich erwähnen, dass wir versucht haben, mehrere Themes für die Plattform zu verwenden, aber derselbe Fehler weiterhin besteht.
Strukturierte Daten helfen Suchmaschinen im Wesentlichen, mehr Kontext zu liefern.
Die Google Suche findet in diesem Thema kein optionales Feld url.
Sie können auf validator.schema.org sehen, dass es ohne Warnungen vollkommen gültig ist.
Es gibt keinen Grund zur Sorge.
Wenn die Google Suche dieses Feld jedoch hervorhebt, wäre das ein gültiger Grund, es in Discourse hinzuzufügen.
Wie @Arkshine oben erklärt hat, ist dies kein Fehler, sondern ein Vorschlag von Google, ein optionales Feld im Schema hinzuzufügen. Ich werde mich darum kümmern.
Ich habe versucht, die von Ihnen gemeldeten Fehler zu reproduzieren, indem ich Metathemen im Google Rich Results Test getestet habe, aber ich sehe keine Fehler.
Können Sie einen Link zu dem Thema angeben, für das Google Fehler anzeigt?
Das Erste, was Sie beachten sollten, ist, dass der von Ihnen gezeigte Link angibt, dass der Link kein Discussion Forum Schema hat. Dieser Link hat nur ein „Breadcrumbs“-Schema, überhaupt kein „Discussion Forum“-Schema. Das passiert, weil Sie den Link im „Smartphone“-Modus und nicht im „Desktop“-Modus testen.
Ich sollte darauf hinweisen, dass es meiner Meinung nach ein wichtiger Fehler in Discourse ist, dass das Schema im Smartphone-Modus nicht angezeigt wird. Google würde es nicht bemerken (da Google nur Fehler in vorhandenem Schema kennzeichnet), aber das Crawling und Indexieren von Smartphones ist seit Jahren der Standard für Google, daher ist es wichtig, dass jedes Schema sowohl im Smartphone-Modus als auch im Desktop-Modus erscheint.
Dies geschieht, weil der erste Beitrag ab der zweiten Seite in der Crawler-Ansicht nicht enthalten ist. @sam sollen wir den ersten Beitrag auf allen Seiten in der Crawler-Ansicht einbeziehen, um die Schema-Probleme zu beheben?
Die andere Option wäre, Microdata Schema durch JSON-LD zu ersetzen (was Google empfiehlt). Dies würde gerenderte Daten von strukturierten Daten entkoppeln und würde auch auf Mobilgeräten funktionieren (wie Dan oben erwähnte).
Wir verwenden bereits JSON-LD-Schema im solved plugin.
Fügen Sie die Daten/den Text des ersten Beitrags nicht auf nachfolgenden Seiten ein, aber fügen Sie immer itemprop="url" hinzu, der auf die erste Seite verweist:
Im Gegensatz zu unserer allgemeinen Präferenz für strukturierte Daten empfehlen wir, die DiscussionForumPosting-Markup nach Möglichkeit in Microdata (oder RDFa) bereitzustellen. Dadurch müssen Sie keine großen Textblöcke in Markup duplizieren. Dies ist jedoch nur eine Empfehlung, und JSON-LD wird weiterhin vollständig unterstützt.
Dieses gesamte Link-Tag sollte nur für post.is_first_post definiert werden – es ist nicht nötig, es mit der identischen URL für jedes Comment-Element zu wiederholen.
Ja, das machen wir jetzt gemäß dem neuesten Commit, aber auch nach dem Hinzufügen fehlen uns einige erforderliche Felder (author, datePublished, text) für nachfolgende Seiten (?page=2).
Großartig erkannt! Behoben in diesem PR:
Oh ja. Dies wurde auch von @rrlevering hier bestätigt:
Ich schätze, wir müssen das Microdata-Schema verbessern und gleichzeitig sicherstellen, dass wir keine Inhalte auf nachfolgenden Seiten duplizieren.
Vielen Dank für die Korrektur der mainEntityOfPage-Eigenschaft.
Und gut gefunden mit dem meta-Tag im Gegensatz zum link-Tag <link itemprop='url' content='<%= @topic_view.absolute_url %>'>
Noch besser: <link itemprop='url' href='<%= @topic_view.absolute_url %>'>
Siehe:
– Dieser Link ist alt, aber YouTube verwendet heute noch link itemprop='url' href='…' –
„Um eine URL in HTML5 anzugeben, […] [für link-Tag] verwenden Sie das href-Attribut“
„Wenn Sie eine URL als Wert des content-Attributs eines meta-Elements verwenden, stellt dies einen String dar (der wie eine URL aussieht), keine URL.“
Besonderer Hinweis zu: Entweder text oder image oder video
→ “Dies ist nicht erforderlich, wenn Sie einen Beitrag auf einer anderen Seite (mit einer externen url) darstellen, wie z. B. auf späteren Seiten von Foren oder Forumskategorieseiten.” ←
Empfohlene Eigenschaften
url
[…]
Besonderer Hinweis zu: url
„Die kanonische URL der Diskussion. Bei mehrseitigen Threads setzen Sie diese Eigenschaft auf die URL der ersten Seite. Für eine einzelne Diskussion ist dies normalerweise die aktuelle URL.“
Daher schließe ich:
Wir müssen text auf page=2+ nicht erneut hinzufügen (ERLEDIGT)
Wir müssen die optionale Eigenschaft url hinzufügen – insbesondere zu page=2+ (ERLEDIGT)
Weitere Untersuchung erforderlich:
Sind diese „erforderlichen Eigenschaften“ author, author.name und datePublished wirklich auf page=2+ erforderlich oder können wir darauf verzichten?
→ validator.schema.org beschwert sich nicht über fehlende Eigenschaften auf page=2+. (ERLEDIGT)
→ Abwarten und prüfen Sie die „Google Search Console → Bericht: Erweiterungen → Diskussionsforum“ auf neue Live-Daten, nachdem diese bereits implementierten Korrekturen eine Weile live sind. (ZU ERLEDIGEN)
Allgemeiner Validator: https://validator.schema.org/
Dies prüft die Konformität strukturierter Daten mit Schema-Definitionen und die HTML/XML-Konformität der Auszeichnung.
→ Die geprüften Anforderungen folgen dem Standard™ und sind ziemlich breit gefächert und nicht spezifisch.
→ Ich empfehle, jeden erkannten Fehler zu beheben.
Google Search Console
Bericht:Erweiterungen → Diskussionsforum: https://search.google.com/search-console/r/discussion-forum?hl=en
Dies gibt direktes Feedback zu den vom Google-Crawler verarbeiteten Informationen.
→ Diese Berichte sind irgendwie bindende harte Fakten über Google SEO: Wenn Google etwas als falsch ankündigt, hält Google es auch für falsch – auch wenn es das nicht ist.
→ Wenn etwas als „ungültig“ oder „zur Verbesserung“ gekennzeichnet ist, empfehle ich, zuerst über eine Korrektur nachzudenken. Und wenn es keine bekannten Nebenwirkungen gibt, implementieren Sie immer eine Korrektur.
Google: Rich Results Test
https://search.google.com/test/rich-results?hl=en
Dies gibt nur simuliertes Feedback und ist nicht der Google-Crawler.
Meine Meinung: Ein Google-Marketing-Tool, um Website-Betreibern zu sagen: „Tun Sie etwas mit Ihren strukturierten Daten!“.
→ Dieses Tool wird von Google irgendwie vernachlässigt und ist nicht immer auf dem neuesten Stand der technischen Empfehlungen von Google selbst.
→ Der Rich Results Test liefert nicht immer das gleiche Ergebnis wie die Google Search Console – im Zweifelsfall: Vertrauen Sie besser der Google Search Console.
Lassen Sie mich Pseudocode für die aktuelle Prüfung schreiben, die in der Search Console angezeigt wird. Ich denke, das wird auf diesen Threads sehr hilfreich sein. Ich könnte Ihnen ShEx oder SHACL senden, aber diese sind viel weniger gut lesbar.
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")
Die Idee ist, dass, wenn das DiscussionForumPosting/OP seinen Inhalt auf der aktuellen Seite hat, ein Inhaltsfeld irgendeiner Art vorhanden sein sollte.
Wenn das DiscussionForumPosting auf Inhalte auf einer anderen Seite verweist (wie auf der Originalseite von mehrseitigen Inhalten), kann es einfach einen Stub haben, der alles hält (wie den OP-Thementitel) und dann auf die URL der ersten Seite verweist. Das ist die IsExternalContent()-Prüfung, die nur prüft, ob url != page URL.
Das zweite Beispiel in unseren Dokumenten sollte diesen Fall genau modellieren (die 14. Seite verweist auf einen Stub-Beitrag von der ersten Seite).
author und date sind in unseren Validierungsregeln derzeit unabhängig voneinander erforderlich. Das dient hauptsächlich dazu, einen zusätzlichen Schritt zur Ermittlung dieser Daten zu vermeiden. Sie könnten zumindest sehen, wie nützlich es sein könnte, das Datum des OP zu kennen, um zu verstehen, wie veraltet der Kommentar ist. Können Sie einfach Meta-Elemente mit diesen Daten einfügen? Ich habe mir wegen des Aufblähens der Seite mit redundanten Daten keine so großen Sorgen um diese Felder gemacht.
Macht es noch Sinn, die author-URL hinzuzufügen, während sie durch unsere Standard-robots.txt blockiert ist? Sollten wir den Block aus der robots.txt entfernen, jetzt, wo wir diese URLs bewerben?