ppt-builder — 内容转 PPT
把任意输入(对话要点 / 文字大纲 / 本地文档)变成排版统一的 .pptx。渲染引擎已内置 11 种版式和 6 套主题,不要再用 python-pptx 从零手写排版——引擎已经解决了对齐、溢出降字号、中文字体、页码页脚这些脏活。
工作流程
第 1 步:确定输入
- 对话内容:直接整理要点,跳到第 2 步。
- 文字大纲:用户贴的 markdown / 大纲文字,跳到第 2 步。
- 本地文档:先运行解析脚本:
bash "<venv python>" <skill>/scripts/doc_extract.py <文档路径> -o extracted.md
venv python 固定为C:\Users\huliy\.workbuddy\binaries\python\envs\default\Scripts\python.exe(已装 python-pptx)。docx 需要pip install python-docx,pdf 需要pypdf或pymupdf(缺则先装进该 venv)。
第 2 步:规划幻灯片结构(deck JSON)
把内容组织成 JSON spec(schema 见 references/schema.md,版式选择见 references/layouts.md)。规划原则:
- 一页一个观点。超过 5 条要点的页面拆成两页或改用 cards。
- 节奏:封面 → 章节页(内容多时)→ 内容页混排 → 结束页。连续 3 页以上相同版式会显得单调,bullets / cards / stats / compare 交替使用。
- 数据优先上 stats 或 table,对比关系用 compare,流程用 timeline。
- 每页文字宁少勿多——引擎会自动降字号防溢出,但降过头的页面依然难看。
第 3 步:选主题
6 套主题(详见 references/layouts.md)。用户没指定时按内容选:技术/汇报 → business-blue;科技/AI → violet-tech 或 midnight;文化/游戏 → ink-jade;创意/营销 → warm-amber;严肃文档 → minimal-gray。
第 4 步:渲染
把 JSON 写入工作目录(如 deck.json),然后:
"<venv python>" <skill>/scripts/deck_engine.py deck.json -o 输出.pptx [--theme 主题key] [--footer 页脚文字]
<skill> 是本技能目录(SKILL.md 所在目录)。
第 5 步:交付
用 present_files 展示 .pptx。交付前必须确认文件成功生成且页数符合预期(脚本会输出 OK N 页)。
版式速查(11 种)
| layout | 用途 | 关键字段 |
|---|---|---|
cover |
封面 | title, subtitle, kicker, author, date, org |
section |
章节过渡 | number, title, subtitle |
bullets |
要点列表(1-6 条) | bullets[]: {head, text} 或纯字符串 |
cards |
2-6 卡片网格 | cards[]: {icon, title, text} |
stats |
3-4 大数字 | stats[]: {value, unit, label, note} |
compare |
双栏对比 | columns[2]: {title, items[], highlight} |
timeline |
流程/路线(≤5 横排) | steps[]: {phase, title, text} |
quote |
金句页 | quote, source |
table |
表格 | headers[], rows[][] |
image |
图片页 | image(路径), caption |
end |
结束页 | title, subtitle, contact |
所有内容页支持可选 kicker(标题上方小标签)与 subtitle。
注意事项
- 全局顶层字段:
theme(主题 key)、footer_label(页脚左侧文字)、slides。 - 字号溢出由引擎的
fit_size自动处理,但标题保持一行以内是作者的责任。 - emoji 图标在 cards 里可用(⚡🔥⚔️ 等),PowerPoint 渲染正常。
- 引擎失败时先看报错再改 JSON;不要绕过引擎手写 python-pptx 代码。
- 详细字段说明和完整示例:
references/schema.md;版式选择决策和主题色板:references/layouts.md。