waiyan-ppt(外研版 PPT 课件生成器)
定位与原则
由定稿教案(waiyan-lesson-plan 产出 lesson_plan.json)驱动生成课堂课件。用户教学原则(历史备课对话确认,构建前调研存档见 references/design-requirements.md):
- 忠于课本:任务指令直接引用课本活动原题(如 Read and complete. Then listen and check.),不发明活动
- 节奏放慢:初一学生中等偏下,每页一个任务,指令简短
- 多难度层次:分层提示只进演讲者备注(C 层支架、保底标准),正文不出现"A/B/C 层"字样——学生看得到
- 少游戏、少音视频:不搞花哨游戏;音频默认不嵌,用户明确确认后才嵌
- 先审后渲:先在对话里把页面清单(每页页型+标题+内容来源)过一遍,用户确认后再生成 pptx
工作流程
第 1 步:确认上游数据
- 教案定稿(lesson_plan.json):环节 activities、板书 board、分层作业 homework
- 生词数据:vocab_scan.py
--json输出(display/ph/mean/sentence 直接进词汇页) - 板书 PNG:render_board.js 产物(教案里生成过就复用,同源)
第 2 步:组装页面清单(对话确认)
按 templates/page-types.md 的环节→页映射把教案环节转成页面清单,逐页列「页型 + 标题(=活动指令)+ 内容来源」给用户过目;用户改哪页改哪页。
第 3 步:写 ppt_slides.json → 渲染
# node:本机可用的 node(无需 NODE_PATH,脚本自带依赖自愈)
node scripts/make_ppt.js --json ppt_slides.json --out 课件_七上Unit1_标题_YYYYMMDD
产出:课件_{册}{单元}_{语篇标题}_YYYYMMDD.pptx(16:9,微软雅黑+Arial,正文≥24pt/标题≥30pt)
第 4 步:程序化自检 + 交付
- zip 良构、页数、媒体嵌入
- 泄漏扫描:正文不得出现「C 层 / A-B 层 / 分层 / 参考答案」;qa/exercise 页答案必须只在备注
- 提醒用户:插图页是虚线占位框(标注了应放什么图),拿到真实图片后自行替换
页型库(12 型)
cover / leadin / vocab / listen / readfill / qa / grammar / output / roleplay / exercise / board / homework——字段与映射详见 templates/page-types.md。配色字体见 assets/theme.json(外研官方橙蓝:主色 #1565C0、强调 #F57C00;改主题只动 theme.json)。
技术要点
- pptxgenjs 4.x + sharp(依赖自愈:缺失时脚本自动安装到
~/.workbuddy/binaries/node/workspace,首次 1-3 分钟) - 答案与分层进
slide.addNotes();图片不存在时画虚线占位框不报错 - 板书页用 sharp 读 PNG 宽高比自动等比缩放
- JSON 中文文本内避免英文双引号(沿用产线通用约定)
与其他技能的衔接
- 上游:waiyan-lesson-plan(定稿教案 + 生词 JSON + 板书 PNG)
- 可选下游:ppt-lecture-notes(往备注写讲稿);waiyan-listening(音频,仅在用户确认嵌入时)
- 动画产线(english-learning-animation)独立,不经本技能