关于 schema-markup
用于审查、创建和修正网页结构化数据的技能,涵盖 Schema 选择、JSON-LD 实现、验证、富媒体搜索结果资格及 CMS 部署。
主要功能
- 01审查现有标记
- 02生成页面专属 JSON-LD
- 03修正验证错误
- 04选择 Schema 类型与组合
- 05指导 CMS 部署
适用场景
- 01审查网页结构化数据
- 02为产品页或文章页添加 Schema
- 03修复 Search Console 标记错误
- 04规划有助于 AI 理解内容的标记
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ borghei/ claude-skills --skill schema-markup安装后在 Claude Code 中输入/schema-markup确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/schema_auditor.pyschema_generator.pyschema_validator.py详细介绍
Schema 标记实施
涵盖 20 多种 Schema 类型、富媒体搜索结果资格规则、AI 搜索优化和针对特定 CMS 的部署模式的生产级结构化数据实施。可用于审核现有标记、实施新 Schema,以及修复验证错误。
目录
先确认信息
生成 Schema 前,请确认以下信息。如有任何一项未知或含糊,请先询问,不要自行假设:
- 页面类型和运行模式 — 审核现有内容、实施新内容或修复错误;以及对应的页面类型(Article、Product、FAQPage、LocalBusiness……)——用于选择 Schema 类型和工作流
- 目标富媒体搜索结果或 AI 搜索目标 — 希望获得哪种富媒体搜索结果或引用——用于确定必填字段清单和资格规则
- CMS / 部署平台 — WordPress、Webflow、Shopify、Next.js 或静态网站——决定部署方式和已知警告(例如 GTM 注入)
- 页面的源内容 — 用于填充的真实标题、作者、价格、问答等内容——Schema 必须与可见内容一致,否则 Google 会予以处罚
停止规则:只询问最可能影响输出的 2-3 项。如果用户说“直接起草”,就继续处理,并在产物顶部列出假设。
运行模式
模式 1:审核现有标记
- 从页面源代码中提取所有 JSON-LD 区块
- 根据 Schema 类型验证必填字段和推荐字段
- 对照 Google 当前的富媒体搜索结果要求
- 为每个 Schema 区块按完整度打分(0-100)
- 提供按优先级排序的修复清单和修正后的 JSON-LD
模式 2:实施新 Schema
- 确定页面类型和匹配的 Schema 类型
- 选择主要 Schema 和辅助 Schema 的组合
- 生成已填入页面内容、完整且可直接复制粘贴的 JSON-LD
- 建议放置方式(内联 head、CMS 插件、服务端渲染)
- 部署前进行测试
模式 3:修复验证错误
- 将 Google Search Console 错误映射到具体字段
- 找出根本原因(缺少字段、格式错误、内容不匹配)
- 提供修正后的 JSON-LD 和变更日志
- 说明修复方法,避免问题再次发生
Schema 类型选择矩阵
按页面类型划分的主要 Schema
| 页面类型 | 主要 Schema | 辅助 Schema | 富媒体搜索结果类型 |
|---|---|---|---|
| 首页 | Organization | WebSite(网站名称) | 网站名称、徽标/知识面板信号(站点链接搜索框已于 2024 年 11 月停用) |
| 博客文章 | Article | BreadcrumbList、Person(作者)、ImageObject | 文章卡片 |
| 操作指南 | Article | BreadcrumbList、ImageObject(HowTo 可选) | Article(HowTo 富媒体搜索结果已于 2023 年 9 月移除) |
| FAQ 页面 | WebPage / Article | BreadcrumbList(FAQPage 可选) | --(FAQ 富媒体搜索结果将于 2026 年 5 月移除) |
| 产品页面 | Product | Offer、AggregateRating、Review、BreadcrumbList | 产品卡片 |
| 本地商家 | LocalBusiness | OpeningHoursSpecification、GeoCoordinates、PostalAddress | 本地商家信息包 |
| 视频页面 | VideoObject | Article(如果嵌入) | 视频卡片 |
| 分类页面 | CollectionPage | BreadcrumbList、ItemList | -- |
| 活动页面 | Event | Organization、Place、Offer | 活动列表 |
| 食谱 | Recipe | NutritionInformation、AggregateRating | 食谱卡片 |
| 课程 | Course | Organization、Offer | 课程列表 |
| 软件/应用 | SoftwareApplication | Offer、AggregateRating | 软件卡片 |
| 招聘信息 | JobPosting | Organization、Place | 招聘信息列表 |
| 评论页面 | Review | Product 或 LocalBusiness、Rating | 评论摘要 |
| 播客单集 | PodcastEpisode | PodcastSeries、Person | 播客卡片 |
| 作者页面 | Person | sameAs 链接 | 知识面板 |
| 公司页面 | Organization | sameAs 链接、ContactPoint | 知识面板 |
| 面包屑导航 | BreadcrumbList | -- | 面包屑富媒体搜索结果 |
| 网站导航 | SiteNavigationElement | -- | -- |
| 数据集 | Dataset | DataCatalog | 数据集搜索 |
叠加规则
始终添加:
- 如果页面上存在面包屑导航,则为所有非首页添加 BreadcrumbList
- 为首页添加 Organization(全站身份信息)
常见的有效组合:
- Article + BreadcrumbList + Person + ImageObject(博客文章)
- Product + Offer + AggregateRating + BreadcrumbList(产品页面)
- LocalBusiness + OpeningHoursSpecification + GeoCoordinates + Review(本地页面)
- Article + BreadcrumbList + ImageObject(指南;HowTo 标记可选,不会产生富媒体搜索结果)
切勿组合:
- 在不销售产品的页面上使用 Product(Google 会惩罚滥用行为)
- 为同一实体添加多个 Organization 区块(应合并为一个)
- 在用户看不到问答内容的页面上使用 FAQPage
实现模式
JSON-LD 格式(始终使用)
JSON-LD 是唯一值得实现的格式。Google 推荐使用它;它位于 <head> 中,且不会影响 HTML 标记。Microdata 和 RDFa 已过时——不要在新实现中使用它们。
放置位置
<head>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Your Article Title",
"author": {
"@type": "Person",
"name": "Author Name",
"url": "https://example.com/authors/name",
"sameAs": ["https://linkedin.com/in/name", "https://twitter.com/name"]
},
"datePublished": "2026-01-15",
"dateModified": "2026-03-01",
"image": "https://example.com/images/article-hero.jpg",
"publisher": {
"@type": "Organization",
"name": "Company Name",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
}
}
</script>
</head>
每个页面可以包含多个 <script type="application/ld+json"> 区块。对于互不相关的 Schema 类型,请使用单独的区块。将相关类型嵌套在同一个区块中。
作用范围规则
| 作用范围 | Schema | 放置位置 |
|---|---|---|
| 全站 | Organization、WebSite | 首页模板页眉 |
| 每个页面 | Article、Product、VideoObject、Event | 特定页面的 head 注入 |
| 每个元素 | BreadcrumbList | 每个非首页 |
| 有条件 | Event、JobPosting | 仅用于包含相应内容类型的页面 |
富媒体搜索结果资格规则
Google 并不会为所有有效的 schema 提供富媒体搜索结果。以下是截至 2026 年 9 月的当前要求。在承诺能获得富媒体搜索结果之前,请查看实时的 Search Gallery——有些类型会被停用。
已停用的 Google 富媒体搜索结果(标记仍是有效的 schema.org,但不会生成 Google 搜索功能):
| 功能 | 状态 | 来源 |
|---|---|---|
| HowTo 富媒体搜索结果 | 2023 年 8 月起受限;自 2023 年 9 月 13 日起不再在任何设备上显示 | Search Central 博客 |
| FAQ 富媒体搜索结果 | 2023 年 8 月起仅限权威政府/健康网站;2026 年 5 月 7 日从 Google Search 中移除 | FAQPage 文档更新日志 |
| 站点链接搜索框(WebSite + SearchAction) | 2024 年 11 月 21 日移除;保留该标记不会造成任何问题 | Search Central 博客 |
Article 富媒体搜索结果
| 字段 | 必填 | 说明 |
|---|---|---|
| headline | 是 | 必须与页面上显示的标题一致 |
| image | 是 | 必须可抓取,宽度至少为 1200px |
| datePublished | 是 | ISO 8601 格式 |
| dateModified | 建议 | 必须 >= datePublished |
| author.name | 是 | 必须对应真实个人或组织 |
| author.url | 建议 | 链接到作者页面 |
| publisher.name | 是 | |
| publisher.logo | 是 | 最大 600x60px |
Product 富媒体搜索结果
| 字段 | 必填 | 说明 |
|---|---|---|
| name | 是 | 产品名称 |
| image | 是 | 产品照片 |
| offers.price | 是 | 数值 |
| offers.priceCurrency | 是 | ISO 4217 代码 |
| offers.availability | 建议 | 使用 schema.org/InStock 等值 |
| aggregateRating.ratingValue | 建议 | 数值 |
| aggregateRating.reviewCount | 建议 | 整数 |
| review | 建议 | 至少 1 条评论 |
FAQPage 和 HowTo(不提供 Google 富媒体搜索结果)
如果你仍为其他使用方输出 FAQPage 或 HowTo,请确保内容有效且真实:mainEntity 是包含 Question 项目的数组,且带有 acceptedAnswer.text(FAQPage);step 是包含 HowToStep 项目的数组(HowTo);并且每组问答或每个步骤都能在页面上看到。不要将它们报告为富媒体搜索结果方面的成果。
AI 搜索优化
AI 搜索系统(Google AI Overviews、Perplexity、ChatGPT Search、Bing Copilot)可能会使用结构化数据来理解内容并识别实体。Google 表示,要出现在 AI Overviews 或 AI Mode 中,无需使用特殊的 schema.org 标记(截至 2026 年 9 月,参见 AI 功能与您的网站)——schema 有助于理解内容,但它并不是切换 AI 引用的开关。
Schema 对 AI 搜索为何重要
- 内容类型分类——AI 系统使用
@type判断内容是操作指南、产品列表、常见问题还是观点文章 - 可提取的结构应位于页面上——AI 系统会提取页面上可见的问答和分步内容;FAQPage/HowTo 标记是可选的,而且没有证据表明它能提升 Google 侧的引用率
- 新鲜度信号——
datePublished和dateModified有助于 AI 系统根据时效性筛选内容 - 权威性信号——带有指向已知个人资料的
sameAs链接的author,有助于提升实体识别能力 - 实体关联——带有指向 Wikidata、LinkedIn 和社交资料的
sameAs链接的Organization,有助于加强实体解析
AI 搜索架构标记实战指南
| 操作 | 优先级 | 影响 |
|---|---|---|
| 添加作者 Person 架构标记,并通过 sameAs 链接到 LinkedIn、Twitter、Google Scholar | 高 | 作者实体识别 |
| 添加 Organization,并通过 sameAs 链接到 Wikidata、LinkedIn、Crunchbase | 高 | 品牌实体识别 |
| 每次更新内容时,确保 dateModified 准确无误 | 中 | 新鲜度筛选 |
| 确保 Article、Product、BreadcrumbList 架构标记准确,并与可见内容一致 | 中 | 富媒体搜索结果 + 内容类型清晰度 |
| 在问答或教程内容中使用 FAQPage / HowTo 标记 | 低 | 可选;不会生成 Google 富媒体搜索结果,也不会获得特殊 AI 功能待遇 |
| 在工具/产品页面添加 SoftwareApplication 架构标记 | 中 | 在 AI 回答中识别产品 |
知识图谱策略
进入 Google 知识图谱,意味着你的实体(个人、公司、产品)已被识别,并会显示在信息面板、AI 回答和交叉引用搜索结果中。
知识图谱收录要求
- Wikidata 条目 -- 在 Wikidata.org 上创建或认领你的实体
- Wikipedia 页面 -- Wikipedia 条目会显著提高被知识图谱收录的概率
- NAP 信息一致 -- 所有引用来源中的名称、地址、电话必须完全一致
- sameAs 网络 -- Organization 架构标记必须链接到所有官方资料页
sameAs 最佳实践
{
"@type": "Organization",
"name": "Your Company",
"url": "https://yourcompany.com",
"sameAs": [
"https://www.wikidata.org/wiki/Q12345678",
"https://en.wikipedia.org/wiki/Your_Company",
"https://www.linkedin.com/company/yourcompany",
"https://twitter.com/yourcompany",
"https://www.crunchbase.com/organization/yourcompany",
"https://github.com/yourcompany"
]
}
sameAs 链接的重要性排序:
- Wikidata(最强的实体信号)
- Wikipedia
- 官方社交资料页
- 行业目录(Crunchbase、G2、Capterra)
CMS 部署指南
WordPress
- Yoast SEO / Rank Math:自动生成 Article、Organization、BreadcrumbList。它们的 FAQ/HowTo 区块仍会输出标记,但不再生成 Google 富媒体搜索结果。
- 自定义架构标记:通过
wp_headaction hook 或自定义插件添加。 - 避免:使用通过 JavaScript 注入架构标记的插件(Google 可能不会渲染这些标记)。
Webflow
- 单页设置:在页面设置 > 自定义代码 > Head 中添加自定义代码
- 由 CMS 驱动:使用 Webflow CMS,通过包含 CMS 字段引用的嵌入式代码块生成动态 JSON-LD
- 全站设置:在 Project Settings > Custom Code > Head 中添加 Organization 架构标记
Shopify
- Product 架构标记:大多数主题会自动生成。请确认其中包含 Offer 和 AggregateRating。
- Article/Blog 架构标记:通常缺失——通过 theme.liquid 或架构标记应用手动添加。
- Organization:添加到 theme.liquid 的
<head>部分。
Next.js / 自定义 React
- 服务器端渲染:在页面组件中生成 JSON-LD,并在
<Head>中渲染。 - next-seo 库:为常见类型提供架构标记组件。
- 动态页面:从数据层生成架构标记,而不是硬编码。
静态站点(Hugo、Jekyll、Gatsby)
- 模板级别:使用模板变量将 JSON-LD 添加到布局模板中。
- 单页设置:使用 frontmatter 数据动态填充架构标记字段。
Google Tag Manager(GTM)
- 警告:通过 GTM 注入的架构标记通常不会被 Google 编入索引,因为它们会在 JavaScript 执行后于客户端渲染。
- 仅在以下情况下使用:没有其他方案可用(无法访问 CMS,也没有开发资源)。
- 更好的替代方案:通过 CMS 或模板引擎在服务器端注入。
验证与测试
三层验证
部署前,使用以下三种工具测试每项架构标记实现:
| 工具 | URL | 检查内容 |
|---|---|---|
| Google 富媒体搜索结果测试 | search.google.com/test/rich-results | Google 的解析器、富媒体搜索结果资格 |
| Schema.org 验证器 | validator.schema.org | 对完整规范的符合情况(范围比 Google 更广) |
| Google Search Console | 增强功能部分 | 大规模环境下的实际错误、部署后检查 |
验证工作流
- 部署前:对渲染后的 HTML 使用 Rich Results Test 和 Schema.org Validator
- 部署后(第 1 天):通过 GSC 中的 URL Inspection 工具检查页面是否已被抓取
- 部署后(第 2-4 周):在 GSC 的 Enhancements 部分检查是否存在大范围错误
- 持续进行(每月):监控 GSC Enhancements,检查内容更新导致的新错误
常见错误和修复方法
| 错误 | 根本原因 | 修复方法 |
|---|---|---|
缺少 @context | Schema 块没有上下文声明 | 添加 "@context": "https://schema.org" |
| 缺少必填字段 | 缺少必填属性 | 添加来自页面实际内容的字段 |
image URL 是相对路径 | 使用了 /image.jpg,而非绝对 URL | 使用 https://example.com/image.jpg |
dateModified < datePublished | 日期关系不合理 | 确保 dateModified >= datePublished |
| 标记内容与页面内容不匹配 | Schema 声称的内容对用户不可见 | 仅为页面上实际存在的内容添加 Schema |
| 属性已弃用 | 使用了旧版 schema.org 属性名称 | 在 schema.org 查看当前规范 |
| 嵌套类型冲突 | Article 中错误地包含 Product | 保持类型扁平,或使用正确的 @graph 嵌套 |
| 日期格式错误 | 不符合 ISO 8601 | 使用 "2026-01-15" 或 "2026-01-15T10:30:00Z" |
| 字符串值为空 | "name": "" 虽通过语法检查,但不符合语义要求 | 使用真实值,切勿使用空字符串 |
| 预期为数组,却只提供了单个值 | FAQPage 的 mainEntity 需要数组 | 用 [] 数组括号包裹 |
| Logo 过大 | 发布者 Logo 超过 600x60px | 调整尺寸或使用其他 Logo 格式 |
| 未索引 GTM 注入内容 | 客户端渲染 | 将注入移至服务端 <head> |
审核框架
审核评分卡(0-100)
| 维度 | 权重 | 评分方式 |
|---|---|---|
| 必填字段齐全 | 40% | 每缺少一个必填字段扣 10 分 |
| 推荐字段齐全 | 15% | 每缺少一个推荐字段扣 3 分 |
| 是否符合富媒体搜索结果条件 | 20% | 二元:符合或不符合 |
| 内容与标记匹配度 | 15% | Schema 与可见内容每有一处不匹配扣 5 分 |
| sameAs 和实体信号 | 10% | 每缺少一个主要平台链接扣 5 分 |
优先级分类
| 优先级 | 标准 | 操作 |
|---|---|---|
| P0 紧急 | 缺少必填字段,导致无法显示富媒体搜索结果 | 立即修复 |
| P1 高 | 缺少推荐字段,降低符合条件的可能性 | 本周修复 |
| P2 中 | 内容不匹配、属性已弃用 | 本月修复 |
| P3 低 | 缺少 sameAs 链接、可选增强项 | 方便时添加 |
输出产物
| 产物 | 格式 | 描述 |
|---|---|---|
| Schema 审核报告 | 评分表 | 按页面整理的 Schema 清单、完整度评分和优先修复项 |
| JSON-LD 实现 | 可直接复制粘贴的代码块 | 每种页面类型的完整 Schema,并清晰标注占位值 |
| 错误修复日志 | 修复前后的 JSON-LD | 说明每项修复及其根本原因和预防方法 |
| AI 搜索差距分析 | 建议表 | 缺失的实体标记、sameAs 差距、内容类型不匹配 |
| CMS 实施指南 | 分步说明 | 特定平台的部署说明 |
| 富媒体搜索结果资格矩阵 | 页面类型 x Schema x 资格 | 哪些页面符合哪些富媒体搜索结果类型的条件 |
相关技能
- seo-audit -- 用于涵盖结构化数据以外内容的全面技术和内容 SEO 审核。当问题范围超出 Schema 时使用。
- site-architecture -- 用于 URL 结构和导航。当根本原因是网站架构而非 Schema 时使用。
- programmatic-seo -- 用于需要大规模添加 Schema 的数千页面网站。Schema 模式可用于 pSEO 模板设计。
- content-creator -- 用于内容创作。在实施 Article Schema 前使用,以确保内容质量。
故障排除
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
| 架构通过验证,但未显示丰富结果 | 缺少符合丰富结果资格要求的必填字段,或 Google 尚未重新抓取 | 使用 Google Rich Results Test 验证(不只是使用 schema.org 验证器);通过 GSC 请求重新编入索引 |
| FAQPage 架构未生成 FAQ 下拉项 | Google 搜索已于 2026 年 5 月移除 FAQ 丰富结果(HowTo 于 2023 年 9 月移除) | 这是预期行为——无需修复;保持标记有效或将其移除,并停止将其作为丰富结果 KPI 跟踪 |
| GSC 中的 Product 架构显示“缺少字段”警告 | 缺少或错误填写必填字段(价格、供货情况、评价) | 添加所有必需的 Product 和 Offer 字段;货币使用 ISO 4217,供货情况使用 schema.org/InStock |
| 未编入索引由 GTM 注入的架构 | 客户端渲染——Google 可能不会执行用于架构的 GTM JavaScript | 将架构从 GTM 移至服务器端 <head> 注入;GTM 架构无法可靠地用于编入索引 |
| dateModified 早于 datePublished | 数据录入错误或 CMS 自动填充不正确 | 确保 dateModified >= datePublished;审核 CMS 日期字段逻辑 |
| 存在多个相互冲突的 Organization 块 | 不同插件或模板注入了独立的 Organization 架构 | 在首页合并为一个 Organization 块;移除重复项 |
| 架构验证通过,但 Google 显示“内容不匹配” | 架构声称的内容实际上对页面用户不可见 | 仅为页面上实际存在的内容添加架构——绝不要伪造或隐藏内容 |
成功标准
- 丰富结果资格:根据 Google Rich Results Test,100% 适用的内容页面均具备相应架构类型的丰富结果资格
- 验证通过率:Google Search Console 中所有架构类型的增强功能报告均无错误
- 丰富结果点击率提升:结构化数据页面的点击率比非结构化页面高 20%–35%(SearchPilot 测试的 2026 年基准)
- AI 就绪度:所有信息类页面均包含实体标记(Organization、带 sameAs 的 Person)和准确的 Article 日期;答案在 HTML 中可见,便于提取
- 实体识别:全站部署带有 5 个以上 sameAs 链接的 Organization 架构;品牌出现在知识图谱中
- 覆盖广度:95% 以上可编入索引的页面均已实现架构(至少使用 BreadcrumbList,并在相关页面使用特定内容类型)
- 时效准确性:每次内容变更后 24 小时内更新所有 Article 架构中的 dateModified
范围与限制
范围内:
- 20 种以上架构类型的选择与 JSON-LD 实现
- 丰富结果资格验证与优化
- 通过结构化数据提升 AI 搜索可见度
- 知识图谱实体优化
- 架构验证、测试与错误排查
- 针对特定 CMS 的部署指南(WordPress、Webflow、Shopify、Next.js)
范围外:
- 为符合架构条件的页面创建内容(使用 Content Production)
- 结构化数据以外的技术 SEO(使用 SEO Audit)
- Microdata 或 RDFa 实现(仅支持 JSON-LD——这是 Google 的建议)
- 自定义 schema.org 扩展或词汇提案
- 服务器端渲染实现
- CMS 插件开发
已知限制:
- 即使架构有效,Google 也不保证显示丰富结果——权威性和内容质量同样会影响结果
- GTM 注入的架构经常无法被编入索引——为确保可靠性,必须采用服务器端部署
- Schema.org 规范的更新速度快于 Google 的支持进度——并非所有有效类型都会生成丰富结果
- 丰富结果类型可能在几乎不提前通知的情况下弃用(例如,HowTo 于 2023 年移除,站内链接搜索框于 2024 年移除,FAQ 于 2026 年移除)
- 结构化数据对点击率的影响因行业和搜索结果页(SERP)功能而异
脚本
# Validate JSON-LD schema from a file or URL
python scripts/schema_validator.py --file schema.json --json
# Audit a page for schema coverage and completeness
python scripts/schema_validator.py --html page.html --verbose
# Generate JSON-LD templates for common page types
python scripts/schema_generator.py --type Article --title "My Post" --author "Jane" --json