mcpField
P
pptx-generator

pptx-generator

github.com/mxyhi文档处理50897 次安装1 天前更新
代码仓库

关于 pptx-generator

pptx-generator 是用于 PowerPoint 阅读、编辑和制作的技能,面向需要处理演示文稿的用户。它提供模板编辑指引、PptxGenJS 制作流程及完整设计规范。

主要功能

  1. 01提取并分析演示文稿内容
  2. 02通过 XML 编辑模板演示文稿
  3. 03使用 PptxGenJS 从头制作
  4. 04提供幻灯片类型与设计规范
  5. 05包含质量检查和常见问题指引

适用场景

  1. 01将现有演示文稿转换为可分析的文本
  2. 02在现有模板中调整幻灯片内容
  3. 03按主题和页面结构制作新演示文稿

安装

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

$npx skills add https://github.com/mxyhi/ok-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