最稳妥方式是用嵌入json-ld,因其不侵入dom、兼容主流搜索引擎、不影响渲染;microdata和rdfa易因html结构变动或属性过滤失效。

直接用 script 标签嵌入 JSON-LD 是目前最稳妥、搜索引擎兼容性最好、且不影响页面渲染的结构化数据标记方式。
为什么不用 Microdata 或 RDFa
Microdata 需要把 itemscope、itemtype、itemprop 一层层加到 HTML 标签里,容易污染语义结构,改模板时极易出错;RDFa 更复杂,属性名冗长(如 property="schema:name"),且部分 CMS 或前端框架会过滤掉非标准属性。JSON-LD 不侵入 DOM,维护成本低,Google/Bing/Yandex 全支持。
JSON-LD 必须放在 里吗
不是必须,但强烈建议。Google 明确表示:放在 或 开头(即 DOM 加载前)最可靠;若动态插入(比如用 document.createElement('script') 延迟添加),可能被爬虫漏掉。常见错误包括:
- 把 JSON-LD 放在
底部,等所有 JS 执行完才注入 - 用
async或defer加载 JSON-LDscript—— 这会导致执行时机不可控 - 拼接字符串生成 JSON-LD,未转义双引号或换行,导致 JSON 解析失败
正确写法示例(静态页面):
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "HTML实现结构化数据标记",
"datePublished": "2024-06-15",
"author": {
"@type": "Person",
"name": "张三"
}
}
</script>
如何验证结构化数据是否生效
别只看浏览器源码里有没有那段 JSON-LD —— 要用工具实测解析结果:
- Google 搜索中心的 URL 检查工具(输入网址 → 查看“增强功能”卡片)
- 使用
Rich Results Test(已整合进 Search Console,旧独立工具已下线) - 命令行可用
curl -s 'https://search.google.com/searchconsole/api/experimental/url-inspection/inspect?resource_id=YOUR_SITE' | jq(需认证)
常见失败原因:@context 拼错(比如写成 "http://schema.org" 少了 s)、@type 不符合 Google 支持的富媒体搜索结果类型(如用 WebPage 就不会触发任何富摘要)、日期格式不是 ISO 8601("2024-06-15T10:30:00+08:00" 才合规)。
多个结构化数据块能共存吗
可以,但要注意:
- 每个
<script type="application/ld+json"></script>是独立对象,不能靠顺序“合并” - 同一页面不要为同一个实体重复声明(比如两段 JSON-LD 都标了
"@type": "Organization",Google 可能取第一个或报冲突) - 跨域资源(如 CDN 上的 logo 图片)必须支持 CORS,否则
image字段会被忽略 - 电商页常用组合:一个
Product+ 一个AggregateRating+ 一个BreadcrumbList,各自独立 script 块即可
复杂页面(如含评论、FAQ、视频)建议按模块拆分 JSON-LD,比硬塞进一个大对象更易调试和复用。
真正难的不是写对 JSON-LD 语法,而是搞清 Google 当前支持哪些 @type 的富结果、对应哪些必填字段、以及字段值是否被实际索引 —— 这些得常看 Search Central 文档 更新,而不是套用两年前的示例。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











