Speech → PPT
Inputs to collect
Collect before designing the deck. Ask only what is missing — do not re-ask what the user already gave.
| Input | Required? | Default if missing |
|---|---|---|
| Speech transcript / speaker notes | required | — |
Page count N (hard constraint) |
required | 10 |
| Style preset (one of 7) | required | 商务 |
| Deck title | optional | infer from the speech opening |
| Audience | optional | 通用 |
| Language | optional | follow the transcript's language |
| Output filename | optional | speech-deck-{slug}.pptx |
Style presets (full visual mapping in references/style-presets.md):
商务 · 极简 · 学术 · 演讲型 · 创意 · 科技 · 金融
If the user says "看着办" / "随便" / doesn't pick, ask once with a one-line menu — do not silently default to 商务.
Procedure
Step 1 — Analyze the speech
Read the transcript and extract:
- Core thesis: one sentence (the single thing the audience should remember)
- Major sections: 3-5 logical blocks (open / body / close)
- Key points per section: 2-4 supporting ideas, each ≤ 18 words to stay slide-friendly
- Strong lines: any quote, stat, or hook worth its own slide
- Natural transitions: phrases like "接下来", "其次", "最后" that mark section boundaries
If the transcript has no clear structure (e.g. casual Q&A, < 300 words), say so before designing — the user may want to re-paste a more structured version.
Step 2 — Design the page allocation (HARD N pages)
The total slide count must equal N. No over-generation, no under-generation.
Default allocation when N ≥ 5:
| Page | Type | Purpose |
|---|---|---|
| 1 | Cover | Title + subtitle + (optional) presenter + date |
| 2 | TOC | 3-5 section names, derived from the major sections |
| 3 ... N-1 | Content | One core idea per slide, with at most 1 strong line as a quote/highlight slide |
| N | Closing | Key takeaways (3-5) or thank-you + contact |
Rules:
- N < 3: stop and ask the user to pick a larger count. Two-page decks (cover + close) skip too much.
- N = 3-4: merge TOC into the cover, drop section dividers.
- N ≥ 15: insert section dividers (one per major section) between the TOC and closing pages. If dividers eat the budget, compress content slides; never drop the cover, TOC, or closing.
- Long speech, small N: compress by merging adjacent points on one content slide, or promoting a key line into the cover. Never invent content that isn't in the transcript. If essential material is at risk of being lost, surface this to the user before writing the outline (see Failure handling).
- Short speech, large N: insert
section dividerpages ordata calloutslides that visualize the speech's own numbers/quotes (e.g. "3 key stats from the talk"). Do not pad with unrelated stock content.
Step 3 — Write the outline (FIRST DELIVERABLE)
Output the outline as a numbered list, one entry per slide. Each entry has:
[Slide N] <Type> <Title>
- <Bullet 1>
- <Bullet 2>
- <optional: visual hint, e.g. "big stat: 73%" / "two-column compare">
Constraints per slide:
- Title: ≤ 12 words
- Bullets: 2-4 per slide, each ≤ 18 words
- One idea per slide — if a slide needs 5+ bullets, split it
- No slide is bullet-only — every content slide must plan at least one non-text element (icon, stat callout, two-column layout, comparison, timeline)
- At least one "highlight" slide if the speech contains a strong line, statistic, or quote worth featuring
Stop here and wait for user approval. Do not start generating the PPTX. The user may say "OK" / "go" / "改一下第 5 页" / "风格换成极简" — handle edits to the outline first, re-render the outline if anything changed, then proceed.
Step 4 — Render the PPT (after approval)
Once the user approves the outline:
- Load the
pptxskill (/workspace/.skills/pptx/SKILL.md) — it owns all PptxGenJS / layout / QA mechanics. Do not duplicate those rules here. - Pick the theme + style recipe for the chosen preset from
references/style-presets.md. - For each slide in the approved outline:
- Assign it one of the 5 page types fromreferences/slide-types.md(Cover / TOC / Section Divider / Content / Closing).
- Writeslides/slide-XX.jsper thepptxskill's From-Scratch Workflow. - Compile → QA → deliver. The
pptxskill's QA gate is blocking; do not hand the file to the user until QA passes. - Send the file via
<deliver-assets>(do not just print the path).
Output contract
Step 3 deliverable (outline): Markdown numbered list, exactly N entries. Render inline in the chat. No file yet.
Step 4 deliverable (PPTX): One .pptx file at /workspace/<descriptive-name>.pptx, wrapped in <deliver-assets>. The file:
- has exactly N slides (no more, no less)
- uses the chosen preset's palette + style recipe consistently
- passes the
pptxskill's QA gate - has a descriptive filename (never
presentation.pptx)
Failure handling
| Situation | What to do |
|---|---|
| User picks N < 3 | Stop. Recommend N ≥ 5 and ask them to re-pick. |
| Transcript is too dense to fit in N | Tell the user which key points would be cut, ask whether to (a) increase N, (b) drop those points, or (c) keep all and let some slides be dense. Do not silently drop material. |
| Transcript is too thin for N | Insert section dividers or stat-callout slides. If even that doesn't reach N, ask the user for more material or to lower N. |
| Transcript has no clear structure | Ask the user to either provide an outline or confirm "use my paragraph breaks as sections". |
| User edits the outline | Re-render the affected entries, get re-approval, then render. Do not "fix forward" silently. |
| User changes style after Step 4 starts | Restart from Step 3 with the new style — the page type mix may need to change. |
pptx QA fails (e.g. canvas overflow, missing page numbers) |
Fix and re-verify. Do not deliver a known-broken file. |
Examples
Example 1 — standard case
User: "把下面这段 1200 字的演讲稿做成 10 页 PPT,金融风格,标题叫《2026 宏观展望》。[paste transcript]"
Step 3 outline:
[Slide 1] Cover 2026 宏观展望
- 主讲:[presenter] · 日期:2026-07-24
[Slide 2] TOC
- 01 全球增速 · 02 通胀路径 · 03 政策走向 · 04 资产配置
[Slide 3] Section Divider 01 全球增速
[Slide 4] Content (stat callout) 发达经济体放缓至 1.8%
- 新兴市场仍是 4.2% 的主要拉动
- visual: 大数字 + 副标
[Slide 5] Content (comparison) 2025 vs 2026 增速对比
- 视觉:两列对比卡
[Slide 6] Section Divider 02 通胀路径
[Slide 7] Content (data viz) 核心 CPI 回落节奏
- visual: 折线示意 + 三条 takeaway
[Slide 8] Content (text + icon) 政策走向与流动性
- 三条要点 + 图标
[Slide 9] Content (timeline) 资产配置建议
- 4 步流程
[Slide 10] Closing 关键结论
- 3 条 takeaways
User: "OK,开干。"
→ Render with finance palette + Sharp style, deliver <deliver-assets> file.
Example 2 — outline too thin
User: "这是我的 5 分钟开场致辞草稿,帮我做 8 页极简风格的 PPT。"
Detection: transcript ≈ 200 words, only one section.
Response: 先告诉你一个发现 — 草稿内容撑不满 8 页,硬塞会显得很空。我建议两种走法,你选一个:
- (a) 降到 4-5 页,封面+3-4 张内容+收尾,节奏紧凑
- (b) 保留 8 页,中间插 2-3 张"金句卡"(把你的开场金句放大单独成页),更符合极简风格的留白感
不要直接开干,先对齐再写。
References
references/style-presets.md— 7 套风格的 palette + style recipe + 适用场景pptxskill —LAYOUT_16x9边界、PptxGenJS 模式、QA 流程(必读)pptxskill →references/slide-types.md— 5 种 page type 的版式选择pptxskill →references/design-system.md— 调色板与字体规则