GEO百科

结构化数据(JSON-LD)

结构化数据(JSON-LD)
摘要JSON-LD是一种结构化数据格式,通过在网页中嵌入Schema.org标准的JSON数据,帮助搜索引擎和AI引擎准确理解页面内容含义。

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_publisheddate-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>

必填字段:headlineauthorpublisherdatePublishedimagemainEntityOfPage。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>

验证工具与流程

部署后必须验证,错误的结构化数据不如不部署:

官方验证工具

  1. Google Rich Results Test:https://search.google.com/test/rich-results (输入URL或代码片段,检测错误和警告,推荐首选)
  2. Schema Markup Validator:https://validator.schema.org/ (通用Schema验证,不绑定Google)
  3. 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引用同一实体)

常见错误

  1. 违反内容一致性政策:JSON-LD中写的价格、评分、作者与页面可见内容不一致,这是最严重的错误,会被判定为垃圾信息
  2. 嵌套实体缺少@type:嵌套的实体对象必须有@type声明
  3. 属性名拼写错误:使用name不是Nametitle,严格按照Schema.org驼峰命名
  4. 日期格式错误:使用2026/01/15而不是2026-01-15,缺少时区信息
  5. 重复标记同一实体:同一页面多次标记同一个Organization实体但信息不一致
  6. 标记不相关内容:页面上不存在的内容不要标记,不要为了获得富摘要添加虚假信息

部署技术方案

静态站点

直接在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引用优化,结构化数据有几个额外注意点:

  1. 显式标注作者专业资质:Article的author字段中,Person实体补充jobTitleknowsAboutalumniOf等资质信息,AI对有明确专业背景作者的内容信任度更高
  2. 使用@id建立实体关联:站点内所有页面引用同一Organization实体使用相同@id,帮助AI合并实体信息
  3. 添加sameAs关联权威平台:Organization和Person的sameAs字段链接到GitHub、知乎、行业协会页面等权威第三方平台账号,强化实体身份
  4. 声明mainEntityOfPage:每个页面明确声明主要实体是什么,帮助AI快速理解页面主题
  5. 定期更新dateModified:内容更新后同步更新dateModified字段,AI偏好新鲜内容

常见误区

  1. 结构化数据越多越好:只标记页面实际存在的内容,不要为了覆盖类型而添加无关标记,错误标记比没有标记更差
  2. 复制粘贴通用模板不修改:模板只是示例,必须根据自己站点实际信息修改所有字段
  3. 部署后不验证:大约60%站点的JSON-LD存在语法错误或字段缺失,部署后必须验证
  4. 只部署首页:Organization只部署首页不够,文章页、产品页、FAQ页都需要对应类型的结构化数据
  5. 用JSON-LD做关键词堆砌:在description等字段堆砌无关关键词,会被判定为垃圾内容

结构化数据是成本最低、见效最明确的GEO技术优化项,正确部署后没有负面风险,是所有站点必须完成的基础工作。完成基础部署后再进行内容和权威度优化,才能获得最好效果。