Featured image of post Skill 从入门到精通——第四章 Anthropic 官方Skill解析—pptx Skill 解析

Skill 从入门到精通——第四章 Anthropic 官方Skill解析—pptx Skill 解析

PPTX Skill 是 Anthropic 官方 Claude Code 的 Office 文档处理技能之一,专精于 `.pptx` 文件的**读取、编辑、创建**三大场景。技能的核心设计哲学是**"可验证的物理编辑"**——所有对现有 PPTX 的修改均通过解包为 XML 文件后操作,再经 Schema 校验回包,确保输出文件的 Office 兼容性。

Skill 从入门到精通——第四章 Anthropic 官方Skill解析—pptx Skill 解析

pptx Skill 解析—演示文稿创建与编辑

一、技能概述

PPTX Skill 是 Anthropic 官方 Claude Code 的 Office 文档处理技能之一,专精于 .pptx 文件的读取、编辑、创建三大场景。其架构核心为双路径工作流

  • 模板编辑路径:基于 OOXML 物理文件操作(ZIP 解包 → XML 编辑 → ZIP 回包),通过显式中间态实现精准、可验证的编辑。
  • 从零创建路径:基于 PptxGenJS(Node.js 库)程序化生成全新演示文稿

技能的核心设计哲学是**“可验证的物理编辑”**——所有对现有 PPTX 的修改均通过解包为 XML 文件后操作,再经 Schema 校验回包,确保输出文件的 Office 兼容性。

触发条件(由 SKILL.md frontmatter 定义):

  • 用户提及 .pptx 文件名
  • 关键词触发:deck「文稿」slides「幻灯片」presentation「演示文档」
  • 任何涉及 PPTX 作为输入、输出或双向交互的场景

二、文件结构

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
pptx/
├── SKILL.md                    # 编排层:触发条件、设计规范、QA 强制要求
├── editing.md                  # 模板编辑模式完整指南(工作流程SOP + 格式化规则 + 常见陷阱)
├── pptxgenjs.md                # PptxGenJS 从零创建指南(API 参考 + 常见陷阱)
├── LICENSE.txt                 # 专有协议
└── scripts/                    # 执行层
    ├── add_slide.py            # 幻灯片克隆 / 从布局创建新幻灯片
    ├── clean.py                # 文件清理(引用图遍历算法)
    ├── thumbnail.py            # 缩略图网格生成(soffice → PDF → ppm)
    └── office/                 # Office 通用基础设施(与 docx/xlsx 技能共享)
        ├── unpack.py           # 解压 + XML 美化 + 智能引号转义 + DOCX 预处理
        ├── pack.py             # XML 压缩 + 验证编排 + ZIP 回包
        ├── soffice.py          # LibreOffice 沙箱适配层(运行时 LD_PRELOAD shim 编译)
        ├── validate.py         # 验证路由 CLI 入口
        ├── helpers/            # DOCX 专用 DOM 优化器
        ├── validators/         # OOXML Schema 验证体系
        └── schemas/            # 内嵌 XSD Schema 库(离线,零外部依赖)

架构分层:

  1. 指令层 (SKILL.md, editing.md, pptxgenjs.md): 定义 Agent 行为契约、设计规范、QA 流程
  2. 脚本层 (scripts/*.py): Python 工具链,处理 OOXML 包结构
  3. 办公包层 (scripts/office/): 通用 Office Open XML 解包/打包/验证基础设施

三、核心决策树

Agent 收到用户请求后,按以下决策树路由:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
            
用户请求涉及 .pptx
├─ 读取/分析内容?
│  ├─ 纯文本提取    → python -m markitdown presentation.pptx
│  └─ 视觉概览      → python scripts/thumbnail.py presentation.pptx
├─ 编辑/修改现有 PPTX?
│  ├─ 有模板/参考文件  → 模板编辑模式(读取 editing.md 工作流)
│  │                      unpack → analyze → manipulate → edit → clean → pack → QA
│  └─ 无模板           → 不适用(建议先获取模板或转从零创建新 PPTX)
├─ 从零创建新 PPTX?
│  └─ 无模板可用       → PptxGenJS 模式(读取pptxgenjs.md)
│                      (pptxgenjs + 设计规范 + QA 流程)
└─ 需要视觉 QA?
   └─ 生成图片检查     → soffice.py --convert-to pdf → pdftoppm -jpeg

关键决策点:

  • 模板可用性: 决定走 XML 编辑流(保留原有设计资产)还是代从零创建新 (完全可控)
  • QA 强制循环: SKILL.md 规定"首次渲染几乎从不正确",必须完成至少一次 fix-and-verify 循环才能声明成功
  • 子代理策略: 视觉 QA 和幻灯片内容编辑阶段明确建议使用子代理(subagents)并行处理

四、主要工作流

1 模板编辑工作流(editing.md)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Step 1: 分析模板
   ├── python scripts/thumbnail.py template.pptx          # 视觉概览
   └── python -m markitdown template.pptx                 # 文本内容概览

# Step 2: 规划幻灯片映射(内容 → 布局匹配)
# 原则:拒绝单调布局,主动选择多列、图文组合、全出血图、引用页、数据看板等
   ├── 为每个内容段选择合适的布局(必须多样化:多列、图文、引言、数据卡等)
   └── 避免:所有幻灯片使用同一布局

# Step 3: 解包
   └── python scripts/office/unpack.py template.pptx unpacked/   # 解包

# Step 4: 结构操作(由主 Agent 执行,非子代理)
   ├── 删除幻灯片:从 presentation.xml 的 p:sldIdLst 移除对应 p:sldId
   ├── 复制幻灯片:python scripts/add_slide.py unpacked/ slide2.xml
   ├── 调整顺序:重排 p:sldIdLst 中的元素
   └── 完成所有结构变更后再进入内容编辑

# Step 5: 内容编辑(可使用子代理并行,每页独立 XML)
   ├── 每个 slide{N}.xml 是独立文件,Subagent 可并行编辑
   ├── 必须:使用 Edit 工具(禁止 sed / Python 脚本直接修改)
   ├── 必须:标题/标头使用 b="1"
   ├── 禁止:Unicode  bullets(•),使用 <a:buChar> 或 <a:buAutoNum>
   └── 多个项目必须拆分为独立 <a:p> 元素

# Step 6: 清理
   └── python scripts/clean.py unpacked/                  

# Step 7: 打包&验证
   └── python scripts/office/pack.py unpacked/ output.pptx --original template.pptx
       # 内部执行:condense XML → XSD 差分验证 → auto-repair → ZIP 打包

# QA(强制)
   ├── 内容 QA:python -m markitdown output.pptx | grep -iE "xxxx|lorem|ipsum"
   ├── 视觉 QA:soffice.py --convert-to pdf → pdftoppm -jpeg → Subagent 图像审查
   └── 修复 → 重新验证 → 直到一次完整检查无新问题
2 从零创建工作流(pptxgenjs.md)
1
2
3
4
5
6
npm install -g pptxgenjs react-icons react react-dom sharp

Node.js 脚本 → pres.addSlide() / addText() / addImage() / addChart() / addTable()
→ pres.writeFile({ fileName: "Presentation.pptx" })

QA 同模板模式(转为 PDF → 图像检查)
3 幻灯片添加机制(add_slide.py)

add_slide.py 是 Skill 中唯一被授权修改 PPTX 结构(而非内容)的官方工具:

  • 复制模式slide2.xml):shutil.copy2() 复制 slide 文件及 .rels,自动移除 notesSlide 引用(避免多 slide 指向同一 notes slide 的验证失败)
  • 布局模式slideLayout2.xml):生成一个仅包含 spTree 骨架的空白 slide XML,.rels 指向指定 layout
  • 关系 ID 分配:解析 presentation.xml.rels 中所有 rId{N},取 max + 1 生成新 ID
  • Slide ID 分配:解析 presentation.xml 中所有 p:sldIdid 属性,取 max + 1
  • Content_Types 注册:自动在 [Content_Types].xml 追加新 slide 的 Override

禁止手动复制 slide 文件——手动复制会遗漏 notes 引用、Content_Types、relationship ID 的同步更新,导致 pack 验证失败。

五、设计通用启示

1、Skill 架构设计模式
  1. 渐进式披露(Progressive Disclosure): 通过 SKILL.mdediting.mdpptxgenjs.md 三级文档,根据任务复杂度路由到不同详细程度的指南
  2. 工具链分层: 指令层(markdown)与执行层(python/js 脚本)分离,脚本可独立运行,也可被 Agent 调用。
  3. QA 内建: 将质量验证作为工作流的必要环节而非可选项,强制 fix-and-verify 循环。
  4. 子代理感知: 在并行化友好阶段(单页 XML 编辑、视觉审查)明确建议使用 subagents。
2、办公文档 Skill 的通用基础设施

scripts/office/ 中的 unpack.py / pack.py / validate.py / soffice.py 是 Anthropic 为所有 Office 文档技能(docx/pptx/xlsx)构建的共享基础设施:[^33^]

  • 解包不仅仅是解压: 包含 XML 美化、关系简化、智能引号转义,将二进制包转换为"AI 可编辑"形态。
  • 打包不仅仅是压缩: 包含验证、自动修复、语义对比(--original),确保"打包成功"等价于"语义安全"。
  • 沙箱感知: soffice.py 处理受限环境中的 LibreOffice 执行,体现 Agent 工作流的部署场景考量。

六 使用示例

示例 1:基础生成 PPT

claude code中输入指令:

1
2
3
4
5
6
7
调用 pptx 技能,基于以下主题生成一份基础的演示文稿:
主题:2024 年第一季度产品销售复盘
要求:
1. 包含封面、目录、销售数据概览、区域销售分析、问题与改进建议、总结 6 个页面;
2. 配色以商务蓝为主,字体统一使用微软雅黑;
3. 销售数据概览页需插入柱状图展示各产品线销售额;
4. 输出格式为 pptx 文件,文件命名为 “2024Q1 销售复盘.pptx”。

生成结果如下:

image-20260425153133285

生成的2024Q1 销售复盘.pptx 文件展示:

image-20260425153556852image-20260425153725417

示例 2:PPT 内修改
1
2
3
4
5
调用 pptx 技能,对已生成的 “2024Q1 销售复盘.pptx” 进行如下修改:
1. 将 “区域销售分析” 页的图表替换为饼图(展示各区域销售额占比);
2. 在 “问题与改进建议” 页末尾新增 “行动项时间节点” 表格,包含行动项、负责人、完成时间 3 列;
3. 调整封面页标题字体大小为 36 号,副标题为 24 号;
4. 保存修改后的文件,命名为 “2024Q1 销售复盘_修订版.pptx”。
示例 3:数据联动类 PPT
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
调用 pptx 技能,制作一份关联 Excel 数据的销售分析 PPT:
数据源:“2024 月度销售数据.xlsx”(包含月份、销售额、客单价、复购率字段)
要求:
1. 自动从 Excel 中提取数据,生成 3 个可视化图表:
   - 月度销售额趋势折线图;
   - 客单价 vs 复购率散点图;
   - 各季度销售额占比环形图;
2. 图表需关联数据源,当 Excel 数据更新时,PPT 图表可一键刷新;
3. 每个图表页添加数据解读文字(简要分析趋势 / 异常点);
4. PPT 中添加数据筛选按钮,可切换展示 “华东 / 华南 / 华北” 区域数据;
5. 输出 pptx 文件,并附带数据源关联操作说明。

补充学习资源

如您想要系统建立 AI Agent 全栈开发能力,从概念认知到企业级项目落地、线上迭代优化,可以参考《栖微 AI Agent 工程师实战成长营》专栏。专栏以六阶成长路径组织内容,配套实战源码与持续更新的前沿案例,补齐 Demo 到生产环境之间的工程化短板。

更多介绍:《栖微 AI Agent 工程师实战成长营》

Github 项目 :https://github.com/tinyseeking/tidy-agent-practice

欢迎大家一起探讨智能体开发相关问题。

Licensed under CC BY-NC-SA 4.0