SKILL.md
readonly只读
name
pptx-generator
description
生成、编辑和读取PowerPoint演示文稿。使用PptxGenJS从头创建(封面、目录、内容、章节分隔、总结幻灯片),通过XML工作流编辑现有PPTX,或使用markitdown提取文本。触发词:PPT、PPTX、PowerPoint、演示文稿、幻灯片、deck、slides。
PPTX生成与编辑器
概述
本技能处理所有PowerPoint任务:读取/分析现有演示文稿、通过XML操作编辑基于模板的演示文稿、以及使用PptxGenJS从头创建演示文稿。它包含完整的设计系统(调色板、字体、样式配方)以及每种幻灯片类型的详细指导。
快速参考
| 任务 | 方法 |
|---|---|
| 读取/分析内容 | python -m markitdown presentation.pptx |
| 编辑或从模板创建 | 参见编辑演示文稿 |
| 从头创建 | 参见下面的从头创建工作流 |
| 项目 | 值 |
|---|---|
| 尺寸 | 10" x 5.625" (LAYOUT_16x9) |
| 颜色 | 6位十六进制,不带#(例如"FF0000") |
| 英文字体 | Arial(默认)或批准的替代字体 |
| 中文字体 | 微软雅黑 |
| 页码徽章位置 | 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参考 |
读取内容
# 文本提取
python -m markitdown presentation.pptx
从头创建工作流
当没有模板或参考演示文稿时使用。
步骤1:研究与需求
搜索以了解用户需求——主题、受众、目的、语气、内容深度。
步骤2:选择调色板与字体
使用调色板参考选择与主题和受众匹配的调色板。使用字体参考选择字体搭配。
步骤3:选择设计风格
使用样式配方选择与演示文稿语气匹配的视觉风格(锐利、柔和、圆角或药丸)。
步骤4:规划幻灯片大纲
将每张幻灯片分类为5种页面类型中的一种。规划每张幻灯片的内容和布局。确保视觉多样性——不要在幻灯片之间重复相同的布局。
步骤5:生成幻灯片JS文件
在slides/目录中为每张幻灯片创建一个JS文件。每个文件必须导出一个同步的createSlide(pres, theme)函数。遵循幻灯片输出格式和slide-types.md中的类型特定指导。如果可用,使用子代理同时生成最多5张幻灯片。
告知每个子代理:
- 文件命名:
slides/slide-01.js、slides/slide-02.js等。 - 图片放在:
slides/imgs/ - 最终PPTX放在:
slides/output/ - 尺寸:10" x 5.625" (LAYOUT_16x9)
- 字体:中文=微软雅黑,英文=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", // 背景/文字的深色
secondary: "4a4e69", // 次要强调色
accent: "9a8c98", // 高亮色
light: "c9ada7", // 浅色强调
bg: "f2e9e4" // 背景色
};
for (let i = 1; i <= 12; i++) { // 根据需要调整数量
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-02.js
├── ...
├── imgs/ # 幻灯片中使用的图片
└── output/ # 最终产物
└── presentation.pptx
幻灯片输出格式
每张幻灯片是一个完整、可运行的JS文件:
// slide-01.js
const pptxgen = require("pptxgenjs");
const slideConfig = {
type: 'cover',
index: 1,
title: '演示文稿标题'
};
// 必须是同步的(不是异步)
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;
}
// 独立预览 - 使用幻灯片特定文件名
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— 图标(可选)






