pptx Skill:让 AI Agent 真正会写 PowerPoint

前言

周报、汇报、路演——职场里绕不开演示文稿。.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.mdscripts/。各工具启用方式如下(以官方文档为准)。

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 声明的运行时依赖包括:

  • Nodepptxgenjs(环境预装,仅在 require 失败时再 npm install
  • Pythonmarkitdown[pptx]Pillowdefusedxmllxml
  • 系统: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 品牌模板填充内容并保留版式
  • 合并、拆分、复制幻灯片并清理无用媒体

限制与注意

  1. 许可:pptx Skill 为 source-available,商用前请阅读 LICENSE.txt
  2. Legacy .ppt:需先用 soffice.py 转为 .pptx 再处理。
  3. python-pptx 边界:官方指出它不能复制幻灯片、直接改 text_frame.text 会丢样式、无法读 SVG/EMF 模板图——复杂结构应走 XML 流程或自带脚本。
  4. 字体与 QA:LibreOffice 预览与真实 PowerPoint 字体度量可能不一致;正文建议用 Arial、Calibri 等「安全字体」,非安全字体需留约 10% 余量。
  5. 环境:依赖 LibreOffice、Node、Python 包;沙箱环境需用 Skill 自带的 soffice.py 包装,避免 bare soffice 挂起。

小结

pptx Skill 把 PowerPoint 从「AI 只会描述幻灯片」推进到「能创建、能改、能读、能验」的完整链路:创建走 pptxgenjs,编辑走 OOXML,质量靠 validate.py 与视觉 QA。对职场演示文稿这种刚需场景,它同时也是观察 Agent 驾驭复杂二进制文档格式的一个官方参考实现。

官方目录与完整 SKILL.md:

https://github.com/anthropics/skills/tree/main/skills/pptx

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜