合法的application/ld+json脚本块需用双引号、无注释、无尾逗号、@context为"https://schema.org",置于head或body顶部;article类型必含headline、datepublished(iso 8601格式)、author(对象含@type和name)等字段。

直接往 或 顶部塞一个 <script type="application/ld+json"></script>,内容是合法 JSON,且字段符合 schema.org 类型定义——这是目前唯一被 Google 明确推荐、解析成功率最高、维护成本最低的结构化数据落地方式。
怎么写合法的 application/ld+json 脚本块
不合法的 JSON 是导致“无法解析结构化数据”报错的头号原因。Google 的解析器严格遵循 JSON 标准,任何格式偏差都会整块跳过。
- 所有键名和字符串值必须用双引号
",单引号'直接报错 - 对象末尾、数组末尾不能有多余逗号(
,),比如"name": "张三",最后这个逗号必须删掉 - 不能有注释(
//或/* */),JSON 不支持注释语法 -
@context必须是"https://schema.org",写成http、少斜杠、大小写错误(如Schema.org)全都不认 - 脚本块必须独立存在,不能嵌套在其他
<script></script>内,也不能被<div> 或注释包裹<p>示例(正确):</p> <pre class="brush:php;toolbar:false;"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "HTML JSON-LD怎么实现", "datePublished": "2026-05-07T10:00:00+08:00" } </script></pre> <h3>填 <code>Article类型时哪些字段绝对不能少加了
@type是起点,不是终点。Google 对Article类型触发富摘要有硬性字段门槛,缺一不可,且值类型必须匹配。
dmap-jsapi-skill下载DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
-
headline:必须是字符串,和页面<h1></h1>文本一致(否则交叉校验失败) -
datePublished:必须是 ISO 8601 格式,推荐带时区,如"2026-05-07T10:00:00+08:00";只写"2026-05-07"可能被部分解析器拒绝 -
author:不能是纯字符串(如"张三"),必须是对象,且含@type和name字段;机构作者要用@type: "Organization" -
image:必须是绝对 URL 数组,每个 URL 需返回 HTTP 200,相对路径(如/img/cover.jpg)或需登录才能访问的地址会失效
漏掉
datePublished,哪怕其他字段全对,Google Rich Results Test 也会明确提示"datePublished is missing"并拒掉富摘要。为什么动态注入的 JSON-LD 经常“看不见”
用
document.createElement('script')或 React 的useEffect在客户端拼 JSON-LD,对 Googlebot 来说基本等于没写——它不会执行 JS,只解析初始 HTML 流。- SSR 框架(Next.js、Nuxt、Hyvä)必须在服务端吐出完整
<script type="application/ld+json"></script>,不能依赖 hydration 补充 - WordPress 主题若用 PHP 渲染,应在
中通过wp_add_inline_script或直接 echo 输出,而非靠插件 JS 注入 - 本地测试时,务必关掉广告屏蔽、隐私类浏览器插件,它们可能过滤掉
type="application/ld+json"的 script 标签 - 验证前先确认页面 HTTP 状态码是 200 —— 如果是 301、404、503,Search Console 根本不解析结构化数据,只记“无法访问”
面包屑(
BreadcrumbList)最容易错的三个点面包屑是高频报错类型,错一个字段就整个
BreadcrumbList失效,且错误提示往往不直观。-
@type必须是"BreadcrumbList"(首字母大写、无空格、无复数),写成"breadcrumblist"、"Breadcrumbs"或"http://schema.org/BreadcrumbList"全部无效 -
itemListElement必须是数组,每个元素是对象,含@type: "ListItem"、position(从 1 开始连续递增)、item(对象,至少含@id或name) -
@id推荐用绝对 URL,首页写"https://example.com/",别写"/";多语言站点要确保@id和hreflang声明的 URL 一致
常见陷阱:把
item写成字符串("item": "/about"),而不是对象("item": {"@id": "https://example.com/about"})——后者才会通过校验。 -










