Word教案制作工具 (Word Lesson Plan Creator)
Description
标准化制作Word教案的工具。基于《教案模板(2026秋).doc》(长江艺术工程职业学院课程教案模板,42行×5列单表格结构),将用户提供的标准Word模板和PPT课件,生成填充好的Word教案。
架构说明:本工具分「提取 → 生成 → 回填」三步,文案由 WorkBuddy Agent 的 LLM 生成(脚本本身不内置任何 LLM API、不存 API Key、不发 HTTP 请求):
1. extract 子命令:脚本提取 PPT 文本 + 图片 OCR 文字 + 模板字段骨架,导出 JSON;
2. Agent(我)读取 JSON,按 SKILL.md 的「填充标准」逐字段生成教案文案,产出 knowledge.json;
3. fill 子命令:脚本把 knowledge.json 回填进 Word 模板,输出最终 .docx。
PPT中的图片会用 OCR 提取文字(如截图里的关键信息),并入内容分析供教案生成参考,并留存为备用文件。
When to Use
- 需要制作标准格式(2026秋版)的Word教案
- 有配套PPT课件作为内容来源
- 希望自动化填充教案中的重复内容
- 需要保持教案格式一致性
工作流程
0. [素材就位确认] Agent 先与用户确认两份素材(见「素材就位检查」,本步不可跳过):
· PPT课件:本次用哪一份?是否已上传/给出路径?
· 空白教案模板:用用户上传的,还是技能自带的《教案模板(2026秋)》?
↓
1. 用户将标准Word模板(.doc/.docx)和PPT课件(.pptx)放入素材文件夹
(模板未放置时:经用户同意后复制技能自带标准模板,见「素材就位检查」)
↓
2. [提取] 运行 extract 子命令,脚本提取 PPT 文本 + 图片OCR文字 + 模板字段骨架
→ 导出 output/{PPT名}_内容提取.json(中间文件,确认后可删)
↓
3. [生成] Agent(WorkBuddy 的 LLM)读取 JSON,按「填充标准」逐字段生成教案文案
→ 产出 knowledge.json(字段对齐模板填充项)
↓
4. [回填] 运行 fill 子命令,脚本把 knowledge.json 回填进 Word 模板
→ 输出 output/{PPT名}_已填写_{时间戳}.docx
↓
5. [核对] 检查生成的Word教案与标准模版是否一致
- 需要填写内容的空格:确保均已完成填写(共22处必填)
- 不需要填写的内容:确保与标准模版完全一致
↓
6. ✅ 用户确认教案无误后
↓
7. 🗑️ 运行 cleanup 子命令,删除中间文件(OCR备用txt / 内容提取json / 临时md)
🧭 素材就位检查(前置确认,每次执行必做)
为什么:教案内容必须来自“用户指定的 PPT + 用户认可的标准空白教案模板”。用户常忘记上传或只给了其中一个,直接开跑会错用素材或拿不到模板。脚本遇到缺模板/缺 PPT 时会退出并打印提示(含技能自带模板路径),但更应该在 extract 之前主动确认,而不是等报错。
Rule 1 · 先与用户确认两样素材(Agent 在运行 extract 前用提问确认,不要静默假设):
1. PPT 课件:问清“本次用哪一份 PPT?是否已上传/给出路径?”只处理用户指定的那份,素材文件夹里的其他 PPT 不处理;
2. 标准空白 Word 教案模板:问清“用哪一份?用户自行上传的,还是技能自带的《教案模板(2026秋)》?”——模板版本不同表格结构不同,不可想当然。
Rule 2 · 在 skill 内查找可关联素材(用户没放模板 / 没传 PPT 时,先查技能目录再回问):
# 技能自带权威标准空白模板(.docx 工作副本,与历史教案同款)
ls ~/.workbuddy/skills/word-lesson-plan-creator/模板文件夹/模版/*教案模板*.doc*
- 找到技能自带模板 → 回问用户“素材目录里没有空白模板,是否使用技能自带的《教案模板(2026秋)》?”用户同意后再复制使用(可复制到素材文件夹,勿改动技能目录原件);
- 找不到用户要的 PPT → 技能目录内没有样例 PPT(请勿假设有),明确请用户上传或给出路径后再继续。
通过标准:两份素材(哪份 PPT、哪份模板)均经用户确认后,才进入 extract。
Dependencies
- Python3 with python-pptx, python-docx
- (可选)OCR引擎:
pip install rapidocr_onnxruntime—— 用于提取PPT图片中的文字(中文效果好)。
未安装时工具自动跳过图片文字提取,不影响正常生成 - (可选)Microsoft Word:仅当模板为旧版 .doc 且目录下没有同名 .docx 工作副本时,用于 .doc → .docx 转换
> 本工具不内置 LLM API、不存 API Key、不发 HTTP 请求。教案文案由 WorkBuddy Agent 的 LLM 生成(见「工作流程」第 3 步)。
图片文字提取(OCR)说明
- 工具会递归遍历PPT中所有图片(含组合图形内的图片),识别其中的文字(如AI工具截图、步骤示意图)
- 识别出的文字会:
1. 并入内容分析:以[图片文字]形式加入对应页内容,供课程思政/教学目标/教学实施等字段的生成参考
2. 暂时留存备用:保存为output/{PPT名}_图片文字提取_备用.txt,与教案一起交付;
内容含"页码 + 图片格式/大小 + 识别文字",用户核对无误后可运行cleanup删除 - 识别结果带缓存:同一PPT多次读取不会重复OCR
- 未安装OCR引擎时,工具会打印提示并跳过(生成功能不受影响)
文件结构
word-lesson-plan-creator/
├── SKILL.md # 本文件(含标准 frontmatter:name/description)
├── creator.py # 主程序(引擎通用;课程专属话术读 profiles/ 配置)
├── profiles/ # 课程配置:一个课程一份 JSON(详见「课程配置体系」)
│ ├── 人工智能.json # 默认课程配置(以《人工智能概论》为例打样)
│ ├── 英语课.json # 英文课配置(PPT 内容为英文时自动触发)
│ ├── 职业生涯规划.json # 《职业生涯规划》课程配置(2026-09 新增)
│ └── README.md # 配置字段说明 + 如何为新课加配置
├── scripts/ # 辅助脚本
│ └── creator_mindmap.py # 旧版思维导图生成脚本(独立运行,主流程不依赖)
├── _meta.json # 元数据
├── _user_meta.json # 用户级安装元数据(系统维护,勿手动改)
└── 模板文件夹/
└── 模版/
└── 教案模板(2026秋).docx # 标准空白模板副本(工具实际读取,勿改动)
📁 素材文件夹结构
项目四:人工智能赋能音视频处理/
├── 教案模板(2026秋).doc # 标准Word模板(.doc 或 .docx 均可)
├── 项目四:人工智能赋能音视频处理.pptx # PPT课件
├── 其他相关资料.pdf # 可选
└── output/ # 输出文件夹(自动创建)
├── 项目四:人工智能赋能音视频处理_已填写_20260819_101530.docx
└── 项目四:人工智能赋能音视频处理_图片文字提取_备用.txt # PPT图片OCR文字(备用留存)
课程配置体系(Course Profiles)
课程专属内容(工具关键词表、主题分类、各主题的课程思政/劳育/目标/重点难点/作业延展话术、教学实施环节句式、教学策略默认值)不在代码里写死,全部外置为 profiles/<课程名>.json,creator.py 引擎完全通用:
- 默认:
profiles/人工智能.json(以《人工智能概论》打样的示例配置);profiles/英语课.json(lang="en",英文内容自动触发)。 - 如何选当前课程的配置(优先级从高到低):
1.--course <课程名>显式指定;
2. 模板标题《课程名》自动匹配(标题含配置name或任一aliases即命中,如《人工智能概论》命中「人工智能」);
3. 都没有命中时,PPT 内容判为英文 → 用「英语课」配置,否则用默认「人工智能」配置;
4.profiles/目录缺失时自动回退代码内兜底默认,保证脚本裸跑不崩。 - 为新课做教案:复制一份 JSON 改
name/aliases/tool_dict/topics/teaching_strategy/fallback/impl_default即可,模板标题写《新课名》或运行时加--course。字段说明见profiles/README.md。 - 不影响 Agent 主流程:extract 导出的
knowledge_schema/defaults语义不变(新增course_profile元信息),Agent 按「填充标准」写knowledge.json、fill 回填的约定完全不变;配置只决定「无 Agent 文案时的兜底默认值」与「主题/工具自动识别」。 - 补充参数:
--profile-path <目录>自定义配置目录;--list-courses列出可用课程。
Usage
本工具分「提取 → 生成 → 回填 → 清理」四步,文案由 Agent 生成。核心子命令:
1. extract —— 提取(脚本,无 LLM)
python3 creator.py extract <模板文件夹> <PPT文件夹>
导出 output/{PPT名}_内容提取.json,含 PPT 每页文本、图片 OCR 文字、课程名、主题类型、工具名、以及模板字段骨架(knowledge_schema)和规则默认值(defaults)。
2. 生成 —— Agent 生成文案(由 WorkBuddy Agent 完成)
Agent 读取 _内容提取.json,按下方「填充标准」逐字段生成教案文案,产出 knowledge.json(字段对齐 defaults 的 key,可只写需要覆盖的字段,缺失字段自动用 defaults 兜底)。knowledge.json 里请带上 ppt_name 字段(等于 PPT 文件名,不含扩展名),便于 fill 反查 PPT。
3. fill —— 回填(脚本,无 LLM)
python3 creator.py fill <模板文件夹> <knowledge.json> [PPT路径] [--course <课程名>] [--profile-path <目录>]
把 knowledge.json 回填进 Word 模板,输出 output/{PPT名}_已填写_{时间戳}.docx。
- PPT 路径可省略:脚本按 knowledge.json 的 ppt_name 字段自动反查;找不到时用第三个参数显式传入。
4. cleanup —— 清理中间文件
python3 creator.py cleanup <文件夹> [--yes]
删除中间文件(*_图片文字提取_备用.txt、*_内容提取.json、*.md),绝不删除 .doc/.docx/.pptx/.ppt 源文件与 *_已填写_*.docx 成品教案。
- 不带 --yes 只打印待删清单预览;加 --yes 才真正删除。
查看可用课程配置
python3 creator.py --list-courses
列出 profiles/ 下所有课程(含别名)。需要换课程配置时,用 --course <课程名>(也可用 --profile-path 指向外部配置目录)。
兼容旧用法(可选,不推荐)
# 单文件模式(走旧规则方法,无 Agent 文案)
python3 creator.py <素材文件夹>
# 批量模式(走旧规则方法)
python3 creator.py <模板文件夹> <PPT文件夹>
输入输出说明
输入(放在同一文件夹)
- Word模板: 标准教案模板(.doc 或 .docx),包含表格结构和填写项
- PPT课件: 内容来源(.pptx/.ppt)
- 其他资料: 可选,由用户指定
输出
- 最终Word教案: 保存到
素材文件夹/output/子文件夹 - 文件名格式:
{PPT文件名}_已填写_YYYYMMDD_HHMMSS.docx
模板结构(2026秋版:42行 × 5列 单表格)
行0 教学基本信息(合并标题)
行1 课题名称 | 值(c1-c2) | 授课教师 | 值(c4)
行2 授课班级 | 值(c1-c2) | 授课时数 | 值(c4)
行3 授课时间 | 值(c1-c2) | 授课地点 | 值(c4)
行4 授课内容 | 值(c1-c2) | 教材及主要参考资料 | 值(c4)
行5 教学分析(合并标题)
行6 课程思政(c1-c4)
行7 课程劳育(c1-c4)
行8 新标准、新技术、新工艺、新方法、新装备(c1-c4)
行9 学情分析 | 图表量化(c2-c4)
行10 学情分析 | 知识技能(c2-c4)
行11 学情分析 | 认知实践(c2-c4)
行12 学情分析 | 学习特点(c2-c4)
行13 教学目标与重难点(合并标题)
行14 教学目标 | 素质目标(c2-c4)
行15 教学目标 | 知识目标(c2-c4)
行16 教学目标 | 能力目标(c2-c4)
行17 教学重点(c1-c4)
行18 教学难点(c1-c4)
行19 教学策略(合并标题)
行20 教学模式(c1-c4) 行21 教学方式(c1-c4)
行22 教学方法(c1-c4) 行23 教学手段(c1-c4)
行24 教学流程(c1-c4) 行25 板书设计(c1-c4)
行26 教学实施(合并标题)
行27-28 教学实施表头:教学环节 | 教学内容 | 教学活动(教师/学生) | 设计意图
行29 课前导入(c1内容 c2教师 c3学生 c4设计意图)
行30 新课内容(同上)
行31 技能练习(同上)
行32 达标测试(同上)
行33 课堂小结(同上)
行34 课后拓展 | 课后作业(c2-c4)
行35 课后拓展 | 课后延展(c2-c4)
行36 教学评价与反思(合并标题)
行37 特色创新(c1-c4) 行38 实施情况(c1-c4)
行39 效果分析(c1-c4) 行40 诊断改进(c1-c4)
行41 教研室主任签字(c1-c4)
⚙️ 表格行高自适应(v1.2.0 新增,fill 自动执行)
背景:标准模板(2026秋)的 42 个表格行全部是 固定行高(OOXML w:trHeight w:hRule="exact",如 284 twips ≈ 0.5cm)。教案回填后,凡文字较多的单元格(教学目标、重难点、教学实施各环节等)都会超出固定行高而被裁切隐藏,打印/查看时内容丢失。
机制:fill 子命令在回填完成后、保存前调用 _release_fixed_row_height(doc),将表格所有行的 w:hRule="exact" 统一改为 w:hRule="atLeast"(保留原 val 作为最小高度):
- 文字少的行 → 行高与模板原样一致(最小高度不变,版式不塌);
- 文字多的行 → 行自动增高到能完整显示全部内容,不会再有文字被隐藏。
说明:
1. 该逻辑只作用于 fill 产出的成品教案,不改动模板原件;
2. 模板若来自用户上传,同样会被自动放开(不限技能自带模板);
3. 验证方式:生成后可用 Word/WPS 打开目检,或解压 document.xml 检查 w:hRule 不再出现 exact;
4. 若教师后续手填模板继续使用,请注意模板原始 exact 行高仍会裁切文字,可手动把该行设为"最小行高"或"自动"。
填充标准
1、教学基本信息(均由用户提供;未提供则留空,保持模板样式)
| 项目 | 单元格位置 | 填充规则 |
|---|---|---|
| 课题名称 | 行1 c1-c2 | 由用户提供,未提供则留空 |
| 授课教师 | 行1 c4 | 由用户提供,未提供则与Word标准模版一致(留空) |
| 授课班级 | 行2 c1-c2 | 由用户提供 |
| 授课时数 | 行2 c4 | 由用户提供 |
| 授课时间 | 行3 c1-c2 | 由用户提供 |
| 授课地点 | 行3 c4 | 由用户提供 |
| 授课内容 | 行4 c1-c2 | 由用户提供 |
| 教材及主要参考资料 | 行4 c4 | 由用户提供 |
2、教学分析
| 项目 | 单元格位置 | 填充规则 |
|---|---|---|
| 课程思政 | 行6 c1-c4 | AI根据PPT主题提炼,不超过30字 |
| 课程劳育 | 行7 c1-c4 | AI根据PPT实践任务提炼,不超过30字 |
| 新标准、新技术、新工艺、新方法、新装备 | 行8 c1-c4 | 参考PPT及相关资料,由AI自主生成,按「新标准/新技术/新工艺/新方法」分行合并填入 |
| 学情分析-图表量化 | 行9 c2-c4 | 由用户提供,未提供则与Word标准模版一致(留空) |
| 学情分析-知识技能 | 行10 c2-c4 | 由用户提供,未提供则与Word标准模版一致(留空) |
| 学情分析-认知实践 | 行11 c2-c4 | 由用户提供,未提供则与Word标准模版一致(留空) |
| 学情分析-学习特点 | 行12 c2-c4 | 由用户提供,未提供则AI生成 |
3、教学目标与重难点
| 项目 | 单元格位置 | 填充规则 |
|---|---|---|
| 素质目标 | 行14 c2-c4 | 在参考PPT及相关资料中提取对应的关键词内容,可适当拓展 |
| 知识目标 | 行15 c2-c4 | 在参考PPT及相关资料中提取对应的关键词内容,可适当拓展 |
| 能力目标 | 行16 c2-c4 | 在参考PPT及相关资料中提取对应的关键词内容,可适当拓展 |
| 教学重点 | 行17 c1-c4 | 在参考PPT及相关资料中提取对应的关键词内容 |
| 教学难点 | 行18 c1-c4 | 在参考PPT及相关资料中提取对应的关键词内容 |
4、教学策略(各行均填 c1-c4)
| 项目 | 填充规则 |
|---|---|
| 教学模式 | 参考PPT及相关资料和Word标准模版,由AI自主生成(默认:混合式教学) |
| 教学方式 | 同上(默认:模块化教学) |
| 教学方法 | 同上(默认:问答法、讨论法、讲授法、演示法) |
| 教学手段 | 同上(默认:希沃白板、PPT) |
| 教学流程 | 同上(默认:七步教学法) |
| 板书设计 | 同上(默认:原理--工具--途径) |
5、教学实施(环节列已固定,工具只填内容列)
| 环节 | 单元格位置 | 填充规则 |
|---|---|---|
| 课前导入 | 行29 c1/c2/c3/c4 | 分别填:教学内容 / 教师活动 / 学生活动 / 设计意图 |
| 新课内容 | 行30 c1/c2/c3/c4 | 同上 |
| 技能练习 | 行31 c1/c2/c3/c4 | 同上 |
| 达标测试 | 行32 c1/c2/c3/c4 | 同上 |
| 课堂小结 | 行33 c1/c2/c3/c4 | 同上 |
| 课后拓展-课后作业 | 行34 c2-c4 | 由用户提供,未提供则AI生成 |
| 课后拓展-课后延展 | 行35 c2-c4 | 由用户提供,未提供则AI生成 |
每个环节需生成:
- 教学内容:50字左右
- 教师活动:30字左右
- 学生活动:30字左右
- 教学与信息化手段设计意图:参考以下几个方向
- 提升教学效率与效果:用信息化工具压缩机械性工作时间,让师生聚焦高阶思维训练
- 增强学生参与度与互动性:打破单向讲授,实现实时反馈、小组协作与沉浸式学习
- 促进个性化与差异化教学:根据学生学情数据,精准推送学习资源与辅导
- 拓展学习时空与资源边界:突破教室限制,实现课前预习、课后复习与终身学习
- 培养学生数字素养与创新能力:让学生熟练使用信息化工具,适应未来职场需求
- 提升课堂时间利用率
- 精准定位学生薄弱点
- 即时掌握学生理解程度
- 培养学生团队协作与即时沟通能力
- 基于学习数据的个性化推送,实现因材施教,帮助学生精准补弱
6、教学评价与反思(按设计留空,由教师课后填写,工具不填充)
| 项目 | 单元格位置 |
|---|---|
| 特色创新 | 行37 c1-c4 |
| 实施情况 | 行38 c1-c4 |
| 效果分析 | 行39 c1-c4 |
| 诊断改进 | 行40 c1-c4 |
7、教研室主任签字(行41 c1-c4)
留空,由教研室主任填写。
注意事项
- 模板为旧版 .doc 时:工具优先使用同目录下同名的 .docx 工作副本(本skill已自带);若没有,会尝试用 Microsoft Word 自动转换(需本机安装Word),转换失败会提示手动另存为 .docx
- 2026秋模板为单表格(42行×5列);标题《 》中未写课程名时表示未指定课程
- 中间文件在确认教案无误后删除:临时 MD 在生成后自动删除;OCR 备用 txt 与内容提取 JSON 留存供核对,确认无误后运行
cleanup --yes删除 - 输出文件保存到独立的 output 子文件夹,与源文件分开
- 工具会自动在文件夹中查找第一个 .doc/.docx 和 .pptx/.ppt 文件
- 生成Word教案后,需要再核对是否与标准模版Word文件一致:需要填写内容的空格均完成填写(共22处必填),不需要填写的内容则确保完全一致
- 教学评价与反思、教研室主任签字按设计留空,由教师课后填写
- 本工具不内置 LLM:文案由 Agent 生成(
extract→ Agent 生成knowledge.json→fill)。若直接跑旧批量/单文件模式,走的是纯规则方法(内容模板化、质量较低),仅作兜底,不推荐 fill的 knowledge.json 必须带ppt_name字段(= PPT 文件名去扩展名),否则脚本无法自动反查 PPT,需用第三个参数显式传入 PPT 路径- 标题《课程名》与教学基本信息(教师/班级/时间/地点/教材/学情三行)按惯例留空由教师手填;课题名称、授课时数等可合理推断的字段可用 python-docx 补填(值单元格字号 9pt)。
- ⚠️ Agent 生成 knowledge.json 时,文案内部如需引用/强调,必须用中文引号「」或“”:不要用 ASCII 双引号
",否则会提前终止字符串、导致fill报json.decoder.JSONDecodeError。写完后先python -c "import json; json.load(open('...json',encoding='utf-8'))"校验再 fill。 - 大 PPT(含大量图片、几十页)的 extract/fill 因 OCR 全图识别耗时较长(2-5 分钟):务必用后台方式运行(
run_in_background),避免前台超时被 SIGTERM 中断。 - extract 导出的
slides[].content是 Agent 生成文案的依据(已递归提取分组/表格内文本),撰写目标、重点难点、教学实施各环节时应充分参考其中真实信息,避免模板化套话。 - 课程专属话术由
profiles/*.json配置驱动:extract 的主题/工具识别、fill 缺失字段的兜底默认值都读当前课程配置;「填充标准」与 22 处必填、42×5 表格结构不变。为新课加配置见「课程配置体系」与profiles/README.md;课程选择优先级为--course显式 > 模板标题《课程名》 > 内容语种(英文用英语课)> 内置默认。 - ⚠️ 执行任何一次教案制作前,必须先与用户确认素材(见「素材就位检查」):①确认本次要用的 PPT(用户是否上传/给出路径);②确认空白教案模板(用户上传或技能自带《教案模板(2026秋)》)。用户未放模板/未传 PPT 时,先在技能目录内查找可复用的模板与素材并回问用户,得到确认才执行 extract;不要静默用占位 PPT 或非用户指定的模板生成教案。
- 表格行高自动放开为 atLeast(最小行高):fill 保存前会把模板所有行
hRule="exact"(固定行高)改为hRule="atLeast",文字多时该行自动增高、完整显示,杜绝单元格文字被裁切隐藏(详见「表格行高自适应」章节)。若用户手工改模板续用,留意模板原始固定行高仍可能裁字。
版本变更记录
- v1.2.0(2026-09-09):
- 新增:
fill自动执行表格行高自适应(exact→atLeast),文字多时行自动增高,避免单元格内容被裁切隐藏(creator.py新增_release_fixed_row_height); - 新增:
profiles/职业生涯规划.json(《职业生涯规划》课程配置:职业/生涯/规划/就业等主题话术),命中标题《职业生涯规划》或--course 职业生涯规划自动启用。