HowTo Schema 已被废弃但模板还在输出

Google 在 2023 年下线了 HowTo 富结果,但你的模板仍在每个页面注入 HowTo JSON-LD。Rich Results Test 通过,富结果却再也不出现 —— 这段标记现在已经是负担。

你的教程页几年来一直在输出 @type: HowTo JSON-LD。Rich Results Test 依然能验证通过。但 Search Console 不再上报 HowTo 展示数,SERP 里也不再出现分步富结果,核心更新之后教程页流量还掉了一截。Google 在 2023 年底下线了 HowTo 富结果 —— 2024 年初仅保留给极少数试点站点,之后从通用结果中彻底移除。Schema 本身仍然”合法”,但带不来任何结果增强;当它与可见内容不一致时,还会触发结构化数据警告,拖低信任信号。是时候清理掉了。

常见原因

按真实场景的命中率排序。

1. 模板里那段样板还在给每篇教程套 HowTo

之前的内容团队给每篇带有序列表的文章都加上了 @type: HowTo,模板从 2022 年起就没人碰过。Google 已经不再奖励这种标记,但代码还在。

怎么判断:随便 view-source 一篇教程。看到 "@type": "HowTo""step": [...] 就说明这套废弃 schema 还在线。

2. HowTo 的 step 跟可见页面对不上

页面改写成了叙述性文章,JSON-LD 里却还是旧的 step。Rich Results Test 通过(step 结构没问题),但 Google 的”内容是否匹配”那一关静默挂掉。

怎么判断:把 JSON-LD 里每个 HowToStepname 跟页面上可见的 H2 / H3 比对。改内容之后这两边经常错位。

3. CMS 插件把任意有序列表自动包成 HowTo

WordPress 的 Yoast、RankMath、Schema Pro 等插件会把任何 <ol> 自动包装成 HowTo。菜谱、清单文,甚至”5 个理由”这种文章都被打成 HowTo —— 没有一个是真正的过程式教程。

怎么判断:关掉插件里的 HowTo 生成器再构建一次。统计有多少页面失去了这段标记 —— 高于你真实教程数的部分就是假的。

4. HowTo 嵌套在 Article 里把 Google 弄糊涂

JSON-LD 里 Article 套了一个 HowTo,或者反过来。Google 的解析器只挑一个,而且往往挑错那个 —— Article 富结果一并消失。

怎么判断:在 Rich Results Test 里看”detected”的 schema 类型是什么。如果显示 HowTo 但你本意是 Article,嵌套关系就是错的。

5. 迁移过来的文章保留了 HowTo 但失去了 step 结构

CMS 迁移之后有序列表塌成了段落,但 JSON-LD 生成器还在从一个没人更新的数据库字段里读 step 出来发。

怎么判断:页面上一个可见的编号步骤都没有,JSON-LD 却声明有 8 个 step 的 HowTo。典型的过期数据特征。

6. 把 HowTo 跟 Recipe / Article 混为一谈

做饭内容用 Recipe。教学型文章用 Article(仍有日期和作者的小富片段)。HowTo 是单独一类,现在对大多数站点已经没了。

怎么判断:内容像 Article 写法(“我是怎么搭出 X 的”)但被打成了 HowTo。应该改成 ArticleTechArticle

开始前

  • 在你的语区确认 HowTo 的下线状态;对通用结果来说从 2024 年起已彻底退役。
  • 先抓一份当前还在输出 @type: HowTo 的 URL 列表 —— 后面要靠这个基线衡量清理进度。
  • 看 Search Console 的”搜索外观”里 HowTo 展示数是否还在 —— 几个月前就消失的话,这段标记什么都没在干。
  • 想清楚替换方案:大多数教程页应该改成 Article,配清晰的 H1 和分节小标题。

需要收集的信息

  • 输出 HowTo 的页面总数(用带结构化数据抽取的爬虫,或对渲染后 HTML 直接 grep)。
  • 最近 90 天 Search Console 里 HowTo 的展示量和点击量数据。
  • 负责输出这段标记的模板 / 插件 / 生成器。
  • 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 支持广泛,能给你回 HowTo 之前提供的 byline 和日期小片段。

第 3 步:在 SEO 插件里关掉 HowTo

Yoast:Schema 设置 → 取消勾选 “HowTo” 内容类型。RankMath:Schema → HowTo → 禁用。Schema Pro:删除 HowTo schema 规则。

保存后 view-source 一个代表页面,确认 HowTo 块没了。

第 4 步:合适的页面回填 Article schema

确实在记录过程的页面切到 ArticleTechArticle

{
  "@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 走 URL Inspection → Request indexing。

第 6 步:盯 Search Console 看警告清理

“Enhancements”里现有的 HowTo 条目会在 4-8 周内逐步消失。如果出现新警告(“HowTo step missing image”),先确认那些 URL 真的不再输出 HowTo —— 缓存层有时会留着旧 HTML。

验证

  • view-source 看 5 个教程页面,只见 Article(或 TechArticle),完全没有 HowTo
  • Rich Results Test 在同样的页面识别出 Article,并报告”无符合条件的 HowTo 结果”。
  • 30 天内 Search Console 的 “Enhancements” 里 HowTo 项消失。
  • 教程页点击随着 Article 型的 byline / 日期小片段回到 SERP 而有小幅回升。

长期预防

  • 在 repo 里维护一份 “schema registry”:一个文件列出站点输出的每个 @type、它的用途、以及拥有它的模板。
  • 订阅 Google Search Central 公告;每季度回顾一次结构化数据的废弃情况。
  • 结构化数据的变更要以代码 PR 形式 ship,由 SEO + 工程一起 review,不要靠 CMS 插件的开关来切换。
  • 加一个每周跑的 CI 检查,对渲染后 HTML grep 你拉黑的已废弃 schema 类型。
  • 新内容类型默认上 Article,只在 Google 真的有官方富结果支持时才加专用 schema。

常见坑

  • “Rich Results Test 还能过”就把 HowTo 留着。验证器只能证明语法对,证明不了 Google 会真的渲染。
  • 把 HowTo 换成 Article,但忘了写 authordatePublishedpublisher —— 这几个才是真正驱动 byline / 日期小片段的字段。
  • 只在 staging 上关了插件的 HowTo 开关,忘了生产是独立设置。
  • 给非菜谱内容加 Recipe schema,因为”它还能拿富结果”—— 违反 Google 内容指南,有被人工干预的风险。
  • 删掉了 JSON-LD 里的 HowTo,但 HTML 里 microdata 的 itemtype="https://schema.org/HowTo" 还留着。Google 依然会解析。

FAQ

Q:Google 是彻底干掉了 HowTo,还是只在某些品类下线?

对通用网页结果来说,HowTo 富结果增强从 2023 年底起不再展示,少数试点伙伴延续到 2024 年初。把 HowTo 当作”实际上没了”来对待。

Q:留着 HowTo schema 会伤排名吗?

不会直接惩罚你,但过期的或与内容不一致的 HowTo 会在 Search Console 触发结构化数据警告,长期会侵蚀信任信号。清理掉比放着不管更稳。

Q:分步教程现在用什么替代 HowTo?

ArticleTechArticle,配清晰的 H2/H3 步骤小标题。带上 mainEntityOfPageauthordatePublisheddateModified。这些能拿到 HowTo 以前给的 byline 和日期小片段。

Q:Rich Results Test 零警告通过的 HowTo 还要删吗?

要。一个”通过”的过期 schema 不会带来任何结果增强,反而给每个页面加 byte。维护成本远大于早已不存在的收益。

标签: #SEO #排查 #结构化数据 #howto-schema #JSON-LD