很多站点在页面上加过 Structured Data,最常见的形式是 JSON-LD。上线那天测试通过,之后就再没人看过。等到某天发现搜索结果里的评分、价格、作者或者面包屑和页面对不上,才回头去翻那段代码。结构化数据本质上是给搜索引擎的一份“页面说明书”,写错了不会让整站崩掉,但会让这份说明书的可信度一点点流失。下面这套自查流程,大部分环节不需要写代码就能完成。
先确认一条底线:标记里写的,页面上要能找到
这是所有问题的根源。搜索引擎不要求标记和页面一字不差,但要求两者不矛盾。逐项对照时重点看这几类字段:
- 评分与评论数:页面上有真实的评论区吗?数字对得上吗?如果评论模块已经被下线,标记还在输出旧数据,就该一起删掉。
- 价格与库存:电商站点尤其常见。商品调价、下架之后,标记里的数字往往还停在几个月前。
- 面包屑:要和页面可见的路径、以及 URL 的层级一致。别出现页面上写“首页 > 教程 > 入门”,标记里却是另一条路径。
- 问答与操作步骤:FAQ、HowTo 这类内容必须真的显示在页面上,藏在代码里不算。
不要为了争取展示样式而编造评分、作者或更新时间。这类字段一旦被判定为不实,轻则该条目不再被采用,重则影响整站对标记的信任。
一次完整的自查步骤
- 打开页面源码,搜索 ld+json,把所有标记块找出来。一个页面出现三四个块很正常,但要确认它们之间不冲突。
- 检查语法:括号是否成对、字段之间有没有多余的逗号、引号有没有混用。JSON 解析失败时,整块标记都是无效的。
- 用结构化数据测试工具或富媒体测试跑一遍,重点看“检测到的项目”列表和所有警告,而不是只看有没有报错。
- 逐字段和页面内容对照:名称、图片、作者、发布时间、更新时间、所属栏目。
- 检查必填项是否缺失,尤其是 @context、@type、url、name 或 headline 这几个基础字段。
- 检查同一页面是否输出了两份互相打架的标记,例如两个 Product、两个 Article、两个 Organization。
- 检查模板批量输出时有没有把默认值带出来:默认作者写成 admin、默认时间停在很久以前、默认价格是 0、默认图片指向一张占位图。
- 抽样不同栏目、不同模板的页面各三五个,不要只看首页和一篇手工调过的文章。
几个容易被忽略的坑
时间字段
发布时间和更新时间要和页面上显示的一致。更新旧文章时,如果只改了页面文字却没动标记,标记会持续输出旧时间;反过来,有些模板会把更新时间自动刷成“当前时间”,让一篇旧文看起来像刚发的。两种都不理想,建议以页面实际展示的时间为准。
图片与链接地址
标记里的图片地址尽量用绝对路径,避免带跟踪参数和缩略图裁切参数。图片被替换、防盗链规则调整、CDN 目录变更之后,标记里指向的地址可能已经 404,这类问题不会报错,只会静默失效。
聚合页与列表页
列表页塞 ItemList 时,条目要和页面上真实存在的链接对应。筛选条件把列表清空了、或者分页翻到后面没有内容时,就不要继续输出空的条目列表。
把它变成一件例行的事
- 模板改动上线后,抽一两个页面回归验证,别等改版整包上线再回头补。
- 内容批量导入、迁移之后,抽样检查时间、作者、图片三类字段。
- 把每次修改记在同一个地方:改了哪个字段、为什么改、什么时候验证过。
结构化数据不保证任何展示效果,它只是把页面上已有的信息,用搜索引擎能读懂的方式再说一遍。把“说的”和“做的”对齐,剩下的事情交给时间和内容本身。