# Jackyshen Gen PPTX

> Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations, with color palettes of UPerform company; reading, parsing, or extracting text from any .pptx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions "deck," "slides," "presentation," "幻灯片," "PPT," or references a .pptx filename, regardless of what they plan to do with the content afterward. If a .pptx file needs to be opened, created, or touched, use this skill.

- Skill: `mebusw/jackyshen-gen-pptx` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add mebusw/jackyshen-gen-pptx`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mebusw/jackyshen-gen-pptx/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: mebusw (https://skillmd.com/u/mebusw)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mebusw/jackyshen-gen-pptx

---



# /pptx [-t THEME] [-noIMG] [-noQA] 

生成指定风格的pptx格式幻灯片。

- 不带参数：调度所有任务步骤。
- 参数`-t THEME`：指定[配色方案](#配色方案)
- 参数`-noIMG`：不使用文生图skill进行配图
- 参数`-noQA`：跳过QA步骤

---

## 🚨 强制流程：图片先行（来自真实事故的反思）

**【事故复盘 2026-07-01 · 金风科技技术方案书】**

用户在使用本 skill 生成 30 页金风科技数字化中心敏捷转型方案书时，我**漏掉了全部 6 张配图**——直接生成了一份纯文字+图表+形状的 PPT。用户当场质问："为什么没有配图？" 我补救后用户再次强调："将你的反思 backfill 到 skill 里，防止下次再放这个不配图的毛病。"

**根因（为什么会犯错）：**

- 我把"内容很密集、文本就够用"当成了不配图的理由。这是错的——B2B 投标书、项目方案书、年度汇报、产品发布等**所有正式商务场景都必须配图**。
- 我先写完 519 个元素的 PPT 代码，再想加图，结果布局已经写死，只能事后硬塞，导致第一次集成时图片和文字严重重叠（slide 11 的 ALPHA 图片盖住了第 5 个圆圈、slide 22 同时放了两张金字塔）。
- 我对 `-noIMG` 参数的理解偏了——参数存在不代表它是默认。

**强制规则（写入 Task 0，不允许跳过）：**

1. **任何不带 `-noIMG` 参数的调用，默认必须生成配图**。只有用户显式说"不要配图"或传 `-noIMG` 才跳过。
2. **【硬下限】未指定 `-noIMG` 时，整份 PPT 至少出 2 张图**——这是底线，不是目标。5 页以上的演示默认应配 4-6 张图（封面 1 + 概念页 1-2 + 收尾 1 + 关键流程/数据页 1-2）。**禁止只出 0 张或 1 张图就交付**。
3. **图片是规划出来的，不是事后补救的**。在写任何 PPT 代码之前，必须先列出每张幻灯片放什么图、图的 x/y/w/h，以及图占多大比例（半出血 / 1/3 栏 / 装饰角落 / 全屏背景）。
4. **必配图页面**：封面页、章节页、概念页（方法论/模型/流程）、收尾页——这些是默认必出图的"四金刚"。其余页面按内容需要酌情加图。
5. **图必须在 Task 0 完成生成和下载**——文案大纲 → 图片清单 → 批量生图 → 下载到本地 → 再开始写 PPT 代码。绝对禁止写完代码再补图。
6. **图与文字必须分层规划**：用 PPT 时不要把图塞到文字中间；要么左图右文（双栏）、要么上半图下半文（半出血）、要么图做背景文字浮在上（透明叠层）。
7. **集成图后必须做一次 slide-by-slide 视觉 QA**，检查是否压字、压框、压边距——尤其是图片放右上角时，容易和最右侧的元素冲突。

**自检清单（每次写完 PPT 代码后过一遍）：**

- [ ] **总图数 ≥ 2？**（5 页以上演示应 ≥ 4 张）
- [ ] 封面页有图吗？
- [ ] 章节页有图吗？
- [ ] 每个核心概念（方法论、流程模型、关键数据可视化）配图了吗？
- [ ] 结尾页有图吗？
- [ ] 图片的 x/y/w/h 在写代码前就定好了吗？
- [ ] 渲染后用 `pdftoppm` 转图肉眼检查过图片区域和文字区域不冲突？

违反以上任何一条 = 默认走"纯文字 PPT"路线 = 等同于低质量交付。

## 快速参考

| 任务 | 指南 |
|------|-------|
| 读取/分析内容 | `python -m markitdown presentation.pptx` |
| 编辑或从模板创建 | 阅读 [editing.md](editing.md) |
| 从零开始创建 | 阅读 [creating.md](creating.md) |

---

## 读取内容

```bash
# 文本提取
python -m markitdown presentation.pptx

# 可视化概览
python scripts/thumbnail.py presentation.pptx

# 原始 XML
python scripts/office/unpack.py presentation.pptx unpacked/
```

---

## 编辑工作的流程

**完整详情请阅读 [editing.md](editing.md)。**

1. 用 `thumbnail.py` 分析模板
2. 解包 → 操作幻灯片 → 编辑内容 → 清理 → 打包

---

## 从零开始创建

**完整详情请阅读 [creating.md](creating.md)。**

当没有模板或参考演示文稿时使用。

---

## 设计思路

**不要制作无聊的幻灯片。** 白底上的纯要点列表不会给任何人留下深刻印象。考虑从这个列表中为每张幻灯片获取灵感。

### 开始前

- **选择一个醒目且与内容相关的配色方案**：配色应该感觉是为这个主题量身定制的。如果把配色换到完全不同的演示文稿中仍然能"work"，说明你的选择还不够具体。
- **主次分明**：一种颜色应该占主导地位（60-70% 的视觉权重），搭配 1-2 种辅助色调和一种锐利的强调色。永远不要给所有颜色同等权重。
- **深浅对比**：标题页和结论页用深色背景，内容页用浅色背景（"三明治"结构）。或者全程使用深色以营造高级感。
- **坚持一个视觉主题**：选择一个独特的元素并重复使用——圆角图片边框、放在彩色圆形中的图标、粗的单侧边框。在每张幻灯片上保持一致。

### 配色方案

选择与主题匹配的配色——不要默认使用通用蓝色。用这些配色方案作为灵感：

缺省默认主题色是**优普丰(UPerform)蓝粉系**

| 主题 | 主色 | 辅助色 | 强调色 |
|-------|---------|-----------|--------|
| **优普丰(UPerform)之蓝金系** | `#0A2540` (深海蓝) | `#EABA1D` (金色) | `#F2D677` (浅金) | 
| **优普丰(UPerform)之蓝粉系** | `#0A2540` (深海蓝) | `#CE6E7B` (粉橙) | `#FFC7B9` (浅粉橙) | 
| **午夜高管** #1E2761`（藏青） #CADCFC`（冰蓝） #FFFFFF`（白） |
| **森林与苔藓** #2C5F2D`（森林绿） #97BC62`（苔藓绿） #F5F5F5`（奶油白） |
| **珊瑚活力** #F96167`（珊瑚红） #F9E795`（金色） #2F3C7E`（藏青） |
| **暖色陶土** #B85042`（陶土红） #E7E8D1`（沙色） #A7BEAE`（鼠尾草绿） |
| **海洋渐变** #065A82`（深蓝） #1C7293`（蓝绿） #21295C`（午夜蓝） |
| **炭灰极简** #36454F`（炭灰） #F2F2F2`（米白） #212121`（黑） |
| **青绿信任** #028090`（青绿） #00A896`（海沫绿） #02C39A`（薄荷绿） |
| **浆果与奶油** #6D2E46`（浆果紫） #A26769`（暗玫瑰） #ECE2D0`（奶油色） |
| **鼠尾草宁静** #84B59F`（鼠尾草绿） #69A297`（桉树绿） #50808E`（石板灰） |
| **樱桃大胆** #990011`（樱桃红） #FCF6F5`（米白） #2F3C7E`（藏青） |




**配色原则：**
- **主导色占60-70%视觉权重**，1-2个辅助色，1个强调色
- 避免所有颜色等权重分配
- 深色背景用于标题和结尾页，浅色用于内容页（”三明治”结构）
- 选一个独特的视觉元素并在每页重复使用


### 对于每张幻灯片

**每张幻灯片都需要一个视觉元素**——图片、图表、图标或形状。纯文字幻灯片容易被遗忘。

**布局选项：**
- 双栏（文字在左，插图在右）
- 图标 + 文字行（图标在彩色圆形中，标题加粗，下方配描述）
- 2x2 或 2x3 网格（图片在一侧，内容块网格在另一侧）
- 半出血图片（占满左或右半边）配内容叠加

**数据展示：**
- 大数字亮点（大号数字 60-72pt，下方配小标签）
- 对比栏（前后对比、优缺点、选项并列）
- 时间线或流程（编号步骤、箭头）

**视觉打磨：**
- 章节标题旁的小彩色圆形图标
- 斜体强调文字用于关键数据或标语

### 字体排版

**选择有趣的字体搭配**——不要默认使用 Arial。选择有个性的标题字体，搭配干净的正文字体。

| 标题字体 | 正文字体 | 适用场景 |
|-------------|-----------|----------|
| 宋体 | 黑体 | 商务、时尚、杂志风 |
| Georgia | Calibri | 正式商务、学术 |
| Arial Black | Arial | 强烈、现代感 |
| Trebuchet MS | Calibri | 科技、现代 |
| Palatino | Garamond | 优雅、传统 |
| Consolas | Calibri | 技术、数据 |
| 演示悠然小楷 | 圆体 | 手绘、亲和 |



| 元素 | 字号 |
|---------|------|
| 幻灯片标题 | 36-44pt 加粗 |
| 章节标题 | 20-24pt 加粗 |
| 正文 | 14-16pt |
| 说明 | 10-12pt 淡色 |

### 间距

- 最小边距 0.5"
- 内容块间距 0.3"-0.5"
- 留出呼吸空间——不要填满每一寸

### 避免（常见错误）

- **不要重复相同的布局**——不同的幻灯片要变换栏位、卡片和强调点
- **正文不要居中对齐**——段落和列表左对齐；仅标题居中
- **不要吝啬字号对比**——标题需要 36pt+ 才能从 14-16pt 的正文中突出
- **不要默认使用蓝色**——选择反映特定主题的配色
- **不要随机混用间距**——选择 0.3" 或 0.5" 的间距并一致使用
- **不要只设计一张幻灯片而让其余的保持朴素**——要么完全投入，要么保持简洁一致
- **不要制作纯文字幻灯片**——添加图片、图标、图表或视觉元素；避免单调的标题 + 要点
- **不要忘记文本框内边距**——当用文本边缘对齐线条或形状时，在文本框上设置 `margin: 0` 或偏移形状以留出内边距
- **不要使用低对比度元素**——图标和文字都需要与背景形成强对比；避免浅色文字配浅色背景或深色文字配深色背景
- **绝对不要在标题下使用强调线**——这是 AI 生成幻灯片的标志；使用留白或背景色代替
- **不要先生成PPT代码再想起来加图片** — 图片是规划出来的，不是事后补救的。如果先写了代码再加水印式图片，布局必然混乱。必须在Task 0阶段就完成所有图片的规划、生成、下载。详见顶部「🚨 强制流程：图片先行」一节。
- **不要随意放置图片** — 每张图片必须有固定的x/y/w/h，必须在写代码之前就确定位置，而不是写代码时随手一摆。
- **不要让元素超出边界** — 所有元素（包括装饰性元素）必须完全位于幻灯片内（x≥0, y≥0, x+w≤10, y+h≤5.625）。延伸到边界外可能引发渲染问题。
- **不要让主标题换行** - 规划布局时要考虑主标题尽量是在同一行，文本框宽度要足够容纳
- **不要把"内容密集"当成不配图的借口** — 即使每页都有大量表格/数字，B2B 方案书仍然必须配图（封面、章节页、概念页、收尾页强制配图）。**硬下限：整份 PPT 至少出 2 张图**——5 页以上演示应配 4-6 张。详见顶部「🚨 强制流程：图片先行」。
---

## QA（质检必做）

**假设存在问题。你的工作是找到它们。**

你的第一次渲染几乎从来不是完全正确的。把 QA 当作 bug hunt，而不是确认步骤。如果你第一次检查没发现任何问题，说明你看得不够仔细。

### 内容 QA

```bash
python -m markitdown output.pptx
```

检查缺失内容、拼写错误、顺序错误。

**使用模板时，检查遗留的占位符文本：**

```bash
python -m markitdown output.pptx | grep -iE "xxxx|lorem|ipsum|this.*(page|slide).*layout"
```

如果 grep 返回结果，在宣布成功前修复它们。

### 视觉 QA

**⚠️ spawn sub agents**——即使只有 2-3 张幻灯片。你一直盯着代码，会看到你期望看到的，而不是实际存在的。子代理有新鲜的视角。

首先探测环境中是否存在图像理解(image understanding)模型或相应视觉理解大模型或相应SKILL或服务能力（注意不是视觉生成能力）。如果不存在，则跳过此视觉QA环节。如果存在，则将幻灯片转换为图片（见[转换为图片](##转换为图片)），调用视觉理解模型并使用以下提示词：

```prompt
视觉检查这些幻灯片。假设存在问题——找出它们。

查看：
- 元素重叠（文字穿过形状、线条穿过文字、元素堆叠）
- 文字溢出或在边缘/框边界处被截断
- 装饰线为单行文字设计但标题换行到两行
- 来源引用或页脚与上方内容冲突
- 元素太近（< 0.3" 间距）或卡片/章节几乎相触
- 不均匀的间距（一处大块空白，另一处拥挤）
- 距幻灯片边缘的边距不足（< 0.5"）
- 栏或相似元素不一致对齐
- 低对比度文字（例如，浅灰色文字配奶油色背景）
- 低对比度图标（例如，深色图标配深色背景但没有对比圆形）
- 文本框太窄导致过度换行
- 遗留的占位符内容

对于每张幻灯片，列出问题或关注区域，即使是小问题。

阅读并分析这些图片：
1. /path/to/slide-01.jpg（预期：[简要描述]）
2. /path/to/slide-02.jpg（预期：[简要描述]）

报告发现的所有问题，包括小问题。
```

### 验证循环

1. 生成幻灯片 → 转换为图片 → 检查
2. **列出发现的问题**（如果没有发现问题，再更批判性地看一次）
3. 修复问题
4. **重新验证受影响的幻灯片**——一次修复经常会产生另一个问题
5. 重复直到完整检查没有发现新问题

**在完成至少一个修复-验证循环之前，不要宣布成功。**

---

## 转换为图片

将演示文稿转换为单独的幻灯片图片以便视觉检查：

```bash
python scripts/office/soffice.py --headless --convert-to pdf output.pptx
pdftoppm -jpeg -r 150 output.pdf slide
```

这会创建 `slide-01.jpg`、`slide-02.jpg` 等。

要在修复后重新渲染特定幻灯片：

```bash
pdftoppm -jpeg -r 150 -f N -l N output.pdf slide-fixed
```

---

## 依赖

- `pip install "markitdown[pptx]"` - 文本提取
- `pip install Pillow` - 缩略图网格
- `npm install -g pptxgenjs` - 从零创建
- LibreOffice（`soffice`）- PDF 转换（通过 `scripts/office/soffice.py` 为沙盒环境自动配置）
- Poppler（`pdftoppm`）- PDF 转图片


