# PPTX

> 當任務涉及 .pptx 檔案時使用此技能（無論作為輸入、輸出，或兩者）。涵蓋：建立投影片、pitch deck 或簡報；從任何 .pptx 檔案讀取、解析或擷取文字（即使擷取的內容是要用在別處，例如電子郵件或摘要）；編輯、修改或更新現有簡報；合併或拆分投影片檔案；處理範本、版面配置、講者備忘稿或註解。只要使用者提到「deck」、「投影片」、「簡報」，或引用了 .pptx 檔名，不論他們之後要怎麼使用內容，皆應觸發此技能。任何需要開啟、建立或修改 .pptx 檔案的需求，都使用此技能。

- Skill: `tai-ch0802/pptx` (Agent Skill)
- Install (CLI): `npx skillmds@latest add tai-ch0802/pptx`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tai-ch0802/pptx/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- License: 專有。LICENSE.txt 包含完整條款
- Author: Tai-ch0802 (https://skillmd.com/u/tai-ch0802)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/tai-ch0802/pptx

---


# 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 到圖片

