关于 pptx-generator
pptx-generator 是用于读取、编辑和创建 PowerPoint 演示文稿的 Agent 技能,面向处理幻灯片的用户。它结合内容分析、模板 XML 编辑指南、PptxGenJS 创建流程及设计与质量参考。
主要功能
- 01使用 markitdown 提取演示文稿文本
- 02通过 XML 编辑模板幻灯片
- 03使用 PptxGenJS 创建幻灯片
- 04幻灯片布局与设计系统参考
- 05规定的幻灯片质量检查
适用场景
- 01分析现有演示文稿
- 02基于模板修改幻灯片
- 03从头创建演示文稿
- 04检查幻灯片布局和格式
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ minimax-ai/ skills --skill pptx-generator安装后在 Claude Code 中输入/pptx-generator确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/design-system.mdediting.mdpitfalls.mdpptxgenjs.mdslide-types.md详细介绍
PPTX 生成器与编辑器
概述
此技能处理所有 PowerPoint 任务:读取和分析现有演示文稿、通过 XML 操作编辑基于模板的演示文稿,以及使用 PptxGenJS 从头创建演示文稿。它包含完整的设计系统(配色方案、字体、样式配方),并为每种幻灯片类型提供详细指导。
快速参考
| 任务 | 方法 |
|---|---|
| 读取/分析内容 | python -m markitdown presentation.pptx |
| 基于模板编辑或创建 | 参见编辑演示文稿 |
| 从头创建 | 参见下文的从头创建工作流 |
| 项目 | 值 |
|---|---|
| 尺寸 | 10" x 5.625"(LAYOUT_16x9) |
| 颜色 | 不带 # 的 6 位十六进制值(例如,"FF0000") |
| 英文字体 | Arial(默认),或经批准的替代字体 |
| 中文字体 | Microsoft YaHei |
| 页码徽标位置 | x: 9.3",y: 5.1" |
| 主题键 | primary、secondary、accent、light、bg |
| 形状 | RECTANGLE、OVAL、LINE、ROUNDED_RECTANGLE |
| 图表 | BAR、LINE、PIE、DOUGHNUT、SCATTER、BUBBLE、RADAR |
参考文件
| 文件 | 内容 |
|---|---|
| slide-types.md | 5 种幻灯片页面类型(封面、目录、章节分隔页、内容页、总结页)+ 其他布局模式 |
| design-system.md | 配色方案、字体参考、样式配方(锐利/柔和/圆角/胶囊)、排版与间距 |
| editing.md | 基于模板的编辑工作流、XML 操作、格式规则、常见问题 |
| pitfalls.md | QA 流程、常见错误、关键 PptxGenJS 注意事项 |
| pptxgenjs.md | 完整的 PptxGenJS API 参考 |
读取内容
# Text extraction
python -m markitdown presentation.pptx
从头创建——工作流
在没有可用模板或参考演示文稿时使用。
步骤 1:研究与需求
搜索并了解用户需求——主题、受众、目的、语气和内容深度。
步骤 2:选择配色方案与字体
使用配色方案参考选择与主题和受众匹配的配色方案。使用字体参考选择字体组合。
步骤 3:选择设计风格
使用样式配方选择与演示文稿语气相匹配的视觉风格(锐利、柔和、圆角或胶囊)。
步骤 4:规划幻灯片大纲
将每张幻灯片准确归类为5 种页面类型之一。规划每张幻灯片的内容和布局。确保视觉效果多样——不要在多张幻灯片中重复使用相同布局。
步骤 5:生成幻灯片 JS 文件
在 slides/ 目录中为每张幻灯片创建一个 JS 文件。每个文件必须导出一个同步的 createSlide(pres, theme) 函数。遵循幻灯片输出格式以及 slide-types.md 中针对各类型的指导。如果有可用的子 Agent,可并行生成最多 5 张幻灯片。
告知每个子 Agent:
- 文件命名:
slides/slide-01.js、slides/slide-02.js等。 - 图片放在:
slides/imgs/ - 最终 PPTX 放在:
slides/output/ - 尺寸:10" x 5.625"(LAYOUT_16x9)
- 字体:中文 = Microsoft YaHei,英文 = Arial(或经批准的替代字体)
- 颜色:不带 # 的 6 位十六进制值(例如
"FF0000") - 必须使用主题对象约定(参见主题对象约定)
- 必须遵循 PptxGenJS API 参考
步骤 6:编译为最终 PPTX
创建 slides/compile.js,以组合所有幻灯片模块:
// slides/compile.js
const pptxgen = require('pptxgenjs');
const pres = new pptxgen();
pres.layout = 'LAYOUT_16x9';
const theme = {
primary: "22223b", // dark color for backgrounds/text
secondary: "4a4e69", // secondary accent
accent: "9a8c98", // highlight color
light: "c9ada7", // light accent
bg: "f2e9e4" // background color
};
for (let i = 1; i <= 12; i++) { // adjust count as needed
const num = String(i).padStart(2, '0');
const slideModule = require(`./slide-${num}.js`);
slideModule.createSlide(pres, theme);
}
pres.writeFile({ fileName: './output/presentation.pptx' });
运行:cd slides && node compile.js
步骤 7:QA(必需)
参见 QA 流程。
输出结构
slides/
├── slide-01.js # Slide modules
├── slide-02.js
├── ...
├── imgs/ # Images used in slides
└── output/ # Final artifacts
└── presentation.pptx
幻灯片输出格式
每张幻灯片都是一个完整且可运行的 JS 文件:
// slide-01.js
const pptxgen = require("pptxgenjs");
const slideConfig = {
type: 'cover',
index: 1,
title: 'Presentation Title'
};
// MUST be synchronous (not async)
function createSlide(pres, theme) {
const slide = pres.addSlide();
slide.background = { color: theme.bg };
slide.addText(slideConfig.title, {
x: 0.5, y: 2, w: 9, h: 1.2,
fontSize: 48, fontFace: "Arial",
color: theme.primary, bold: true, align: "center"
});
return slide;
}
// Standalone preview - use slide-specific filename
if (require.main === module) {
const pres = new pptxgen();
pres.layout = 'LAYOUT_16x9';
const theme = {
primary: "22223b",
secondary: "4a4e69",
accent: "9a8c98",
light: "c9ada7",
bg: "f2e9e4"
};
createSlide(pres, theme);
pres.writeFile({ fileName: "slide-01-preview.pptx" });
}
module.exports = { createSlide, slideConfig };
主题对象约定(必须遵守)
编译脚本会传入一个包含以下确切键名的主题对象:
| 键 | 用途 | 示例 |
|---|---|---|
theme.primary | 最深的颜色,标题 | "22223b" |
theme.secondary | 深色强调色,正文文本 | "4a4e69" |
theme.accent | 中间色调的强调色 | "9a8c98" |
theme.light | 浅色强调色 | "c9ada7" |
theme.bg | 背景颜色 | "f2e9e4" |
绝不要使用 background、text、muted、darkest、lightest 等其他键名。
页码徽章(必需)
除封面页外,所有幻灯片都必须在右下角显示页码徽章。
- 位置:x:9.3",y:5.1"
- 仅显示当前页码(例如
3或03),不要显示“3/12” - 使用调色板中的颜色,保持低调
圆形徽章(默认)
slide.addShape(pres.shapes.OVAL, {
x: 9.3, y: 5.1, w: 0.4, h: 0.4,
fill: { color: theme.accent }
});
slide.addText("3", {
x: 9.3, y: 5.1, w: 0.4, h: 0.4,
fontSize: 12, fontFace: "Arial",
color: "FFFFFF", bold: true,
align: "center", valign: "middle"
});
药丸形徽章
slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 9.1, y: 5.15, w: 0.6, h: 0.35,
fill: { color: theme.accent },
rectRadius: 0.15
});
slide.addText("03", {
x: 9.1, y: 5.15, w: 0.6, h: 0.35,
fontSize: 11, fontFace: "Arial",
color: "FFFFFF", bold: true,
align: "center", valign: "middle"
});
依赖项
pip install "markitdown[pptx]"— 提取文本npm install -g pptxgenjs— 从头创建npm install -g react-icons react react-dom sharp— 图标(可选)