itemtype 必须与 itemscope 搭配使用才生效,单独书写无效;教育资源常用 Course 和 EducationalOccupationalProgram 类型,需用完整 HTTPS URL;itemprop 必须正确嵌套,name、description、url 为必需字段,provider 需嵌套 Organization 实体;microdata 与 JSON-LD 不可混用,否则导致重复解析;属性名严格区分大小写和空格,日期等字段须符合格式规范。

itemtype 属性必须搭配 itemscope 使用才有效
单独写 itemtype 没有任何结构化数据效果,浏览器和搜索引擎完全忽略。它只是定义类型,真正触发解析的是 itemscope —— 后者告诉解析器“这里是一段独立实体”,itemtype 则说明“这个实体属于哪一类”。常见错误是只加 itemtype 却漏掉 itemscope,结果 Schema.org 标记完全不生效。
教育资源最常用的是 https://schema.org/Course 和 https://schema.org/EducationalOccupationalProgram,前者适合高校课程、MOOC,后者偏向职业培训类项目。
- 必须用完整 HTTPS URL,
http://schema.org/Course或简写Course都无效 -
itemscope是布尔属性,写成itemscope=""或itemscope="itemscope"都行,但推荐无值写法itemscope - 一个元素上不能同时有多个
itemtype,如需多类型,得用itemtype列表(仅支持 JSON-LD,microdata 不支持)
教育资源关键属性要用 itemprop 正确嵌套
有了 itemscope 和 itemtype,还得用 itemprop 把具体字段挂载进去。比如课程名不是随便放个 <h2> 就行,必须显式标注 itemprop="name";时间信息也不能只写“2024年秋季”,得配合 itemprop="startDate" 且格式为 YYYY-MM-DD。
容易出错的点:把 itemprop 错放在父容器(比如整个卡片 div),导致子元素的属性被解析为同级而非隶属关系;或用 div 包裹文本却没设 itemprop,造成字段丢失。
立即学习“前端免费学习笔记(深入)”;
-
name、description、url是 Course 类型的必需字段(Google 富媒体搜索要求) -
provider必须是嵌套的Organization实体,不能直接写字符串,要另起<div itemscope itemtype="https://schema.org/Organization"><span itemprop="name">XX大学</span></div> -
educationalLevel接受字符串如"BachelorDegree",但推荐用 schema.org 枚举值链接,如<link itemprop="educationalLevel" href="https://schema.org/BachelorDegree">
避免与 JSON-LD 混用导致重复或冲突
不少页面同时用了 microdata(itemscope/itemtype)和页脚的 JSON-LD,结果同一课程被解析两次,Google Search Console 报告 “Duplicate structured data” 错误。microdata 和 JSON-LD 是两套独立机制,不能互相补充字段——比如用 microdata 写了 name 和 description,再用 JSON-LD 补 instructor,搜索引擎会当成两个不同 Course 实体处理。
- 选一种方式贯彻到底:对简单静态页面,microdata 更易调试;对动态渲染或复杂关系,JSON-LD 更可靠
- 如果已用 JSON-LD,就彻底移除所有
itemscope、itemtype、itemprop,否则 Google 可能优先取 microdata 而忽略 JSON-LD 中更全的数据 - 用 Rich Results Test 工具验证时,注意切换 “Microdata” 和 “JSON-LD” 标签页,分别检查
教育类 itemprop 值对大小写和空格敏感
itemprop 的值本身不区分大小写,但作为键名(key)时严格匹配 schema.org 定义。写成 itemprop="startdate" 或 itemprop="start date" 都不会被识别;同样,educationalLevel 不能写成 educationLevel 或 level。Google 不会纠错,只静默丢弃。
- 所有标准属性名查官方文档:https://schema.org/Course#properties,别凭记忆写
- 字符串值如
"Beginner"、"Intermediate"是合法的,但"入门"或"初级"在英文环境可能被忽略——多语言站点建议用inLanguage明确声明 - 日期、数字类字段必须符合格式规范:
startDate要2024-09-01,不能是2024/09/01或2024年9月
真正难的不是贴上 itemtype,而是让每个 itemprop 都落在语义正确的 HTML 元素里,并确保嵌套层级与 schema.org 类型约束一致。比如 courseCode 必须在 Course 下,不能挂在 provider 里面——这种错位肉眼难发现,只能靠工具反复验证。



















