小学英语公开课备课四件套(PEP)
Overview
为小学英语老师一键生成一套完整的校级公开课备课材料,包含四份按指定格式交付的产物:
1. 教案(Word .docx)—— 含课标依据、教材语篇、学情(两极分化)、核心素养目标、教学重难点、教学过程(5 步含分层)、板书、分层作业、教学反思。
2. 课件(PPT .pptx)—— 9 页,家庭温暖主题配色,含核心素养、学情、热身、呈现、分层操练、产出、分层作业、致谢。
3. 分层练习题(Word .docx)—— 三层(★基础 / ★★提升 / ★★★拓展)+ 小记者调查表 + 参考答案 + 使用说明。
4. 板书设计(PNG 图片)—— 粉笔黑板风格,左核心对话、右职业词汇 + a/an 规则、底部分层情感句。
四份材料的生成逻辑已与课程数据解耦:每份脚本顶部有 LESSON / L 配置块,换单元/课时只改该块。Unit 1 Helping at home Part A Let's talk 作为内置示例。
触发场景
- 用户说:"帮我备一节 PEP 四年级 Unit X 的公开课,要教案、PPT、练习题和板书"
- 用户是小学英语老师,提到"三升四""两极分化""分层作业""校级公开课"
- 用户要求"把备课四件套固化/复用"时,引导使用本技能
工作流
Step 0 收集备课输入
先读 references/lesson_brief.md 了解所需字段。通过对话向用户收集,或调用 mcp__ima-mcp__get_knowledge_list / search_knowledge(知识库「小学英语备课」)检索已有教案与素材补全。
关键:对话原文务必核实对应年级新版教材;明确单元、课时、话题、核心句型、词汇、分层策略。
Step 1 准备环境
读 references/env_setup.md。要点:
- Node 装 docx + pptxgenjs;运行用 Windows 绝对路径的 NODE_PATH(如 C:/Users/.../node_modules)。
- Python 装 Pillow 到项目 .pylibs(--no-cache-dir --target);若无 venv 则用 PYTHONPATH 指向 .pylibs。
- 确认中文字体存在(Windows: simhei/simkai;macOS/Linux 见 env_setup)。
Step 2 填充四份脚本的课程配置
打开 scripts/gen_lesson_plan.js、gen_ppt.js、gen_exercises.js、gen_blackboard.py,把顶部 LESSON / L 块改为本次课程数据(参考 lesson_brief.md 的字段)。保持示例结构即可,渲染逻辑勿动。
Step 3 生成四份材料
在同一工作目录下依次运行(输出文件名由 fileTag 决定):
# 教案 + 练习题(Node)
# 注意:NODE_PATH 中的 <用户名> 换成自己电脑的 Windows 用户名
NODE_PATH="C:/Users/<用户名>/.workbuddy/binaries/node/workspace/node_modules" \
<node> scripts/gen_lesson_plan.js
NODE_PATH="C:/Users/<用户名>/.workbuddy/binaries/node/workspace/node_modules" \
<node> scripts/gen_exercises.js
# 课件(Node)
NODE_PATH="C:/Users/<用户名>/.workbuddy/binaries/node/workspace/node_modules" \
<node> scripts/gen_ppt.js
# 板书(Python + Pillow)
PYTHONPATH="<workspace>/.pylibs" <python> scripts/gen_blackboard.py
QA:用 Python zipfile 校验 docx/pptx 为合法 zip;板书 PNG 用 Read 工具目视确认;PPT 无 LibreOffice 时按 references/pptx_tips.md 抽取每页文本核对顺序与内容。
Step 4(可选)存入 IMA 知识库
读 references/ima_upload_flow.md。对四份文件各执行三步:
1. mcp__ima-mcp__create_media(注意 file_ext 不带点,如 "docx")→ 取 media_id 与 cos_credential;
2. 把凭证整理成 manifest.json,运行 scripts/ima_upload.py manifest.json 把本地文件 PUT 到 COS;
3. mcp__ima-mcp__add_knowledge(knowledge_base_id, media_id) 入库。
Step 5 按顺序交付
按用户要求顺序呈现产物(通常:①教案 ②PPT ③分层练习题 ④板书 PNG)。
分层设计要点(贯穿四份材料)
- 两极分化:目标分层(保底+挑战)、任务分层(支架→半开放→创编)、评价分层(★/★★/★★★)、作业分层(必做+选做+挑战)。
- PPT 图标:用汉字(唱/谈/题、语/文/思/学)替代 emoji,避免 PowerPoint 渲染成方框。
- 板书:黑板绿底 + 木框 + 楷体粉笔字,职业词双列 + a/an 规则框 + 底部情感句。
常见坑位(换课时务必检查)
四个生成脚本的渲染逻辑里仍有少量课程专属 hardcode 文本,仅改 LESSON / L 配置块不会覆盖它们,必须同步修改:
| 文件 | 行号 | hardcode 内容(示例 Part A 残留) | 应改为本次课对应内容 |
|---|---|---|---|
scripts/gen_ppt.js |
180 | "Step 2 Presentation — Sarah 的全家福" 第 2 参(标题副标) |
改成当下课情境图主题 |
scripts/gen_ppt.js |
218 | "Step 4 Production — Draw and say" 第 2 参 |
改成当节课配套活动名(如 Make a list and talk) |
scripts/gen_ppt.js |
257 | "(第一课时)" 致谢页 |
改成当前课时数(如第四课时) |
scripts/gen_blackboard.py |
76 | "职业词汇 Words" 右区标题 |
改成当节课词汇类型(家务词汇 / 食物词汇…) |
额外注意:
- gen_ppt.js 第 218 行 kicker 含中文引号强调时,禁止用 ASCII 双引号 "..." 包裹强调内容(Node 会判语法错)。改用 「...」 或 《...》,或干脆删掉内部引号。
- 板书右区词汇对 gen_blackboard.py 的 LESSON["words"] 是 4 对 8 个,最后一行可少于 2 个(如 [("chores", "gift")]),渲染逻辑会自动跳行。
资源索引
scripts/gen_lesson_plan.js— 教案生成(docx)scripts/gen_ppt.js— 课件生成(pptx,9 页)scripts/gen_exercises.js— 分层练习题生成(docx)scripts/gen_blackboard.py— 板书设计生成(PNG)scripts/ima_upload.py— IMA 知识库 COS 上传(配合 create_media / add_knowledge)references/lesson_brief.md— 备课输入清单references/env_setup.md— 环境搭建与坑位references/ima_upload_flow.md— 知识库上传三步流程references/overview.md— 技能简要说明(痛点 / 工具路径 / 效率对比 / 亮点)references/pptx_tips.md— PPT 生成与 QA 要点