PPT 构建器(提纲→演示文稿) 是做什么的?
生成两个工件:逐页内容规范(JSON)和——当
python-pptx 存在时——一个实际的 .pptx 文件。规范是
真实来源;渲染是机械性的。
输入
| 输入 | 必需 | 默认 | 说明 |
|---|---|---|---|
| topic | 是 | — | 演示文稿要论证或解释的内容 |
| audience | 否 | 通用商务 | 影响语气和深度 |
| slide_count | 否 | 10 | 包括封面和封底 |
| style | 否 | 简洁商务 | 例如 学术答辩 / 融资路演 / 教学课件 |
如果缺少 topic,仅询问一次:
请给出 PPT 主题与用途(汇报对象是谁)。可选告知:页数(默认 10)、 风格(默认简洁商务)、是否已有大纲或素材文件。
预检自查
python -c "import pptx; print('pptx-ok')"
- 输出
pptx-ok→ 启用 .pptx 导出(步骤 3a)。 - ModuleNotFoundError → 使用 Markdown 路径(步骤 3b)。告诉用户一行:
pip install python-pptx下次可直接导出 .pptx。除非用户明确同意,否则 不要自行安装它。
工作流程
步骤 1:提纲
按此顺序构建论证(而非主题):钩子开场(一个反直觉的事实或问题)→ 全局地图 → 2-3 个核心论点(每个配有证据或案例)→ 反驳或边界 → 行动号召。期望:编号提纲,每页说明一个主张。
步骤 2:逐页规范
编写 slides_spec.json:
{
"deck_title": "...",
"slides": [
{"title": "...", "bullets": ["<=18字/条, 最多5条"], "notes": "讲稿口语版", "visual": "图表/截图/留白提示"}
]
}
规则:每页标题 ≤ 16 字并包含观点(不是“介绍”这类空洞词);notes 必须是能照着说的完整句子。
步骤 3a:渲染 .pptx(pptx 可用)
python "<skill-dir>/scripts/make_pptx.py" slides_spec.json deck.pptx
期望:退出码 0 并输出 wrote deck.pptx (N slides)。退出码 3 表示 python-pptx
缺失 → 回退到步骤 3b 并告知用户原因。退出码 2 表示规范无效——
读取打印的错误,修复 slides_spec.json,重新运行。
步骤 3b:备用交付件
输出 deck_outline.md:H1 演示文稿标题,H2 每页包含要点和发音备注放在下方。用户可粘贴到任何工具中。
步骤 4:交付前自检
检查:每页只讲一个论点;无超过 5 条 bullet;每页 visual 有具体提示; notes 总词量支撑目标时长(约 1 分钟/页)。在规范中修复违规项并 重新渲染,而非直接修改文本。
失败处理
| 症状 | 可能原因 | 行动 |
|---|---|---|
| 脚本退出码 2 列出第 N 页 | 规范模式违规 | 按步骤 2 修复该页字段 |
| 脚本退出码 3 | python-pptx 缺失 | 切换到步骤 3b,提供 pip 提示 |
| bullets 持续超过 18 字 | 提纲过于密集 | 将该页拆分为两页,重新渲染 |
| 用户需要使用公司模板 | 样式超出 v1 范围 | 交付 spec + outline.md 以供手动调整 |
交付标准
成功 = 要么 deck.pptx(可打开,页数匹配规范)要么
deck_outline.md,加上 slides_spec.json,所有三个路径都汇报页数。
任何其他情况都未完成——请坦率说明。
参考
scripts/make_pptx.py— 运行它(执行,不读取);验证规范后渲染