用途
json-ld-valid 是 front-end-checklist 项目中的一条规则,用于在生成或审查页面中的 <script type='application/ld+json'> 代码块时,确保结构化数据合法且完整。它适用于为文章(Article)、产品(Product)、常见问题(FAQPage)、面包屑(BreadcrumbList)等类型实现结构化数据的场景。
主要能力
该规则的核心观点是:无效的 JSON-LD 会被 Google 静默忽略——搜索结果中不会给出错误信息,只会表现为富媒体结果(星级、FAQ、面包屑等)的缺失,而这些富媒体结果本可提升点击率。无效结构化数据意味着失去获得富媒体结果的资格。
规则给出的快速参考要点包括:
- JSON-LD 必须是合法 JSON;
- 必须引用
@context: 'https://schema.org'; - 必须包含所选
@type的全部必需属性; - 非法 JSON(括号未闭合、缺少逗号等)会导致整个代码块被 Google 静默忽略;
- 在部署结构化数据变更前,应使用 Google 的 Rich Results Test 进行验证。
使用方式
该规则描述了一套检查与修复流程。
检查
查找页面上所有 <script type='application/ld+json'> 元素。对每一个执行:
- 尝试将内容解析为 JSON,标记语法错误;
- 验证
@context是否设置为'https://schema.org'; - 验证
@type是否为合法的 schema.org 类型; - 针对检测到的类型,检查必需属性是否齐全(例如 Article 需要 headline、author、datePublished;Product 需要 name;FAQPage 需要 mainEntity);
- 如可用,通过 Google 的 Rich Results Test API 运行检查。
修复
- 用
JSON.parse()解析 JSON-LD,修复所有语法错误(多余逗号、单引号、缺少括号); - 确保
@context恰好为"https://schema.org"(不可是"http://schema.org",也不可省略); - 对照 schema.org 类型验证
@type取值; - 为类型补充必需属性:
- Article:headline、author(含
@type Person和 name)、datePublished; - Product:name(最好还有 offers、description);
- FAQPage:mainEntity 数组,包含 Question 和 acceptedAnswer;
- BreadcrumbList:itemListElement 数组,包含 ListItem、position、name、item;
- Article:headline、author(含
- 在 https://search.google.com/test/rich-results 验证;
- 在 https://jsonlint.com 验证 JSON 语法。
说明
Google 使用 JSON-LD 结构化数据生成富媒体结果——即包含星级、图片、可展开问答等增强格式的搜索结果。无效的 JSON-LD 会被整体忽略:不会生成富媒体结果,也不会向你报告错误。只有通过 Rich Results Test 测试,才能发现验证失败。正确、完整的 JSON-LD 是获得富媒体结果资格的前提。
代码审查
提取所有 <script type='application/ld+json'> 元素内容,对每个运行 JSON.parse(),捕获并报告解析错误。验证 @context 是否等于 'https://schema.org'。对照常见合法类型的白名单检查 @type。针对每个类型,验证必需属性存在且非空。为每个代码块报告发现的第一个验证错误。
适用场景
适用于前端开发、SEO 实施与代码审查环节:当需要编写或审计文章、产品、FAQ、面包屑等结构化数据时,可用该规则作为检查清单,确保富媒体结果的资格。
限制
该条目为 front-end-checklist 中的规则说明,本身不提供独立的自动化服务或工具。资料中未提供收费、价格、平台等具体信息,暂未提供。完整实现细节、代码示例和框架专属指引见 references/rule.md,规则页面为 https://frontendchecklist.io/rules/seo/json-ld-valid。