---
name: pptx
description: "每当以任何方式涉及 .pptx 文件时使用此技能 — 作为输入、输出或两者兼有。这包括：创建幻灯片、演示文稿或提案；从任何 .pptx 文件读取、解析或提取文本（即使提取的内容将在其他地方使用，如电子邮件或摘要）；编辑、修改或更新现有演示文稿；合并或拆分幻灯片文件；处理模板、布局、演讲者备注或评论。每当用户提到"deck"、"slides"、"presentation"或引用 .pptx 文件名时触发，无论他们之后计划用内容做什么。如果需要打开、创建或接触 .pptx 文件，请使用此技能。"
license: 专有。LICENSE.txt 有完整条款
---

# PPTX 技能

## 快速参考

| 任务 | 指南 |
|------|-------|
| 读取/分析内容 | `python -m markitdown presentation.pptx` |
| 编辑或从模板创建 | 阅读 [editing.md](editing.md) |
| 从头创建 | 阅读 [pptxgenjs.md](pptxgenjs.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. 解包 → 操作幻灯片 → 编辑内容 → 清理 → 打包

---

## 从头创建

**阅读 [pptxgenjs.md](pptxgenjs.md) 了解完整详情。**

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

---

## 设计创意

**不要创建无聊的幻灯片。** 白色背景上的简单项目符号不会给任何人留下深刻印象。为每张幻灯片考虑此列表中的创意。

### 开始之前

- **选择大胆的、内容导向的配色方案**：调色板应该感觉是为这个主题设计的。如果将你的颜色交换到完全不同的演示文稿中仍然"有效"，那么你的选择不够具体。
- **主导而非平等**：一种颜色应该占主导地位（60-70% 视觉权重），配有 1-2 种支持色调和一种鲜明的强调色。永远不要让所有颜色权重相等。
- **深色/浅色对比**：标题页和结论页使用深色背景，内容页使用浅色（"三明治"结构）。或者全程采用深色以获得高级感觉。
- **承诺视觉主题**：选择一个独特元素并重复使用 — 圆形图像框架、彩色圆圈中的图标、粗单边边框。在每张幻灯片上延续它。

### 配色方案

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

| 主题 | 主色 | 辅色 | 强调色 |
|-------|---------|-----------|--------|
| **午夜高管** | `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`（海军蓝）|

### 每张幻灯片

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

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

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

**视觉润色：**
- 部分标题旁边小彩色圆圈中的图标
- 关键统计或标语的斜体强调文本

### 排版

**选择有趣的字体配对** — 不要默认为 Arial。选择一个有个性的标题字体，并与一个干净的正文字体配对。

| 标题字体 | 正文字体 |
|-------------|-----------|
| Georgia | Calibri |
| Arial Black | Arial |
| Calibri | Calibri Light |
| Cambria | Calibri |
| Trebuchet MS | Calibri |
| Impact | Arial |
| 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 生成幻灯片的标志；使用空白或背景色代替

---

## QA（必需）

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

你的第一次渲染几乎永远不正确。将 QA 作为错误搜寻而不是确认步骤。如果你在第一次检查时发现零问题，那么你看得不够仔细。

### 内容 QA

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

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

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

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

如果 grep 返回结果，在声明成功之前修复它们。

### 视觉 QA

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

将幻灯片转换为图片（参见[转换为图片](#转换为图片)），然后使用此提示：

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

查找：
- 重叠元素（文本穿过形状、线条穿过单词、堆叠元素）
- 文本溢出或在边缘/框边界处被截断
- 装饰线为单行文本定位但标题换行为两行
- 来源引用或页脚与上方内容冲突
- 元素太近（< 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 转图片
