itemtype必须与itemscope成对使用才能生效,单独使用无效;课程结构需严格遵循Schema.org规范,用https://schema.org/Course等完整URL,属性名大小写敏感,复杂字段如provider、timeRequired须嵌套itemscope,避免http协议、层级错误和重复itemtype。

itemtype 必须配合 itemscope 使用才生效
单独写 itemtype 没有任何结构化效果,浏览器和搜索引擎完全忽略。它必须和 itemscope 成对出现,标记一个独立实体的开始。
课程是典型的 https://schema.org/Course 类型,所以最基础的写法是:
<div itemscope itemtype="https://schema.org/Course"> <h2 itemprop="name">Python 数据分析入门</h2> <p itemprop="description">涵盖 Pandas、Matplotlib 和真实数据集实战</p> </div>
-
itemscope声明这是一个独立语义块;itemtype指明这个块代表什么类型(必须是 Schema.org 定义的有效 URL) - 不要用缩写或简写 URL,比如
"Course"或"http://schema.org/Course"(缺s)都会失效 - 所有属性名(如
name、description)必须严格匹配 Schema.org 对Course的定义,大小写敏感
课程时间、学分、授课机构要用嵌套 itemscope
像 provider(授课机构)、courseCode(课程代码)、timeRequired(学习时长)这些字段,本身又是复杂对象或带单位的数据,不能直接用字符串硬塞。
例如描述“由清华大学计算机系提供,学分 3,建议学习时长 6 小时”:
立即学习“前端免费学习笔记(深入)”;
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
<div itemscope itemtype="https://schema.org/Course">
<span itemprop="courseCode">CS101</span>
<div itemprop="provider" itemscope itemtype="https://schema.org/EducationalOrganization">
<span itemprop="name">清华大学</span>
<div itemprop="department" itemscope itemtype="https://schema.org/Organization">
<span itemprop="name">计算机科学与技术系</span>
</div>
</div>
<div itemprop="timeRequired" itemscope itemtype="https://schema.org/Duration">
<meta itemprop="duration" content="PT6H">
</div>
<meta itemprop="creditText" content="3">
</div>
-
provider必须指向EducationalOrganization或Organization,不能只写学校名字字符串 -
timeRequired要用 ISO 8601 格式(如PT6H表示 6 小时),放在meta里避免污染可见内容 -
creditText是文本字段,适合写 “3 学分” 或 “3.0”,但不要写成数字类型(number不被支持)
避免常见验证失败:URL 协议、属性层级、重复 itemtype
Google Rich Results Test 或 Schema Markup Validator 报错,90% 出在三类地方:
- 用了
http://而不是https://—— 所有itemtype必须是https://schema.org/xxx - 把
itemprop写在了itemscope外层容器上(比如父div有itemscope,但itemprop="name"却放在子span外面) - 同一元素同时加了多个
itemtype(HTML 不允许),比如试图让一个div既是Course又是Event—— 此时应拆分为嵌套或并列结构
验证前务必用 Google Rich Results Test 直接粘贴 HTML 片段,它比肉眼检查更可靠。
课程章节、课时列表要用 itemprop="hasCourseInstance"
如果课程包含多个开班期(比如“2024 秋季班”“2025 春季班”),不能把每期都平铺为独立 Course。Schema.org 要求用 hasCourseInstance 关联 CourseInstance 实例。
<div itemscope itemtype="https://schema.org/Course">
<h2 itemprop="name">机器学习导论</h2>
<div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance">
<meta itemprop="courseMode" content="online">
<meta itemprop="startDate" content="2024-09-01">
<meta itemprop="endDate" content="2024-12-15">
</div>
<div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance">
<meta itemprop="courseMode" content="inPerson">
<meta itemprop="startDate" content="2025-02-20">
</div>
</div>
-
hasCourseInstance是Course的标准属性,不是可选项;漏掉它,课程排期信息无法被正确提取 -
CourseInstance支持courseMode(线上/线下)、startDate、endDate、instructor等,但不支持name—— 名称仍归Course本身 - 多个实例之间不要用
itemprop互相引用,保持扁平并列即可
嵌套层级容易多写一层或少写一层,尤其是 provider 和 CourseInstance 这类二级结构,手写时建议先画树状图再转 HTML。


















