JSON-LD(JavaScript Object Notation for Linked Data,关联数据JSON表示法)是W3C于2014年正式推荐的结构化数据格式标准,基于JSON语法实现语义网关联数据模型,是Schema.org结构化数据的首选嵌入格式。正确部署JSON-LD可帮助搜索引擎和AI引擎无需依赖自然语言处理即可精确理解页面实体类型、属性和关系,是SEO和GEO的技术基础项,部署后通常可在2-4周内观察到搜索展示效果变化。
技术原理
互联网原生HTML是为人类阅读设计的,视觉呈现是第一优先级,机器理解是第二位。对于AI爬虫来说,从大段非结构化HTML文本中精确提取实体信息存在歧义风险:比如一段数字是价格、评分、日期还是电话号码?"苹果"是水果还是公司?
结构化数据的核心价值是显式声明机器可理解的语义:
- 页面是什么类型(文章、产品、公司、问答、菜谱)
- 包含哪些实体,每个实体的属性是什么
- 实体之间有什么关系(作者是谁、属于哪个分类、关联什么产品)
三种主流结构化数据格式对比:
| 格式 | 嵌入方式 | 优点 | 缺点 | GEO适配度 |
|---|---|---|---|---|
| JSON-LD | 脚本标签嵌入,与HTML分离 | 不影响页面渲染、易于维护、出错率低、Google明确推荐 | 需要额外编写脚本 | ★★★★★ 首选 |
| Microdata | HTML标签属性嵌入 | 不需要额外脚本 | 与HTML耦合、维护困难、容易出错 | ★★★ 不推荐新项目 |
| RDFa | HTML标签属性嵌入,支持命名空间 | 表达能力最强 | 复杂度高、学习曲线陡、错误率高 | ★★ 一般不使用 |
主流搜索引擎Google、Bing、百度、以及AI爬虫GPTBot、ClaudeBot、Bytespider全部优先解析JSON-LD格式,新站点统一使用JSON-LD即可。
部署规范
基本语法
JSON-LD通过<script type="application/ld+json">标签嵌入HTML页面,建议放置在<head>区域,也可放置在<body>中。每个页面可以嵌入多个JSON-LD脚本块。
基础语法结构:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "实体类型",
"属性1": "值1",
"属性2": "值2",
"嵌套实体": {
"@type": "嵌套实体类型",
"属性": "值"
}
}
</script>
语法规则:
@context固定为"https://schema.org",不要省略@type指定Schema.org定义的实体类型,大小写敏感- 属性名使用Schema.org定义的标准驼峰命名(如
datePublished不是date_published或date-published) - 严格遵守JSON语法,最后一个属性后不能有逗号
- 使用UTF-8编码,特殊字符正确转义
GEO必备结构化数据类型
1. Organization(所有站点必须部署)
标识网站所属组织/公司,是AI建立品牌实体认知的基础:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "公司全称",
"alternateName": "品牌简称",
"url": "https://example.com",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png",
"width": 512,
"height": 512
},
"description": "一句话公司介绍,150字以内,客观描述业务",
"foundingDate": "2020",
"numberOfEmployees": {
"@type": "QuantitativeValue",
"value": "50-100"
},
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+86-xxx-xxxxxxx",
"contactType": "customer support",
"email": "support@example.com",
"availableLanguage": ["Chinese", "English"],
"areaServed": "CN"
},
"address": {
"@type": "PostalAddress",
"streetAddress": "详细街道地址",
"addressLocality": "城市",
"addressRegion": "省份",
"postalCode": "邮编",
"addressCountry": "CN"
},
"sameAs": [
"https://github.com/your-org",
"https://www.zhihu.com/org/your-org",
"https://36kr.com/user/xxx"
]
}
</script>
部署位置:首页、关于我们页、联系我们页。
2. WebSite(首页部署)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"@id": "https://example.com/#website",
"url": "https://example.com",
"name": "网站名称",
"publisher": {"@id": "https://example.com/#organization"},
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://example.com/search?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
</script>
3. Article/BlogPosting(文章/博客页部署)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"@id": "https://example.com/blog/post-slug#article",
"headline": "文章标题,与页面H1一致",
"description": "文章摘要,150字以内",
"datePublished": "2026-01-15T08:00:00+08:00",
"dateModified": "2026-08-01T10:30:00+08:00",
"author": {
"@type": "Person",
"name": "作者姓名",
"url": "https://example.com/author/author-slug",
"jobTitle": "作者职位/资质",
"sameAs": [
"https://github.com/author",
"https://www.zhihu.com/people/author"
]
},
"publisher": {"@id": "https://example.com/#organization"},
"image": {
"@type": "ImageObject",
"url": "https://example.com/images/cover.jpg",
"width": 1200,
"height": 630
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/blog/post-slug"
}
}
</script>
必填字段:headline、author、publisher、datePublished、image、mainEntityOfPage。AI引擎优先引用有明确作者和发布时间的内容。
4. FAQPage(问答页面部署)
参见AEO百科词条的FAQPage示例,每个问答页必须部署,这是AI引用率最高的结构化数据类型之一。
5. Product(产品页部署)
电商和SaaS产品页必须部署:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "产品全称",
"image": ["https://example.com/product1.jpg"],
"description": "产品描述",
"sku": "产品SKU",
"brand": {"@id": "https://example.com/#organization"},
"offers": {
"@type": "Offer",
"url": "https://example.com/product",
"priceCurrency": "CNY",
"price": "999.00",
"priceValidUntil": "2027-12-31",
"availability": "https://schema.org/InStock",
"seller": {"@id": "https://example.com/#organization"}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "256"
}
}
</script>
注意:aggregateRating必须是真实用户评分,禁止伪造,虚假评分会导致严重降权。
6. BreadcrumbList(所有页面部署)
面包屑导航结构化数据,帮助AI理解页面层级:
<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/blog"
},
{
"@type": "ListItem",
"position": 3,
"name": "当前文章标题"
}
]
}
</script>
验证工具与流程
部署后必须验证,错误的结构化数据不如不部署:
官方验证工具
- Google Rich Results Test:https://search.google.com/test/rich-results (输入URL或代码片段,检测错误和警告,推荐首选)
- Schema Markup Validator:https://validator.schema.org/ (通用Schema验证,不绑定Google)
- JSON-LD Playground:https://json-ld.org/playground/ (JSON-LD语法验证)
验证Checklist
- 所有
@context值正确为https://schema.org -
@type值是Schema.org存在的类型,拼写正确 - JSON语法合法,无 trailing comma
- 必填字段全部填充
- 所有URL是绝对路径,可正常访问
- 日期时间使用ISO 8601格式(
YYYY-MM-DDThh:mm:ss+时区) - 实体引用
@id一致,不出现死链 - 结构化数据描述的内容与页面可见内容一致,不包含页面没有的信息
- 没有重复定义同一实体(多个脚本块可通过
@id引用同一实体)
常见错误
- 违反内容一致性政策:JSON-LD中写的价格、评分、作者与页面可见内容不一致,这是最严重的错误,会被判定为垃圾信息
- 嵌套实体缺少@type:嵌套的实体对象必须有
@type声明 - 属性名拼写错误:使用
name不是Name或title,严格按照Schema.org驼峰命名 - 日期格式错误:使用
2026/01/15而不是2026-01-15,缺少时区信息 - 重复标记同一实体:同一页面多次标记同一个Organization实体但信息不一致
- 标记不相关内容:页面上不存在的内容不要标记,不要为了获得富摘要添加虚假信息
部署技术方案
静态站点
直接在HTML模板中注入,构建时生成JSON-LD。常见静态站点生成器都有成熟插件:
- Next.js:
next-seo或直接在<Head>中编写 - Hugo: 模板partial中生成
- VitePress: 主题配置中支持
服务端渲染(SSR)
在HTML模板中根据页面类型动态生成JSON-LD,数据从数据库读取。
客户端渲染(SPA)
虽然Google可以渲染JS,但建议优先使用SSR/SSG输出JSON-LD,AI爬虫对客户端JS渲染的解析成功率低于服务端直出。如果必须CSR,确保JSON-LD在初始HTML中存在,或使用动态渲染方案。
批量验证脚本
可以使用Schema.org官方验证API或开源工具批量检查站点所有页面:
# 使用cli工具批量验证(示例)
npm install -g schema-org-validator
schema-validator crawl https://example.com --output report.json
GEO优化特殊要点
对于AI引用优化,结构化数据有几个额外注意点:
- 显式标注作者专业资质:Article的author字段中,Person实体补充
jobTitle、knowsAbout、alumniOf等资质信息,AI对有明确专业背景作者的内容信任度更高 - 使用
@id建立实体关联:站点内所有页面引用同一Organization实体使用相同@id,帮助AI合并实体信息 - 添加
sameAs关联权威平台:Organization和Person的sameAs字段链接到GitHub、知乎、行业协会页面等权威第三方平台账号,强化实体身份 - 声明
mainEntityOfPage:每个页面明确声明主要实体是什么,帮助AI快速理解页面主题 - 定期更新
dateModified:内容更新后同步更新dateModified字段,AI偏好新鲜内容
常见误区
- 结构化数据越多越好:只标记页面实际存在的内容,不要为了覆盖类型而添加无关标记,错误标记比没有标记更差
- 复制粘贴通用模板不修改:模板只是示例,必须根据自己站点实际信息修改所有字段
- 部署后不验证:大约60%站点的JSON-LD存在语法错误或字段缺失,部署后必须验证
- 只部署首页:Organization只部署首页不够,文章页、产品页、FAQ页都需要对应类型的结构化数据
- 用JSON-LD做关键词堆砌:在description等字段堆砌无关关键词,会被判定为垃圾内容
结构化数据是成本最低、见效最明确的GEO技术优化项,正确部署后没有负面风险,是所有站点必须完成的基础工作。完成基础部署后再进行内容和权威度优化,才能获得最好效果。