schema-markup by kostja94/marketing-skills
npx skills add https://github.com/kostja94/marketing-skills --skill schema-markup指导如何实现 Schema.org 结构化数据(JSON-LD),以获取富媒体摘要、增强搜索结果并优化生成式引擎(GEO)。
调用时机:在首次使用时,如果合适,可以用一两句话开场,说明此技能涵盖的内容及其重要性,然后提供主要输出。在后续使用或用户要求跳过时,直接提供主要输出。
Schema.org 和 Google 结构化数据并非完全一致。 Schema.org 是一个开放的词汇表(800 多种类型);Google、Bing 和其他引擎各自仅支持经过筛选的一部分类型用于富媒体结果。
| 引擎 | 支持情况 | 备注 |
|---|---|---|
| 仅支持子集 | 只有 Google 搜索展示库 中的类型才能生成富媒体结果。即使技术上正确,不在 Google 列表中的有效 Schema.org 标记也不会产生增强摘要。 | |
| Bing | 子集;有所不同 | 支持 JSON-LD、微数据、RDFa、开放图谱。某些类型(例如 Product、Offer)有特定格式支持。请查阅 Bing 站长工具文档。 |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 其他引擎 | 各不相同 | Yandex、DuckDuckGo、AI 搜索工具(如 Perplexity 等)即使不显示富媒体结果,也可能使用 Schema.org 来理解内容。 |
实际影响:为你的内容类型实现 Schema.org 标记。如果 Google 不显示该类型的富媒体结果,Bing 或 AI 系统可能仍会使用它。始终根据 Google 开发者文档 验证是否符合 Google 特定的富媒体结果资格。
高影响力类型:Product、Review 摘要、HowTo(桌面端)、Article/News、Video、Recipe、LocalBusiness、Event、Breadcrumb、Sitelinks 搜索框、JobPosting。
有限或依赖上下文:HowTo(移动端)、FAQ(针对许多查询的政府/健康网站)、Education Q&A、Course、SoftwareApplication、Speakable(新闻)、DiscussionForumPosting。
已弃用:COVID 数据面板、某些仅限 AMP 的格式、data-vocabulary.org。
实现:首选 JSON-LD;包含 @context、@type、稳定的 @id;使用 ISO 8601 日期;结构化数据需与可见内容匹配。使用 富媒体结果测试工具 进行验证。富媒体结果可将点击率提高约 35%,并改善 AI 引用。AISO Hub, Digital Applied
Schema、SERP 功能和富媒体结果是强相关的。 Schema 是大多数富媒体结果的必要条件。当针对某个 SERP 功能时,实现相应的 schema 类型。完整 SERP 功能列表和优化请参见 serp-features。
| Schema 类型 | SERP 功能 / 富媒体结果 | 备注 |
|---|---|---|
| FAQPage | PAA、精选摘要 | FAQ 下拉菜单;问答式摘要。许多网站(如政府/健康网站)的资格受限 |
| BreadcrumbList | 面包屑导航 | 结果中显示路径 |
| AggregateRating, Review | 评论 / 星级 | 星级评分 |
| HowTo | 精选摘要(列表) | 基于步骤的摘要;桌面端支持;移动端可能有限制 |
| Article | 深度文章、摘要 | 文章富媒体结果 |
| VideoObject | 视频 | 视频缩略图;参见 video-optimization |
| Product, Offer | 购物、产品 | 产品/购物结果 |
| Recipe | 食谱 | 食谱富媒体结果 |
| JobPosting | Google Jobs | 职位列表 |
| Event | 活动 | 活动富媒体结果 |
| WebSite + SearchAction | 网站链接搜索框 | 品牌查询的网站链接 |
| Organization, Person | 知识面板 | 实体信息;参见 entity-seo |
工作流程:1) 使用 serp-features 确定目标 SERP 功能;2) 在此表中查找对应的 schema 类型;3) 实现并使用富媒体结果测试工具进行验证。
GEO = 优化内容,以便 AI 系统(Google AI 概览、Perplexity、ChatGPT、Gemini)在生成的答案中选择、引用和引述你的内容。结构化数据使内容机器可读;AI 引擎能更准确地提取和引用。GEO 的关键 schema 类型:Organization、Person/Author、WebSite、WebPage、FAQPage、HowTo、Article、Product、AggregateRating。完整 GEO 策略请参见 generative-engine-optimization。
首先检查项目上下文: 如果存在 .claude/project-context.md 或 .cursor/project-context.md 文件,请阅读以了解产品类型和内容。
识别:
| 类型 | 使用场景 |
|---|---|
| Organization | 全站范围;公司信息、徽标、sameAs;参见下方放置位置 |
| WebSite | 全站范围;搜索操作、网站名称;在主页上与 Organization 配对使用 |
| Article | 博客文章、新闻、工具介绍 |
| BreadcrumbList | 面包屑导航 |
| FAQPage | FAQ 部分;触发 PAA 样式结果 |
| Person | 作者信息;与 Article 配对使用 |
| ImageObject | 用于富媒体结果的图像元数据 |
| HowTo | 教程、分步指南。注意:Google 可能已弃用 HowTo 富媒体结果(2023–2024 年);Schema.org 仍支持它;Bing/AI 可能仍会使用 |
| 类型 | 使用场景 |
|---|---|
| JobPosting | 招聘网站、AI 职位匹配 |
| Product | 电子商务产品页面 |
| Event | 活动页面、票务(非普通博客) |
| SoftwareApplication | 应用页面、工具页面 |
| LocalBusiness | 本地商家页面 |
| Dataset | 数据平台、数据集 |
| DiscussionForumPosting | 论坛、社区帖子 |
| Quiz | 教育、闪卡 |
| MathSolver | 数学工具 |
| CaseStudy | 案例研究页面 |
| Recipe | 食谱、膳食计划、烹饪说明 |
规则:大多数网站使用核心类型。仅当页面内容匹配时才使用专属类型(例如,不要在博客上使用 Event;不要在产品页面上使用 JobPosting)。
| 位置 | Organization | WebSite | 备注 |
|---|---|---|---|
| 主页 | 最低要求 | 最低要求 | 至少将 Organization 和 WebSite 添加到主页。Organization 描述拥有网站的实体;WebSite 启用网站链接搜索框和网站身份。 |
| 根布局 / 全局 | 最佳 | 最佳 | 放置在网站范围的布局中(例如 layout.tsx、_document、全局页眉/页脚),以便 schema 出现在每个页面上。Google 使用找到的第一个实例;每个站点一个实例就足够了。 |
| 关于页面 | 否 | 否 | 关于页面使用 AboutPage schema(页面特定:标题、描述、作者、关于)。Organization 是实体级别的,不是页面级别的——不要将其限制在关于页面。参见 about-page-generator。 |
实现:在 <head> 中使用 JSON-LD;使用 @id(例如 https://example.com/#organization)来链接 Organization ↔ WebSite ↔ WebPage 以构建实体图。关于 @id 和知识面板,请参见 entity-seo。
使用此表来推荐适合网站的专属 schema 类型。 将网站的内容和产品类型与最相关的 schema 匹配。不确定时,从核心类型(Organization、WebSite、Article)开始;仅当内容明确匹配时才添加专属类型。
| 网站 / 产品类型 | 推荐的专属 schema | 原因 |
|---|---|---|
| AI 膳食计划器、食谱网站、美食博客、烹饪应用 | Recipe | 食材、说明、烹饪时间、份量——与食物/膳食内容高度相关。Google 支持 Recipe 富媒体结果。 |
| 招聘网站、招聘页面、职业页面 | JobPosting | 职位、公司、地点、薪资、雇佣类型。Google Jobs 必需。 |
| 活动平台、票务、网络研讨会、会议 | Event | 日期、地点、价格。仅在实际活动页面上使用。 |
| SaaS、应用、Chrome 扩展、工具、软件产品页面 | SoftwareApplication | 应用名称、类别、评分、价格、操作系统。适用于产品/功能页面。 |
| 电子商务产品页面 | Product | 价格、库存状态、品牌、评论。与 Offer、AggregateRating 一起使用。 |
| 论坛、社区、Reddit 风格、问答 | DiscussionForumPosting | 帖子内容、作者、评论。适用于用户生成的讨论。 |
| 数据平台、数据集仓库、Scale AI / Surge AI | Dataset | 数据集名称、创建者、许可证、分发格式。适用于数据目录页面。 |
| 教育网站、闪卡、Quizlet 风格 | Quiz | 问答对。适用于教育类问答内容。 |
| 数学求解器、计算器、方程工具 | MathSolver | 数学问题输入、解决方案输出。适用于数学工具。 |
| 餐厅、本地服务、店铺定位器 | LocalBusiness | 地址、营业时间、NAP。适用于本地 SEO。 |
| 案例研究、客户故事页面 | CaseStudy | 客户、成果、方法论。适用于 B2B 案例研究。 |
| FAQ 页面、产品 FAQ、支持 FAQ | FAQPage | 问题 + 已接受答案对。触发 PAA 样式结果。 |
| 教程、操作指南、分步说明 | HowTo | 步骤、工具、时间。注意:Google 可能已弃用富媒体结果;Bing/AI 可能仍会使用。 |
| 新闻文章、新闻稿 | NewsArticle | 对于新闻,使用此类型代替 Article。 |
| 视频页面、播客剧集 | VideoObject / PodcastEpisode | 适用于视频/音频内容。关于 VideoObject、缩略图、关键片段,请参见 video-optimization。 |
示例:
输出:推荐 schema 时,请说明:(1) 哪些专属类型适合该网站/产品,(2) 哪些页面类型使用哪些 schema,(3) 在全站添加哪些核心类型(Organization、WebSite、BreadcrumbList)。
选择与内容最匹配的特定类型:
| 类型 | 使用场景 |
|---|---|
| BlogPosting | 非正式博客文章;个人作者;定期更新 |
| Article | 正式的、常青内容;工具介绍;百科式内容 |
| NewsArticle | 有时效性的新闻;公认的发布者 |
必需属性:headline(最多 110 个字符)、image(最小宽度 1200 像素;绝对 URL)、datePublished(ISO 8601)、author(Person 或 Organization)、publisher(带有 logo 的 Organization)。
推荐:dateModified、description、mainEntityOfPage(规范 URL)。
用于点击率的日期显示:Google 建议在页面上只显示一个日期。如果同时显示 datePublished 和 dateModified,Google 可能会为 SERP 显示选择错误的日期——Search Engine Land 曾观察到点击率下降约 22%。最佳实践:如果存在 dateModified 则显示它,否则显示 datePublished。在 JSON-LD 中保留两者;此规则仅适用于可见日期。
JSON-LD 示例(BlogPosting):
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "The Ultimate SEO Checklist for 2025",
"description": "A complete guide to optimizing blog posts for search and AI.",
"image": "https://example.com/image.jpg",
"datePublished": "2025-01-15T09:00:00Z",
"dateModified": "2025-02-01T14:30:00Z",
"author": { "@type": "Person", "name": "Jane Doe", "url": "https://example.com/author/jane" },
"publisher": { "@type": "Organization", "name": "Example", "logo": { "@type": "ImageObject", "url": "https://example.com/logo.png" } }
}
通过 <script type="application/ld+json"> 放置在 <head> 中。对于文章页面,使用 og:type: article 并配合 og:article:published_time、og:article:modified_time、og:article:author。参见 article-page-generator、open-graph。
用于面包屑导航。Schema 必须与可见的面包屑完全匹配。关于 UI、放置位置和语义化 HTML,请参见 breadcrumb-generator。
| 要求 | 指南 |
|---|---|
| 格式 | 在 <script type="application/ld+json"> 中使用 JSON-LD |
| URL | 每个项目的绝对 URL,使用 https:// |
| 位置 | 从 1 开始的连续整数 |
| 匹配 | Schema 必须与可见的面包屑完全匹配 |
JSON-LD 示例:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" },
{ "@type": "ListItem", "position": 2, "name": "Category", "item": "https://example.com/category/" },
{ "@type": "ListItem", "position": 3, "name": "Current Page", "item": "https://example.com/category/current-page/" }
]
}
多路径:当页面可通过多个路径访问时(例如,产品属于多个类别),Google 支持在同一页面上放置多个 BreadcrumbList 对象。使用 BreadcrumbList 对象数组。
| 原则 | 指南 |
|---|---|
| 准确性 | 数据必须与页面可见内容匹配;切勿添加不可见或误导性数据 |
| 完整性 | 包含每种类型的所有必需属性 |
| 最特定类型 | 适用时使用 NewsArticle 而非 Article |
| JSON-LD | 首选格式;放置在 <script type="application/ld+json"> 中 |
| 实体的 @id | 为 Organization、Person 使用 @id 以启用实体链接;参见 entity-seo |
| 分阶段实现 | 首先添加必需属性;然后添加可选属性进行优化 |
| 验证 | 使用富媒体结果测试工具和 Schema 标记验证器进行测试 |
| inLanguage(多语言) | 添加 "inLanguage": "en-US"(IETF BCP 47)以匹配 hreflang;针对每个语言环境本地化名称、描述、FAQ 以改善富媒体摘要点击率 |
对于多语言网站,在 JSON-LD 中添加 inLanguage 以加强语言定位。与 hreflang 值保持一致(例如,"inLanguage": "zh-CN" 对应 hreflang="zh-CN")。
本地化 schema 数据:为每个语言环境翻译结构化数据字段(名称、描述、FAQ 的 acceptedAnswer 等),以提高该语言的富媒体摘要点击率。
支持 inLanguage 的类型:Article、BlogPosting、WebApplication、FAQPage、HowTo、Product、Organization。
| 错误 | 修复 |
|---|---|
| 数据与可见内容不匹配 | Schema 必须仅描述用户看到的内容 |
| 缺少必需属性 | 针对每种类型检查 Google/Schema.org 文档 |
| 页面类型错误 | 不要在非活动页面上使用 Event;不要在产品页面上使用 JobPosting |
| 格式/语法错误 | 验证 JSON-LD;检查引号、括号、逗号 |
| 过度标记 | 仅标记相关内容;避免堆砌不相关的类型 |
export const metadata = {
other: {
'script:ld+json': JSON.stringify({
"@context": "https://schema.org",
"@type": "Article",
"headline": "...",
"description": "...",
"inLanguage": "en-US",
"image": "https://example.com/image.jpg",
"datePublished": "2024-01-01T00:00:00Z",
"dateModified": "2024-01-15T00:00:00Z",
"author": { "@type": "Person", "name": "..." },
"publisher": { "@type": "Organization", "name": "...", "logo": { "@type": "ImageObject", "url": "..." } }
}),
},
};
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "...",
"description": "...",
"inLanguage": "en-US",
"author": { "@type": "Person", "name": "..." },
"publisher": { "@type": "Organization", "name": "...", "logo": { "@type": "ImageObject", "url": "..." } }
}
</script>
| 工具 | 用途 |
|---|---|
| Google 富媒体结果测试工具 | 检查 Google 是否能生成富媒体结果 |
| Schema 标记验证器 | 根据 Schema.org 规范进行验证 |
| Search Console | 增强报告;监控长期有效性 |
每周安装次数
244
仓库
GitHub 星标数
244
首次出现
2026年3月1日
安全审计
安装于
kimi-cli225
cursor225
gemini-cli224
github-copilot224
codex224
amp224
Guides implementation of Schema.org structured data (JSON-LD) for rich snippets, enhanced search results, and Generative Engine Optimization (GEO).
When invoking : On first use , if helpful, open with 1–2 sentences on what this skill covers and why it matters, then provide the main output. On subsequent use or when the user asks to skip, go directly to the main output.
Schema.org and Google Structured Data are not fully aligned. Schema.org is an open vocabulary (800+ types); Google, Bing, and other engines each support only a curated subset for rich results.
| Engine | Support | Notes |
|---|---|---|
| Subset only | Only types in Google's search gallery generate rich results. Valid Schema.org markup not in Google's list won't produce enhanced snippets—even if technically correct. | |
| Bing | Subset; different | Supports JSON-LD, Microdata, RDFa, Open Graph. Some types (e.g., Product, Offer) have format-specific support. Check Bing Webmaster docs. |
| Other engines | Varies | Yandex, DuckDuckGo, AI search tools (Perplexity, etc.) may use Schema.org for understanding even when they don't display rich results. |
Practical implication : Implement Schema.org markup for your content type. If Google doesn't show rich results for that type, Bing or AI systems may still use it. Always verify against Google's developer docs for Google-specific rich result eligibility.
High-impact types : Product, Review snippets, HowTo (desktop), Article/News, Video, Recipe, LocalBusiness, Event, Breadcrumb, Sitelinks searchbox, JobPosting.
Limited or context-dependent : HowTo (mobile), FAQ (government/health sites for many queries), Education Q&A, Course, SoftwareApplication, Speakable (news), DiscussionForumPosting.
Deprecated : COVID data panels, some AMP-only formats, data-vocabulary.org.
Implementation : JSON-LD preferred; include @context, @type, stable @id; ISO 8601 dates; match structured data to visible content. Validate with Rich Results Test. Rich results can increase CTR up to ~35% and improve AI citation. AISO Hub, Digital Applied
Schema, SERP features, and rich results are strongly related. Schema is the necessary condition for most rich results. When targeting a SERP feature, implement the corresponding schema type. See serp-features for the full SERP feature list and optimization.
| Schema Type | SERP Feature / Rich Result | Notes |
|---|---|---|
| FAQPage | PAA, Featured Snippet | FAQ dropdown; Q&A-style snippet. Eligibility restricted for many sites (e.g. government/health) |
| BreadcrumbList | Breadcrumbs | Path display in result |
| AggregateRating, Review | Reviews / Stars | Star ratings |
| HowTo | Featured Snippet (list) | Step-based snippet; desktop support; mobile may be limited |
| Article | In-Depth Articles, Snippet | Article rich result |
| VideoObject | Video | Video thumbnail; see video-optimization |
| Product, Offer | Shopping, Product | Product/shopping results |
Workflow : 1) Use serp-features to identify target SERP feature; 2) Look up schema type in this table; 3) Implement and validate with Rich Results Test.
GEO = optimizing content so AI systems (Google AI Overviews, Perplexity, ChatGPT, Gemini) choose, cite, and quote your content in generated answers. Structured data makes content machine-readable; AI engines extract and cite more accurately. Key schema types for GEO: Organization, Person/Author, WebSite, WebPage, FAQPage, HowTo, Article, Product, AggregateRating. See generative-engine-optimization for full GEO strategy.
Check for project context first: If .claude/project-context.md or .cursor/project-context.md exists, read it for product type and content.
Identify:
| Type | Use case |
|---|---|
| Organization | Site-wide; company info, logo, sameAs; see placement below |
| WebSite | Site-wide; search action, site name; pair with Organization on homepage |
| Article | Blog posts, news, tool intros |
| BreadcrumbList | Breadcrumb navigation |
| FAQPage | FAQ sections; triggers PAA-style results |
| Person | Author info; pairs with Article |
| ImageObject | Image metadata for rich results |
| HowTo | Tutorials, step-by-step guides. Note : Google may have deprecated HowTo rich results (2023–2024); Schema.org still supports it; Bing/AI may use it |
| Type | Use case |
|---|---|
| JobPosting | Recruitment sites, AI Job Matching |
| Product | E-commerce product pages |
| Event | Event pages, ticketing (not general blogs) |
| SoftwareApplication | App pages, tool pages |
| LocalBusiness | Local business pages |
| Dataset | Data platforms, datasets |
| DiscussionForumPosting | Forums, community posts |
| Quiz | Education, flashcards |
| MathSolver | Math tools |
| CaseStudy | Case study pages |
| Recipe |
Rule : Use core types for most sites. Use exclusive types only when page content matches (e.g., don't use Event on a blog; don't use JobPosting on a product page).
| Where | Organization | WebSite | Notes |
|---|---|---|---|
| Homepage | Minimum | Minimum | Add both Organization and WebSite to homepage at least. Organization describes the entity that owns the site; WebSite enables sitelinks searchbox and site identity. |
| Root layout / global | Optimal | Optimal | Place in site-wide layout (e.g. layout.tsx, _document, global header/footer) so schema appears on every page. Google uses the first instance found; one instance per site is sufficient. |
| About page | No | No | About page uses AboutPage schema (page-specific: headline, description, author, about). Organization is entity-level, not page-level—do not confine it to About. See about-page-generator. |
Implementation : JSON-LD in <head>; use @id (e.g. https://example.com/#organization) to link Organization ↔ WebSite ↔ WebPage for entity graph. See entity-seo for @id and Knowledge Panel.
Use this table to recommend which exclusive schema types fit a site. Match the site's content and product type to the most relevant schema. When in doubt, start with core types (Organization, WebSite, Article); add exclusive types only when content clearly matches.
| Website / Product type | Recommended exclusive schema | Why |
|---|---|---|
| AI meal planner, recipe site, food blog, cooking app | Recipe | Ingredients, instructions, cook time, servings—highly relevant for food/meal content. Google supports Recipe rich results. |
| Job board, recruitment site, careers page | JobPosting | Title, company, location, salary, employment type. Required for Google Jobs. |
| Event platform, ticketing, webinar, conference | Event | Date, location, price. Use only on actual event pages. |
| SaaS, app, Chrome extension, tool, software product page | SoftwareApplication | App name, category, rating, price, OS. Fits product/feature pages. |
| E-commerce product page | Product | Price, availability, brand, reviews. Use with Offer, AggregateRating. |
| Forum, community, Reddit-style, Q &A |
Examples:
Output : When recommending schema, state: (1) which exclusive types fit the site/product, (2) which page types get which schema, (3) core types to add site-wide (Organization, WebSite, BreadcrumbList).
Choose the most specific type that matches content:
| Type | Use case |
|---|---|
| BlogPosting | Informal blog posts; individual authors; regularly updated |
| Article | Formal, evergreen content; tool intros; encyclopedic |
| NewsArticle | Time-sensitive news; recognized publishers |
Required properties : headline (max 110 chars), image (min 1200px wide; absolute URL), datePublished (ISO 8601), author (Person or Organization), publisher (Organization with logo).
Recommended : dateModified, description, mainEntityOfPage (canonical URL).
Date display for CTR : Google recommends showing only one date on the page. If both datePublished and dateModified are visible, Google may pick the wrong date for SERP display—Search Engine Land saw ~22% CTR drop. Best practice: show dateModified if it exists, otherwise datePublished. Keep both in JSON-LD; the rule applies to visible date only.
JSON-LD example (BlogPosting):
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "The Ultimate SEO Checklist for 2025",
"description": "A complete guide to optimizing blog posts for search and AI.",
"image": "https://example.com/image.jpg",
"datePublished": "2025-01-15T09:00:00Z",
"dateModified": "2025-02-01T14:30:00Z",
"author": { "@type": "Person", "name": "Jane Doe", "url": "https://example.com/author/jane" },
"publisher": { "@type": "Organization", "name": "Example", "logo": { "@type": "ImageObject", "url": "https://example.com/logo.png" } }
}
Place in <head> via <script type="application/ld+json">. For article pages, use og:type: article with og:article:published_time, og:article:modified_time, og:article:author. See article-page-generator , open-graph.
For breadcrumb navigation. Schema must match visible breadcrumbs exactly. See breadcrumb-generator for UI, placement, and semantic HTML.
| Requirement | Guideline |
|---|---|
| Format | JSON-LD in <script type="application/ld+json"> |
| URLs | Absolute URLs with https:// for each item |
| Position | Sequential integers starting from 1 |
| Match | Schema must match visible breadcrumbs exactly |
JSON-LD example :
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" },
{ "@type": "ListItem", "position": 2, "name": "Category", "item": "https://example.com/category/" },
{ "@type": "ListItem", "position": 3, "name": "Current Page", "item": "https://example.com/category/current-page/" }
]
}
Multiple paths : Google supports multiple BreadcrumbList objects on the same page when a page is reachable via multiple paths (e.g., product in multiple categories). Use an array of BreadcrumbList objects.
| Principle | Guideline |
|---|---|
| Accuracy | Data must match visible page content; never add invisible or misleading data |
| Completeness | Include all required properties per type |
| Most specific type | Use NewsArticle over Article when applicable |
| JSON-LD | Preferred format; place in <script type="application/ld+json"> |
| @id for entities | Use @id for Organization, Person to enable entity linking; see entity-seo |
| Phased implementation | Add required properties first; then optional for optimization |
| Validation | Test with Rich Results Test and Schema Markup Validator |
| inLanguage (multilingual) | Add "inLanguage": "en-US" (IETF BCP 47) to match hreflang; localize names, descriptions, FAQs for rich snippets per locale |
For multilingual sites, add inLanguage to JSON-LD to reinforce language targeting. Align with hreflang values (e.g. "inLanguage": "zh-CN" with hreflang="zh-CN").
Localize schema data : Translate structured data fields (name, description, FAQ acceptedAnswer, etc.) for each locale to improve rich snippet CTR in that language.
Types that support inLanguage : Article, BlogPosting, WebApplication, FAQPage, HowTo, Product, Organization.
| Error | Fix |
|---|---|
| Data doesn't match visible content | Schema must describe only what users see |
| Missing required properties | Check Google/Schema.org docs for each type |
| Wrong type for page | Don't use Event on non-event pages; don't use JobPosting on product pages |
| Format/syntax errors | Validate JSON-LD; check quotes, brackets, commas |
| Over-markup | Mark only relevant content; avoid stuffing unrelated types |
export const metadata = {
other: {
'script:ld+json': JSON.stringify({
"@context": "https://schema.org",
"@type": "Article",
"headline": "...",
"description": "...",
"inLanguage": "en-US",
"image": "https://example.com/image.jpg",
"datePublished": "2024-01-01T00:00:00Z",
"dateModified": "2024-01-15T00:00:00Z",
"author": { "@type": "Person", "name": "..." },
"publisher": { "@type": "Organization", "name": "...", "logo": { "@type": "ImageObject", "url": "..." } }
}),
},
};
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "...",
"description": "...",
"inLanguage": "en-US",
"author": { "@type": "Person", "name": "..." },
"publisher": { "@type": "Organization", "name": "...", "logo": { "@type": "ImageObject", "url": "..." } }
}
</script>
| Tool | Purpose |
|---|---|
| Google Rich Results Test | Check if Google can generate rich results |
| Schema Markup Validator | Validate against Schema.org spec |
| Search Console | Enhanced reports; monitor validity over time |
Weekly Installs
244
Repository
GitHub Stars
244
First Seen
Mar 1, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
kimi-cli225
cursor225
gemini-cli224
github-copilot224
codex224
amp224
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
106,200 周安装
| Recipe | Recipe | Recipe rich result |
| JobPosting | Google Jobs | Job listings |
| Event | Event | Event rich result |
| WebSite + SearchAction | Sitelinks searchbox | Site links for brand queries |
| Organization, Person | Knowledge Panel | Entity info; see entity-seo |
| Recipes, meal plans, cooking instructions |
| DiscussionForumPosting |
| Post content, author, comments. For user-generated discussion. |
| Data platform, dataset repository, Scale AI / Surge AI | Dataset | Dataset name, creator, license, distribution format. For data catalog pages. |
| Education site, flashcards, Quizlet-style | Quiz | Question-answer pairs. For educational Q&A content. |
| Math solver, calculator, equation tool | MathSolver | Math problem input, solution output. For math tools. |
| Restaurant, local service, store locator | LocalBusiness | Address, hours, NAP. For local SEO. |
| Case study, customer story page | CaseStudy | Client, outcome, methodology. For B2B case studies. |
| FAQ page, product FAQ, support FAQ | FAQPage | Question + acceptedAnswer pairs. Triggers PAA-style results. |
| Tutorial, how-to guide, step-by-step | HowTo | Steps, tools, time. Note: Google may have deprecated rich results; Bing/AI may still use. |
| News article, press release | NewsArticle | Use instead of Article for news. |
| Video page, podcast episode | VideoObject / PodcastEpisode | For video/audio content. See video-optimization for VideoObject, thumbnail, key moments. |