baoyu-slide-deck
Presentation generator: Converts Markdown to PPT slides, with 16 preset styles, automatically generating outlines and per-page images.
npx skills add JimLiu/baoyu-skills --skill baoyu-slide-deckBefore / After Comparison
1 组Manually creating PPTs is time-consuming and laborious, requiring significant effort for layout and image selection. The conversion efficiency from text content to visual presentation is low, impacting work progress.
Automatically converts Markdown content into beautiful PPT slides, offering multiple preset styles, and intelligently generating outlines and per-page images. Significantly boosts presentation creation efficiency.
Slide Deck Generator
Transform content into professional slide deck images.
Usage
/baoyu-slide-deck path/to/content.md
/baoyu-slide-deck path/to/content.md --style sketch-notes
/baoyu-slide-deck path/to/content.md --audience executives
/baoyu-slide-deck path/to/content.md --lang zh
/baoyu-slide-deck path/to/content.md --slides 10
/baoyu-slide-deck path/to/content.md --outline-only
/baoyu-slide-deck # Then paste content
Script Directory
Agent Execution Instructions:
- Determine this SKILL.md file's directory path as
{baseDir} - Script path =
{baseDir}/scripts/<script-name>.ts - Resolve
${BUN_X}runtime: ifbuninstalled →bun; ifnpxavailable →npx -y bun; else suggest installing bun
| Script | Purpose |
|---|---|
scripts/merge-to-pptx.ts | Merge slides into PowerPoint |
scripts/merge-to-pdf.ts | Merge slides into PDF |
Options
| Option | Description |
|---|---|
--style <name> | Visual style: preset name, custom, or custom style name |
--audience <type> | Target: beginners, intermediate, experts, executives, general |
--lang <code> | Output language (en, zh, ja, etc.) |
--slides <number> | Target slide count (8-25 recommended, max 30) |
--outline-only | Generate outline only, skip image generation |
--prompts-only | Generate outline + prompts, skip images |
--images-only | Generate images from existing prompts directory |
--regenerate <N> | Regenerate specific slide(s): --regenerate 3 or --regenerate 2,5,8 |
Slide Count by Content Length:
| Content | Slides |
|---|---|
| < 1000 words | 5-10 |
| 1000-3000 words | 10-18 |
| 3000-5000 words | 15-25 |
| > 5000 words | 20-30 (consider splitting) |
Style System
Presets
| Preset | Dimensions | Best For |
|---|---|---|
blueprint (Default) | grid + cool + technical + balanced | Architecture, system design |
chalkboard | organic + warm + handwritten + balanced | Education, tutorials |
corporate | clean + professional + geometric + balanced | Investor decks, proposals |
minimal | clean + neutral + geometric + minimal | Executive briefings |
sketch-notes | organic + warm + handwritten + balanced | Educational, tutorials |
watercolor | organic + warm + humanist + minimal | Lifestyle, wellness |
dark-atmospheric | clean + dark + editorial + balanced | Entertainment, gaming |
notion | clean + neutral + geometric + dense | Product demos, SaaS |
bold-editorial | clean + vibrant + editorial + balanced | Product launches, keynotes |
editorial-infographic | clean + cool + editorial + dense | Tech explainers, research |
fantasy-animation | organic + vibrant + handwritten + minimal | Educational storytelling |
intuition-machine | clean + cool + technical + dense | Technical docs, academic |
pixel-art | pixel + vibrant + technical + balanced | Gaming, developer talks |
scientific | clean + cool + technical + dense | Biology, chemistry, medical |
vector-illustration | clean + vibrant + humanist + balanced | Creative, children's content |
vintage | paper + warm + editorial + balanced | Historical, heritage |
Style Dimensions
| Dimension | Options | Description |
|---|---|---|
| Texture | clean, grid, organic, pixel, paper | Visual texture and background treatment |
| Mood | professional, warm, cool, vibrant, dark, neutral | Color temperature and palette style |
| Typography | geometric, humanist, handwritten, editorial, technical | Headline and body text styling |
| Density | minimal, balanced, dense | Information density per slide |
Full specs: references/dimensions/*.md
Auto Style Selection
| Content Signals | Preset |
|---|---|
| tutorial, learn, education, guide, beginner | sketch-notes |
| classroom, teaching, school, chalkboard | chalkboard |
| architecture, system, data, analysis, technical | blueprint |
| creative, children, kids, cute | vector-illustration |
| briefing, academic, research, bilingual | intuition-machine |
| executive, minimal, clean, simple | minimal |
| saas, product, dashboard, metrics | notion |
| investor, quarterly, business, corporate | corporate |
| launch, marketing, keynote, magazine | bold-editorial |
| entertainment, music, gaming, atmospheric | dark-atmospheric |
| explainer, journalism, science communication | editorial-infographic |
| story, fantasy, animation, magical | fantasy-animation |
| gaming, retro, pixel, developer | pixel-art |
| biology, chemistry, medical, scientific | scientific |
| history, heritage, vintage, expedition | vintage |
| lifestyle, wellness, travel, artistic | watercolor |
| Default | blueprint |
Design Philosophy
Decks designed for reading and sharing, not live presentation:
- Each slide self-explanatory without verbal commentary
- Logical flow when scrolling
- All necessary context within each slide
- Optimized for social media sharing
See references/design-guidelines.md for:
- Audience-specific principles
- Visual hierarchy
- Content density guidelines
- Color and typography selection
- Font recommendations
See references/layouts.md for layout options.
File Management
Output Directory
slide-deck/{topic-slug}/
├── source-{slug}.{ext}
├── outline.md
├── prompts/
│ └── 01-slide-cover.md, 02-slide-{slug}.md, ...
├── 01-slide-cover.png, 02-slide-{slug}.png, ...
├── {topic-slug}.pptx
└── {topic-slug}.pdf
Slug: Extract topic (2-4 words, kebab-case). Example: "Introduction to Machine Learning" → intro-machine-learning
Conflict Handling: See Step 1.3 for existing content detection and user options.
Language Handling
Detection Priority:
--langflag (explicit)- EXTEND.md
languagesetting - User's conversation language (input language)
- Source content language
Rule: ALL responses use user's preferred language:
- Questions and confirmations
- Progress reports
- Error messages
- Completion summaries
Technical terms (style names, file paths, code) remain in English.
Workflow
Copy this checklist and check off items as you complete them:
Slide Deck Progress:
- [ ] Step 1: Setup & Analyze
- [ ] 1.1 Load preferences
- [ ] 1.2 Analyze content
- [ ] 1.3 Check existing ⚠️ REQUIRED
- [ ] Step 2: Confirmation ⚠️ REQUIRED (Round 1, optional Round 2)
- [ ] Step 3: Generate outline
- [ ] Step 4: Review outline (conditional)
- [ ] Step 5: Generate prompts
- [ ] Step 6: Review prompts (conditional)
- [ ] Step 7: Generate images
- [ ] Step 8: Merge to PPTX/PDF
- [ ] Step 9: Output summary
Flow
Input → Preferences → Analyze → [Check Existing?] → Confirm (1-2 rounds) → Outline → [Review Outline?] → Prompts → [Review Prompts?] → Images → Merge → Complete
Step 1: Setup & Analyze
1.1 Load Preferences (EXTEND.md)
Check EXTEND.md existence (priority order):
# macOS, Linux, WSL, Git Bash
test -f .baoyu-skills/baoyu-slide-deck/EXTEND.md && echo "project"
test -f "${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-slide-deck/EXTEND.md" && echo "xdg"
test -f "$HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md" && echo "user"
# PowerShell (Windows)
if (Test-Path .baoyu-skills/baoyu-slide-deck/EXTEND.md) { "project" }
$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { "$HOME/.config" }
if (Test-Path "$xdg/baoyu-skills/baoyu-slide-deck/EXTEND.md") { "xdg" }
if (Test-Path "$HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md") { "user" }
┌──────────────────────────────────────────────────┬───────────────────┐ │ Path │ Location │ ├──────────────────────────────────────────────────┼───────────────────┤ │ .baoyu-skills/baoyu-slide-deck/EXTEND.md │ Project directory │ ├──────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md │ User home │ └──────────────────────────────────────────────────┴───────────────────┘
When EXTEND.md Found → Read, parse, output summary to user:
📋 Loaded preferences from [full path]
├─ Style: [preset/custom name]
├─ Audience: [audience or "auto-detect"]
├─ Language: [language or "auto-detect"]
└─ Review: [enabled/disabled]
When EXTEND.md Not Found → First-time setup using AskUserQuestion or proceed with defaults.
EXTEND.md Supports: Preferred style | Custom dimensions | Default audience | Language preference | Review preference
Schema: references/config/preferences-schema.md
1.2 Analyze Content
- Save source content (if pasted, save as
source.md)- Backup rule: If
source.mdexists, rename tosource-backup-YYYYMMDD-HHMMSS.md
- Backup rule: If
- Follow
references/analysis-framework.mdfor content analysis - Analyze content signals for style recommendations
- Detect source language
- Determine recommended slide count
- Generate topic slug from content
1.3 Check Existing Content ⚠️ REQUIRED
MUST execute before proceeding to Step 2.
Use Bash to check if output directory exists:
test -d "slide-deck/{topic-slug}" && echo "exists"
If directory exists, use AskUserQuestion:
header: "Existing"
question: "Existing content found. How to proceed?"
options:
- label: "Regenerate outline"
description: "Keep images, regenerate outline only"
- label: "Regenerate images"
description: "Keep outline, regenerate images only"
- label: "Backup and regenerate"
description: "Backup to {slug}-backup-{timestamp}, then regenerate all"
- label: "Exit"
description: "Cancel, keep existing content unchanged"
Save to analysis.md with:
- Topic, audience, content signals
- Recommended style (based on Auto Style Selection)
- Recommended slide count
- Language detection
Step 2: Confirmation ⚠️ REQUIRED
Two-round confirmation: Round 1 always, Round 2 only if "Custom dimensions" selected.
Language: Use user's input language or saved language preference.
Display summary:
- Content type + topic identified
- Language: [from EXTEND.md or detected]
- Recommended style: [preset] (based on content signals)
- Recommended slides: [N] (based on content length)
Round 1 (Always)
Use AskUserQuestion for all 5 questions:
Question 1: Style
header: "Style"
question: "Which visual style for this deck?"
options:
- label: "{recommended_preset} (Recommended)"
description: "Best match based on content analysis"
- label: "{alternative_preset}"
description: "[alternative style description]"
- label: "Custom dimensions"
description: "Choose texture, mood, typography, density separately"
Question 2: Audience
header: "Audience"
question: "Who is the primary reader?"
options:
- label: "General readers (Recommended)"
description: "Broad appeal, accessible content"
- label: "Beginners/learners"
description: "Educational focus, clear explanations"
- label: "Experts/professionals"
description: "Technical depth, domain knowledge"
- label: "Executives"
description: "High-level insights, minimal detail"
Question 3: Slide Count
header: "Slides"
question: "How many slides?"
options:
- label: "{N} slides (Recommended)"
description: "Based on content length"
- label: "Fewer ({N-3} slides)"
description: "More condensed, less detail"
- label: "More ({N+3} slides)"
description: "More detailed breakdown"
Question 4: Review Outline
header: "Outline"
question: "Review outline before generating prompts?"
options:
- label: "Yes, review outline (Recommended)"
description: "Review slide titles and structure"
- label: "No, skip outline review"
description: "Proceed directly to prompt generation"
Question 5: Review Prompts
header: "Prompts"
question: "Review prompts before generating images?"
options:
- label: "Yes, review prompts (Recommended)"
description: "Review image generation prompts"
- label: "No, skip prompt review"
description: "Proceed directly to image generation"
Round 2 (Only if "Custom dimensions" selected)
Use AskUserQuestion for all 4 dimensions:
Question 1: Texture
header: "Texture"
question: "Which visual texture?"
options:
- label: "clean"
description: "Pure solid color, no texture"
- label: "grid"
description: "Subtle grid overlay, technical"
- label: "organic"
description: "Soft textures, hand-drawn feel"
- label: "pixel"
description: "Chunky pixels, 8-bit aesthetic"
(Note: "paper" available via Other)
Question 2: Mood
header: "Mood"
question: "Which color mood?"
options:
- label: "professional"
description: "Cool-neutral, navy/gold"
- label: "warm"
description: "Earth tones, friendly"
- label: "cool"
description: "Blues, grays, analytical"
- label: "vibrant"
description: "High saturation, bold"
(Note: "dark", "neutral" available via Other)
Question 3: Typography
header: "Typography"
question: "Which typography style?"
options:
- label: "geometric"
description: "Modern sans-serif, clean"
- label: "humanist"
description: "Friendly, readable"
- label: "handwritten"
description: "Marker/brush, organic"
- label: "editorial"
description: "Magazine style, dramatic"
(Note: "technical" available via Other)
Question 4: Density
header: "Density"
question: "Information density?"
options:
- label: "balanced (Recommended)"
description: "2-3 key points per slide"
- label: "minimal"
description: "One focus point, maximum whitespace"
- label: "dense"
description: "Multiple data points, compact"
After Round 2: Store custom dimensions as the style configuration.
After Confirmation:
- Update
analysis.mdwith confirmed preferences - Store
skip_outline_reviewflag from Question 4 - Store
skip_prompt_reviewflag from Question 5 - → Step 3
Step 3: Generate Outline
Create outline using the confirmed style from Step 2.
Style Resolution:
- If preset selected → Read
references/styles/{preset}.md - If custom dimensions → Read dimension files from
references/dimensions/and combine
Generate:
- Follow
references/outline-template.mdfor structure - Build STYLE_INSTRUCTIONS from style or dimensions
- Apply confirmed audience, language, slide count
- Save as
outline.md
After generation:
- If
--outline-only, stop here - If
skip_outline_reviewis true → Skip Step 4, go to Step 5 - If
skip_outline_reviewis false → Continue to Step 4
Step 4: Review Outline (Conditional)
Skip this step if user selected "No, skip outline review" in Step 2.
Purpose: Review outline structure before prompt generation.
Language: Use user's input language or saved language preference.
Display:
- Total slides: N
- Style:
...
User Reviews (0)
Write a Review
No reviews yet
Statistics
User Rating
Rate this Skill