Schema 结构化数据实战:不用付费工具也能做好标记
Schema 结构化数据让搜索引擎理解你的页面内容。这篇讲常见 schema 类型、怎么加、怎么验证——全程免费工具搞定。
Schema markup(结构化数据标记)就是区分这两种情况的东西:告诉搜索引擎“这里有点文字”和告诉它“这是一篇文章,作者是谁,什么时候发的,主题是什么,还有这些常见问题”。前者能拿到富摘要(rich snippets),后者啥都没有。
好消息是:你不需要 WordPress SEO 插件,不需要付费的 schema 生成器,也不需要开发者认证。只要你会写 HTML,你就能加结构化数据。这篇指南就是教你怎么做。
Schema Markup 到底干什么的
搜索引擎爬你的 HTML,然后试图理解你的页面在讲什么。它们很擅长读文字,但有时候分不清产品价格、食谱配料和碰巧长得像价格的随机数字。
Schema markup——具体来说就是 JSON-LD——通过在你的内容上面加一层机器可读的数据来解决这个问题。你把数据包成一种标准化格式,明确告诉搜索引擎“这是产品名、这是价格、这是库存状态”。
回报是什么?富摘要(rich results)。搜索结果里不再是光秃秃的蓝链接,你的页面可以显示星级评分、FAQ 手风琴、面包屑导航、活动日期等等。富摘要平均能提高 20-30% 的点击率,因为它们占的空间更大,看起来更有权威感。
JSON-LD vs Microdata vs RDFa
结构化数据有三种格式。用 JSON-LD。原因如下:
JSON-LD 是一个放在页面 <head> 或 <body> 里的 <script type="application/ld+json"> 代码块。它让你的结构化数据和可见的 HTML 完全分离。Google 推荐的就是这个。它最好维护。这篇指南里所有例子用的都是它。
Microdata 把 schema 属性(itemprop、itemscope、itemtype)直接嵌到你的 HTML 标签里面。又乱,又把标记和内容结构耦合在一起,而且 Google 已经弃用它、转向 JSON-LD 了。
RDFa 跟 Microdata 类似,但更啰嗦。没人用它做 SEO。
如果你用的是 Astro 或 Next.js 这类框架,JSON-LD 简直不要太简单——在布局模板里加一个 <script> 标签就行。不需要构建步骤,不需要插件,不需要依赖。
每个独立站需要的五种 Schema 类型
你不需要什么都标记。专注于 Google 确实会给富摘要奖励、且适用于大多数内容站点的 schema 类型就行。
1. Article(或 BlogPosting)
任何内容站点最核心的 schema。告诉 Google“这是一篇已发布的文章,有作者、日期和标题”。
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to Do Keyword Research Without Paid Tools",
"author": {
"@type": "Person",
"name": "Jane Doe",
"url": "https://example.com/about"
},
"datePublished": "2026-01-15",
"dateModified": "2026-01-20",
"image": "https://example.com/images/article-cover.jpg",
"publisher": {
"@type": "Organization",
"name": "Example Site",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/article-url"
}
}
光这一个就能让你的文章进 Google News、Top Stories 轮播和“关于此结果”面板。
2. FAQPage
如果你的文章有 FAQ 部分,FAQPage schema 可以让你在搜索结果里直接显示一个可展开的手风琴——占据大量垂直空间,把竞争对手往下挤。
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Do I need paid tools for SEO?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No. Google Search Console, PageSpeed Insights, and free keyword research tools cover most SEO needs for indie sites."
}
},
{
"@type": "Question",
"name": "How long does it take to rank?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Most pages take 3-6 months to rank for competitive keywords. Long-tail keywords can rank in weeks."
}
}
]
}
关键点:FAQ 里的每个问题,页面上必须有对应的可见答案。别加你内容里没有的问题——Google 会检查的。
3. BreadcrumbList
在搜索结果里显示导航面包屑,而不是一串光秃秃的 URL。这让你的结果看起来更精致,也让用户知道这个页面在你的站点结构中所处的位置。
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Journal",
"item": "https://example.com/journal/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Schema Markup Guide",
"item": "https://example.com/journal/schema-markup-structured-data-seo/"
}
]
}
4. Organization
帮助 Google 把你的品牌理解为一个实体。这会进知识面板和“关于此结果”功能。
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Site",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": [
"https://twitter.com/example",
"https://github.com/example"
]
}
sameAs 数组把你的组织链接到它的社交账号——这有助于 Google 各系统之间的实体识别。
5. WebSite(带 SearchAction)
如果你的站点有搜索功能,加一个 SearchAction 可以让 Google 直接在搜索结果摘要里显示搜索框。
{
"@context": "https://schema.org",
"@type": "WebSite",
"url": "https://example.com",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://example.com/search?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
在 Astro、Next.js 和纯 HTML 里怎么实现 Schema
Astro
在布局或页面模板里直接加 script 标签:
---
const article = {
headline: "Schema Markup Guide",
datePublished: "2026-07-23",
author: "Jane Doe"
};
---
<script type="application/ld+json" set:html={JSON.stringify({
"@context": "https://schema.org",
"@type": "BlogPosting",
headline: article.headline,
datePublished: article.datePublished,
author: { "@type": "Person", name: article.author }
})} />
在 Astro 里,用 set:html 注入序列化后的 JSON。不要用 is:inline——Astro 会正确处理并包含它。
Next.js
使用 next/script 组件或布局里的 <script> 标签:
import Script from 'next/script'
export function ArticleSchema({ article }) {
return (
<Script
id="article-schema"
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify({
"@context": "https://schema.org",
"@type": "BlogPosting",
headline: article.title,
datePublished: article.date,
author: { "@type": "Person", name: article.author }
})
}}
/>
)
}
纯 HTML
只要在 <head> 或 <body> 里加 script 标签就行:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Schema Markup Guide",
"datePublished": "2026-07-23",
"author": { "@type": "Person", "name": "Jane Doe" }
}
</script>
一个页面上组合多种 Schema 类型
大多数页面需要的 schema 类型不止一种。你可以在同一个页面上放多个 <script type="application/ld+json"> 代码块——Google 会全部读取。
或者,用 @graph 数组把所有内容合并到一个代码块里:
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Organization", "name": "Example Site", "url": "https://example.com" },
{ "@type": "BlogPosting", "headline": "Schema Guide", "author": { "@type": "Person", "name": "Jane Doe" } },
{ "@type": "BreadcrumbList", "itemListElement": [ ... ] }
]
}
对于每页有多种 schema 类型的站点,@graph 方法更干净。它是一个单一数据源,你可以通过 frontmatter 或 CMS 数据编程式生成。
验证你的 Schema(免费)
永远不要不验证就部署 schema。无效的标记拿不到富摘要,还可能触发 Google Search Console 里的警告。
Google 富摘要测试(Rich Results Test)——权威验证工具。粘贴你的 URL 或原始 JSON-LD,它会精确显示你的标记符合哪些富摘要类型,以及任何错误或警告。
Schema.org Validator——比 Google 的工具更宽松。适合用来检查你的标记结构上是否正确,即使 Google 不支持该 schema 类型用于富摘要。
Google Search Console——查看“增强功能”(Enhancements)部分的结构化数据报告。GSC 显示的是整个站点的 schema 错误,不只是一个页面。
验证流程:
- 给页面加 schema
- 部署到一个公开可访问的 URL(或使用 staging URL)
- 在富摘要测试中运行该 URL
- 修复所有错误(红色)——警告(黄色)可选,但建议也处理
- 在 GSC 里提交 URL 请求重新抓取
常见的 Schema 错误
不要标记不可见的内容。 schema 里的每条数据必须对应页面上可见的内容。如果你的 FAQ schema 有 5 个问题,但页面上只显示 3 个,Google 会标记你。
不要用通用占位符。 "description": "Article about SEO" 没有任何价值。写一个跟你的 meta description 匹配的真实描述。
别忘了 dateModified。 如果你更新了文章,记得同步更新 schema 里的 dateModified。Google 用这个字段来决定是否重新抓取和重新评估内容。
不要把 Organization 错误地嵌套在 Article 里面。 用 @graph 或分开的 script 标签。试图把所有东西塞进一个嵌套对象会导致无效标记。
不要跳过 image 字段。 schema 里没有图片的文章很难拿到富摘要。用一张至少 1200×675 像素的高质量图片。
衡量 Schema 的影响
部署 schema 之后,追踪它的影响:
Google Search Console → 效果(Performance)→ 搜索外观。 按“富结果”过滤,专门看那些获得了增强摘要的页面的展示次数、点击次数和点击率。对比前后数据。
GSC → 增强功能(Enhancements)。 每种 schema 类型(Article、FAQ、Breadcrumb)都有自己的报告,显示整个站点的有效页面、警告和错误。
部署 schema 到搜索结果里出现富摘要,预计有 2-4 周的延迟。Google 需要重新抓取、处理标记并更新索引。
Schema 与 AI 搜索(GEO)
结构化数据的意义不止于 Google 搜索结果。AI 引擎——ChatGPT、Perplexity、Claude——越来越多地解析 schema 来理解页面内容。当 AI 系统遇到 @type: "BlogPosting" 并带有清晰的作者和日期时,它对这个内容可信度的信心,比面对无结构文本的页面要高得多。
如果你在做 AI 搜索可见度优化,schema markup 是你所能做的高杠杆技术改动之一。这不只是为了富摘要——这是为了让你的内容对下一代搜索机器可读。
快速上手清单
- 在首页加 Organization schema(一次性设置)
- 在首页加带 SearchAction 的 WebSite schema(一次性设置)
- 在文章布局模板里加 BlogPosting/Article schema(一次性设置)
- 在页面模板里加 BreadcrumbList schema(一次性设置)
- 在带 FAQ 部分的文章里加 FAQPage schema(每篇文章)
- 部署前用富摘要测试验证每个页面
- 监控 GSC 增强功能报告里的 schema 错误
- 修订内容时更新 dateModified
对一个典型的内容站点来说,整个搭建过程大约需要 2 小时。一旦你的模板里包含了 schema,每篇新文章都会自动获得结构化数据,不需要额外工作。这就是复利回报——一次投入,永久获得富摘要资格。
要建立完整的技术 SEO 基础,可以把 schema markup 和 技术 SEO 审计 搭配起来,确保你的站点可抓取且速度快,然后专注于 内部链接 和 内容质量 来推动排名。