返回全部 Skills

pptx-generator

开发工具 官方认证

生成、编辑和读取PowerPoint演示文稿。使用PptxGenJS从头创建(封面、目录、内容、节分隔页、总结幻灯片),通过XML工作流编辑现有PPTX,或使用markitdown提取文本。触发器:PPT、PPTX、PowerPoint、presentation、slide、deck、slides。

69

下载量

AI SkillHub 能力展示图

安装方式

命令行安装

在项目根目录执行以下命令,完成 Skill 安装。

npx bzskills add MiniMax-AI/skills --skill pptx-generator

skill.md

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

PPTX 生成器与编辑器

概览

本技能处理所有 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"
主题键primarysecondaryaccentlightbg
形状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

---

从零创建 — 工作流

当没有模板或参考演示文稿时使用。

第 1 步:研究与需求

搜索以了解用户需求 — 主题、受众、目的、语气、内容深度。

第 2 步:选择调色板与字体

使用[调色板参考](references/design-system.md#调色板参考)选择与主题和受众匹配的调色板。使用[字体参考](references/design-system.md#字体参考)选择字体搭配。

第 3 步:选择设计风格

使用[样式配方](references/design-system.md#样式配方)选择与演示文稿语气匹配的视觉风格(Sharp、Soft、Rounded 或 Pill)。

第 4 步:规划幻灯片大纲

每张幻灯片准确归类为[5 种页面类型](references/slide-types.md)之一。为每张幻灯片规划内容和布局。确保视觉多样性 — 不要在幻灯片之间重复相同布局。

第 5 步:生成幻灯片 JS 文件

slides/ 目录中为每张幻灯片创建一个 JS 文件。每个文件必须导出一个同步函数 createSlide(pres, theme)。遵循幻灯片输出格式以及 [slide-types.md](references/slide-types.md) 中的类型特定指导。在可用时使用子代理并发生成最多 5 张幻灯片。

告知每个子代理:

  1. 文件命名:slides/slide-01.jsslides/slide-02.js 等。
  2. 图片存放于:slides/imgs/
  3. 最终 PPTX 存放于:slides/output/
  4. 尺寸:10" x 5.625" (LAYOUT_16x9)
  5. 字体:中文 = 微软雅黑,英文 = Arial(或经批准的替代方案)
  6. 颜色:不含 # 的 6 位十六进制(例如 "FF0000"
  7. 必须使用主题对象约定(见主题对象约定
  8. 必须遵循 [PptxGenJS API 参考](references/pptxgenjs.md)

第 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 流程](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"

永远不要使用其他键名,如 backgroundtextmuteddarkestlightest

---

页码徽章(必需)

所有幻灯片(封面页除外)必须在右下角包含一个页码徽章。

  • 位置:x: 9.3",y: 5.1"
  • 仅显示当前编号(例如 303),而不是 "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 — 图标(可选)