<!-- title: 官方pptx拆解：先看图再交稿 -->

# 官方pptx件拆解：先看图，再交稿

## 概述

## 评测表

| 维度 | 权重 | 评分 | 短评 |
|------|------|------|------|
| 功能完整度 | 25% | ★★★★★ | 建、改、读三线全包，附带转 PDF、抽文本、抽演讲备注 |
| 设计质量 | 25% | ★★★★★ | 分诊台 + 渐进披露 + 看图验收，教科书级的 SKILL.md 结构 |
| 实战效果 | 20% | ★★★★☆ | 成品接近人工水平；复杂图表与精排版仍需人工补刀 |
| 上手难度 | 15% | ★★★★☆ | 装完即用，但 LibreOffice 与字体是两道隐形门槛（星多=友好） |
| 社区活跃度 | 15% | ★★★★★ | 官方仓库维护，随 Claude 版本一起迭代，社区反馈直接进 PR |

综合 **4.7 / 5**。它不是最性感的件，却是被复制最多的件——大量第三方 PPT 类 Skill 的骨架都能看出它的影子。

## 一、先看文件清单：一件三层

按官方仓库当前版本（以下结构以仓库为准），pptx 件的大致布局：

```
document-skills/pptx/
├── SKILL.md            # 入口：约两屏，分诊台 + 三条路线索引
├── html2pptx.md        # 建件路线的完整手册（按需加载）
├── ooxml/
│   └── scripts/
│       ├── unpack.py   # 把 .pptx 拆成普通目录
│       ├── pack.py     # 把目录打包回 .pptx
│       └── ooxml.py    # OOXML 的查询与校验工具
└── scripts/
    └── thumbnail.py    # 把每页缩略图拼成网格大图
```

三层结构一眼分明：**SKILL.md 是门面，md 手册是深手册，脚本是干活的手**。整个件的体积大头在脚本和手册里，入口文件始终控制在两屏上下——这是「渐进披露」的标准做法：模型只按需加载细节，上下文窗口留给干活本身。

## 二、frontmatter：一整句触发器

拆任何件先拆门牌。pptx 的 frontmatter 只有 name 和 description 两个字段，description 开头是一串英文能力清单，摘录大意：

> Presentation creation, editing, and analysis. Creates new presentations, modifies existing ones, converts between formats, extracts text and speaker notes...

这段描述的写法有三个可抄的点：

1. **动词打头，能力全列**。creates / modifies / converts / extracts / edits，五个动词把「能干什么」说满，一个不多一个不少。
2. **触发词埋进名词堆**。PowerPoint、.pptx、slide deck、speaker notes——用户嘴里的各种叫法都被这段话覆盖，路由器做模糊匹配时命中率拉满。
3. **What 与 When 两段式**。前半句说能力，后半句说「当你需要处理 PowerPoint 文件时用我」。触发边界写在门牌上，而不是藏在正文里，这是官方件的统一家风——上轮拆 docx 时已经见过同款句式。

反面教材是社区里大量「一句话门牌」：只写「帮你做 PPT」。没有触发词堆栈，用户换个说法路由就哑火。门牌决定生死，这是拆到第二轮还在反复出现的结论。

## 三、第一屏是分诊台：三个动词入口

SKILL.md 正文的第一个大段落就是一张决策树，把所有任务先按三个动词分诊：

- **读**（Reading and analyzing）：用户递来一份别人的 deck，要你总结、点评、找数据；
- **建**（Creating）：从零做一份新稿；
- **改**（Editing）：套着公司模板改内容、调版式。

分诊之后三条路互不相通，各自有独立的工具链。这个设计解决的是生成型 Skill 最大的通病：**把所有活塞进一条流水线，导致每一步都在给模型出选择题**。pptx 件的答案是先把选择题答完——入口就定路线，后面全是执行题。

## 四、读件线：先把 PPT 变成像素和纯文本

「读」这条线的设计哲学只有一句话：**PPT 是给人眼看的，模型得先借到眼睛**。

具体动作两步。第一步，用 LibreOffice 的无头模式把 .pptx 转成 PDF，再用 poppler 的 pdftoppm 把 PDF 撕成一页页图片——版式、配色、图表长相，全在像素里。第二步，用 markitdown 之类工具抽纯文本，把讲稿和演讲备注捞出来——语义在文字里。

一条线，两遍信息，像素管「长什么样」，文本管「说了什么」。模型对照着看，总结、审稿、竞品分析就都有了抓手。没有这条转换链，模型面对 .pptx 二进制包就是睁眼瞎。

## 五、建件线：先画 HTML，再换原生皮

从零建新稿，官方给出的主路线不是 python-pptx，而是所有拆解过的件里最「曲线救国」的一条：**先把每页幻灯片写成一个固定尺寸的 HTML 文件，用 CSS 排版，再由仓库内的 html2pptx 工具转成 .pptx**（细节在 html2pptx.md 手册里，按需加载）。

为什么绕这道弯？因为两边的强项完全错位：

- **LLM 写 HTML/CSS 是肌肉记忆**。盒模型、绝对定位、字号行高，模型在亿万网页上练过，命中率极高；而 python-pptx 的坐标 API 冷门且啰嗦，模型容易算错坐标把字叠到一起。
- **用户要的是原生可编辑文件**。直接渲染成图片塞进 PPT 谁都会，但那样用户拿到手一个字都改不了。html2pptx 的思路是无头浏览器量出每个文本盒的真实尺寸和位置，再换算成原生文本框写回包里——**皮是 HTML 的，骨头是 PPT 的**。

手册里还规定了固定画布尺寸（16:9 对应固定的 pt 值）、要求元素绝对定位、禁止依赖外链资源。这些约束全是在给「模型发挥空间」上栏杆：发挥留给文案和配色，几何必须精确。

## 六、改件线：拆包、直改 XML、回包

改已有文件这条线，和 docx 件是同一套家法，即「XML 手术」三步：

```bash
python ooxml/scripts/unpack.py deck.pptx unpacked/   # 拆包
# 直接编辑 ppt/slides/slideN.xml
python ooxml/scripts/pack.py unpacked/ new_deck.pptx # 回包
```

要点在于**为什么不用 python-pptx 改**：库一介入就要把整个包按它的对象模型重写一遍，公司模板里那些主题、母版、动画的细枝末节随时可能被抹掉。直改 XML 是显微外科——只动需要动的节点，其余字节原地不动，模板的原汁原味全保住。

顺带一个 OOXML 的硬知识，SKILL.md 和配套工具里反复出现：包里的坐标单位是 EMU，每英寸 914400 EMU、每磅 12700 EMU。模型自己换算十有八九出错，所以工具链把这些换算封装进脚本，模型只需要说「把这行字下移 20 磅」。**能封装给脚本的就不要让模型口算**，这是官方件和玩具件的分水岭。

## 七、灵魂在验收：模型自己看图改稿

三条线最后汇到同一个终点站：**thumbnail.py 出网格图，模型逐页看，看完才准交**。整个闭环长这样：

```mermaid
flowchart TD
    A[用户递来任务] --> B{"SKILL.md 分诊"}
    B -->|读懂一份稿| C[soffice 转PDF]
    B -->|从零做新稿| D[写HTML切页]
    B -->|改已有文件| E[unpack.py 拆包]
    C --> F[pdftoppm 撕图]
    F --> G[对照文本逐页看]
    D --> H[html2pptx 转原生件]
    E --> I[直改slideN.xml]
    I --> J[pack.py 回包]
    H --> K[thumbnail.py 出网格图]
    J --> K
    K --> L{有无溢出重叠}
    G --> M{分析是否到位}
    L -->|有| N[回改对应层]
    N --> K
    M -->|有漏| G
    L -->|无| O[交稿]
    M -->|到位| O
```

这个验收闭环是整个件最值得仰望的设计。生成型 Skill 的传统困境是「开盲盒」：模型自认为排好了，交稿一看文字溢出、元素叠罗汉。pptx 件的做法是把「质检」写死在流程里——**渲染出来的像素是唯一真相，模型的自我感觉不算数**。网格图一屏看全所有页，token 花得少，问题看得全：文字出框、标题压图、字号失衡，一眼一个准。发现问题再回头改对应的那一层（HTML 重转，或 XML 微调），循环到干净为止。

一句话总结这套哲学：**先看图，再交稿**。后来社区里大量「视觉自检」类 Skill，祖师爷都在这里。

## 八、适用与不适用

**该用的场景**：要交付真正可编辑 .pptx 文件的活；套公司模板改内容保格式；批量改稿（几十页换 logo、换配色）；分析别人的 deck（融资 BP、竞品汇报）。

**不该硬用的场景**：目标是腾讯文档、Google Slides 在线版的协作文档——那是 API 的地盘；重动画、重切换效果的演示——动画本质也是 XML，能改但不是这件的主场；纯视觉海报图——canvas-design 们的地盘。用对赛道比用对工具更重要。

**两道隐形门槛**要提前踩掉：一是 LibreOffice 必须在场，精简容器里没有它，读件线和验收线直接瘫痪；二是字体，服务器上没装中文字体时，渲染出来的网格图全是豆腐块，模型看着豆腐块调版式，交稿必翻车。装个 fonts-noto-cjk 能省掉一大半玄学问题。

## 九、能抄走的三条写法心法

想自己写件的读者，这件里有三条直接可抄：

1. **第一屏只做路由**。SKILL.md 开头就分诊，把任务按动词拆进互不干扰的流水线。别让模型边干边选路。
2. **把验收写进流程，而不是写进愿望**。凡是生成视觉物的 Skill，都必须有「渲染成图 → 模型自看 → 回改」的闭环，否则就是开盲盒。验证成本（一张缩略图的 token）远低于返工成本。
3. **细节下放，主文件瘦身**。数字、命令、边角案例全塞进按需加载的手册和脚本 docstring，入口文件保持两屏。门牌写触发词，正文写路由，手册写手术步骤——三层各司其职。

## 安装与使用

```bash
git clone https://github.com/anthropics/skills
mkdir -p ~/.claude/skills
cp -r skills/document-skills/pptx ~/.claude/skills/

# 依赖（读件线与验收线必需）
sudo apt install -y libreoffice poppler-utils fonts-noto-cjk
pip install markitdown
```

装完重启会话，直接说「把这份大纲做成 16:9 的 PPT，商务风」即可触发；想走改稿线就说「保格式把这份 deck 的 Q3 数据换成 Q4」。

## 推荐排行榜

**按场景选路线**：从零建新稿 → html2pptx 路线（首推）；模板改稿 → XML 手术路线；读懂他人 deck → 看图路线。

**最值得学的三个设计**：Top1 看图验收闭环；Top2 HTML 换皮规避坐标口算；Top3 三动词分诊台。

**谁可以缓装**：精简容器环境（先解决 LibreOffice 和字体再装）、只做在线协作文档的团队。其余场景，这件值得常驻。

## 参考来源

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
