Skip to content
Back to skills

Surgepix Generate Presentation

ASecurity

Generate a PowerPoint (PPTX) presentation using the SurgePix API, returning a download URL. Use when the user says "generate ppt", "生成PPT", "做一个演示文稿", "make slides", "create a presentation", or wants slides from a topic or outline. Language: always pass --language matching user (English→en, 中文→zh, 日本語→ja).

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 13, 2026
ai-agentsbashnodeexpressapifrontend

Works with

  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned October 13, 2026

npx -y skills add SurgePix/agent-skills --skill surgepix-generate-presentation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Surgepix Generate Presentation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Surgepix Generate Presentation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/surgepix-surgepix-generate-presentation/badge)](https://www.skillsdirectory.com/skills/surgepix-surgepix-generate-presentation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: surgepix-generate-presentation
description: >-
  Generate a PowerPoint (PPTX) presentation using the SurgePix API, returning a download URL. Use when the user says "generate ppt", "生成PPT", "做一个演示文稿", "make slides", "create a presentation", or wants slides from a topic or outline. Language: always pass --language matching user (English→en, 中文→zh, 日本語→ja).
---

# SurgePix Generate Presentation

Generate a presentation (PPTX) from a topic prompt and/or outline documents, and get a download URL.

## Language consistency

Match the **user's conversation language** for slide content — unless the user explicitly requests another language.

| User writes in | Pass `--language` | Write `--prompt` in |
|----------------|-------------------|---------------------|
| English | `en` | English |
| 中文 | `zh` | Chinese |
| 日本語 | `ja` | Japanese |

- **Always pass `--language`** — do not rely on API auto-detect alone when the user's language is clear.
- **Do not default to Chinese slides** when the user prompts in English.
- Reply to the user in the same language they used in their request.

## When to use

- User says "生成PPT", "做个演示文稿", "generate ppt", "make slides", "create a presentation"
- User provides a topic, key points, or an outline document (local file or URL)

## Prerequisites

- Node.js >= 18
- `SURGEPIX_API_KEY` configured (see Step 0)

---

## What the Skill Does

| Action                    | Description                                                          |
|---------------------------|----------------------------------------------------------------------|
| Generate PPT              | Create a complete .pptx from text prompt, style, and other requirements |
| Upload reference document | Upload a visual reference image or outline file to apply to PPT design  |
| Check task status         | Poll a generation task by `taskId` to check progress                 |
| Download result           | Retrieve the .pptx download URL directly from the task result        |

> The script **always submits the task asynchronously** (the API returns a `taskId` immediately). The `--nowait` flag controls what the script does next:
> - `--nowait false` (default) — the script polls internally until the task is `succeeded`/`failed` and returns the final `download` URL in one call.
> - `--nowait true` — the script returns the `taskId` immediately without waiting; resolve it later with the **surgepix-query-task** skill.

---

## Setup

**Requirement:** Set the `SURGEPIX_API_KEY` environment variable.
Get your API Key at your platform's API management page.

```bash
export SURGEPIX_API_KEY=your-api-key-here
```

This skill uses the script at `<skills-dir>/surgepix-generate-presentation/scripts/generate_presentation.mjs`.

---

## Usage Examples

**First run — prompt only, `--style` as a quick preset:**
```bash
node "<skills-dir>/surgepix-generate-presentation/scripts/generate_presentation.mjs" \
  --prompt "Q3 2026 marketing results review with data highlights, problem analysis, and next quarter suggestions" \
  --n 10 \
  --style corporate \
  --language zh
# Output (JSON):
#   {"ok":true,"taskId":"task_abc123","sessionId":123,"progress":"succeeded","download":"<DOWNLOAD_URL>"}
#   ← Save sessionId for retries
```

**With an outline file — detailed prompt, no `--style` needed:**
```bash
node "<skills-dir>/surgepix-generate-presentation/scripts/generate_presentation.mjs" \
  --prompt "Generate annual strategy PPT based on this outline, dark business style, highlight data charts" \
  --outline ./outline.txt \
  --n 15
```

**Not satisfied — iterate with adjusted prompt and same session ID:**
```bash
node "<skills-dir>/surgepix-generate-presentation/scripts/generate_presentation.mjs" \
  --prompt "Q3 2026 marketing results review with data highlights, problem analysis, and suggestions — change to light and minimal style, blue/white palette" \
  --n 10 \
  --language zh \
  --session-id 123                ← Pass the sessionId from previous output (number type)
# Both results appear in the same session on the platform frontend.
```

**Multiple outline files:**
```bash
node "<skills-dir>/surgepix-generate-presentation/scripts/generate_presentation.mjs" \
  --prompt "年度战略规划摘要" \
  --outline ./part1.docx --outline ./part2.pdf --outline ./appendix.md \
  --n 20
```

---

## Workflow

### Step 0: Check environment (required)

Before running, verify config:

```bash
node "<skills-dir>/surgepix-setup/scripts/check_env.mjs"
```

- **Exit 0** → proceed to Step 1
- **Exit 1** → follow **surgepix-setup** skill to configure `.env`, then retry

### Step 1: Gather inputs

`--n` is required, and at least one of `--prompt` or `--outline` must also be provided.
   - **Prompt** (optional): text describing the presentation topic, purpose, and key points.
   - **Outline** (optional): local file path or document URL. Script uploads automatically.
     Supported formats: `doc`, `docx`, `pdf`, `txt`, `md`, `html`, `pptx` — max **50MB**.
   - **Slide count** (**required**, range `5–30`): use `--n` (integer)
   - **Aspect ratio** (optional, default `16:9`): `16:9` (widescreen) / `4:3` (standard)
   - **Style** (optional): layout and typography preset. Choose from: `modern` / `corporate` / `creative` / `minimal` / `tech`. Use as a quick shorthand for visual direction; omit if `--prompt` already describes the style. See **Preset Styles** section below for detailed descriptions.
   - **Language** (required in practice): match user's conversation language — `zh` / `en` / `ja`. Always pass `--language`; do not omit when user language is clear.
   - **Session ID** (optional): if the user is iterating on a previous result, ask them to provide the `sessionId` (number type) printed by the last run. If this is a fresh request, omit it — the platform auto-creates a new session.

- **Local outline file** → script uploads automatically, then calls API
- **Outline URL** → script uses it directly

### Step 2: Run generate-presentation

```bash
node "<skills-dir>/surgepix-generate-presentation/scripts/generate_presentation.mjs" \
  --n <5-30> [--prompt "<text>"] [--outline "<path-or-url>" ...] \
  [--aspect-ratio <16:9>] [--style <name>] \
  [--language <zh|en|ja>] [--session-id <id>] [--nowait <true|false>]
```

| Flag | Description |
|------|-------------|
| `--n <5-30>` | Number of slides, integer in `5–30` (**required**) |
| `--prompt <text>` | Text describing the presentation topic, purpose, and key points |
| `--outline <path-or-url>` | Outline document (local path auto-uploaded; repeatable for multiple files) |
| `--aspect-ratio <ratio>` | Aspect ratio, default 16:9 (e.g. `16:9`, `4:3`) |
| `--style <name>` | Layout preset: `modern` / `corporate` / `creative` / `minimal` / `tech` |
| `--language <code>` | Output language: `zh` / `en` / `ja` |
| `--session-id <id>` | Session ID; pass the `sessionId` (number type) from a previous run to iterate |
| `--nowait <true\|false>` | Wait mode, default `false` (see below) |

The request is always submitted asynchronously. `--nowait false` (default) makes the script poll internally until the task completes and returns the final `download`; `--nowait true` makes the script return the `taskId` immediately, to be resolved later via the **surgepix-query-task** skill.

### Step 3: Parse output

**Sync success** (`--nowait false`, stdout):

```json
{"ok":true,"taskId":"task_xxx","sessionId":123,"progress":"succeeded","download":"<DOWNLOAD_URL>"}
```

**Async submitted** (`--nowait true`, stdout) — resolve later with the **surgepix-query-task** skill:

```json
{"ok":true,"async":true,"taskId":"task_xxx","sessionId":123,"progress":"processing","download":null,"hint":"<HINT>"}
```

**Failure** (stderr):

```json
{"ok":false,"error":"<ERROR>"}
```

### Step 4: Present result
   - **On success:** Show the download URL. **Always show `sessionId`** (note: it is a number type, e.g. `123`) so the user can pass it in a retry if needed.
   - **On failure:** Report the `error` field. Common causes:
     - Missing required parameter — `--n` not provided, or neither `--prompt` nor `--outline` provided
     - Unsupported outline format — file format not supported
     - Outline file too large — exceeds 50MB
     - `--n` out of range (must be 5–30) or invalid `--language` code
     - Generation failed — internal error; retry or simplify the prompt
   - The result is automatically attached to the session (auto-created or reused). The user can open the platform frontend to see all iterations in one place.
   - If the user is not satisfied and wants to iterate, instruct them to pass `--session-id <sessionId>` (number type) in the next run — both versions appear in the same session history on the frontend.

---

## Parameters

| Parameter                | Required | Default      | Description                                                                  |
|--------------------------|----------|--------------|------------------------------------------------------------------------------|
| `--prompt <text>`        | No       | —            | Text describing the topic, purpose, and key points of the presentation       |
| `--outline <path-or-url>` | No      | —            | Outline document (local path auto-uploaded; repeatable for multiple files)   |
| `--n <5-30>`             | Yes      | —            | Number of slides, integer in range 5–30                                      |
| `--aspect-ratio <ratio>` | No       | `16:9`       | Slide aspect ratio: `16:9` (widescreen, 1920×1080 px) / `4:3` (standard, 1024×768 px) |
| `--style <name>`         | No       | —            | Layout preset: `modern` / `corporate` / `creative` / `minimal` / `tech`. See **Preset Styles** section for details. Use as a quick shorthand; omit when `--prompt` already covers the visual direction |
| `--language <code>`      | No       | auto-detect  | Output language: `zh` / `en` / `ja`                                          |
| `--session-id <id>`      | No       | auto-created | Omit on first run (platform creates a new session and returns it in stdout); provide on subsequent runs to group iterations in the same session. Note: `sessionId` is a number type, not string |
| `--nowait <true\|false>` | No       | `false`      | `false` = synchronous: script polls internally and returns the final `download`. `true` = asynchronous: returns `taskId` immediately; resolve later via the **surgepix-query-task** skill |

---

## Preset Styles

| Style | Parameter | Description |
|-------|-----------|-------------|
| Modern | `modern` | Modern, clean, sleek design with bold typography and vibrant gradients |
| Corporate | `corporate` | Corporate, professional design with a restrained color palette, structured grid layout and clear typography |
| Creative | `creative` | Creative, playful design with expressive shapes, bold color accents and dynamic asymmetric composition |
| Minimal | `minimal` | Minimal design with ample white space, simple typography and a limited color palette |
| Tech | `tech` | Tech, futuristic design with dark backgrounds, neon accents, geometric lines and a sleek high-tech feel |

---

## Rules

- ALWAYS run `check_env.mjs` before first use in a session
- Provide at least `--prompt` or `--outline`
- `--n` is **required** and must be an integer between 5 and 30 — never run the command without it
- The request is always submitted asynchronously; `--nowait` only controls whether the script polls locally (`false`, default) or returns the `taskId` immediately (`true`) — do not treat it as the API `noWait` field
- In async mode (`--nowait true`), guide the user/Agent to resolve the `taskId` via the **surgepix-query-task** skill
- If the user wants to iterate, they pass `--session-id 123` in the next run — both versions appear in the same session on the frontend.
- If `--session-id` is omitted, the platform auto-creates a new session for the run.
- The `.pptx` download URL is valid for **24 hours**; download before it expires.
- Supported outline formats: `doc`, `docx`, `pdf`, `txt`, `md`, `html`, `pptx` — max **50MB**.
- NEVER pass local outline paths to the API — script handles upload internally
- NEVER invent download URLs — only use the `download` value from the output
- NEVER echo auth tokens in logs or output
- **Language:** Always pass `--language` matching the user's conversation language; English prompt → `--language en`, 中文 → `--language zh`.

Files in this skill

  • SKILL.md12.3 KB
  • scripts/env.mjs4.7 KB
  • scripts/file_upload.mjs7.1 KB
  • scripts/generate_presentation.mjs10.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.