前言¶
周报、汇报、路演——职场里绕不开演示文稿。.pptx 看着像普通文件,打开却是 ZIP 包里的 XML、关系表、媒体资源,结构复杂。让 AI 直接「生成一份 PPT」往往只能得到 Markdown 大纲,或者产出一个 PowerPoint 打不开的损坏文件。
Anthropic 在官方仓库 anthropics/skills 里维护了一套文档类 Agent Skill,其中 pptx 专门处理 PowerPoint 演示文稿(.pptx / .potx)。它把创建、编辑、读取、模板填充、校验等流程写进 SKILL.md,并附带 Python / Node 脚本,是观察 Agent 处理复杂 Office 格式能力边界的一个典型样本。
这是什么¶
pptx 是 Anthropic 出品的 Agent Skill,遵循通用 SKILL.md 格式,可在 Cursor、Claude Code、Claude.ai 等支持 Agent Skills 的工具中使用。
一句话定位:只要任务涉及 .pptx 或 .potx——新建幻灯片、读取内容、改模板、合并拆分、处理演讲者备注——Agent 都应加载这个 Skill,而不是凭通用知识硬写。
该 Skill 位于官方仓库 skills/pptx/ 目录,与 docx、pdf、xlsx 同属「文档技能」系列;许可为 source-available(非 Apache 2.0 开源),详见目录内 LICENSE.txt。
核心功能与亮点¶
官方 SKILL.md 把任务分成三条主线,并配套脚本与校验流程:
| 任务 | 推荐方式 |
|---|---|
| 从零创建 | 用 pptxgenjs 写 Node 脚本生成 |
| 编辑已有文件 / 基于模板 | 解压 → 改 ppt/slides/slideN.xml → 重新打包 |
| 读取内容 | markitdown deck.pptx 提取文本;thumbnail.py 生成缩略图网格 |
1. 创建演示文稿
通过 pptxgenjs 脚本生成 .pptx,Skill 文档详细列出了常见踩坑:画布尺寸要先设 pres.layout、颜色不能带 #、阴影 offset 不能为负、图表要用原生 addChart() 等。生成后需运行 validate.py 做结构校验。
2. 编辑与模板
.pptx 本质是 ZIP。官方流程是解压、用 add_slide.py 复制/插入幻灯片、编辑 XML、用 clean.py 清理孤儿资源,最后在解压目录内打包。基于 .potx 模板时,流程相同,输出保持 .potx 扩展名即可。
Skill 还强调设计规范:配色要有主题感、避免千篇一律的标题+ bullet、每页应有视觉元素,并附有多套参考色板与排版建议——这些是给 Agent 的「审美约束」,不是空泛 prompt。
3. 读取与分析
markitdown 按幻灯片块输出文本,适合摘要与 QA;scripts/thumbnail.py 生成带标签的缩略图网格,便于在模板里挑选布局。
4. 配套脚本
| 脚本 | 作用 |
|---|---|
scripts/thumbnail.py |
生成幻灯片缩略图网格 |
scripts/add_slide.py |
复制/插入幻灯片并完成关系注册 |
scripts/clean.py |
删除无引用的幻灯片、媒体与 rels |
scripts/office/validate.py |
校验 schema、关系、图表等,失败时给出修复提示 |
scripts/office/soffice.py |
LibreOffice 无头转换(如转 PDF) |
5. 三重 QA
官方要求:内容 QA(markitdown + 占位符 grep)、文件 QA(validate.py,模板场景加 --original)、视觉 QA(转 PDF 再 pdftoppm 逐页检查溢出与对齐)。这套流程说明该 Skill 面向「能交付的文件」,而非仅生成代码。
安装与启用¶
Skill 本体是一个目录:内含 SKILL.md 与 scripts/。各工具启用方式如下(以官方文档为准)。
Cursor¶
将 pptx 目录放到项目或用户级技能路径,Cursor 启动时会自动发现:
# 项目级(随仓库共享)
git clone --depth 1 https://github.com/anthropics/skills.git /tmp/anthropics-skills
cp -r /tmp/anthropics-skills/skills/pptx .cursor/skills/pptx
# 或用户级(所有项目可用)
mkdir -p ~/.cursor/skills
cp -r /tmp/anthropics-skills/skills/pptx ~/.cursor/skills/pptx
目录结构应为 .cursor/skills/pptx/SKILL.md。Agent 会根据 frontmatter 里的 description 自动匹配;也可在对话里输入 /pptx 显式调用。
Cursor 还支持 Rules → Add Rule → Remote Rule (Github),填入 https://github.com/anthropics/skills 从远程仓库导入技能(参见 Cursor 官方 Skills 文档)。
Claude Code¶
在 Claude Code 中注册官方插件市场并安装文档技能集:
/plugin marketplace add anthropics/skills
/plugin install document-skills@anthropic-agent-skills
安装后可直接说:「用 pptx skill 根据这份大纲生成 10 页路演 deck」。
Claude.ai 与 API¶
Anthropic 文档说明:仓库中的示例 Skill 对已付费 Claude.ai 用户可用;自定义 Skill 上传方式见 Using skills in Claude。API 侧可通过 Skills API 挂载预置或自定义 Skill。
依赖环境¶
Skill 声明的运行时依赖包括:
- Node:
pptxgenjs(环境预装,仅在require失败时再npm install) - Python:
markitdown[pptx]、Pillow、defusedxml、lxml - 系统:LibreOffice(
soffice)、Poppler(pdftoppm)
脚本路径相对于 Skill 目录;若只复制了 SKILL.md 而没有 scripts/,编辑与校验能力会不完整,建议整目录拷贝。
典型用法示例¶
示例 1:读取现有演示文稿¶
markitdown deck.pptx
python scripts/thumbnail.py deck.pptx my-deck-thumbs
第一句提取每页文本;第二句生成缩略图,便于 Agent 理解版式。注意 thumbnail.py 的第二个参数是输出前缀,同一目录下多次运行默认前缀 thumbnails 会互相覆盖。
示例 2:基于模板编辑并重新打包¶
python3 -c "import sys,zipfile; zipfile.ZipFile(sys.argv[1]).extractall('unpacked')" deck.pptx
python scripts/add_slide.py unpacked/ slide2.xml --after slide2.xml
# 调整 ppt/presentation.xml 中的 <p:sldIdLst> 可 reorder / delete
python scripts/clean.py unpacked/
# 编辑 ppt/slides/slideN.xml 中的内容
(cd unpacked && rm -f ../out.pptx && zip -Xr ../out.pptx .)
python scripts/office/validate.py out.pptx --original deck.pptx
官方强调:结构变更(增删页、排序)应放在内容编辑之前;不要用 xml.etree round-trip OOXML,应使用 defusedxml.minidom 解析,避免命名空间被破坏。
示例 3:从零创建并校验¶
Agent 会编写 pptxgenjs 脚本,例如设置宽屏布局、添加标题与图表,然后:
node generate-deck.js
python scripts/office/validate.py deck.pptx
若校验报错(常见如组合图 secondary 轴未声明、堆叠图 dataLabelPosition 用了 outEnd),应在生成脚本里修复后重新生成,而不是手改打包后的 XML。
示例 4:视觉 QA¶
python scripts/office/soffice.py --headless --convert-to pdf output.pptx
rm -f slide-*.jpg
pdftoppm -jpeg -r 150 output.pdf slide
将 PDF 再转为逐页 JPEG,检查文字溢出、元素重叠、低对比度等问题。修改 .pptx 后需重新跑完整转换链。
适用场景与注意事项¶
适合谁
- 需要 Agent 批量生成或改版 PPT 的产品、运营、研发同学
- 想在 Cursor / Claude Code 里把「写材料」自动化进 CI 或内部工具链的团队
- 研究 Agent 如何处理 OOXML、如何做文件级 QA 的开发者
典型场景
- 根据大纲或数据生成 pitch deck、培训课件
- 读取客户发来的
.pptx做摘要、改稿、换模板 - 基于企业
.potx品牌模板填充内容并保留版式 - 合并、拆分、复制幻灯片并清理无用媒体
限制与注意
- 许可:pptx Skill 为 source-available,商用前请阅读
LICENSE.txt。 - Legacy
.ppt:需先用soffice.py转为.pptx再处理。 python-pptx边界:官方指出它不能复制幻灯片、直接改text_frame.text会丢样式、无法读 SVG/EMF 模板图——复杂结构应走 XML 流程或自带脚本。- 字体与 QA:LibreOffice 预览与真实 PowerPoint 字体度量可能不一致;正文建议用 Arial、Calibri 等「安全字体」,非安全字体需留约 10% 余量。
- 环境:依赖 LibreOffice、Node、Python 包;沙箱环境需用 Skill 自带的
soffice.py包装,避免 baresoffice挂起。
小结¶
pptx Skill 把 PowerPoint 从「AI 只会描述幻灯片」推进到「能创建、能改、能读、能验」的完整链路:创建走 pptxgenjs,编辑走 OOXML,质量靠 validate.py 与视觉 QA。对职场演示文稿这种刚需场景,它同时也是观察 Agent 驾驭复杂二进制文档格式的一个官方参考实现。
官方目录与完整 SKILL.md:
https://github.com/anthropics/skills/tree/main/skills/pptx