用 PPTX Skill 生成不像 AI 做的幻灯片

AI 几秒就能生成一份演示文稿。问题在于它看起来就是 AI 做的——蓝色主题、密集项目符号、每个标题下一条装饰线。Anthropic 的 PPTX Agent Skill 换了一种思路:把幻灯片生成当作软件开发来对待——有脚本、有模版、有 QA 循环。

它和普通 AI 生成有什么不同

大多数 AI 生成的幻灯片败在三件事上:布局重复、设计敷衍、输出翻车。PPTX skill 为每个问题都准备了对应机制。

两条创建路径。 没有模版时从零创建(PptxGenJS),有模版时走解包-编辑-打包工作流。Skill 不强制一种方式——它根据你给的内容选最合适的。

内置设计系统。 不是含糊的”让它好看点”,skill 直接给出 10 套配色方案、字体搭配、间距规则和布局变化表。这相当于给了设计师,而不是空话。

验证优先的 QA。 Skill 强制一个修复-验证循环:生成 → 转图片 → 让子 Agent 检查 → 修复 → 重新验证。它默认第一次渲染就是错的,把 QA 当成抓 bug 而不是走过场。

使用场景

Pitch deck 和客户演示。 模版工作流在这里最合适——用你已有的品牌模版,解包,在 XML 层面替换内容,打包验证。因为编辑的是实际的幻灯片 XML,布局精确度远高于 PDF 或图片导出。

会议演讲和内部培训。 从零创建路径给你完整的控制权——图表、表格、图标、自定义背景。skill 里的设计规则能避免”默认 PPT 风格”,又不需要设计师介入。

自动化报告生成。 基于脚本的工作流(PptxGenJS + Node.js)意味着你可以程序化生成 50 页统一风格的幻灯片,数据来自 API,图表原生渲染。

约束和前提条件

依赖不少。 需要 Node.js(pptxgenjs)、Python(markitdown 和脚本)、LibreOffice(PDF 转换)、Poppler(pdftoppm)。Skill 通过 scripts/office/soffice.py 自动配置沙箱环境的 LibreOffice,但完整工具链还是有不少安装工作。

模版工作流是 XML 级别编辑。 直接编辑 slide{N}.xml。这给了你精确控制,但意味着你要面对 PowerPoint 的 XML 结构——<a:p><a:r><a:rPr><a:t> 层层嵌套。子 Agent 可以帮忙,但初始搭建绕不开。

PptxGenJS 有不少坑。 十六进制颜色不能带 #、透明度要用属性而不是颜色字符串、每次调用都要新 shadow 对象、不支持渐变填充——skill 文档把这些都写明了,因为它们会导致文件静默损坏。

文件格式严格。 PPTX 本质是 XML 文件的 ZIP 压缩包。打包脚本会验证和修复,但某些操作(比如跨调用复用 PptxGenJS 的 option 对象)会损坏输出而不报错。

安装

# Python 依赖
pip install "markitdown[pptx]" Pillow

# Node.js 依赖
npm install -g pptxgenjs

# 系统工具
# LibreOffice: https://www.libreoffice.org/download/
# Poppler: https://poppler.freedesktop.org/

macOS: brew install libreoffice poppler

Skill 脚本已包含在 skill 目录中,无需额外安装。

快速上手

读取和分析现有演示文稿

# 提取所有文本
python -m markitdown input.pptx

# 生成缩略图网格
python scripts/thumbnail.py input.pptx

从零创建演示文稿

const pptxgen = require("pptxgenjs");

let pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.author = "Your Name";
pres.title = "My Presentation";

let slide = pres.addSlide();
slide.background = { color: "1E2761" };
slide.addText("Hello World", {
  x: 1, y: 2, w: 8, h: 1.5,
  fontSize: 44, fontFace: "Georgia",
  color: "FFFFFF", bold: true, align: "center"
});

pres.writeFile({ fileName: "output.pptx" });

基于模版编辑

# 第一步:分析模版
python scripts/thumbnail.py template.pptx
python -m markitdown template.pptx

# 第二步:解包
python scripts/office/unpack.py template.pptx unpacked/

# 第三步:编辑幻灯片(在 unpacked/slides/slide1.xml 等文件中编辑)
# 第四步:QA
python -m markitdown output.pptx
# 转图片做视觉检查

# 第五步:打包
python scripts/office/pack.py unpacked/ output.pptx --original template.pptx

迭代工作流

Skill 强制执行一个固定的循环来打磨幻灯片:

  1. 生成或编辑演示文稿
  2. 转图片做视觉检查
    python scripts/office/soffice.py --headless --convert-to pdf output.pptx
    pdftoppm -jpeg -r 150 output.pdf slide
  3. 用子 Agent 检查 — 用”新眼睛”找元素重叠、文本溢出、对齐问题、对比度不足
  4. 修复问题 — 在源代码或 XML 中修复
  5. 重新验证受影响的幻灯片 — 一个修复经常引发另一个问题
  6. 重复 — 直到一轮完整检查没有新问题

子 Agent 的 QA prompt 写在 skill 的 SKILL.md 里 — 一份详细的检查清单,覆盖重叠元素、文本截断、间距违规等。

值得借鉴的设计规则

Skill 附带的设计准则可以照搬到任何演示工具:

选择与主题匹配的配色,而不是用公司品牌色。 Skill 提供了 10 套配色——森林苔藓、珊瑚能量、暖陶土、极简炭灰——并要求选一个贴合内容主题的。如果你的配色方案换什么主题都能用,那它太泛了。

每页布局都要变。 最大的错误是重复同一种布局。双栏、图标网格、通栏图片、数据大号展示、引用页——每页在结构上都应该和前一页不同。

标题下绝对不用装饰线。 Skill 明确禁止这个 AI 生成幻灯片标志性的做法。用留白或背景色代替。

字体搭配很重要。 Georgia + Calibri、Arial Black + Arial、Cambria + Calibri — skill 提供 8 组搭配和具体字号规则(标题 36-44pt、正文 14-16pt、说明文字 10-12pt)。

痛点

PptxGenJS 对象突变。 这个库会原地修改 option 对象。在两个 shape 之间复用同一个 shadow 配置,第二个会损坏。解决办法是用工厂函数每次返回新对象。

XML 层级编辑非常冗长。 模版工作流里改一段文字,都要在 PowerPoint 的 XML 结构里绕一圈。子 Agent 能帮忙,但复杂度是实打实的。

PptxGenJS 不支持渐变填充。 需要渐变就得先生成渐变图片当背景用。原生只支持纯色填充。

LibreOffice 渲染和 PowerPoint 不一致。 QA 图片来自 LibreOffice,但 PowerPoint(特别是 Windows 版)的实际渲染可能不同。文本溢出和字体回退是最常见的差异。

总结

PPTX skill 是对 AI 生成幻灯片疲劳的一剂解药。它把”生成一些幻灯片”替换成了一个结构化工程工作流——代码、模版、设计系统、QA 循环——产出的演示文稿看起来是精心设计的,而不是过程性生成器吐出来的。

如果你每个月要生成不止一份演示文稿,这套工具链的投资在第一份 Deck 就回本了。

参考:anthropics/skills/skills/pptx on GitHub

相关文章

如何把真实世界的能力封装为 Agent Skill

通用 AI Agent 能力很强,但缺少每支团队都有的东西:程序性知识。你的代码审核清单、部署手册、API 规范——这些都不在模型的训练数据里。 这就是 Agent Skill 要解 ...

Karpathy 的 LLM Wiki:让 AI 把知识编译成会生长的第二大脑

Karpathy 的 LLM Wiki:让 AI 把知识编译成会生长的第二大脑

你把 20 份 PDF 扔进 NotebookLM,问了几个问题,答案看起来不错。第二天再问一个更细的问题,AI 又从零开始检索、拼接、猜测。没有积累。没有共识。没有记忆。 Karpathy 的 L ...

跟 Claude 说一声,图就画好了:/drawio 在 Claude Code 里直接出图

跟 Claude 说一声,图就画好了:/drawio 在 Claude Code 里直接出图

你在跟 Claude Code 描述系统架构。它回复了一堆 ASCII art,差不多能看,但总觉得差点意思。你心想:"要是能直接让它画张图就好了。" 可以。 draw.io 的 Claude C ...

Quartz:把 Markdown 笔记变成可搜索、可漫游的数字花园

Quartz:把 Markdown 笔记变成可搜索、可漫游的数字花园

你已经有一堆 Markdown 笔记。问题不是写不出来,而是它们永远躺在本地文件夹里:搜索靠编辑器,引用靠记忆,分享靠复制粘贴。 把这些内容搬到传统博客也不对。博客假设文章是一条时间线,数字花园假设 ...

Karpathy 给 Claude Code 开的药方:四个原则治住 AI 乱写代码

Andrej Karpathy 一句话戳到了痛点:LLM 会带着错误的假设一路狂奔。它们把代码搞复杂、造抽象层、乱动不该动的东西。最气人的是,它们做得彬彬有礼、信心满满、而且批量生产。 一个 CLA ...

Superpowers:给 AI 编程助手装上工程纪律

Superpowers:给 AI 编程助手装上工程纪律

AI 编程助手最容易出问题的地方,不是不会写代码,而是太急着写代码。 你说“加个登录页”,它马上改文件。你说“修个 bug”,它先猜原因。你说“这个功能简单”,它也相信了。最后代码看起来跑了,但需求 ...