PPTX Skill 详解
PowerPoint 演示文稿的创建、编辑和分析
基本信息
| 属性 | 值 |
|---|---|
| 名称 | pptx |
| 类别 | 文档处理 |
| 输出格式 | .pptx |
| 许可证 | 专有(仅源码可见) |
yaml
name: pptx
description: "Presentation creation, editing, and analysis. When Claude
needs to work with presentations (.pptx files) for: (1) Creating new
presentations, (2) Modifying or editing content, (3) Working with layouts,
(4) Adding comments or speaker notes, or any other presentation tasks"1. 核心概念
1.1 PPTX 文件本质
通俗比喻:与 DOCX 类似,.pptx 文件也是一个 ZIP 压缩包,包含 XML 文件和其他资源(图片、媒体等)。
1.2 关键文件结构
| 文件路径 | 内容 |
|---|---|
ppt/presentation.xml | 演示文稿元数据和幻灯片引用 |
ppt/slides/slide{N}.xml | 单个幻灯片内容 |
ppt/notesSlides/notesSlide{N}.xml | 演讲者备注 |
ppt/comments/modernComment_*.xml | 幻灯片批注 |
ppt/slideLayouts/ | 布局模板 |
ppt/slideMasters/ | 母版幻灯片 |
ppt/theme/ | 主题和样式信息 |
ppt/media/ | 图片和媒体文件 |
2. 读取和分析内容
2.1 文本提取
bash
# 使用 markitdown 转换为 Markdown
python -m markitdown path-to-file.pptx2.2 原始 XML 访问
需要 XML 访问的场景:批注、演讲者备注、幻灯片布局、动画、设计元素、复杂格式。
bash
# 解包文件
python ooxml/scripts/unpack.py <office_file> <output_dir>2.3 提取排版和颜色
当需要模仿现有设计时:
markdown
1. **读取主题文件**
检查 `ppt/theme/theme1.xml`
- 颜色:`<a:clrScheme>`
- 字体:`<a:fontScheme>`
2. **检查幻灯片内容**
检查 `ppt/slides/slide1.xml`
- 字体使用:`<a:rPr>`
- 颜色引用
3. **搜索模式**
使用 grep 查找颜色和字体引用:
- `<a:solidFill>`
- `<a:srgbClr>`3. 创建新演示文稿(无模板)
3.1 设计原则
markdown
**关键**:创建演示文稿前,必须分析内容并选择合适的设计元素:
✓ 考虑主题内容 - 什么主题?什么基调?
✓ 检查品牌需求 - 是否有公司品牌色?
✓ 匹配调色板与内容
✓ 说明设计方法 - 在编码前解释设计选择3.2 字体要求
只使用网页安全字体:
- Arial, Helvetica
- Times New Roman, Georgia
- Courier New, Verdana
- Tahoma, Trebuchet MS
- Impact
3.3 配色方案示例
css
/* 经典蓝 */
--primary: #1C2833;
--secondary: #2E4053;
--accent: #AAB7B8;
--background: #F4F6F6;
/* 青橙珊瑚 */
--primary: #5EA8A7;
--secondary: #277884;
--accent: #FE4447;
--background: #FFFFFF;
/* 科技创新 */
--primary: #B165FB;
--secondary: #181B24;
--accent: #40695B;
--background: #FFFFFF;
/* 黑金 */
--primary: #BF9A4A;
--secondary: #000000;
--accent: #F4F6F6;3.4 html2pptx 工作流
markdown
1. **必须完整阅读** html2pptx.md 文件
获取详细语法和最佳实践
2. 为每张幻灯片创建 HTML 文件
- 使用正确的尺寸(如 720pt × 405pt,16:9)
- 使用 `<p>`, `<h1>`-`<h6>`, `<ul>`, `<ol>` 处理文本
- 使用 `class="placeholder"` 标记图表/表格位置
3. 使用 html2pptx.js 库转换
处理每个 HTML 文件,添加图表和表格,保存演示文稿
4. **视觉验证**
python scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4
检查缩略图是否有布局问题4. 编辑现有演示文稿
4.1 OOXML 编辑工作流
markdown
1. **必须完整阅读** ooxml.md 文件(~500行)
获取 OOXML 结构和编辑指南
2. 解包演示文稿
python ooxml/scripts/unpack.py <file.pptx> <output_dir>
3. 编辑 XML 文件
主要是 ppt/slides/slide{N}.xml
4. **关键**:每次编辑后立即验证
python ooxml/scripts/validate.py <dir> --original <file>
5. 打包最终演示文稿
python ooxml/scripts/pack.py <input_dir> <file.pptx>5. 使用模板创建
5.1 工作流概览
mermaid
graph LR
A[提取模板内容] --> B[分析并创建清单]
B --> C[创建大纲]
C --> D[重排幻灯片]
D --> E[提取文本清单]
E --> F[生成替换文本]
F --> G[应用替换]5.2 详细步骤
markdown
**1. 提取模板文本并创建缩略图**
python -m markitdown template.pptx > template-content.md
python scripts/thumbnail.py template.pptx
**2. 分析模板并保存清单**
创建 template-inventory.md 文件,列出所有幻灯片及其用途
注意:幻灯片是 0 索引的(第一张 = 0)
**3. 创建演示文稿大纲**
基于模板清单选择合适的布局
匹配布局结构与实际内容
**4. 使用 rearrange.py 重排幻灯片**
python scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52
**5. 提取所有文本**
python scripts/inventory.py working.pptx text-inventory.json
**6. 生成替换文本**
创建 replacement-text.json 文件
**7. 应用替换**
python scripts/replace.py working.pptx replacement-text.json output.pptx5.3 替换 JSON 示例
json
{
"slide-0": {
"shape-0": {
"paragraphs": [
{
"text": "New presentation title",
"alignment": "CENTER",
"bold": true
}
]
}
},
"slide-1": {
"shape-0": {
"paragraphs": [
{"text": "Section Header", "bold": true},
{"text": "First bullet point", "bullet": true, "level": 0},
{"text": "Second bullet point", "bullet": true, "level": 0}
]
}
}
}6. 创建缩略图网格
bash
# 基本用法
python scripts/thumbnail.py presentation.pptx
# 自定义输出路径
python scripts/thumbnail.py template.pptx my-grid
# 调整列数
python scripts/thumbnail.py template.pptx analysis --cols 4特性:
- 默认:5 列,每网格最多 30 张幻灯片(5×6)
- 列数范围:3-6
- 幻灯片是 0 索引的
7. 幻灯片转图片
bash
# 1. PPTX 转 PDF
soffice --headless --convert-to pdf template.pptx
# 2. PDF 转 JPEG
pdftoppm -jpeg -r 150 template.pdf slide
# 生成:slide-1.jpg, slide-2.jpg 等
# 指定页面范围
pdftoppm -jpeg -r 150 -f 2 -l 5 template.pdf slide8. 布局技巧
8.1 图表/表格布局
markdown
**两列布局(推荐)**:
- 标题占满宽度
- 下方两列:一列文字,一列图表/表格
- 使用 flexbox 设置不等宽(如 40%/60%)
**全幻灯片布局**:
- 让图表/表格占据整张幻灯片
- 最大化可读性
**避免**:
✗ 不要垂直堆叠(文字在上,图表在下)
✗ 这会导致可读性问题8.2 视觉细节选项
markdown
**几何图案**:
- 对角线分隔
- 不对称列宽
- 旋转文字标题
- 圆形/六边形图片框
**边框处理**:
- 单边粗边框
- 双线边框
- 角括号
- L 形边框
**排版处理**:
- 极端尺寸对比(72pt 标题 vs 11pt 正文)
- 全大写标题 + 宽字距
- 等宽字体用于数据9. 依赖项
| 工具 | 安装命令 | 用途 |
|---|---|---|
| markitdown | pip install "markitdown[pptx]" | 文本提取 |
| pptxgenjs | npm install -g pptxgenjs | 创建演示文稿 |
| playwright | npm install -g playwright | HTML 渲染 |
| sharp | npm install -g sharp | SVG 光栅化 |
| LibreOffice | sudo apt-get install libreoffice | PDF 转换 |
| Poppler | sudo apt-get install poppler-utils | PDF 转图片 |
| defusedxml | pip install defusedxml | 安全 XML 解析 |
10. 使用示例
10.1 触发方式
"帮我创建一个演示文稿"
"分析这个 PPT 的结构"
"使用这个模板创建新幻灯片"
"create a presentation about AI"
"edit this PowerPoint file"11. 本节小结
| 要点 | 说明 |
|---|---|
| 文件本质 | PPTX = ZIP 压缩的 XML |
| 无模板创建 | html2pptx 工作流 |
| 模板创建 | rearrange + inventory + replace |
| 编辑现有 | OOXML 编辑 + 验证 |
| 设计原则 | 分析内容,选择合适的配色和布局 |
返回:Skills 目录