name: pptgen-drawio description: 根据论文或汇报内容生成多页 Draw.io 格式 PPT,支持论文答辩与通用汇报两种模式,自动导出为 .pptx。当用户提到论文答辩 PPT、答辩幻灯片、通用 PPT、汇报 PPT、根据模板生成 PPT、drawio2pptx 时使用。
PPT 多页 Draw.io 生成(论文答辩 + 通用汇报)
本 skill 支持两种模式,共用 ppt_template/、scripts/、reference/ 目录,以及 Step 0 自定义模板、Step 1 确定内容与风格、Step 3 & 4 输出与导出 全流程。
模式识别
| 模式 | 使用时机 | 内容来源 | 默认页序 | 输出文件 |
|---|---|---|---|---|
| 论文答辩 | 学位论文答辩、开题、预答辩 | paper-write 结构化提取 | 封面→目录→背景→现状→方法→创新点→实验→结论→致谢→Q&A | paper-defense.drawio |
| 通用汇报 | 工作汇报、产品介绍、演讲 | 用户消息提取/生成 | 封面→目录→节标题→内容页→总结→致谢→Q&A | general-presentation.drawio |
Step 0:用户自定义模板(可选,两种模式共用)
若用户提供了自己的 .pptx 模板文件:
- 模板放置:将
.pptx放入ppt_template/目录 - 运行样式提取:在 skill 根目录下执行:
python scripts/analyze_pptx.py ppt_template/xxx.pptx reference/style-custom.md - 读取
reference/style-custom.md作为「自定义风格」继续
目录约定:ppt_template/ 存放模板、scripts/analyze_pptx.py 样式提取、reference/ 风格文件
Step 1:确定内容与风格(两种模式共用)
1.1 确定内容
- 论文答辩:若用户只有论文全文:先调用 paper-write 的「结构化信息提取」;若已提供结构化信息:从消息中提取【论文题目】【学科方向】【答辩时长】【论文结构/目录】【各章核心内容】【创新点/贡献】等,缺失则追问
- 通用汇报:从用户消息中提取幻灯片大纲及内容,或根据核心需求扩展为完整结构
1.2 选择风格
两种模式均可选择以下风格之一,读取对应 reference 文件获取配色、字体、版式规则与 XML 样式片段:
| # | 风格 | 主色 | 强调色 | reference 文件 |
|---|---|---|---|---|
| 1 | 经典学术 / 商务严谨 | #1B2A4A |
#C9A84C |
reference/style1-classic-academic.md |
| 2 | 现代极简 / 大字报感 | #231F20 |
#F5C638 |
reference/style2-minimal-bigtype.md |
| 3 | 暖色学术 / 亲和力 | #2C5160 |
#B7472A |
reference/style3-warm-academic.md |
| 4 | 科技明快 / 现代前沿 | #0170C1 |
同主色 | reference/style4-tech-modern.md |
| 5 | 自定义 | 从 style-custom.md 提取 | reference/style-custom.md |
- 论文答辩:用户未指定时默认风格 1
- 通用汇报:用户选择或根据语境自动推荐
Step 2:生成多页 Draw.io XML
必须先读取所选风格的 reference 文件,基于该风格生成 XML。
- 画布:16:9(pageWidth=1920,pageHeight=1080)
- 页序:按模式识别表中的默认页序
- 页数:10 分钟约 10–12 页,15 分钟约 14–18 页
- 含节标题过渡页(每章独立一页引入)时,10 分钟约 11 页;无过渡页时约 9 页
- 节标题过渡页风格:大号数字 + 章节名,可参考 style2 风格或 style4(无过渡页)
2.1 论文答辩模式默认页序(23 页,四种风格共享)
当用户选择论文答辩模式、且未另行指定页数时,所有风格(style1–4)默认采用统一的 23 页结构:
- 封面
- 目录
- 01 研究背景与意义(节标题)
4–6. 01. 研究背景与意义(内容 3 页) - 02 国内外研究现状(节标题)
8–9. 02. 国内外研究现状(内容 2 页) - 03 方法总览(节标题)
11–13. 03. 方法总览(内容 3 页) - 04 实验结果(节标题)
15–16. 04. 实验结果(内容 2 页) - 05 系统设计(节标题)
18–19. 05. 系统设计与实现(内容 2 页) - 06 总结与展望(节标题)
- 总结与展望(内容 1 页)
- 已有成果
- 致谢 / Q & A
各 reference/styleX-.md 只定义*样式与版式(颜色、字体、组件布局),不再重复定义页序;如需修改默认页序,应在本 SKILL 中统一调整。
2.2 文件命名与交付(建议,Windows 兼容)
- 推荐命名(生成/导出阶段):优先使用 ASCII 文件名(英文字母/数字/中划线),减少 PowerShell/编码环境下中文文件名乱码、命令找不到文件等问题。
- 推荐:
defense-style4-tech.drawio、defense-style4-tech.pptx - 如必须中文名:建议先用 ASCII 名完成导出,再在资源管理器里重命名为中文
- 推荐:
- 交付顺序(推荐流程):先提供
.drawio(源文件)→ 执行命令导出.pptx(交付文件)→ 校验页数 - 交付依赖:接收方只需打开
.pptx(必要时附.drawio),不需要安装 Python;脚本/代码仅用于生成端自动写 XML(可选)。
⚠️ 已知坑清单(生成前逐条过)
生成每一页 XML 前,按下面 checklist 快速自检(只保留高频致命项):
✅ 必过 checklist(10 条)
- 多页结构:根节点必须是
<mxfile>,且每页一个<diagram>(否则导出会变 1 页)。 - 每页坐标系:每个
<diagram>内x从 0 开始;背景矩形x=0,y=0,w=1920,h=1080;每页都有mxCell id="0"与mxCell id="1" parent="0"。 - ID 唯一:全文件内所有
mxCell id必须唯一;每个<diagram id="...">也必须唯一。 - 一次性写入:
.drawio必须一次写完整(不要多次覆盖/拼接 XML)。 - 页数校验:
drawio2pptx输出的(N slides)必须等于<diagram>数量。 - 每页 cell 数量:封面 ≥ 12、节标题 ≥ 8、内容页 ≥ 15(避免“空页”)。
- 换行只用真实换行:在生成 XML 时,正文多行必须写成真实换行符(代码里用
\n拼接,再一次性写入文件),禁止在value="..."中写
/<br>/<font>/<b>,也禁止通过 Shell 将&#xa;替换成字面量`n;文本 style 必含whiteSpace=wrap;html=1;。 - 白字不要误替换:顶栏/深色块文字保持
fontColor=#FFFFFF;背景色替换优先改fillColor,不要全局替换所有#FFFFFF。 - 遮挡检查:带底色的装饰块不要跨越正文区域;两列卡片之间不要放有底色标签(会压住字)。
- 高度预算:多行正文的卡片/容器宁可偏高留白,避免裁字(正文行高约 (1.4\times) 字号)。
最小可用多页模板(仅示意结构)
<mxfile host="app.diagrams.net">
<diagram id="p1" name="封面">
<mxGraphModel page="1" pageWidth="1920" pageHeight="1080">
<root>
<mxCell id="0"/><mxCell id="1" parent="0"/>
</root>
</mxGraphModel>
</diagram>
<diagram id="p2" name="目录">
<mxGraphModel page="1" pageWidth="1920" pageHeight="1080">
<root>
<mxCell id="0"/><mxCell id="1" parent="0"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Step 3 & 4:输出 Draw.io 并自动导出 PPT(两种模式共用)
Step 3:输出 Draw.io 文件
将生成的 XML 一次性 写入工作区 .drawio 文件(论文答辩用 paper-defense.drawio,通用汇报用 general-presentation.drawio),并简述每页概要。
写入方式需满足 checklist 第 4 条「一次性写入」与第 7 条「换行只用真实换行」的要求。
Step 4:自动导出 PPT(必执行)
生成 .drawio 后,执行导出(推荐在生成端完成导出后再交付):
- 如未安装:
pip install drawio2pptx -q - 切换到
.drawio文件所在目录(必须先 cd/Set-Location,否则找不到文件):Set-Location "d:\你的项目目录" drawio2pptx <文件名>.drawio <文件名>.pptx - 验证输出页数:输出中必须包含
Saved xxx.pptx (N slides),且 (N) 等于<diagram>数量(对应 checklist 第 5 条「页数校验」)
页数验证需满足 checklist 第 5 条「页数校验」。
导出失败排查(高频)
- Permission denied / 拒绝访问:目标
.pptx正在被 PowerPoint 占用。- 解决:导出到新文件名(如
*-v2.pptx),或先关闭 PPT 再覆盖导出。
- 解决:导出到新文件名(如
- 中文文件名乱码/找不到文件:终端编码导致路径解析异常。
- 解决:改用 ASCII 文件名生成与导出(见 2.2)。
其他注意事项
- 统一字号规则(所有风格):
- 内容页中文正文(段落 + 列表要点)统一使用 18 pt;
- 内容页章节标题一般为 30 pt,节标题页大号数字/章节名继续按各 styleX 中示例执行;
- 日期、页脚、小标签、图表表头等次要信息可保持 13–16 pt 之间的现有设计。
- 字体推荐:中文标题/正文优先使用 微软雅黑 或 宋体;数字、英文及公式使用 Times New Roman。各风格 reference 可在此基础上微调(如英文标题用 Georgia)。
- XML 标签正确闭合,特殊字符转义(
&→&,<→<) - 每页布局:背景全画布矩形、标题区 44–56pt、正文按照 18pt 行高预留空间、留白充足
- Windows 下不支持
tail命令,Shell 输出截断请用 PowerShell 的Select-Object -Last N替代