Claude 官方 PPTX Skill 深度解析
核心功能概览
Claude 官方 PPTX Skill 是一个全面的 PowerPoint 演示文稿处理工具包,支持创建新演示文稿、编辑现有文件、基于模板生成、以及内容分析提取。
+-------------------------------------------------------------------------+
| PPTX Skill 核心功能矩阵 |
+-------------------------------------------------------------------------+
| |
| +-------------------+ +-------------------+ +------------------+ |
| | 1. 从零创建 | | 2. 编辑现有 | | 3. 模板生成 | |
| | (html2pptx) | | (OOXML) | | (rearrange) | |
| +-------------------+ +-------------------+ +------------------+ |
| |
| +-------------------+ +-------------------+ +------------------+ |
| | 4. 文本提取 | | 5. 缩略图生成 | | 6. 转图片 | |
| | (markitdown) | | (thumbnail.py) | | (soffice) | |
| +-------------------+ +-------------------+ +------------------+ |
| |
+-------------------------------------------------------------------------+功能定位
| 维度 | 说明 |
|---|---|
| 目标 | 程序化创建、编辑、分析 PowerPoint 演示文稿 |
| 核心能力 | HTML 转 PPT、OOXML 编辑、模板复用、批量处理 |
| 技术栈 | JavaScript (PptxGenJS, html2pptx) + Python (OOXML 操作) |
| 适用场景 | 自动化报告生成、批量演示文稿制作、模板标准化 |
三大创建/编辑模式
PPTX Skill 根据不同需求提供了三种工作模式:
+-------------------------------------------------------------------------+
| PPTX 处理模式决策树 |
+-------------------------------------------------------------------------+
| |
| 用户需要做什么? |
| | |
| +------------------+------------------+ |
| | | | |
| v v v |
| +-------------+ +-------------+ +------------------+ |
| | 从零创建 | | 编辑现有 | | 基于模板创建 | |
| | 新演示文稿 | | 演示文稿 | | 新演示文稿 | |
| +-------------+ +-------------+ +------------------+ |
| | | | |
| v v v |
| +-------------+ +-------------+ +------------------+ |
| | html2pptx | | OOXML 编辑 | | rearrange.py + | |
| | 工作流 | | 工作流 | | replace.py | |
| +-------------+ +-------------+ +------------------+ |
| |
+-------------------------------------------------------------------------+模式一:从零创建新演示文稿 (html2pptx)
这是 PPTX Skill 最强大的功能之一:通过编写 HTML 文件来创建 PowerPoint 幻灯片。
核心理念
HTML 文件 (精确布局) --> html2pptx.js --> .pptx 文件
|
v
Playwright 渲染计算位置
|
v
PptxGenJS 生成 PowerPoint设计原则(重要!)
Skill 特别强调设计思考要在编码之前进行:
+-------------------------------------------------------------------------+
| 演示文稿设计原则 |
+-------------------------------------------------------------------------+
| |
| 1. 分析内容 |
| - 这个演示文稿是关于什么的? |
| - 目标受众是谁? |
| - 需要什么样的语调和风格? |
| |
| 2. 选择配色方案(18种预设可选) |
| - Classic Blue: 深海军蓝 + 石板灰 + 银色 |
| - Teal & Coral: 青色 + 珊瑚色 |
| - Bold Red: 红色渐变系列 |
| - Warm Blush: 暖粉色调 |
| - Burgundy Luxury: 酒红奢华 |
| - ... 更多配色方案 |
| |
| 3. 设计视觉元素 |
| - 几何图案:对角线分隔、不对称列宽、旋转文字 |
| - 边框处理:单边厚边框、双线边框、L形边框 |
| - 排版处理:极端字号对比、全大写标题、数字突出 |
| - 布局创新:全出血图片、侧边栏导航、模块化网格 |
| |
+-------------------------------------------------------------------------+HTML 幻灯片规范
+-------------------------------------------------------------------------+
| HTML 幻灯片关键规则 |
+-------------------------------------------------------------------------+
| |
| 尺寸规范 |
| ────────── |
| - 16:9 (默认): width: 720pt; height: 405pt |
| - 4:3: width: 720pt; height: 540pt |
| - 16:10: width: 720pt; height: 450pt |
| |
| 文本规则(关键!) |
| ────────────────── |
| - 所有文本必须在 <p>, <h1>-<h6>, <ul>, <ol> 标签内 |
| - 正确: <div><p>文字内容</p></div> |
| - 错误: <div>文字内容</div> <-- 文字不会显示! |
| - 错误: <span>文字</span> <-- 文字不会显示! |
| |
| 字体限制 |
| ────────── |
| - 只能使用 Web 安全字体: |
| Arial, Helvetica, Times New Roman, Georgia, |
| Courier New, Verdana, Tahoma, Trebuchet MS, Impact |
| - 禁止: Segoe UI, SF Pro, Roboto 等非标准字体 |
| |
| 渐变和图标 |
| ────────────── |
| - 禁止: CSS 渐变 (linear-gradient, radial-gradient) |
| - 必须: 先用 Sharp 将渐变/图标光栅化为 PNG,再在 HTML 中引用 |
| |
+-------------------------------------------------------------------------+完整工作流程
Step 1: 阅读 html2pptx.md 文档(强制要求)
|
v
Step 2: 为每张幻灯片创建 HTML 文件
- 设置正确的尺寸 (720pt x 405pt)
- 使用正确的标签包裹文本
- 用 Sharp 预处理渐变和图标
- 用 class="placeholder" 标记图表位置
|
v
Step 3: 运行 html2pptx.js 转换
- 使用 html2pptx() 函数处理 HTML
- 用 PptxGenJS API 添加图表
- 调用 pptx.writeFile() 保存
|
v
Step 4: 视觉验证
- 生成缩略图: python scripts/thumbnail.py output.pptx
- 检查文字截断、重叠、对比度问题
- 如有问题,调整 HTML 并重新生成代码示例
javascript
const pptxgen = require('pptxgenjs');
const html2pptx = require('./html2pptx');
const pptx = new pptxgen();
pptx.layout = 'LAYOUT_16x9';
// 处理每个 HTML 文件
const slides = ['slide1.html', 'slide2.html', 'slide3.html'];
for (const htmlFile of slides) {
const slide = pptx.addSlide();
const result = await html2pptx(slide, htmlFile);
// 如果有图表占位符,添加图表
if (result.placeholders['chart']) {
const pos = result.placeholders['chart'];
slide.addChart(pptx.ChartType.bar, chartData, {
x: pos.x, y: pos.y, w: pos.w, h: pos.h
});
}
}
await pptx.writeFile('presentation.pptx');模式二:编辑现有演示文稿 (OOXML)
当需要修改现有的 .pptx 文件时,需要直接操作底层的 OOXML 格式。
PPTX 文件结构
presentation.pptx (实际是 ZIP 文件)
|
+-- ppt/
| +-- presentation.xml # 主演示文稿元数据
| +-- slides/
| | +-- slide1.xml # 第1张幻灯片
| | +-- slide2.xml # 第2张幻灯片
| | +-- ...
| +-- notesSlides/
| | +-- notesSlide1.xml # 演讲者备注
| +-- slideLayouts/ # 布局模板
| +-- slideMasters/ # 母版
| +-- theme/
| | +-- theme1.xml # 主题(颜色、字体)
| +-- media/ # 图片和媒体文件
| +-- comments/ # 批注
|
+-- [Content_Types].xml
+-- _rels/编辑工作流程
Step 1: 解包 PPTX
python ooxml/scripts/unpack.py presentation.pptx ./unpacked
|
v
Step 2: 编辑 XML 文件
- 主要编辑 ppt/slides/slide{N}.xml
- 修改文字、颜色、位置等
|
v
Step 3: 验证修改(每次编辑后立即执行!)
python ooxml/scripts/validate.py ./unpacked --original presentation.pptx
|
v
Step 4: 重新打包
python ooxml/scripts/pack.py ./unpacked output.pptx模式三:基于模板创建 (rearrange + replace)
这是最常用的企业场景:使用现有模板,替换内容生成新演示文稿。
工作流程详解
+-------------------------------------------------------------------------+
| 模板工作流程 |
+-------------------------------------------------------------------------+
| |
| Step 1: 分析模板 |
| ──────────────── |
| python -m markitdown template.pptx > template-content.md |
| python scripts/thumbnail.py template.pptx |
| |
| Step 2: 创建模板清单 |
| ──────────────────── |
| 保存到 template-inventory.md,记录每张幻灯片的布局和用途 |
| |
| Step 3: 规划内容大纲 |
| ──────────────────── |
| 创建 outline.md,映射内容到模板幻灯片索引 |
| 例如: [0, 34, 34, 50, 52] 表示使用第0、34、34、50、52张模板 |
| |
| Step 4: 重排幻灯片 |
| ──────────────── |
| python scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52 |
| |
| Step 5: 提取文本清单 |
| ──────────────────── |
| python scripts/inventory.py working.pptx text-inventory.json |
| |
| Step 6: 创建替换内容 |
| ──────────────────── |
| 基于 text-inventory.json 创建 replacement-text.json |
| 为每个形状定义新的段落内容 |
| |
| Step 7: 应用替换 |
| ──────────────── |
| python scripts/replace.py working.pptx replacement-text.json output.pptx|
| |
+-------------------------------------------------------------------------+替换文件格式示例
json
{
"slide-0": {
"shape-0": {
"paragraphs": [
{
"text": "新标题文字",
"alignment": "CENTER",
"bold": true
}
]
},
"shape-1": {
"paragraphs": [
{
"text": "副标题内容",
"font_size": 18.0
}
]
}
},
"slide-1": {
"shape-0": {
"paragraphs": [
{
"text": "章节标题",
"bold": true
},
{
"text": "第一个要点",
"bullet": true,
"level": 0
},
{
"text": "第二个要点",
"bullet": true,
"level": 0
}
]
}
}
}格式化规则
| 属性 | 说明 | 示例 |
|---|---|---|
text | 文本内容 | "新标题" |
bold | 粗体 | true |
italic | 斜体 | true |
bullet | 项目符号 | true(自动添加,不要手动加 •) |
level | 缩进级别 | 0(当 bullet 为 true 时必填) |
alignment | 对齐 | "CENTER", "RIGHT" |
font_size | 字号(磅) | 14.0 |
color | RGB 颜色 | "FF0000" |
theme_color | 主题颜色 | "DARK_1" |
辅助功能
文本提取
bash
# 将演示文稿转为 Markdown
python -m markitdown presentation.pptx > content.md缩略图生成
bash
# 基础用法
python scripts/thumbnail.py presentation.pptx
# 自定义输出
python scripts/thumbnail.py presentation.pptx my-preview --cols 4
# 输出: my-preview-1.jpg, my-preview-2.jpg(每张最多30张幻灯片)转换为图片
bash
# 步骤1: PPTX 转 PDF
soffice --headless --convert-to pdf presentation.pptx
# 步骤2: PDF 转图片
pdftoppm -jpeg -r 150 presentation.pdf slide
# 输出: slide-1.jpg, slide-2.jpg, ...配色方案速查表
PPTX Skill 提供了 18 种精心设计的配色方案:
| 方案名称 | 主色 | 辅助色 | 适用场景 |
|---|---|---|---|
| Classic Blue | 深海军蓝 #1C2833 | 石板灰 #2E4053 | 商务正式 |
| Teal & Coral | 青色 #5EA8A7 | 珊瑚色 #FE4447 | 现代活力 |
| Bold Red | 红色 #C0392B | 橙色 #F39C12 | 激励演讲 |
| Warm Blush | 玫瑰色 #A49393 | 奶油色 #FAF7F2 | 柔和优雅 |
| Burgundy Luxury | 酒红 #5D1D2E | 金色 #997929 | 奢华高端 |
| Black & Gold | 黑色 #000000 | 金色 #BF9A4A | 颁奖典礼 |
| Forest Green | 森林绿 #1E5128 | 浅绿 #4E9F3D | 环保自然 |
| Vibrant Orange | 橙色 #F96D00 | 炭灰 #222831 | 科技创新 |
| Retro Rainbow | 紫色 #722880 | 多彩渐变 | 复古创意 |
依赖项
| 工具 | 安装命令 | 用途 |
|---|---|---|
| markitdown | pip install "markitdown[pptx]" | 文本提取 |
| pptxgenjs | npm install -g pptxgenjs | 生成 PPTX |
| playwright | npm install -g playwright | HTML 渲染 |
| sharp | npm install -g sharp | 图像处理 |
| LibreOffice | apt-get install libreoffice | PDF 转换 |
| Poppler | apt-get install poppler-utils | PDF 转图片 |
| defusedxml | pip install defusedxml | 安全 XML 解析 |
与其他 Skill 的对比
| 对比维度 | DOCX Skill | PPTX Skill |
|---|---|---|
| 文件格式 | Word 文档 | PowerPoint 演示文稿 |
| 核心挑战 | 追踪修改、批注 | 精确布局、视觉设计 |
| 创建方式 | JavaScript API | HTML 转 PPT |
| 设计考量 | 格式保持 | 配色、排版、动画 |
| 技术复杂度 | OOXML 操作 | HTML 渲染 + OOXML |
总结
PPTX Skill 的核心价值在于提供了三种完整的工作模式来应对不同场景:
- html2pptx 模式:从零创建,通过 HTML 实现精确布局控制
- OOXML 模式:直接编辑,适合修改现有演示文稿
- 模板模式:企业级批量生成,保持品牌一致性
+-------------------------------------------------------------------------+
| PPTX Skill 核心价值 |
+-------------------------------------------------------------------------+
| |
| "演示文稿不仅仅是文字的载体,更是视觉传达的艺术。 |
| PPTX Skill 通过 HTML 精确布局 + 18 种配色方案 + 丰富的视觉元素, |
| 让 Claude 能够创建真正专业级的演示文稿。" |
| |
+-------------------------------------------------------------------------+特别提醒
- 必须先读文档:html2pptx.md 和 ooxml.md 是强制阅读要求
- 文本标签规则:所有文字必须在
<p>,<h1>-<h6>,<ul>,<ol>内 - 字体限制:只能使用 Web 安全字体
- 渐变处理:必须先光栅化为 PNG 再引用
- 验证步骤:编辑后必须立即运行 validate.py