JSON-LD 常见问题排查

JSON-LD 的错误通常分为三类:JSON 语法错误、语义映射错误、目标平台规则不满足。排查时先确认页面最终输出,再看验证工具报告。

JSON 语法错误

application/ld+json 必须是合法 JSON。

错误示例:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  headline: "未加引号的键",
}
</script>

问题包括:

  • headline 没有双引号。
  • 末尾有尾随逗号。
  • JSON 中不能写注释。

正确示例:

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "合法 JSON"
}

@context 写错

常见问题:

问题 影响
拼写为 context JSON-LD 处理器不会把它当作上下文
使用不可访问的远程地址 处理器可能无法展开字段
自定义字段没有映射 消费方不知道字段语义
混用多个上下文导致覆盖 字段展开结果和预期不同

排查方法:用 JSON-LD Playground 展开文档,查看字段是否展开为期望 IRI。

@type 与页面不匹配

不要只因为某个类型看起来“更利于 SEO”就使用它。

页面内容 不建议 建议
普通文章 Product Article 或更具体文章类型
公司介绍页 FAQPage OrganizationAboutPage
商品分类页 单个 Product CollectionPageItemList,按平台规则决定
作者页 Article PersonProfilePage

如果结构化数据和页面主体不一致,验证工具可能通过,但搜索质量系统仍可能忽略。

页面内容与 JSON-LD 不一致

这是生产环境最常见的问题:

  • 页面显示缺货,JSON-LD 仍是 InStock
  • 页面价格已变化,JSON-LD 仍是旧价格。
  • 页面标题修改了,headline 没同步。
  • 页面删除 FAQ,JSON-LD 仍保留 FAQ。

解决方式:从页面同一份数据源生成 JSON-LD,并为动态字段建立缓存失效策略。

客户端渲染导致抓取缺失

如果 JSON-LD 由客户端 JavaScript 异步插入,某些爬虫或测试工具可能看不到最终内容。建议:

  • 能服务端渲染就服务端渲染。
  • 静态站点在构建期输出 JSON-LD。
  • 如果必须客户端注入,使用目标平台工具测试实际抓取结果。
  • 避免在用户交互后才生成结构化数据。

图片 URL 不可访问

结构化数据中的图片应该使用可公开访问的绝对 URL:

{
  "image": [
    "https://example.com/images/article-1x1.jpg",
    "https://example.com/images/article-4x3.jpg"
  ]
}

避免使用:

  • 本地路径,如 /Users/me/image.jpg
  • 需要登录的图片。
  • 很快过期的签名 URL。
  • robots.txt 或防盗链策略阻止的资源。

验证工具结果不一致

不同工具关注点不同:

工具 主要作用
JSON-LD Playground 检查 JSON-LD 展开、压缩、RDF 转换
Schema.org Validator 检查 Schema.org 类型和属性
Google Rich Results Test 检查 Google 搜索支持的富媒体结果资格
Search Console 观察线上抓取和索引后的状态

一个工具通过,不代表所有目标平台都接受。要按最终目标选择权威工具。

排查顺序

  1. 查看页面最终 HTML,确认脚本真实存在。
  2. 复制 script 内容,用 JSON 解析器验证。
  3. 用 JSON-LD Playground 展开,确认语义映射。
  4. 用 Schema.org Validator 检查类型和属性。
  5. 如果目标是 Google 搜索,用对应 Search Central 文档和测试工具检查。
  6. 上线后看 Search Console 和日志,不只依赖本地测试。