Agent Skillsninehills/skills › pptx-generator

pptx-generator

GitHub

用于生成、编辑和读取 PowerPoint 演示文稿的 Skill。支持从零创建幻灯片(使用 PptxGenJS)、基于模板编辑现有 PPTX(通过 XML 操作)以及提取文本内容,内置完整的设计系统与排版规范。

pptx-generator/SKILL.md ninehills/skills

Trigger Scenarios

需要创建或编辑 PPT/PPTX 文件 需要从演示文稿中提取文本内容 涉及 PowerPoint 幻灯片设计与排版

Install

npx skills add ninehills/skills --skill pptx-generator -g -y
More Options

Non-standard path

npx skills add https://github.com/ninehills/skills/tree/main/pptx-generator -g -y

Use without installing

npx skills use ninehills/skills@pptx-generator

指定 Agent (Claude Code)

npx skills add ninehills/skills --skill pptx-generator -a claude-code -g -y

安装 repo 全部 skill

npx skills add ninehills/skills --all -g -y

预览 repo 内 skill

npx skills add ninehills/skills --list

SKILL.md

Frontmatter
{
    "name": "pptx-generator",
    "license": "MIT",
    "metadata": {
        "sources": [
            "https:\/\/gitbrent.github.io\/PptxGenJS\/",
            "https:\/\/github.com\/microsoft\/markitdown"
        ],
        "version": "1.0",
        "category": "productivity"
    },
    "description": "Generate, edit, and read PowerPoint presentations. Create from scratch with PptxGenJS (cover, TOC, content, section divider, summary slides), edit existing PPTX via XML workflows, or extract text with markitdown. Triggers: PPT, PPTX, PowerPoint, presentation, slide, deck, slides."
}

PPTX Generator & Editor

Overview

This skill handles all PowerPoint tasks: reading/analyzing existing presentations, editing template-based decks via XML manipulation, and creating presentations from scratch using PptxGenJS. It includes a complete design system (color palettes, fonts, style recipes) and detailed guidance for every slide type.

Quick Reference

Task Approach
Read/analyze content python -m markitdown presentation.pptx
Edit or create from template See Editing Presentations
Create from scratch See Creating from Scratch below
Item Value
Dimensions 10" x 5.625" (LAYOUT_16x9)
Colors 6-char hex without # (e.g., "FF0000")
English font Arial (default), or approved alternatives
Chinese font Microsoft YaHei
Page badge position x: 9.3", y: 5.1"
Theme keys primary, secondary, accent, light, bg
Shapes RECTANGLE, OVAL, LINE, ROUNDED_RECTANGLE
Charts BAR, LINE, PIE, DOUGHNUT, SCATTER, BUBBLE, RADAR

Reference Files

File Contents
slide-types.md 5 slide page types (Cover, TOC, Section Divider, Content, Summary) + additional layout patterns
design-system.md Color palettes, font reference, style recipes (Sharp/Soft/Rounded/Pill), typography & spacing
editing.md Template-based editing workflow, XML manipulation, formatting rules, common pitfalls
pitfalls.md QA process, common mistakes, critical PptxGenJS pitfalls
pptxgenjs.md Complete PptxGenJS API reference

Reading Content

# Text extraction
python -m markitdown presentation.pptx

Creating from Scratch — Workflow

Use when no template or reference presentation is available.

Step 1: Research & Requirements

Search to understand user requirements — topic, audience, purpose, tone, content depth.

Step 2: Select Color Palette & Fonts

Use the Color Palette Reference to select a palette matching the topic and audience. Use the Font Reference to choose a font pairing.

Step 3: Select Design Style

Use the Style Recipes to choose a visual style (Sharp, Soft, Rounded, or Pill) matching the presentation tone.

Step 4: Plan Slide Outline

Classify every slide as exactly one of the 5 page types. Plan the content and layout for each slide. Ensure visual variety — do NOT repeat the same layout across slides.

Step 5: Generate Slide JS Files

Create one JS file per slide in slides/ directory. Each file must export a synchronous createSlide(pres, theme) function. Follow the Slide Output Format and the type-specific guidance in slide-types.md. Generate up to 5 slides concurrently using subagents if available.

Tell each subagent:

  1. File naming: slides/slide-01.js, slides/slide-02.js, etc.
  2. Images go in: slides/imgs/
  3. Final PPTX goes in: slides/output/
  4. Dimensions: 10" x 5.625" (LAYOUT_16x9)
  5. Fonts: Chinese = Microsoft YaHei, English = Arial (or approved alternative)
  6. Colors: 6-char hex without # (e.g. "FF0000")
  7. Must use the theme object contract (see Theme Object Contract)
  8. Must follow the PptxGenJS API reference

Step 6: Compile into Final PPTX

Create slides/compile.js to combine all slide modules:

// 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' });

Run with: cd slides && node compile.js

Step 7: QA (Required)

See QA Process.

Output Structure

slides/
├── slide-01.js          # Slide modules
├── slide-02.js
├── ...
├── imgs/                # Images used in slides
└── output/              # Final artifacts
    └── presentation.pptx

Slide Output Format

Each slide is a complete, runnable JS file:

// 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 Object Contract (MANDATORY)

The compile script passes a theme object with these exact keys:

Key Purpose Example
theme.primary Darkest color, titles "22223b"
theme.secondary Dark accent, body text "4a4e69"
theme.accent Mid-tone accent "9a8c98"
theme.light Light accent "c9ada7"
theme.bg Background color "f2e9e4"

NEVER use other key names like background, text, muted, darkest, lightest.


Page Number Badge (REQUIRED)

All slides except Cover Page MUST include a page number badge in the bottom-right corner.

  • Position: x: 9.3", y: 5.1"
  • Show current number only (e.g. 3 or 03), NOT "3/12"
  • Use palette colors, keep subtle

Circle Badge (Default)

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"
});

Pill Badge

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"
});

Dependencies

  • pip install "markitdown[pptx]" — text extraction
  • npm install -g pptxgenjs — creating from scratch
  • npm install -g react-icons react react-dom sharp — icons (optional)

Version History

  • f3e82a7 Current 2026-07-25 11:15

Same Skill Collection

agent-browser/SKILL.md
alphaear-deepear-lite/SKILL.md
alphaear-logic-visualizer/SKILL.md
alphaear-news/SKILL.md
alphaear-predictor/SKILL.md
alphaear-reporter/SKILL.md
alphaear-search/SKILL.md
alphaear-sentiment/SKILL.md
alphaear-signal-tracker/SKILL.md
alphaear-stock/SKILL.md
ask-matt/SKILL.md
baseline-ui/SKILL.md
better-goal/SKILL.md
bggg-creator-image2ppt/SKILL.md
bggg-creator-image2psd/SKILL.md
bggg-skill-taotie/SKILL.md
brainstorming-cn/SKILL.md
check/SKILL.md
codebase-design/SKILL.md
design/SKILL.md
deslop-en/SKILL.md
deslop-zh/SKILL.md
diagnosing-bugs/SKILL.md
diagram-design/diagram-design/SKILL.md
domain-modeling/SKILL.md
fireworks-tech-graph/SKILL.md
frontend-design/SKILL.md
gpt-image-gen/SKILL.md
gpt-image2-ppt/SKILL.md
grilling/SKILL.md
handoff/SKILL.md
herdr/SKILL.md
hunt/SKILL.md
implement/SKILL.md
improve-codebase-architecture/SKILL.md
jupyter-notebook/SKILL.md
jupytext/SKILL.md
karpathy-guidelines/SKILL.md
learn/SKILL.md
lightpanda/SKILL.md
officecli/SKILL.md
officecli/skills/morph-ppt-3d/SKILL.md
officecli/skills/officecli-docx/SKILL.md
officecli/skills/officecli-pptx/SKILL.md
oracle/SKILL.md
patent-draft-agent/SKILL.md
ppt-tts-script/SKILL.md
prototype/SKILL.md
read/SKILL.md

Metadata

Files
0
Version
f3e82a7
Hash
6eeb3623
Indexed
2026-07-25 11:15

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-20 19:06
浙ICP备14020137号-1 $방문자$