Schema 可视化工具:JSON-LD 关系图与检查

作者 Linus Li · 更新于 · 免费,在浏览器本地运行

给这个工具打分已有 1 人评分

输入网址,或者把 JSON-LD 粘贴到下面,工具会把其中的实体画成关系图,按 schema.org 和 Google 搜索中心的要求逐项检查,能自动修的错误直接生成修正后的代码。粘贴的代码只在你的浏览器里处理,不会上传。

怎么用

  1. 在左侧输入框粘贴内容。可以是一段 JSON-LD、带 @graph 的 JSON,也可以是整页 HTML 源码。粘贴 HTML 时,工具会自动提取所有 <script type="application/ld+json">。
  2. 点击「生成关系图」,或按 Ctrl / ⌘ + Enter。
  3. 在关系图上拖动可以平移,按住 Ctrl / ⌘ 滚动滚轮可以缩放。点击任意节点,左下方会显示这个实体的全部属性和原始 JSON。
  4. 右上角可以切换四个视图:关系图、实体身份、机器读到了什么、一键修复。下方「问题检查」列出所有错误和建议,点击某一条会定位到对应节点;「富媒体结果」显示页面可能触发的 Google 富媒体结果类型,以及必需字段是否齐全。

一键修复、机器读到了什么、实体身份

一键修复列出工具能自动修正的问题,并给出修正后的完整代码,可以直接复制替换。目前能自动处理的包括:价格里的货币符号和千分位、小写的货币代码、「In stock」这类自由填写的库存状态、2026/12/31 这类非标准日期、纯文本的作者、协议不完整的地址、大小写写错的 @type 和属性名、空值和重复的 sameAs、写法不一致的 @id 引用、面包屑的编号。填写页面网址后,还能把相对地址补全成完整地址,并给页面上唯一的组织和网站补上固定的 @id。修复前后的质量分会并排显示。模板变量没有渲染、缺少必需内容这类问题需要人工判断,工具不会替你编数据。

机器读到了什么把结构化数据翻译成一段话,例如「一个商品:XX 外套,品牌 XX,售价 1299 USD,有货,评分 4.7(23 条)」。格式有误、机器可能读不出来的值会单独标出来。这个视图适合给不看代码的同事或客户解释:搜索引擎和 AI 能从页面上直接拿到哪些信息,又有哪些信息根本没有写进去。

实体身份把页面上的组织、人物、网站和品牌单独列成卡片,显示名称、@id、关联的外部平台,以及谁引用了它。每张卡片有一份实体完整度清单,例如组织有没有固定 @id、logo、至少两个 sameAs、Wikipedia 或 Wikidata 链接、联系方式;作者有没有关联到所属组织。这些信息决定了搜索引擎能不能把你的品牌和作者对应到知识图谱里的实体。

检查一个网页最快的办法是直接输入网址,工具会由服务器抓取页面并提取其中的 JSON-LD。服务器抓到的是网页的原始 HTML,所以 Shopify 应用、标签管理器等用 JavaScript 插入的结构化数据抓不到。遇到这种情况,可以用工具里的书签按钮:把它拖到书签栏,在目标网页上点一下,浏览器里实际渲染出的所有 JSON-LD 都会被复制到剪贴板,再粘贴回来即可。

关系图怎么读

每张卡片是一个实体,第一行是 @type,第二行是 @id(如果有)。卡片之间有两种连线:

  • 红色实线表示嵌套:一个实体直接写在另一个实体的属性里,例如 Product 的 offers 里写了一个 Offer。
  • 蓝色虚线表示 @id 引用:属性里只写了 {"@id": "..."},指向页面上另一处定义的实体。例如 BlogPosting 的 author 指向 Person。

虚线边框的卡片表示这个 @id 在当前页面没有定义。如果它定义在网站的其他页面,这是正常的跨页面引用;如果你本意是引用本页的实体,通常是 @id 写法不一致,例如多了或少了结尾的斜杠。

为什么要关心 @id

结构化数据不只是为了拿到星级和价格这类富媒体结果。Google 和 AI 搜索引擎还会用它判断「这个页面在说哪个品牌、哪个作者」。同一个组织在首页、文章页、商品页里各写一遍,又没有共用的 @id,搜索引擎就要自己猜这几段描述是不是同一个实体。

比较稳妥的写法是:在全站固定一个 @id,例如 https://example.com/#organization,完整属性写一次,其他地方只写 {"@id": "https://example.com/#organization"}。本工具会提示以下几种情况:

  • Organization、Person、WebSite 没有 @id
  • 同名的组织在页面上定义了多次
  • 引用的 @id 和定义的 @id 只差斜杠、大小写或 www
给老手:工具检查的完整清单

语法与词汇

  • JSON 语法错误,并提示多余逗号、中文引号这类常见原因
  • 缺少 @context,或 @context 不是 schema.org
  • @type 拼写和大小写(内置 300 多个常用类型,表外的类型只提示、不扣分)
  • 属性名首字母大写、不存在的 JSON-LD 关键字(如 @Type)

取值

  • URL 类属性(url、image、logo、sameAs、item 等)使用相对地址或省略协议
  • 日期不是 ISO 8601,有时间但没有时区
  • price 带货币符号或千分位,priceCurrency 不是 ISO 4217 三位代码
  • availability、itemCondition 不是 schema.org 枚举值
  • ratingValue 超出 bestRating / worstRating 范围,评价数量为 0
  • GTIN 位数不对
  • 未渲染的模板变量({{ }}、{% %}、${}),常见于 Shopify 主题和插件
  • 空值、占位文本、sameAs 重复

按类型检查必需与建议属性

覆盖 Article 及其子类型、Product、Offer、AggregateOffer、Review、AggregateRating、BreadcrumbList、LocalBusiness 及其子类型、Organization、Person、Event、Recipe、VideoObject、JobPosting、SoftwareApplication、FAQPage、ProfilePage、DiscussionForumPosting、QAPage、Dataset 等。必需属性依据 Google 搜索中心各富媒体结果的文档,缺失记为错误;建议属性缺失记为建议。

已停用或受限的功能

  • FAQ 富媒体结果自 2023 年 8 月起只对知名的政府和健康类网站展示
  • HowTo 富媒体结果已于 2023 年停用
  • 站内搜索框(Sitelinks Search Box)已于 2024 年 11 月停用

评分规则:满分 100,每个错误扣 15 分,每个警告扣 5 分,每条建议扣 2 分,提示不扣分。评分只反映标记本身的完整度,不代表 Google 一定展示富媒体结果。

常见问题

输入网址时,工具是怎么抓取的?

浏览器的同源策略不允许网页里的脚本读取其他网站,所以输入网址时由本站的服务器代为抓取。服务器只返回页面里的 JSON-LD 和 canonical,不保存页面内容。为了防止被滥用,抓取有频率限制(每个 IP 每小时 30 次、每天 150 次),同一网址 10 分钟内重复检查会使用缓存。抓取时使用的 User-Agent 是 LinusSEO-Tools/1.0,只能抓取公开网址。

和 Google 富媒体结果测试有什么区别?

Google 富媒体结果测试 会真实抓取并渲染页面,结论以它为准。本工具的重点是看清实体之间的关系,并补充 Google 测试不提示的问题,例如重复定义的组织、写法不一致的 @id、未渲染的模板变量。两个工具配合使用效果更好。Schema Markup Validator 只检查 schema.org 词汇是否合法,不判断 Google 的要求。

代码会被上传或保存吗?

粘贴的代码不会。解析、绘图、检查都在本地完成;只有输入网址时,网址会发送给本站服务器用于抓取。为了方便下次打开,最近一次输入会保存在你浏览器的 localStorage 里,点「清空」即删除。点「复制分享链接」时,内容会压缩后写进网址的 # 部分,# 后面的内容浏览器不会发送给服务器。

质量分 100 分就能拿到富媒体结果吗?

不一定。Google 是否展示富媒体结果,还取决于页面质量、内容是否与标记一致,以及该功能在当地是否开放。

延伸阅读

微信扫码关注公众号

微信扫码关注公众号