课程幻灯片设计
将 一课 的内容转化为 让人能学懂的幻灯片 以及 供配音版本的视频脚本。每次处理一课,每课一个文件夹。
输出文件位于 slides/<课程>/<课时>/ 下(除非用户指定其他位置):
| 文件 | 说明 |
|---|---|
slides.json | 唯一数据源:每页幻灯片以 16 种类型(references/slide-types.md)表示。编辑此文件后再重建 |
<文件名>.pptx | 16:9 比例的幻灯片,使用 Arial 字体和三色主题;每页的讲评会写入演讲者备注 |
<文件名>.video-script.md | 视频步骤使用的文件:每页一个区块,包含屏幕文本、制作说明、可直接用于 TTS 的讲稿和时间码,以及概览表格 |
_preview/slide-NN.png, _preview/contact-sheet.png | 每页幻灯片 1920x1080 的图片和缩略接触板,用于视觉检查及视频帧 |
<文件名>.preview.mp4(可选) | 按脚本时间码静音播放,或每页有音频时可生成带旁白的预览视频 |
脚本使用的工具:Python 3.9+ 及 python-pptx、Pillow、lxml(图标需要 cairosvg 或 sharp-cli、rsvg-convert、Inkscape);LibreOffice 及 Poppler(pdftoppm)用于渲染预览;ffmpeg 用于可选的预览视频。图标采用 Lucide 图标集(ISC 许可证),存放在 assets/icons/。
工作流程
步骤 0. 阅读原始内容并明确需求
- 阅读 所有 课程原始内容:目标、受众、授课方式、带时间安排的教案、脚本、带答案的问题、任何幻灯片提纲、讲义。如果用户只给了一个标题,请先询问内容或使用配套技能
lesson-content-writer编写内容。 - 阅读
references/slide-standards.md(规则和幻灯片结构)以及references/slide-types.md(16 种类型及其文本限制)。 - 确定:授课方式(自定进度视频:每个视频是一个集群,包含自己的开头、主体和结尾以及暂停幻灯片;还是现场课堂:需要面向教室提问和指导练习的幻灯片);语言(
language,支持任何语言,en和vi会有额外检查);主题(默认为navy;一堂课统一为一个主题,逐课复用);教师如何称呼学习者(从脚本中获取);教师姓名和联系方式用于页脚。
步骤 1. 规划幻灯片
根据原始内容的幻灯片提纲或课程顺序,写一个表格:# | 类型 | 该页的核心观点 | 视觉元素或图标 | 问题或暂停 | 视频编号。约束条件:
- 完整结构:
标题-> (问题,如果课程有的话,先试再教)->目标->议程-> 每个部分一个分区(或使用带当前标记的议程)-> 2 到 5 页内容页 -> 至少一个问题->总结->结尾。 - 每页一个核心观点。 每套幻灯片至少使用 4 种类型,不能连续 3 页相同类型,讲评每 10 到 12 分钟至少有一个暂停或问题。
- 规划 情感曲线,在 1/3 和 2/3 处设置 节奏破口;将标题写为 陈述句,而非标签(参见
references/rhythm-and-titles.md)。带来源的数字使用大数字或图表,不要放在列表项中。 - 事实、术语、数字和例子仅来自课程原始内容。绝不要凭空编造。例子应来自学习者自己的工作。
- 视频课程:覆盖教案中的 每个部分、示例、暂停问题及演练样本,并在幻灯片或其讲评中呈现,同时声明
videos的计划分钟数,以便脚本能警告过短的视频。原始内容中的幻灯片提纲是最低要求,而非上限。100 分钟的课程通常需要 35 到 60 页幻灯片;17 页的模板仅用于技术演示,不适用于完整课程。
步骤 2. 编写 slides.json
复制 templates/slides.example.json 并根据规划填写。对于每页幻灯片:
- 屏幕文本应为 关键词和简短行,在 24 pt 字号下能容纳(各类型限制见
slide-types.md)。太长?拆分幻灯片。绝不要缩小文本。 narration(旁白):来自课程脚本,改写为适合听的语言(参见references/narration-and-video-script.md):每行一个呼吸,每行以.,?或!结尾,数字写为口语形式,不逐字阅读幻灯片,问题幻灯片说“请暂停视频”。notes(备注):制作说明(逐项显示、指向、圈出、插入片段、“静默 60 秒”)。- 根据含义选择图标(
slide-types.md第 4 节),同一概念在整个课程中保持使用同一个图标。真实图片(截图、产品照片)与slides.json放在同一目录,并在IMAGE-SOURCES.md中注明来源。下载网络图片前需询问,并检查许可证。 - 像人类一样写作,而非使用宣传册式语言(参见
references/plain-human-voice.md)。
步骤 3. 构建并检查
python scripts/build_slides.py slides/<课程>/<课时>/slides.json
脚本在遇到硬性违规时 会停止:超过 6 行、文本在 24 pt 字号下无法容纳、孤词且无法通过合并最后两个词修复、缺少图标或图片、未知类型、禁用的破折号或 AI 惯用语、与旁白时间码不一致、旁白从未读到的项目。修复 slides.json 后重新构建,直到 0 错误。同时阅读每条警告(长行、旁白中的数字、连续三页同类型、缺少节奏破口、过短的视频)并修复或注明原因。
python scripts/render_slides.py slides/<课程>/<课时>/<文件名>.pptx
查看 _preview/contact-sheet.png,再以完整尺寸查看每张 slide-NN.png,对照 slide-standards.md 第 5 节的检查清单:文本剪切或重叠、大面积空白、对齐问题、在三分之一尺寸下是否可读、每页是否有单一焦点。修复、重新构建、再次查看,直到完整检查无问题。未查看最新渲染前绝不要报告完成。
可选,用于检查节奏或交付草稿视频:
python scripts/preview_video.py slides/<课程>/<课时>/slides.json [--audio <包含 S01.mp3 等文件的文件夹>]
对于视频平台上的长课程(一个主题一个视频,10 到 12 分钟):在课程级别的 slides.json 中为每页幻灯片设置 video 编号,然后拆分:
python scripts/split_videos.py slides/<课程>/<课时>/slides.json --build --render
每个视频将获得自己的文件夹和幻灯片,包含标题页(“视频 k/N”)、自己的目标、主体以及衔接到下一视频的结尾。编辑课程级别的文件,而非生成的文件。
步骤 4. 报告
向用户提供:幻灯片、视频脚本和接触板的路径;简短的概览表格(# - 类型 - 观点 - 秒数);幻灯片数量和预估长度;主题;你的假设(称呼方式、数字及其来源);你保留的警告及原因。展示接触板。
连续多课时
在相同课程文件夹内,复用之前课时使用的主题、页脚、称呼方式和图标-概念集。保持 标题 和 结尾 幻灯片在整个课程中的布局一致,并让每个结尾衔接到下一课时。
原则
- 标准不移动(
slide-standards.md)。标准内的内容才是发挥创意的地方。脚本是守门员;绝不要为了通过而关闭检查项。 - 幻灯片服务于视觉,旁白服务于听觉。 两个通道相互补充,绝不重复。
- 学习者要有行动。 每个部分都有问题或暂停;幻灯片以一个具体行动结束。
- 标题默认大写(
"title_case": "upper"),JSON 保持书写形式,这样旁白和字幕不受影响。大写字母占用宽度更大,请保持标题简短。 - 24 pt 是所有内容的最低字号,包括标签、说明、来源和页脚。太长意味着重写,而非缩小。
- 没有孤词。 标题、卡片、步骤或列表项的最后一行如果只有一个词会显得断裂。脚本会在可行时将最后两个词合并,若不可行则停止。
- 先运行,再交付。 构建、渲染、查看、度量。绝不要猜测。
- 要添加幻灯片类型,请在
scripts/build_slides.py中添加s_<类型>方法,在KINDS中注册,在slide-types.md中记录,并在使用前构建测试幻灯片。
参考文件
references/slide-standards.md- 数字学习幻灯片的概念、十条设计规范及脚本检查方式、幻灯片结构、多媒体学习原则、交付前检查清单。references/slide-types.md-slides.json格式、16 种幻灯片类型及其文本限制、主题、视频规划、图标列表。references/narration-and-video-script.md- 面向 TTS 或人声的旁白规则、制作说明、阅读每个屏幕元素、交接给视频制作。references/rhythm-and-titles.md- 课程的情感曲线、1/3 和 2/3 处的节奏破口、陈述式标题、开场白、比较、数字和结尾的句式模式。references/plain-human-voice.md- 如何消除 AI 写作痕迹:禁用破折号与短语、句子节奏、具体细节、观点表达。templates/slides.example.json- 包含所有主要类型的 17 页演示课程,已构建并检查完毕。