howto结构化数据必须用type="application/ld+json"静态嵌入html源码,ssr输出,含@context、@type、name、step(howtostep数组,每项含name和text)、totaltime或estimatedcost,且text须与页面可见文本逐字一致。

HowTo 类型必须用 type="application/ld+json" 嵌入,且不能动态生成
Google 只识别放在 HTML 源码中、type 严格为 "application/ld+json" 的 script 标签。用 useEffect、mounted 或 document.createElement('script') 在客户端注入,Googlebot 看不到,直接失效。
- SSR 框架(如 Next.js、Nuxt)必须在服务端吐出完整 JSON-LD
- 不要套在
<div>、<code><section></section>或其他标签内,必须是独立的<script></script> -
type写成"text/json"、"application/json"或漏写,全都不认 -
@context必须是"@#@#@#@#@#@#@#@#@#@0"(不是http,也不能拼错) -
@type必须是"HowTo"(大小写敏感) -
name是步骤总标题,比如"如何更换自行车内胎" -
step是数组,每项必须是HowToStep类型,且至少含name(单步标题)和text(操作描述) -
totalTime或estimatedCost至少填一个(否则富摘要不触发) - 页面上写的是
"用扳手拧松螺母",JSON-LD 里就不能写成"使用扳手松开螺母" - 全角空格、换行符、中文标点(,。!?)都算差异
- 如果步骤含图片或视频,
HowToStep可加image或video字段,但 URL 必须可公开访问、返回 200 - 多个步骤别合并成一段
text,必须拆成独立HowToStep对象 - JSON 语法错误:末尾多逗号、用了单引号或中文引号、写了 JS 注释(
//或/<em> </em>/) -
step写成对象而非数组,比如"step": { "name": "第一步" }(正确应为"step": [ { "name": "第一步", "text": "..." } ]) -
HowToStep缺text字段,或误写成description、body -
image字段值是相对路径(如"./img.jpg")或本地路径(如"file:///C:/img.jpg")
HowTo 必须包含哪些字段才被识别
Google 对 HowTo 的最低要求比 Article 更细,缺任一关键字段就退化为普通文本:
HowToStep 的 text 必须和页面可见内容逐字一致
这不是“意思对就行”,而是字符级匹配:
常见报错:“无法解析结构化数据”怎么快速定位
Google Search Console 或 URL Inspection Tool 报这个错,90% 是以下几类:
最易被忽略的一点:你改了页面上的步骤文案,但忘了同步更新 JSON-LD 里的 name 和 text——哪怕只是删了一个“请”字,富摘要也会消失。











