本文约 4,515 字,预计阅读 12 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:加了结构化数据,为什么搜索结果还是老样子
很多站点照着教程往页面里塞了一段 JSON-LD,过几周去看搜索结果,依然是一个普通链接,什么富媒体效果都没有。于是得出结论:“结构化数据没用。”
这个结论对了一半。结构化数据不是直接的排名因素,它不会让你从第 5 名跳到第 1 名;但它决定了你的结果有没有资格以面包屑、FAQ、评分星级、视频缩略图这些形态展现。没生效通常有三个原因:一是选错了类型(页面内容与声明类型不符),二是必填字段缺失导致校验不通过,三是 Google 对某些富媒体结果有额外的资格要求(比如产品评分需要真实的聚合评价数据)。
原理分析:Schema.org 的三层结构
Schema.org 是一个由 Google、Microsoft、Yahoo、Yandex 共同维护的词汇表,它定义了一整套类型(Type)与属性(Property)。Google 只支持其中的一个子集,并且对每种富媒体结果规定了必填与推荐字段。
第一层是语法格式。 Google 推荐 JSON-LD(放在 <script type="application/ld+json"> 里),另外支持 Microdata 和 RDFa。JSON-LD 的优势是不侵入 HTML 结构,改动模板不影响标注。
第二层是类型体系。 常用类型大致分三类:实体型(Organization、Person、LocalBusiness),描述“你是谁”;内容型(Article、Product、Recipe、VideoObject、FAQPage),描述“这页是什么”;导航型(BreadcrumbList、WebSite + SearchAction),描述“怎么找到的”。
第三层是字段约束。 每种富媒体结果都有“必填”与“推荐”字段。缺必填字段,Google 直接忽略;缺推荐字段,展现效果会打折。
| 类型 | 用途 | 是否在搜索结果有特殊展现 |
|---|---|---|
Organization |
站点/品牌身份 | 知识面板、品牌搜索 |
WebSite + SearchAction |
站内搜索框 | 站点链接搜索框(已大幅收紧) |
BreadcrumbList |
面包屑路径 | 面包屑替换 URL 显示 |
Article/NewsArticle |
文章 | 头条、文章增强展现 |
Product |
商品 | 价格、库存、评分 |
VideoObject |
视频 | 视频缩略图与时长 |
FAQPage |
问答 | FAQ 富媒体结果(展现范围已收紧) |
HowTo |
步骤指南 | HowTo 结果(Google 已逐步下线该展现) |
重要提醒:HowTo 与 FAQPage 的富媒体展现在近年被 Google 大幅收紧,很多站点看不到效果。这不代表标注错了,而是展现形态本身被调整了。做标注前应先查 Google 官方的“搜索图库(Search Gallery)”确认该类型当前是否仍有富媒体展现。
保姆级实操
步骤 1:先确定页面类型与对应 Schema 类型。 一个文章页通常需要 Article + BreadcrumbList,全站需要 Organization(一般放在首页)。不要给一个页面声明多个互相冲突的内容型类型。
步骤 2:写全站级的 Organization 与 WebSite。 放在首页 <head>,用绝对 URL,logo 用真实可访问的图片地址:
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://www.example.com/#organization",
"name": "迷芒飞",
"url": "https://www.example.com/",
"logo": {
"@type": "ImageObject",
"url": "https://www.example.com/wp-content/uploads/2026/01/logo.png",
"width": 512,
"height": 512
},
"sameAs": [
"https://x.com/mimangfei",
"https://www.youtube.com/@mimangfei"
],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer support",
"email": "hello@example.com",
"availableLanguage": ["zh-CN", "en"]
}
},
{
"@type": "WebSite",
"@id": "https://www.example.com/#website",
"url": "https://www.example.com/",
"name": "迷芒飞",
"publisher": { "@id": "https://www.example.com/#organization" },
"inLanguage": "zh-CN"
},
{
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "首页",
"item": "https://www.example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Google SEO",
"item": "https://www.example.com/category/google-seo/"
}
]
}
]
}
步骤 3:用 @graph 与 @id 做实体复用。 上面这份用了 @graph 把多个节点组织在一起,并用 @id 让 WebSite 的 publisher 引用 Organization,避免重复声明同一个实体。这是 Google 官方推荐的组织方式。
步骤 4:把标注放在服务端直出的 HTML 里。 不要靠 JS 动态插入——虽然 Google 能执行 JS,但结构化数据的处理时机更早,动态插入的可靠性差。
步骤 5:校验。 两个工具都要用:富媒体结果测试工具(search.google.com/test/rich-results)看 Google 视角下能识别哪些富媒体;Schema.org 官方校验器(validator.schema.org)看语法与字段是否合规。两者的检查角度不同。
步骤 6:部署后用 GSC 跟踪。 GSC 左侧「增强功能」区域会按类型列出检测到的条目数与错误。新部署后要在这里确认“已检测到的条目数”在增长,且错误数为 0。
步骤 7:与站点地图配合。 结构化数据负责“理解”,站点地图负责“发现”,两者缺一不可。媒体类内容的发现方式可以参考 图片与视频 sitemap 配置。
常见踩坑
- 声明的类型与页面内容不符。 比如在文章页声明
Product,会被判为垃圾结构化数据。 - 必填字段缺失。 尤其是
Article的headline、datePublished、image。 - 日期格式错误。 必须是 ISO 8601,如
2026-04-02T09:14:22+08:00。 - 图片 URL 不可匿名抓取。 会被拒绝,且错误提示不明显。
- 用 JS 动态插入 JSON-LD。 检测时机靠后,经常漏检。
- 以为加了就一定有富媒体展现。 Google 对每种展现都有资格要求,且会调整政策。
- 案例: 一个教程站给所有页面都加了
HowTo标注,期待出现步骤式富媒体结果,但始终无效。后来查官方搜索图库才发现HowTo的富媒体展现已经逐步下线——标注本身完全合法,只是展现形态没了。把标注换成Article+BreadcrumbList后,面包屑展现立刻生效。做标注前先查官方搜索图库,比照着旧教程抄要靠谱。
总结
结构化数据的正确做法是:按页面内容选类型 → 用 JSON-LD 且服务端直出 → 补全必填字段 → 用富媒体测试工具 + Schema.org 校验器双重验证 → 在 GSC 增强功能报告里跟踪条目数与错误数。判断标准不是“搜索结果好不好看”,而是 GSC 里错误数为 0、检测条目数符合预期。至于有没有富媒体展现,取决于 Google 当前的展现政策——那不是你能控制的部分,把标注做对就够了。
