安装方式
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add MiniMax-AI/skills --skill pptx-generator 生成、编辑和读取PowerPoint演示文稿。使用PptxGenJS从头创建(封面、目录、内容、节分隔页、总结幻灯片),通过XML工作流编辑现有PPTX,或使用markitdown提取文本。触发器:PPT、PPTX、PowerPoint、presentation、slide、deck、slides。
69
下载量
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add MiniMax-AI/skills --skill pptx-generator name: pptx-generator
description: 生成、编辑和读取PowerPoint演示文稿。使用PptxGenJS从头创建(封面、目录、内容、节分隔页、总结幻灯片),通过XML工作流编辑现有PPTX,或使用markitdown提取文本。触发器:PPT、PPTX、PowerPoint、presentation、slide、deck、slides。
license: MIT
metadata:
version: "1.0"
category: productivity
sources:
- https://gitbrent.github.io/PptxGenJS/
- https://github.com/microsoft/markitdown本技能处理所有 PowerPoint 任务:读取/分析现有演示文稿、通过 XML 操作编辑基于模板的幻灯片组、以及使用 PptxGenJS 从零创建演示文稿。它包含完整的设计系统(调色板、字体、样式配方)以及每种幻灯片类型的详细指导。
| 任务 | 方法 |
|---|---|
| 读取/分析内容 | python -m markitdown presentation.pptx |
| 编辑或基于模板创建 | 参见 [编辑演示文稿](references/editing.md) |
| 从零创建 | 参见下方 从零创建工作流 |
| 项目 | 值 |
|---|---|
| 尺寸 | 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](references/slide-types.md) | 5 种幻灯片页面类型(封面、目录、章节分隔页、内容页、总结页)及其他布局模式 |
| [design-system.md](references/design-system.md) | 调色板、字体参考、样式配方(Sharp/Soft/Rounded/Pill)、排版与间距 |
| [editing.md](references/editing.md) | 基于模板的编辑工作流、XML 操作、格式化规则、常见陷阱 |
| [pitfalls.md](references/pitfalls.md) | QA 流程、常见错误、关键 PptxGenJS 陷阱 |
| [pptxgenjs.md](references/pptxgenjs.md) | 完整的 PptxGenJS API 参考 |
---
# 文本提取
python -m markitdown presentation.pptx
---
当没有模板或参考演示文稿时使用。
搜索以了解用户需求 — 主题、受众、目的、语气、内容深度。
使用[调色板参考](references/design-system.md#调色板参考)选择与主题和受众匹配的调色板。使用[字体参考](references/design-system.md#字体参考)选择字体搭配。
使用[样式配方](references/design-system.md#样式配方)选择与演示文稿语气匹配的视觉风格(Sharp、Soft、Rounded 或 Pill)。
将每张幻灯片准确归类为[5 种页面类型](references/slide-types.md)之一。为每张幻灯片规划内容和布局。确保视觉多样性 — 不要在幻灯片之间重复相同布局。
在 slides/ 目录中为每张幻灯片创建一个 JS 文件。每个文件必须导出一个同步函数 createSlide(pres, theme)。遵循幻灯片输出格式以及 [slide-types.md](references/slide-types.md) 中的类型特定指导。在可用时使用子代理并发生成最多 5 张幻灯片。
告知每个子代理:
slides/slide-01.js、slides/slide-02.js 等。slides/imgs/slides/output/"FF0000")创建 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
请参见 [QA 流程](references/pitfalls.md#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: '演示文稿标题'
};
// 必须为同步函数(不能是 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;
}
// 独立预览 - 使用特定于幻灯片的文件名
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。
---
所有幻灯片(封面页除外)必须在右下角包含一个页码徽章。
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 — 图标(可选)