mcpField
P
pptx-generator

pptx-generator

github.com/minimax-ai文档处理13.7k6.1k 次安装28 周前更新
代码仓库

关于 pptx-generator

pptx-generator 是用于读取、编辑和创建 PowerPoint 演示文稿的 Agent 技能,面向处理幻灯片的用户。它结合内容分析、模板 XML 编辑指南、PptxGenJS 创建流程及设计与质量参考。

主要功能

  1. 01使用 markitdown 提取演示文稿文本
  2. 02通过 XML 编辑模板幻灯片
  3. 03使用 PptxGenJS 创建幻灯片
  4. 04幻灯片布局与设计系统参考
  5. 05规定的幻灯片质量检查

适用场景

  1. 01分析现有演示文稿
  2. 02基于模板修改幻灯片
  3. 03从头创建演示文稿
  4. 04检查幻灯片布局和格式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/minimax-ai/skills --skill pptx-generator

安装后在 Claude Code 中输入/pptx-generator确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
design-system.md
editing.md
pitfalls.md
pptxgenjs.md
slide-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.md5 种幻灯片页面类型(封面、目录、章节分隔页、内容页、总结页)+ 其他布局模式
design-system.md配色方案、字体参考、样式配方(锐利/柔和/圆角/胶囊)、排版与间距
editing.md基于模板的编辑工作流、XML 操作、格式规则、常见问题
pitfalls.mdQA 流程、常见错误、关键 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:

  1. 文件命名:slides/slide-01.js、slides/slide-02.js 等。
  2. 图片放在:slides/imgs/
  3. 最终 PPTX 放在:slides/output/
  4. 尺寸:10" x 5.625"(LAYOUT_16x9)
  5. 字体:中文 = Microsoft YaHei,英文 = Arial(或经批准的替代字体)
  6. 颜色:不带 # 的 6 位十六进制值(例如 "FF0000")
  7. 必须使用主题对象约定(参见主题对象约定)
  8. 必须遵循 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 — 图标(可选)

评论

支持 Markdown