你的教程页好几年来一直在输出 "@type": "HowTo" JSON-LD。validator.schema.org 上的 Schema Markup Validator 还能解析通过,看起来很健康。但 Search Console 早就不再上报 HowTo 展示数,分步富结果在任何 SERP 里都不再出现,连 Google 自己的 Rich Results Test 都已经识别不到这个类型了。
最快的修法: 别再输出 HowTo,把这些页面换成 Article(或 TechArticle)。Google 在 2023 年就下线了 HowTo 富结果 —— 移动端 2023 年 8 月、桌面端 2023 年 9 月 13 日 —— 随后又把它从 Rich Results Test 和 Search Console 报告里移除了。截至 2026 年 6 月,这段标记在任何端都带不来结果增强。它本身不会惩罚你,但一段跟可见页面对不上的 HowTo 就是该删的累赘。
这里最大的坑是一个工具误会,开始排查之前先搞清楚:
| 工具 | 它告诉你什么 | 还会显示 HowTo 吗 |
|---|---|---|
Schema Markup Validator(validator.schema.org) | 你的标记是否符合 schema.org 词汇规范 | 会 —— HowTo 仍是合法的 schema.org 类型,所以照样”通过” |
Google Rich Results Test(search.google.com/test/rich-results) | 这段标记是否有资格拿 Google 富结果 | 不会 —— HowTo 已不是支持类型,所以什么都不报 |
如果你”证明它有效”靠的是 validator.schema.org 上的一个绿勾,那只证明了语法对。Google 早在几年前就不再渲染 HowTo 了。
常见原因
按真实场景的命中率排序。
1. 模板里那段样板还在给每篇教程套 HowTo
之前的内容团队给每篇带有序列表的文章都加上了 "@type": "HowTo",模板从 2022 年起就没人碰过。Google 已经不再奖励这种标记,但代码还在。
怎么判断: 随便 view-source 一篇教程。看到 "@type": "HowTo" 配 "step": [...] 数组,就说明这套废弃 schema 还在线。
2. HowTo 的 step 跟可见页面对不上
页面改写成了叙述性文章,JSON-LD 里却还是旧的 step。Schema Markup Validator 能通过(step 结构没问题),但这段标记描述的是一个已经不存在的页面。
怎么判断: 把 JSON-LD 里每个 HowToStep 的 name 跟页面上可见的 H2 / H3 比对。改完内容之后这两边经常错位。
3. CMS 插件把任意有序列表自动包成 HowTo
WordPress 的 Yoast、Rank Math、Schema Pro 等插件会把任何 <ol> 自动包装成 HowTo。菜谱、清单文,甚至”5 个理由”这种文章都被打成 HowTo —— 没有一个是真正的过程式教程。
怎么判断: 关掉插件里的 HowTo 生成器再构建一次。统计有多少页面失去了这段标记 —— 高于你真实教程数的部分就是假的。
4. HowTo 嵌套在 Article 里,把解析器弄糊涂
JSON-LD 里 Article 套了一个 HowTo,或者反过来。解析器可能只挑一个类型、忽略另一个 —— 而且常常挑错那个 —— 结果 Article 富结果(byline 和日期片段)也跟着消失。
怎么判断: 在 Rich Results Test 里看”detected”的 schema 类型是什么。如果它什么都没识别到、或者识别成了不是你想要的类型,那嵌套关系就是问题所在。
5. 迁移过来的文章保留了 HowTo 但失去了 step 结构
CMS 迁移之后有序列表塌成了段落,但 JSON-LD 生成器还在从一个没人更新的数据库字段里读 step 出来发。
怎么判断: 页面上一个可见的编号步骤都没有,JSON-LD 却声明有 8 个 step 的 HowTo。典型的过期数据特征。
6. 把 HowTo 跟 Recipe / Article 混为一谈
做饭内容用 Recipe,它仍能拿富结果。教学型文章用 Article 或 TechArticle,仍有作者和日期的展示。HowTo 是单独一类,现在对所有站点都没了。
怎么判断: 内容是文章写法(“我是怎么搭出 X 的”)却被打成了 HowTo。应该改成 Article 或 TechArticle。
你属于哪一类
| 症状 | 可能原因 | 跳到 |
|---|---|---|
| 每篇教程都输出 HowTo | 模板 / 主题样板 | 第 2 步 |
| 只有部分页面输出 | 按文章打的开关或插件规则 | 第 1 步,再看第 3 步 |
| HowTo 的 step 跟可见标题不一致 | 改写后的过期内容 | 第 4 步 |
| 清单文、菜谱被打成 HowTo | 插件自动包住了每个 <ol> | 第 3 步 |
| Article 富结果也一并消失 | HowTo 嵌套在 Article 里 | 第 2 步 |
开始前
- HowTo 对通用结果来说已彻底退役;截至 2026 年 6 月不存在任何还在生效的语区或试点例外。(2023 年 8 月宣布的”仅限政府和健康网站”豁免针对的是 FAQ 富结果,不是 HowTo —— 而 FAQ 本身也在 2026 年 5 月 7 日停止展示,所以别指望这两个会回来。)
- 先抓一份当前还在输出
"@type": "HowTo"的 URL 列表 —— 后面要靠这个基线衡量清理进度。 - 看 Search Console 的”搜索外观”里 HowTo 展示数是否还在。它几乎肯定在 2023 年就消失了;真是这样的话,这段标记对 Google 什么都没在干。
- 想清楚替换方案:大多数教程页应该改成
Article或TechArticle,配清晰的 H1 和分节小标题。
需要收集的信息
- 输出 HowTo 的页面总数(用带结构化数据抽取的爬虫,或对渲染后 HTML 直接
grep)。 - 负责输出这段标记的模板、插件或生成器。
- HowTo step 与可见 H2/H3 列表不一致的页面。
- HowTo 是最外层 JSON-LD,还是嵌在 Article 里面。
一步步修
按代价从小到大。
第 1 步:确认这段标记真的在线且过期
挑 5 个教程 URL 查渲染后的 HTML:
for url in /tutorial/setup /tutorial/install /tutorial/deploy /tutorial/cleanup /tutorial/upgrade; do
echo "=== $url ==="
curl -s "https://example.com$url" | grep -A1 '"@type": "HowTo"' | head -5
done
如果每个 URL 都输出 HowTo,是模板的问题。只有部分输出,那就是按文章打的开关或某条插件规则在作祟。
第 2 步:从模板里移掉 HowTo 生成器
在 Astro / Next / Eleventy 模板里找到输出 "@type": "HowTo" 的 JSON-LD 块,把它换成 Article:
// before
const jsonLd = {
"@context": "https://schema.org",
"@type": "HowTo",
"name": article.title,
"step": article.steps.map((s, i) => ({
"@type": "HowToStep",
"position": i + 1,
"name": s.heading,
"text": s.body,
})),
};
// after
const jsonLd = {
"@context": "https://schema.org",
"@type": "Article",
"headline": article.title,
"datePublished": article.publishedAt,
"dateModified": article.modifiedAt ?? article.publishedAt,
"author": { "@type": "Person", "name": article.author },
};
Article 支持广泛,能给你 byline 和日期展示 —— 而 HowTo 本身从来就没真正提供过这些。
第 3 步:在 SEO 插件里关掉 HowTo
- Yoast: 独立的 HowTo 区块已被弃用;把受影响文章里的
HowTo区块删掉,确认 schema 图里不再带 HowTo 节点。 - Rank Math: Titles & Meta / 单篇文章的 Schema 标签页 → 删除或改掉
HowToschema,或关掉 HowTo 的 schema 模板。 - Schema Pro: 删掉指向你教程模板的那条 HowTo schema 规则。
保存后 view-source 一个代表页面,确认 HowTo 块没了。插件不同版本行为有差异,所以以渲染出来的页面为准,别只信开关。
第 4 步:合适的页面回填 Article schema
确实在记录过程的页面切到 Article 或 TechArticle:
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "Deploy a Static Site to Cloudflare Pages",
"datePublished": "2026-01-12",
"dateModified": "2026-05-10",
"author": { "@type": "Person", "name": "Jane Lee" },
"publisher": {
"@type": "Organization",
"name": "Example Inc",
"logo": { "@type": "ImageObject", "url": "https://example.com/logo.png" }
},
"mainEntityOfPage": "https://example.com/tutorial/deploy-cloudflare"
}
第 5 步:把之前是 HowTo 的 URL 全部重新验证一遍
重新爬一次。结构化数据抽取器现在应该只看到 Article,没有 HowTo。然后挑几个 URL 在 Google 的 Rich Results Test 里抽查 —— 它应该识别出 Article,对 HowTo 只字不提。再挑几个代表性 URL 走 URL Inspection → Request indexing,让 Google 重新抓取。
第 6 步:盯 Search Console 收尾
残留的 HowTo 报告早在 2023 年就被 Google 移除了,所以你不会看到某个 HowTo “Enhancement” 报告慢慢消失。你要盯的是 Article / 面包屑 这类外观保持健康,以及重新抓取的页面上没有冒出新的结构化数据错误。如果某个 HowTo 块在你的爬取结果里死活又出现,那就是缓存层或 CDN 在发旧 HTML —— 清掉缓存再测。
怎么确认修好了
- view-source 看 5 个教程页面,显示
Article(或TechArticle),完全没有HowTo。 - Google 的 Rich Results Test 在这些页面识别出 Article,并且不提 HowTo(它也提不了 —— HowTo 已不被支持)。
- 带结构化数据抽取的站点爬取返回零个携带
"@type": "HowTo"的页面(且没有itemtype="https://schema.org/HowTo"的 microdata)。 - 接下来几周里,Search Console 在重新抓取的 URL 上没有出现新的结构化数据错误。
长期预防
- 在 repo 里维护一份 “schema registry”:一个文件列出站点输出的每个
@type、它的用途、以及拥有它的模板。 - 订阅 Google Search Central 博客,每季度回顾一次结构化数据的废弃情况。FAQ 富结果是最近一个牺牲品(2026 年 5 月 7 日起消失),Practice Problem 在 2026 年 1 月被移除 —— 这份清单一直在缩短。
- 结构化数据的变更要以代码 PR 形式 ship,由 SEO 和工程一起 review,不要靠某个人去拨 CMS 插件的开关。
- 加一个每周跑的 CI 检查,对渲染后 HTML grep 你拉黑的已废弃 schema 类型。
- 新内容类型默认上
Article,只在 Google 真的有官方富结果支持时才加专用 schema。
常见坑
- 把
validator.schema.org的绿勾当成”结果有效”的证据。那个工具只验证 schema.org 词汇;告诉你资格的是 Google 的 Rich Results Test,而它从 2023 年起就识别不到 HowTo 了。 - 把 HowTo 换成
Article,却忘了写author、datePublished、publisher—— 这几个才是真正驱动 byline 和日期展示的字段。 - 只在 staging 上关了插件的 HowTo 开关,忘了生产是独立设置。
- 给非菜谱内容加
Recipeschema,因为”它还能拿富结果”—— 这违反 Google 内容指南,有被人工干预的风险。 - 删掉了 JSON-LD 里的 HowTo,但 HTML 里 microdata 的
itemtype="https://schema.org/HowTo"还留着。解析器依然会读它。
FAQ
Q:Google 是彻底干掉了 HowTo,还是只在某些品类下线?
彻底,对所有人都是。HowTo 富结果在 2023 年 8 月停止在移动端展示、2023 年 9 月 13 日在桌面端停止,随后 Google 把 HowTo 从 Rich Results Test 和 Search Console 报告里移除。截至 2026 年 6 月没有任何残留的试点或语区例外。把 HowTo 当作”没了”来对待。
Q:我的 HowTo 验证零错误,不就说明它有效吗?
不能。你几乎肯定用的是 Schema Markup Validator(validator.schema.org),它检查的是 schema.org 词汇,任何合法的 HowTo 它都会乐意放行。能否拿到 Google 富结果是另一个问题,由 Rich Results Test 回答 —— 而它已经完全识别不到 HowTo 了。
Q:留着 HowTo schema 会伤排名吗?
它本身不会。Google 自己的说法是:没被使用的结构化数据不会给 Search 带来问题。真正的风险是改写之后那段跟可见页面矛盾的 HowTo —— 那是误导性标记,该删。干净地删掉,比维护一段什么都不干的标记更省事。
Q:分步教程现在用什么替代 HowTo?
Article 或 TechArticle,配清晰的 H2/H3 步骤小标题。带上 mainEntityOfPage、author、datePublished、dateModified。这些能让 byline 和日期继续出现在 SERP 里;分步编号那种富结果本身已经不存在了。
Q:如果 HowTo 没造成什么麻烦,还值得删吗?
如果 step 和页面对得上,删除是低优先级的清理。如果 step 已经过期、或者标记是被自动塞到清单文和菜谱上的,那就现在删 —— 这种情况最容易产生误导性标记的信号,而且白白给每个页面加 byte、零收益。