大多数自认为已经处理好结构化数据的网站,只是确认了某个地方存在一个 script 标签。以下为什么有效的 JSON、声明的 @type,以及覆盖所有页面模板,是三个彼此独立——且各自都很常见——的失败点。
在大多数团队的工作流中,结构化数据被当作一次性的勾选框来处理:在某个地方加上一个 JSON-LD 块,确认它没有抛出可见的错误,然后就此翻篇。这种处理方式误解了这些标记的真正用途。Schema.org 的 JSON-LD 不是给你现有内容做的装饰 — 它是一份独立的、机器可读的声明,说明你的内容是什么,面向那些否则只能从非结构化文本中去推断的系统。“存在”和“正确描述你的实体”是两条不同的标准,而大多数自认为已经处理好结构化数据的网站,只是通过了第一条。
为什么“它在那儿”不等于“它管用”
一个 JSON-LD 块是一个包含 JSON 字符串的 script 标签,而 JSON 是不留情面的语法 — 一个尾随逗号、一个从 CMS 字段里拉取出来的标题中未转义的引号、一个缺失的闭合花括号,整个块就会解析失败。当这种情况发生时,你不会得到部分结果,也不会得到警告横幅。你什么都得不到:这个块对任何试图读取它的东西都是不可见的,就好像你从未添加过它一样,而对于一个快速扫一眼 script 标签的人来说,它在你的页面源码里看起来依然是存在的。这是“我们有结构化数据”和“我们有的结构化数据真正起作用”之间最常见的一道鸿沟 — 问题不在于团队忘了添加标记,而在于一个动态生成的块在某个具体的内容边缘情况下无声地坏掉了,而且因为页面上没有任何可见变化,没人注意到。
一个有效却声明了错误(或没有)@type 的块仍然是不完整的
语法上有效的 JSON-LD,如果声明了错误的 @type 或根本没有声明,解决了解析问题却没有解决真正的问题。@type 是告诉消费方系统它正在看的是哪种实体的那一部分 — Product、Article、Organization、FAQPage,以及 Schema.org 词表中的其余类型,其存在正是为了让页面不必从散文文字中去推断。一个解析正确却省略了 @type,或是把它错误地嵌套在解析器不会遍历的结构里的块,是一段存在却实际上没有给任何东西分类的标记。这是比坏掉的 JSON 更隐蔽的失败,因为它完全不产生任何错误 — 页面只是悄悄地没有声明它是什么,其结果与完全没有结构化数据一样,只不过是通过一条看起来更有说服力的路径达到的。
覆盖缺口:一个页面做得好,其他所有模板都空着
实践中最一致的模式并不是坏掉的标记 — 而是不均衡的覆盖。首页获得了真正的关注(往往是因为某个开发者在网站上线时,刻意地实现了一次 Organization schema),而真正驱动网站大多数已收录页面的那些模板 — 产品页、文章页、分类列表页 — 却什么都没有。一个标记得当的首页之所以会造成一种“完整”的错觉,恰恰是因为它是最可能被手动检查的那个页面。认真审计结构化数据,意味着要跨页面类型抽样,而不是确认首页看起来没问题,就从那里外推。
Microdata 和 RDFa 的用武之地
多年来,JSON-LD 一直是 Google 推荐的格式,因为它存在于独立的 script 块中,独立于周围的 HTML — 可以在不触及内容标记本身的情况下添加、更新或修正它。Microdata 和 RDFa 则把同类声明直接作为 HTML 属性嵌入(itemscope/itemtype,或 typeof/vocab),它们仍然有效,也仍然被识别,但会把结构化层与模板标记耦合在一起,使其更经不起改动,也更难一目了然地审计。从旧模板迁移过来的网站,有时会把 Microdata 一路带过来,却没意识到 JSON-LD 此后已成为更易于维护的选择 — 这不是错,只是值得刻意抉择,而不是意外地继承。
这件事更新一层的理由:面向 AI 检索的机器可读事实
结构化数据最初面向的受众是构建富结果(rich results)的搜索引擎 — SERP 中的星级评分、FAQ 手风琴、面包屑路径。这个受众已经扩大了。综合答案的 AI 系统,出于与搜索引擎一直以来的相同原因,从同样显式、无歧义的声明中获益:一个类型清晰、属性已声明的 Organization 或 Product 实体,比用散文表述的等价信息更容易提取出正确的事实,因为后者必须从句子结构中解析出来。这并不能取代我们在 GEO & AI 可见性指南或 追踪 AI 引用中讨论的内容与爬虫访问那一侧的工作 — 它是相邻的一个杠杆,值得基于同一个根本原因去扳动:让你实体的事实对机器读者而言无歧义,无论阅读的是哪一种机器。
一次真正的审计需要确认什么
在每个重要的页面模板上,按顺序做三项检查:JSON-LD 到底能不能解析为有效的 JSON(而不只是“是否有一个 script 标签存在”);它是否针对页面实际是什么声明了合适的 @type;以及这种覆盖是否在你具有代表性的模板样本上成立,而不仅仅是首页。SearchVitals 的结构化数据检查正是按这个顺序运行的 — JSON-LD、Microdata 和 RDFa 的存在性、JSON 有效性以及声明的类型 — 覆盖每个网站的首页以及一组抽样出来的其他页面,正是为了不让一个干净的首页掩盖其他所有地方空着的模板。现在就用我们免费的 Structured Data & GEO Readiness Checker 对单个页面跑一遍这完全相同的顺序。至于与其并行的其余页面内因素,参见我们的 On-Page SEO 指南。