最稳妥的是将 HowTo 结构化数据用 JSON-LD 格式写在 中;step 必须为数组,每项含 name 和 text,缺一则 Google 不识别,且 itemListElement 对 HowTo 无效。

直接说结论:HowTo 结构化数据用 JSON-LD 格式写在 里最稳妥,别用 Microdata 或 RDFa;itemListElement 必须是数组、顺序不能错、每个步骤必须含 name 和 text,漏一个 Google 就不识别。
怎么写 HowTo 的 JSON-LD 脚本
Google 官方只明确支持 JSON-LD 方式注入 HowTo,其他方式(比如写在 <div itemscope itemtype="https://schema.org/HowTo"> 里)兼容性差,实测在 Search Console 的富媒体测试工具中容易报“未检测到有效 HowTo”。
<p>关键点:</p>
<ul>
<li>
<code>@context 必须是 "https://schema.org",不能省略或写错大小写
@type 必须是 "HowTo"(首字母大写,不是 howto 或 Howto)step 字段必须叫 step,不能写成 steps 或 instructions
HowToStep 对象里,name 是简短标题(如“混合干料”),text 是完整说明(支持 HTML 标签,但别嵌 script/style)image 字段,值为 {"@type": "ImageObject", "url": "..."},不是直接写字符串示例片段(可直接复制进 ):
立即学习“前端免费学习笔记(深入)”;
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "如何煮溏心蛋",
"description": "5 分钟搞定完美溏心蛋的详细步骤",
"step": [
{
"@type": "HowToStep",
"name": "烧水",
"text": "锅中加水至没过鸡蛋 2cm,大火煮沸。",
"image": {
"@type": "ImageObject",
"url": "https://example.com/steps/boil-water.jpg"
}
},
{
"@type": "HowToStep",
"name": "下蛋",
"text": "用勺子轻轻将鸡蛋滑入沸水中,避免磕碰。"
}
]
}
</script>
为什么 itemListElement 不起作用
很多人照着文档抄了 itemListElement,结果 Structured Data Testing Tool 显示“缺少 step”——因为 HowTo 类型根本不认 itemListElement。那是 ItemList 或 Recipe 用的字段,硬套过去只会让整个结构失效。
常见错误现象:
- 写了
"itemListElement": [...],但没写"step": [...]→ Google 直接忽略整个脚本 - 把步骤对象塞进
itemListElement里,同时又写了step→ 优先取step,itemListElement被静默丢弃 - 步骤数组里某个对象缺
name或text→ 整个step数组被判定为无效,不报错但不渲染富媒体
HowTo 在搜索结果里不显示?检查这三点
即使 JSON-LD 语法全对,也可能不出富媒体卡片。核心限制不在代码本身,而在页面内容和上下文:
- 页面主体内容必须真实包含对应步骤文字,且语义匹配——比如
text写“预热烤箱至180℃”,正文里就得有几乎一致的表述,不能只写“烤箱调到中火” - 页面不能是登录后才可见、不能有反爬 JS 渲染、不能被
noindex拦截——Googlebot 必须能干净地抓取到完整 HTML 和内联 JSON-LD - 同一域名下短期内提交大量相似 HowTo(比如换食材名批量生成)会被降权,Google 认为是模板化内容
最容易被忽略的是:JSON-LD 必须放在 ,不能放 底部;哪怕语法完全正确,放错位置就等于没写。



















