Skip to content
Skill Authoring
Skill

/pptgen-drawio

根据论文或汇报内容生成多页 Draw.io 格式 PPT,支持论文答辩与通用汇报两种模式,自动导出为 .pptx。当用户提到论文答辩 PPT、答辩幻灯片、通用 PPT、汇报 PPT、根据模板生成 PPT、drawio2pptx 时使用。

BOOST
From plugin
best-skills
3k16 skills
Install
$ npx -y skills add xstongxue/best-skills --skill pptgen-drawio --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/pptgen-drawio

Context preview

The summary Claude sees to decide when to auto-load this skill.

根据论文或汇报内容生成多页 Draw.io 格式 PPT,支持论文答辩与通用汇报两种模式,自动导出为 .pptx。当用户提到论文答辩 PPT、答辩幻灯片、通用 PPT、汇报 PPT、根据模板生成 PPT、drawio2pptx 时使用。

SKILL.md

pptgen-drawio.SKILL.md
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` 模板文件:

1. **模板放置**:将 `.pptx` 放入 `ppt_template/` 目录 2. **运行样式提取**:在 skill 根目录下执行:

   python scripts/analyze_pptx.py ppt_template/xxx.pptx reference/style-custom.md

3. 读取 `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` | 有:顶栏 150px + 金线 8px | `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
  • **通用汇报**:用户选择或根据语境自动推荐
  • 风格 1 / 3 / 4 是同一套版式换配色(顶栏 + 细线 + 页脚),**只有风格 2 是真正不同的版式**。用户想要「看起来不一样」时推风格 2;传统工科院校答辩推风格 1

---

Step 2:生成多页 Draw.io XML

**必须先读取所选风格的 reference 文件**,基于该风格生成 XML。

  • 画布:16:9(pageWidth=1920,pageHeight=1080)
  • 页序:按模式识别表中的默认页序
  • 页数:**由 Step 1.1 拿到的答辩时长决定**,见下面 2.1

2.1 论文答辩模式页序(按时长换算)

页数由三部分相加:

封面 · 目录 · 已有成果 · 致谢/Q&A            → 4 页,任何时长都有
每章一个节标题过渡页                          → 章数 × 1 页
各章内容页                                    → 按下表分配

**按时长选一列**,表里的数字是「各章内容页数」:

| 章节 | 10 分钟 | 15 分钟 | 20 分钟 | |---|---|---|---| | 01 研究背景与意义 | 1 | 2 | 3 | | 02 国内外研究现状 | 1 | 1 | 2 | | 03 方法(含创新点) | 2 | 3 | 3 | | 04 实验结果 | 1 | 2 | 2 | | 05 系统设计与实现 | 1 | 1 | 2 | | 06 总结与展望 | 1 | 1 | 1 | | 内容页小计 | 7 | 10 | 13 | | **总页数**(+4 固定 +6 节标题) | **17** | **20** | **23** |

时长不在表里就按 **每页 45 秒**估:总页数 ≈ 时长(分) × 60 ÷ 45,再按上表比例分配到各章。

**方法章占比是硬要求**:方法 + 实验合起来不少于内容页的 40%。这是答辩评委真正听的部分,背景和现状讲长了会被打断。

**用户点名要几页就按用户的**,上表只在用户没说页数时用。

> 原先固定 23 页的写法已废弃——那个数来自 `style1` 的源文件 `答辩PPT.pptx`,是一份 20 分钟以上答辩的真实页数,不适用于 10–15 分钟。

> 各 reference/styleX-*.md 只定义**样式与版式**(颜色、字体、组件布局),不定义页序和页数。

2.2 文件命名与交付(建议,Windows 兼容)

  • **推荐命名(生成/导出阶段)**:优先使用 ASCII 文件名(英文字母/数字/中划线),减少 PowerShell/编码环境下中文文件名乱码、命令找不到文件等问题。
  • 推荐:`defense-style4-tech.drawio`、`defense-style4-tech.pptx`
  • 如必须中文名:建议先用 ASCII 名完成导出,再在资源管理器里重命名为中文
  • **交付顺序(推荐流程)**:先提供 `.drawio`(源文件)→ 执行命令导出 `.pptx`(交付文件)→ 校验页数
  • **交付依赖**:接收方只需打开 `.pptx`(必要时附 `.drawio`),不需要安装 Python;脚本/代码仅用于生成端自动写 XML(可选)。

⚠️ 已知坑清单(生成前逐条过)

✅ 必过 checklist(7 条)

1. **多页结构**:根节点必须是 `<mxfile>`,且每页一个 `<diagram>`(否则导出会变 1 页)。 2. **每页坐标系**:每个 `<diagram>` 内 `x` 从 0 开始;背景矩形 `x=0,y=0,w=1920,h=1080`;每页都有 `mxCell id="0"` 与 `mxCell id="1" parent="0"`。 3. **ID 唯一**:全文件内所有 `mxCell id` 必须唯一;每个 `<diagram id="...">` 也必须唯一。 4. **一次性写入**:`.drawio` 必须一次写完整(不要多次覆盖/拼接 XML)。 5. **换行用 `&#xa;`,不要用真实换行符**。XML 规范规定属性值里的字面换行会被规范化成空格,所以 `value="第一行\n第二行"` 导出后是**一行**,中间多个空格。实测(drawio2pptx 0.0.7 + PowerPoint):

| 写法 | 导出结果 | |---|---| | `value="A&#xa;B"` | ✅ 两行 | | `value="A&lt;br&gt;B"` | ✅ 两行(拆成两个段落) | | `value="A` 真实换行 `B"` | ❌ 一行,换行变空格 |

多行正文用 `&#xa;`;需要拆成独立段落(比如列表项各自成段)用 `&lt;br&gt;`。文本 style 必含 `whiteSpace=wrap;html=1;`。 6. **白字不要误替换**:顶栏/深色块文字保持 `fontColor=#FFFFFF`;背景色替换优先改 `fillColor`,不要全局替换所有 `#FFFFFF`。 7. **遮挡检查**:带底色的装饰块不要跨越正文区域;两列卡片之间不要放有底色标签(会压住字)。

> 原先还有三条「每页 cell 数 ≥ N」「高度按 1.4 倍字号预算」「页数校验」——前两条是在猜渲染结果,第三条只能验证页数。都已被 Step 5 的 `render_check.py` 取代:那个脚本用真实字体文件量宽度,直接告诉你哪一页第几个框会裁字。**不要再靠加 cell 凑数或按系数估行高。**

最小可用多页模板(仅示意结构)

<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 & 4.5 & 5:输出 Draw.io、导出 PPT、修补、验证渲染(两种模式共用)

Step 3:输出 Draw.io 文件

将生成的 XML **一次性** 写入工作区 `.drawio` 文件(论文答辩用 `paper-defense.drawio`,通用汇报用 `general-presentation.drawio`),并简述每页概要。

> 写入方式需满足 checklist 第 4 条「一次性写入」与第 5 条「换行用 `&#xa;`」的要求。

Step 4:导出 PPT(必执行)

1. 如未安装:`pip install drawio2pptx -q` 2. **先切到 `.drawio` 所在目录**,否则找不到文件:

   cd /d/你的项目目录          # bash / zsh
   drawio2pptx paper-defense.drawio paper-defense.pptx
   Set-Location "D:\你的项目目录"   # PowerShell
   drawio2pptx paper-defense.drawio paper-defense.pptx

3. 输出里应出现 `Saved xxx.pptx (N slides)`,`N` 等于 `<diagram>` 数量。**页数对上只说明页没丢,不说明排版对**,继续 Step 4.5。

Step 4.5:修补 pptx(必执行,中文 PPT 尤其不能跳)

python scripts/postprocess_pptx.py paper-defense.pptx

**为什么必须跑**:drawio2pptx 0.0.7 的 `io/drawio_loader.py` 有一段「nowrap 启发式」——一个文本框里所有段落都不含空白字符时,它会把 `whiteSpace=wrap` 覆盖成 `wrap="none"`。**中文句子没有空格,所以每一个纯中文文本框都会被判成不换行**,文字沿一行无限向右流,压穿右栏、跑出画布。

字号小的时候一行刚好放得下,看不出来;一旦按上面的 40 pt 规则排版就会全崩。这个脚本把所有文本框的 `word_wrap` 强制设回 `True`。

**注意顺序**:`render_check.py` 的扫描是按「会换行」算的,所以必须先修补再扫描,否则扫描结果和实际渲染不是一回事。

论文答辩模式在写完 Step 6 讲稿后,再跑一次带讲稿的版本,把讲稿写进备注区:

python scripts/
Read more
Ships withbest-skills

通用高质量 Skill 合集,可安装到 Cursor、Claude Code、Codex、OpenClaw 等 Agent 工具的 skills 目录使用。 与 best-prompts 的区别:best-prompts 是面向聊天框的 Prompt,需手动复制粘贴;best-skills 是面向 Agent 的 SKILL.md,Agent 会根据 description 中的关键词与触发场景自动判断是否调用,无需每次手动选择。

Get the whole plugin
Stats
2,994
Stars
214
Forks
Maintained
Maintenance
Python
Language
Apache-2.0
License
1mo ago
Last commit
7mo ago
Created
4h ago
Added

Repo: xstongxue/best-skills

Other skills on best-skills.

codegen-doc
Skill

codegen-doc

基于当前项目/代码生成各类文档,支持论文章节、项目梳理、重点问题、简历项目描述四种类型。当用户提到生成论文章节、项目梳理、技术难点、简历项目描述时使用。要给新同事看的上手文档(新人文档、架…