面包屑 BreadcrumbList 结构化数据:JSON-LD 示例与规范
面包屑是最值得优先实现的结构化数据之一。它既改善用户体验,也帮助搜索引擎理解页面在网站层级中的位置。BreadcrumbList 的重点不是复杂字段,而是"真实路径、顺序正确、可见内容一致"。这篇文章用 JSON-LD 讲清字段、示例、多路径场景和常见错误。
BreadcrumbList 是什么#
面包屑是一条从高层页面到当前页面的路径,例如:
首页 / Google 结构化数据 / 面包屑 BreadcrumbList
BreadcrumbList 则是用结构化数据描述同一条路径。Google 官方文档要求 BreadcrumbList 至少包含两个 ListItem,并通过 position 表达顺序。
为什么它重要#
- 帮助用户定位:用户能快速知道自己在站点结构中的位置,并返回上级栏目。
- 帮助 Google 理解层级:让页面与栏目、首页之间的关系更明确。
- 改善搜索结果路径:Google 可能用更友好的面包屑路径替代冗长 URL 展示。
- 辅助内部链接:每个文章页都向上链接栏目页,有利于栏目聚合和主题集群。
<head> 中输出同一条 BreadcrumbList。用户看到的路径和 Google 读取的路径保持一致。必填字段#
BreadcrumbList 的字段很少,但顺序和一致性很关键。
| 位置 | 字段 | 作用 | 建议 |
|---|---|---|---|
BreadcrumbList | itemListElement | 包含所有面包屑节点的数组 | 按从上级到当前页排序 |
ListItem | position | 当前节点在路径中的序号 | 从 1 开始连续递增 |
ListItem | name | 节点名称 | 与页面上显示的文本一致 |
ListItem | item | 节点对应 URL | 使用绝对 URL,指向规范页面 |
Google 示例里最后一级有时只写 name 和 position,不写 item。实战中,我更建议最后一级也写当前页面的 canonical URL,这样和页面规范地址保持一致。
完整 JSON-LD 示例#
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "首页",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "技术 SEO",
"item": "https://example.com/articles/zh/technical-seo/"
},
{
"@type": "ListItem",
"position": 3,
"name": "网站速度优化",
"item": "https://example.com/articles/zh/technical-seo/site-speed.html"
}
]
}
</script>
必须和可见面包屑一致#
BreadcrumbList 是对页面可见路径的机器翻译,不是另起一条给搜索引擎看的隐藏路径。要核对三件事:
- 节点数量一致:页面显示 3 级,JSON-LD 也写 3 个 ListItem。
- 节点名称一致:可见文本是"Google 结构化数据",不要在 JSON-LD 里写成"Schema 教程"。
- URL 一致:可见链接、JSON-LD 的
item、对应页面 canonical 使用同一套规范 URL。
多条面包屑路径#
有些页面确实可以从多条路径访问。例如一本获奖科幻小说,可能同时属于"图书 / 科幻 / 获奖作品"和"文学 / 获奖作品"。Google 支持为同一个页面标记多条 BreadcrumbList。
[
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "图书", "item": "https://example.com/books" },
{ "@type": "ListItem", "position": 2, "name": "科幻", "item": "https://example.com/books/scifi" },
{ "@type": "ListItem", "position": 3, "name": "获奖作品", "item": "https://example.com/books/scifi/awards" }
]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "文学", "item": "https://example.com/literature" },
{ "@type": "ListItem", "position": 2, "name": "获奖作品", "item": "https://example.com/books/scifi/awards" }
]
}
]
但对多数内容站,单条主路径就够了。多路径只有在用户也能真实通过多条分类路径访问该页面时才有意义。
URL 与 canonical 规则#
- 使用绝对 URL,而不是相对路径。
- 优先使用 canonical URL,避免同一页面一会儿带斜杠、一会儿不带斜杠。
- 面包屑中的上级页面应该返回 200,并且是可索引的重要页面。
- 不要把参数 URL、追踪 URL、重定向 URL 写进
item。
如果栏目页是 https://example.com/articles/zh/google-structured-data/,就不要在另一篇文章里写成 https://example.com/articles/zh/google-structured-data/index.html。站内链接、canonical 和结构化数据最好统一。
本站这一页如何示范#
本页顶部可见面包屑是:
首页 / Google 结构化数据 / 面包屑 BreadcrumbList
本页 JSON-LD 中的 BreadcrumbList 也正好是这三个节点,并且第三个节点的 item 指向本页 canonical URL。这就是"可见内容一致"的最小闭环。
如何验证#
- 用 Rich Results Test 测试页面。
- 确认检测到 BreadcrumbList。
- 检查每个 ListItem 的
position是否连续递增。 - 检查
name与页面可见面包屑文本是否一致。 - 上线后在 Search Console 富媒体报告 里看"面包屑导航"报告是否有错误。
常见错误#
| 错误 | 表现 | 修正 |
|---|---|---|
| position 跳号 | 1、2、4 或重复 2 | 从 1 开始连续递增 |
| 路径顺序反了 | 当前页在前,首页在后 | 从最高层级写到当前页 |
| 可见路径和 JSON-LD 不一致 | 页面显示 A,标记写 B | 两者同步生成或手动核对 |
| 使用相对 URL | "/articles/..." | 结构化数据里写绝对 URL |
| 上级页面不可访问 | 栏目页 404、noindex、重定向链 | 确保上级页面稳定返回 200 |
| 虚构多路径 | JSON-LD 里写了用户看不到的分类 | 只标记真实导航路径 |
BreadcrumbList 上线清单#
- 页面有用户可见的 HTML 面包屑
- JSON-LD 使用 BreadcrumbList
- itemListElement 至少包含两个 ListItem
- position 从 1 开始连续递增
- name 与可见面包屑文本一致
- item 使用绝对 URL
- item 指向规范 URL,避免参数和重定向
- 最后一级与当前页面 canonical 一致
- 多路径只用于真实可见的多条导航路径
- Rich Results Test 检测无错误
- Search Console 面包屑报告无批量问题
常见问题#
面包屑结构化数据一定要和页面上可见面包屑一致吗?
应该一致。BreadcrumbList 的作用是把页面上真实的层级路径翻译成机器可读格式。如果 JSON-LD 里标记的路径和用户看到的路径不同,会造成信号不一致,也可能违反结构化数据与可见内容一致的原则。
最后一级当前页面要不要写 item?
Google 示例中最后一级可以只写 name 和 position,也可以写 item。为了让规范信号更清晰,MagicSEO 的做法是最后一级也写当前页面的 canonical URL,并确保它与页面可见面包屑和 canonical 保持一致。
一个页面可以有多条 BreadcrumbList 吗?
可以。如果网站确实存在多条用户可见且合理的导航路径,Google 支持为同一个页面标记多条 breadcrumb trail。但不要为了覆盖关键词而虚构路径;多路径应来自真实站点结构。
面包屑能替代导航和内链吗?
不能。面包屑是层级导航和结构化数据的补充,不能替代主导航、栏目页和正文内链。SEO 上更稳妥的做法是:页面有真实可点击的 HTML 面包屑,同时用 BreadcrumbList 描述同一条路径。