# Schema.org 与 SEO

URL: https://caijiao.org/json-ld/guide/schema-org-seo
Source: docs/json-ld/guide/schema-org-seo.md
Description: 说明如何用 JSON-LD 编写 Schema.org 结构化数据，理解 Google 搜索支持范围、富媒体结果资格和页面内容一致性要求。

很多开发者接触 JSON-LD，是因为要给网页添加 Schema.org 结构化数据。Schema.org 提供常见实体和属性词汇，JSON-LD 则是把这些词汇嵌入页面的推荐格式之一。

## Schema.org 负责什么

Schema.org 定义“世界上有哪些类型和属性”。例如：

| 类型 | 用途 |
| --- | --- |
| `Article` | 文章、博客、新闻 |
| `Product` | 商品详情 |
| `Organization` | 公司、组织、品牌 |
| `Person` | 作者、讲师、员工 |
| `BreadcrumbList` | 面包屑导航 |
| `FAQPage` | FAQ 页面 |
| `Event` | 活动、会议、演出 |

JSON-LD 负责把这些类型和属性写成机器可读的 JSON。

## Google 搜索负责什么

Schema.org 支持的类型很多，但 Google 搜索只对部分结构化数据提供特定搜索功能或富媒体结果资格。因此：

- 用 Schema.org 文档确认类型和属性含义。
- 用 Google Search Central 文档确认某种搜索结果是否支持、需要哪些必填字段、有哪些质量要求。
- 不要假设“Schema.org 有这个类型”就一定能获得 Google 富媒体结果。

## Article 示例

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "结构化数据上线检查清单",
  "image": [
    "https://example.com/images/article-1x1.jpg",
    "https://example.com/images/article-4x3.jpg",
    "https://example.com/images/article-16x9.jpg"
  ],
  "datePublished": "2026-09-22T08:00:00+08:00",
  "dateModified": "2026-09-22T10:30:00+08:00",
  "author": {
    "@type": "Person",
    "name": "Ada Chen",
    "url": "https://example.com/authors/ada"
  }
}
</script>
```

## Product 示例

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Acme 机械键盘 K1",
  "image": "https://example.com/products/k1.jpg",
  "description": "一款适合长时间写作和编程的紧凑型机械键盘。",
  "sku": "K1-87-BLUE",
  "brand": {
    "@type": "Brand",
    "name": "Acme"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/k1",
    "priceCurrency": "CNY",
    "price": "399.00",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  }
}
</script>
```

## BreadcrumbList 示例

```html
<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": "教程",
      "item": "https://example.com/tutorials"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "JSON-LD",
      "item": "https://example.com/tutorials/json-ld"
    }
  ]
}
</script>
```

## SEO 不是只加一段代码

结构化数据能帮助搜索系统理解页面，但它不能替代内容质量、可抓取性、索引质量和页面体验。上线时要同时确认：

- 结构化数据描述的是页面用户能看到的真实内容。
- 关键字段与页面展示一致，例如价格、库存、评分、作者、日期。
- 页面可以被搜索引擎抓取和索引。
- 图片 URL 可访问，尺寸和格式符合对应搜索功能要求。
- 不为不存在的评价、FAQ、产品或活动生成标记。

## 维护策略

| 数据类型 | 维护建议 |
| --- | --- |
| 标题、描述 | 从页面同一份内容源生成 |
| 日期 | 使用 ISO 8601 格式，区分发布时间和修改时间 |
| 图片 | 使用绝对 URL，避免临时签名地址 |
| 价格、库存 | 与商品系统实时或准实时同步 |
| 作者、组织 | 建立稳定实体 ID，避免每页重复拼凑 |

## 验证路径

1. 本地构建页面，查看最终 HTML 是否包含 `application/ld+json`。
2. 用 JSON 解析器确认语法有效。
3. 用 Schema.org Validator 检查类型与属性。
4. 用 Google Rich Results Test 检查目标富媒体结果资格。
5. 上线后用 Search Console 观察结构化数据报告和抓取结果。
