这类问题我又碰上了一次。文章页的 Article 结构化数据里 headline、author、datePublished、image 都写了,富媒体测试工具里 Article 那一项一直显示未检测到。页面本身没有报语法错误,其他类型的数据也能正常解析。

第一反应是「页面同时输出了 WebPage 和 Article,两者之间没有引用关系」,验证下来不成立。

排查方向其实有限,先把可能性排一排。模板漏了 mainEntityOfPage 字段,Article 没有和页面建立关联;mainEntityOfPage 里的 @id 写成了相对路径,实体对不上;JSON-LD 被压缩插件改动,字段名大小写被转成小写。

先把页面源码里的结构化数据复制到测试工具里跑一遍

再往下确认 mainEntityOfPage 是否存在以及格式

curl -s https://www.example.com/p/1024 | grep -o 'mainEntityOfPage[^,]*'

补上指向当前页面的 mainEntityOfPage

"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.example.com/p/1024"}

剩下的就是确认输出没有被压缩插件转义或改写

curl -s https://www.example.com/p/1024 | grep -o '"@type":"Article"'

恢复的判定其实很直接。测试工具里 Article 显示可用,富媒体预览能正常渲染,搜索结果开始出现文章卡片。

这里还有个坑。结构化数据缺字段往往不报错,只是不展示,排查时对着必填项逐条比,比看报错信息快。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189