您好。我们目前在 Google Search Console 中收到此消息。我不确定它意味着什么。能否请您详细解释一下这个问题?是否有解决方案?另外,我想提一下,我们已经尝试过使用多个平台主题,但同样的错误仍然存在。
1 个赞
你好,hiccup!
结构化数据本质上可以帮助搜索引擎提供更多上下文。
Google 搜索在该主题中找不到可选的 url 字段。
您可以在 validator.schema.org 上看到,它在没有任何警告的情况下是完全有效的。
没什么好担心的。
话虽如此,如果 Google 搜索突出显示此字段,那么将其添加到 Discourse 中将是合理的。
3 个赞
techAPJ
(Arpit Jalan)
2023 年12 月 4 日 05:55
5
如 @Arkshine 在上面解释的,这并非 bug,而是 Google 的一项建议,即在 schema 中添加可选字段。我会研究一下。
2 个赞
dfabulich
(Dan Fabulich)
2023 年12 月 17 日 23:00
7
来自另一个帖子:
[quote=“Dan Fabulich, post:8, topic:286762, full:true, username:dfabulich”]
你们都可以检查你们的 Google Search Console 报告,但当我访问 https://search.google.com/search-console/r/discussion-forum 并检查我的论坛时,我看到这个:
项目无效的原因:
应指定“text”、“image”或“video”之一
缺少“datePublished”字段
缺少“author”字段
rrit
(Ayke)
2023 年12 月 17 日 23:10
8
Dan Fabulich:
所以,“url”是可选的,
itemprop="url" 有助于 Google 将属于同一主题的不同 URL 上的多个 Comment 块合并。
techAPJ
(Arpit Jalan)
2023 年12 月 26 日 13:36
9
Dan Fabulich:
但这里也有一些实际的、真正的错误。
我尝试在 Google 富媒体搜索结果测试 中测试元主题来重现您看到的错误,但我没有看到任何错误。
您能否提供一个 Google 显示错误的帖子的链接?
dfabulich
(Dan Fabulich)
2023 年12 月 26 日 18:59
10
您首先应该注意到的是,您提供的链接表明该链接不 包含讨论论坛架构。该链接仅包含“面包屑”架构,根本不包含“讨论论坛”架构。这是因为您在“智能手机”模式下测试链接,而不是在“桌面”模式下测试。
https://search.google.com/test/rich-results/result?id=TlLcA6saLMo3BrxbQYnFuw
当您将链接切换到桌面测试时,“讨论论坛”架构会出现,并标记出“缺少字段 url”问题。
要重现关键错误,您必须使用 ?page=2 URL 参数测试一个长帖,如下所示:
1 个赞
dfabulich
(Dan Fabulich)
2023 年12 月 26 日 19:01
11
我应该指出,我认为 Discourse 中一个重要的 bug 是模式在智能手机模式下不显示。Google 不会知道要标记它(因为 Google 只标记存在的模式中的错误),但多年来,智能手机抓取和索引一直是 Google 的 默认设置 ,因此任何模式同时出现在智能手机模式 和 桌面模式中都很重要。
2 个赞
techAPJ
(Arpit Jalan)
2023 年12 月 27 日 10:55
12
第一个帖子中描述的问题以及其他一些问题已在此提交中修复:
committed 05:43AM - 27 Dec 23 UTC
This commit makes some improvements to a topic's structured data based
on the r… ecommendation on meta topic: https://meta.discourse.org/t/google-structured-data-for-forums-and-profile-pages/286762/9
感谢 @rrit 在 此处 提出的建议!
发生这种情况是因为从第二页开始,爬虫视图中不包含第一帖。 @sam 我们是否应该在爬虫视图的所有页面中包含第一帖以修复 schema 问题?
1 个赞
sam
(Sam Saffron)
2023 年12 月 27 日 21:35
13
不,我不这么认为,重复内容从来都不是好事,还有其他选择吗?
3 个赞
techAPJ
(Arpit Jalan)
2023 年12 月 28 日 07:39
14
Sam Saffron:
还有其他选择吗?
另一种选择是用 JSON-LD 替换 microdata schema (Google 推荐 )。这将使渲染数据与结构化数据分离,并且也适用于移动设备(正如 Dan 上面 指出的那样)。
我们已经在 solved 插件 中使用了 JSON-LD schema。
3 个赞
rrit
(Ayke)
2023 年12 月 30 日 15:44
16
3 个赞
rrit
(Ayke)
2023 年12 月 30 日 15:48
17
没有例外就没有规则:对于 DiscussionForumPosting,Google 推荐使用 Microdata 而不是 JSON-LD。
请参阅 Discussion Forum (DiscussionForumPosting, SocialMediaPosting) Schema Markup | Google Search Central | Documentation | Google for Developers
技术指南
与我们一般的结构化数据偏好不同,我们建议尽可能使用 Microdata(或 RDFa)提供 DiscussionForumPosting 标记。这可以避免您需要在标记中重复大段文本。但是,这仅仅是一项建议,JSON-LD 仍然完全受支持。
4 个赞
rrit
(Ayke)
2023 年12 月 30 日 15:51
18
这是否已经在 meta.discourse.org 上上线了?
请参阅我在 github 上的评论 :
整个 link-tag 应该只为 post.is_first_post 定义——对于每个 Comment 项,无需重复相同的 URL。
目前在 meta.discourse.org 上,引号被篡改了:
‘link itemprop=’mainEntityOfPage’ href=”…”’
请参阅 Schema Markup Validator
3 个赞
techAPJ
(Arpit Jalan)
2024 年1 月 1 日 08:25
19
是的,我们现在正按照最近的提交 进行操作,但即使添加了该提交,我们仍然缺少后续页面(?page=2)的一些必需字段(author、datePublished、text)。
抓得好!已在此 PR 中修复:
main ← fix/microdata-schema
opened 07:21AM - 01 Jan 24 UTC
https://github.com/discourse/discourse/commit/d9ca6c3bb90c15d32b3f2ece1709522be6… 5fb690#r135940042
哦,是的。@rrlevering 在这里也证实了这一点:
所以我想我们必须改进 microdata 模式,同时确保我们不会在后续页面上重复内容。
7 个赞
rrit
(Ayke)
2024 年1 月 1 日 15:00
20
感谢您修复了 mainEntityOfPage 属性。
并且关于 meta 标签与 link 标签的发现很棒
<link itemprop='url' content='<%= @topic_view.absolute_url %>'>
更好的是:
<link itemprop='url' href='<%= @topic_view.absolute_url %>'>
参见:
– 这个链接很旧,但 YouTube 今天仍然使用 <link itemprop='url' href='…'>。 –
html, semantic-markup
“要在 HTML5 中提供 URL,[…] [对于 link 标签] 使用 href 属性”
“如果您使用 URL 作为 meta 元素的 content 属性的值,它将表示一个字符串(看起来像 URL),而不是 URL。”
我重新检查了 Google 提供的关于 DiscussionForumPosting:属性 的文档:
必需属性:
author
author.name
datePublished
text 或 image 或 video 中的一个
关于:text 或 image 或 video 中的一个的特别说明
→ “如果您表示的是另一页上的帖子(带有外部 url),则不需要 此项,例如在论坛的后续页面 或论坛分类页面上。” ←
推荐属性
关于:url 的特别说明
“讨论的规范 URL。在多页主题中 ,将此属性设置为第一页的 URL 。对于单个讨论,这通常是当前 URL。”
所以我得出结论:
我们不需要在 page=2+ 上再次添加 text(完成)
我们必须添加可选属性 url - 特别是添加到 page=2+(完成)
需要进一步调查:
这些“必需属性” author、author.name 和 datePublished 在 page=2+ 上是否真的必需,或者我们可以不重复它们?
→ validator.schema.org 在 page=2+ 上没有抱怨缺少属性。(完成)
→ 等待一段时间后,在这些已实施的修复上线后,检查“Google Search Console → Report:Enhancements → Discussion forum”中的新实时数据。(待办)
结构化数据:工具和资源
Schema
schema.org
developers.google.com
验证器
schema.org
Google Search Console
Google: Rich Results Test
https://search.google.com/test/rich-results?hl=en
这只提供模拟反馈 ,不是 Google 爬虫 。
我的观点:Google 的营销工具,用于告诉网站所有者“请处理您的结构化数据!”。
→ 这个工具在某种程度上被 Google 忽略了,并且不总是与 Google 本身提供的最新技术建议保持同步。
→ Rich Results Test 的结果并不总是与 Google Search Console 一致 – 如果有疑问:最好信任 Google Search Console。
5 个赞
我来为“搜索控制台”中显示的当前检查编写一些伪代码。我认为这将在这些线程中大有帮助。我可以发送 ShEx 或 SHACL ,但那些可读性差得多。
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")
其思想是,如果 DiscussionForumPosting/OP 的内容在当前页面上,则应该有某种形式的内容字段。
如果 DiscussionForumPosting 引用的是不同页面上的内容(例如多页内容的原页面),则可以只包含一个占位符,其中包含任何内容(例如 OP 主题标题),然后引用第一个页面的 URL。这就是 IsExternalContent() 检查,它只是检查 url != page URL。
我们的文档 中的第二个示例应该完全模拟这种情况(第 14 页引用了第一页的占位符帖子)。
author 和 date 在我们的验证规则中目前是必需的。这主要是为了防止需要额外跳转来查找这些数据。您可以至少了解知道 OP 的日期对于理解评论的陈旧程度有多大用处。您能否将包含这些数据的 meta 元素放入其中?我不太担心这些字段会因冗余数据而导致页面臃肿。
7 个赞
techAPJ
(Arpit Jalan)
2024 年1 月 3 日 14:15
24
谢谢瑞安提供的背景信息和建议!
这已经完成了。后续页面(第 2 页及之后)的元数据 现在看起来不错 !
3 个赞
Falco
(Falco)
2024 年1 月 3 日 14:41
25
现在添加 author URL,即使它的路径被我们的默认 robots.txt 阻止,还有意义吗?我们现在推广这些 URL,是否应该从 robots.txt 中移除阻止?
2 个赞