canghe-slide-deck by freestylefly/canghe-skills
npx skills add https://github.com/freestylefly/canghe-skills --skill canghe-slide-deck将内容转换为专业的幻灯片图片。
/canghe-slide-deck path/to/content.md
/canghe-slide-deck path/to/content.md --style sketch-notes
/canghe-slide-deck path/to/content.md --audience executives
/canghe-slide-deck path/to/content.md --lang zh
/canghe-slide-deck path/to/content.md --slides 10
/canghe-slide-deck path/to/content.md --outline-only
/canghe-slide-deck # 然后粘贴内容
代理执行说明 :
SKILL_DIR${SKILL_DIR}/scripts/<script-name>.ts| 脚本 | 用途 |
|---|---|
scripts/merge-to-pptx.ts |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 将幻灯片合并到 PowerPoint |
scripts/merge-to-pdf.ts | 将幻灯片合并到 PDF |
| 选项 | 描述 |
|---|---|
--style <name> | 视觉风格:预设名称、custom 或自定义风格名称 |
--audience <type> | 目标受众:初学者、中级、专家、高管、普通读者 |
--lang <code> | 输出语言(en, zh, ja 等) |
--slides <number> | 目标幻灯片数量(推荐 8-25,最多 30) |
--outline-only | 仅生成大纲,跳过图片生成 |
--prompts-only | 生成大纲 + 提示词,跳过图片 |
--images-only | 从现有提示词目录生成图片 |
--regenerate <N> | 重新生成特定幻灯片:--regenerate 3 或 --regenerate 2,5,8 |
基于内容长度的幻灯片数量 :
| 内容 | 幻灯片数量 |
|---|---|
| < 1000 词 | 5-10 |
| 1000-3000 词 | 10-18 |
| 3000-5000 词 | 15-25 |
5000 词 | 20-30(考虑拆分)
| 预设 | 维度 | 最适合 |
|---|---|---|
blueprint (默认) | 网格 + 冷色调 + 技术感 + 平衡 | 架构、系统设计 |
chalkboard | 有机感 + 暖色调 + 手写体 + 平衡 | 教育、教程 |
corporate | 简洁 + 专业 + 几何感 + 平衡 | 投资者演示、提案 |
minimal | 简洁 + 中性 + 几何感 + 极简 | 高管简报 |
sketch-notes | 有机感 + 暖色调 + 手写体 + 平衡 | 教育、教程 |
watercolor | 有机感 + 暖色调 + 人文感 + 极简 | 生活方式、健康 |
dark-atmospheric | 简洁 + 暗色调 + 编辑感 + 平衡 | 娱乐、游戏 |
notion | 简洁 + 中性 + 几何感 + 密集 | 产品演示、SaaS |
bold-editorial | 简洁 + 鲜艳 + 编辑感 + 平衡 | 产品发布、主题演讲 |
editorial-infographic | 简洁 + 冷色调 + 编辑感 + 密集 | 技术讲解、研究 |
fantasy-animation | 有机感 + 鲜艳 + 手写体 + 极简 | 教育故事讲述 |
intuition-machine | 简洁 + 冷色调 + 技术感 + 密集 | 技术文档、学术 |
pixel-art | 像素风 + 鲜艳 + 技术感 + 平衡 | 游戏、开发者演讲 |
scientific | 简洁 + 冷色调 + 技术感 + 密集 | 生物学、化学、医学 |
vector-illustration | 简洁 + 鲜艳 + 人文感 + 平衡 | 创意、儿童内容 |
vintage | 纸张感 + 暖色调 + 编辑感 + 平衡 | 历史、遗产 |
| 维度 | 选项 | 描述 |
|---|---|---|
| 纹理 | 简洁、网格、有机感、像素风、纸张感 | 视觉纹理和背景处理 |
| 氛围 | 专业、暖色调、冷色调、鲜艳、暗色调、中性 | 色彩温度和调色板风格 |
| 排版 | 几何感、人文感、手写体、编辑感、技术感 | 标题和正文文本样式 |
| 密度 | 极简、平衡、密集 | 每张幻灯片的信息密度 |
完整规格:references/dimensions/*.md
| 内容信号 | 预设 |
|---|---|
| 教程、学习、教育、指南、初学者 | sketch-notes |
| 课堂、教学、学校、黑板 | chalkboard |
| 架构、系统、数据、分析、技术 | blueprint |
| 创意、儿童、孩子、可爱 | vector-illustration |
| 简报、学术、研究、双语 | intuition-machine |
| 高管、极简、简洁、简单 | minimal |
| SaaS、产品、仪表板、指标 | notion |
| 投资者、季度、商业、企业 | corporate |
| 发布、营销、主题演讲、杂志 | bold-editorial |
| 娱乐、音乐、游戏、氛围感 | dark-atmospheric |
| 讲解、新闻、科学传播 | editorial-infographic |
| 故事、奇幻、动画、魔法 | fantasy-animation |
| 游戏、复古、像素、开发者 | pixel-art |
| 生物学、化学、医学、科学 | scientific |
| 历史、遗产、复古、探险 | vintage |
| 生活方式、健康、旅行、艺术 | watercolor |
| 默认 | blueprint |
幻灯片设计用于阅读和分享,而非现场演示:
参见 references/design-guidelines.md 了解:
参见 references/layouts.md 了解布局选项。
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 : 提取主题(2-4 个词,短横线连接)。示例:"Introduction to Machine Learning" → intro-machine-learning
冲突处理 : 参见步骤 1.3 了解现有内容检测和用户选项。
检测优先级 :
--lang 标志(显式指定)language 设置规则 : 所有回复均使用用户偏好的语言:
技术术语(风格名称、文件路径、代码)保持英文。
复制此清单并在完成项目时勾选:
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
Input → Preferences → Analyze → [Check Existing?] → Confirm (1-2 rounds) → Outline → [Review Outline?] → Prompts → [Review Prompts?] → Images → Merge → Complete
1.1 加载偏好设置 (EXTEND.md)
使用 Bash 检查 EXTEND.md 是否存在(优先级顺序):
# 首先检查项目级别
test -f .canghe-skills/canghe-slide-deck/EXTEND.md && echo "project"
# 然后检查用户级别(跨平台:$HOME 在 macOS/Linux/WSL 上有效)
test -f "$HOME/.canghe-skills/canghe-slide-deck/EXTEND.md" && echo "user"
┌──────────────────────────────────────────────────┬───────────────────┐ │ 路径 │ 位置 │ ├──────────────────────────────────────────────────┼───────────────────┤ │ .canghe-skills/canghe-slide-deck/EXTEND.md │ 项目目录 │ ├──────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.canghe-skills/canghe-slide-deck/EXTEND.md │ 用户主目录 │ └──────────────────────────────────────────────────┴───────────────────┘
当找到 EXTEND.md 时 → 读取、解析、向用户输出摘要:
📋 Loaded preferences from [full path]
├─ Style: [preset/custom name]
├─ Audience: [audience or "auto-detect"]
├─ Language: [language or "auto-detect"]
└─ Review: [enabled/disabled]
当未找到 EXTEND.md 时 → 使用 AskUserQuestion 进行首次设置或使用默认值继续。
EXTEND.md 支持 : 首选风格 | 自定义维度 | 默认受众 | 语言偏好 | 审阅偏好
模式:references/config/preferences-schema.md
1.2 分析内容
source.md)
source.md 已存在,重命名为 source-backup-YYYYMMDD-HHMMSS.mdreferences/analysis-framework.md 进行内容分析1.3 检查现有内容 ⚠️ 必需
必须在继续步骤 2 之前执行。
使用 Bash 检查输出目录是否存在:
test -d "slide-deck/{topic-slug}" && echo "exists"
如果目录存在,使用 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"
保存到analysis.md,包含:
两轮确认 : 第 1 轮始终进行,第 2 轮仅在选择了"自定义维度"时进行。
语言 : 使用用户的输入语言或保存的语言偏好。
显示摘要 :
对所有 5 个问题使用 AskUserQuestion:
问题 1:风格
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"
问题 2:受众
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"
问题 3:幻灯片数量
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"
问题 4:审阅大纲
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"
问题 5:审阅提示词
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"
对所有 4 个维度使用 AskUserQuestion:
问题 1:纹理
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"
(注意:"paper" 可通过"其他"选项获得)
问题 2:氛围
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"
(注意:"dark"、"neutral" 可通过"其他"选项获得)
问题 3:排版
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"
(注意:"technical" 可通过"其他"选项获得)
问题 4:密度
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"
第 2 轮之后 : 将自定义维度存储为风格配置。
确认之后 :
analysis.mdskip_outline_review 标志skip_prompt_review 标志使用步骤 2 中确认的风格创建大纲。
风格解析 :
references/styles/{preset}.mdreferences/dimensions/ 读取维度文件并组合生成 :
references/outline-template.md 的结构outline.md生成之后 :
--outline-only,在此停止skip_outline_review 为 true → 跳过步骤 4,转到步骤 5skip_outline_review 为 false → 继续步骤 4如果用户在步骤 2 中选择了"不,跳过大纲审阅",则跳过此步骤。
目的 : 在生成提示词之前审阅大纲结构。
语言 : 使用用户的输入语言或保存的语言偏好。
显示 :
总幻灯片数:N
风格:[预设名称或"自定义:纹理+氛围+排版+密度"]
逐张幻灯片摘要表格:
| # | Title | Type | Layout |
|---|---|---|---|
| 1 | [title] | Cover | title-hero |
| 2 | [title] | Content | [layout] |
| 3 | [title] | Content | [layout] |
| ... | ... | ... | ... |
使用 AskUserQuestion :
header: "Confirm"
question: "Ready to generate prompts?"
options:
- label: "Yes, proceed (Recommended)"
description: "Generate image prompts"
- label: "Edit outline first"
description: "I'll modify outline.md before continuing"
- label: "Regenerate outline"
description: "Create new outline with different approach"
回复之后 :
outline.md,准备就绪时再次询问references/base-prompt.mdLayout:,则包含来自 references/layouts.md 的布局指导prompts/ 目录
prompts/NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.md生成之后 :
--prompts-only,在此停止并输出提示词摘要skip_prompt_review 为 true → 跳过步骤 6,转到步骤 7skip_prompt_review 为 false → 继续步骤 6如果用户在步骤 2 中选择了"不,跳过提示词审阅",则跳过此步骤。
目的 : 在生成图片之前审阅提示词。
语言 : 使用用户的输入语言或保存的语言偏好。
显示 :
总提示词数:N
风格:[预设名称或自定义维度]
提示词列表:
| # | Filename | Slide Title |
|---|---|---|
| 1 | 01-slide-cover.md | [title] |
| 2 | 02-slide-xxx.md | [title] |
| ... | ... | ... |
提示词目录路径:prompts/
使用 AskUserQuestion :
header: "Confirm"
question: "Ready to generate slide images?"
options:
- label: "Yes, proceed (Recommended)"
description: "Generate all slide images"
- label: "Edit prompts first"
description: "I'll modify prompts before continuing"
- label: "Regenerate prompts"
description: "Create new prompts with different approach"
回复之后 :
对于--images-only: 从现有提示词开始,从此步骤开始。
对于--regenerate N: 仅重新生成指定的幻灯片。
标准流程 :
slides-{topic-slug}-{timestamp}NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.pngnpx -y bun ${SKILL_DIR}/scripts/merge-to-pptx.ts <slide-deck-dir>
npx -y bun ${SKILL_DIR}/scripts/merge-to-pdf.ts <slide-deck-dir>
语言 : 使用用户的输入语言或保存的语言偏好。
Slide Deck Complete!
Topic: [topic]
Style: [preset name or custom dimensions]
Location: [directory path]
Slides: N total
- 01-slide-cover.png - Cover
- 02-slide-intro.png - Content
- ...
- {NN}-slide-back-cover.png - Back Cover
Outline: outline.md
PPTX: {topic-slug}.pptx
PDF: {topic-slug}.pdf
| 选项 | 工作流程 |
|---|---|
--outline-only | 仅步骤 1-3(大纲生成后停止) |
--prompts-only | 步骤 1-5(生成提示词,跳过图片) |
--images-only | 跳转到步骤 7(需要现有 prompts/ 目录) |
--regenerate N | 仅重新生成特定幻灯片 |
--prompts-only生成大纲和提示词,不生成图片:
/canghe-slide-deck content.md --prompts-only
输出:outline.md + prompts/*.md 准备就绪,可供审阅/编辑。
--images-only从现有提示词生成图片(从步骤 7 开始):
/canghe-slide-deck slide-deck/topic-slug/ --images-only
前提条件:
prompts/ 目录包含幻灯片提示词文件outline.md 包含风格信息--regenerate重新生成特定幻灯片:
# 单张幻灯片
/canghe-slide-deck slide-deck/topic-slug/ --regenerate 3
# 多张幻灯片
/canghe-slide-deck slide-deck/topic-slug/ --regenerate 2,5,8
流程:
| 操作 | 命令 | 手动步骤 |
|---|---|---|
| 编辑 | --regenerate N | 首先更新提示词文件 → 重新生成图片 → 重新生成 PDF |
| 添加 | 手动 | 创建提示词 → 生成图片 → 重新编号后续文件 → 更新大纲 → 重新生成 PDF |
| 删除 | 手动 | 删除文件 → 重新编号后续文件 → 更新大纲 → 重新生成 PDF |
prompts/NN-slide-{slug}.md/canghe-slide-deck <dir> --regenerate N重要 : 更新幻灯片时,务必首先更新提示词文件 (prompts/NN-slide-{slug}.md)。这确保更改被记录且可重现。
prompts/NN-slide-{new-slug}.mdoutline.mdNN-slide-{slug}.png 和 prompts/NN-slide-{slug}.mdoutline.md格式:NN-slide-[slug].png
NN: 两位数字序列(01, 02, ...)slug: 基于内容的短横线连接(2-5 个词,唯一)重新编号规则 : 仅 NN 改变,slug 保持不变。
完整细节参见 references/modification-guide.md。
| 文件 | 内容 |
|---|---|
references/analysis-framework.md | 演示文稿内容分析 |
references/outline-template.md | 大纲结构和格式 |
references/modification-guide.md | 编辑、添加、删除幻灯片的工作流程 |
references/content-rules.md | 内容和风格指南 |
references/design-guidelines.md | 受众、排版、色彩、视觉元素 |
references/layouts.md | 布局选项和选择技巧 |
references/base-prompt.md | 图片生成的基础提示词 |
references/dimensions/*.md | 维度规格(纹理、氛围、排版、密度) |
references/dimensions/presets.md | 预设 → 维度映射 |
references/styles/<style>.md | 完整风格规格(旧版) |
references/config/preferences-schema.md | EXTEND.md 结构 |
通过 EXTEND.md 进行自定义配置。参见步骤 1.1 了解路径和支持的选项。
每周安装次数
103
仓库
GitHub 星标数
182
首次出现
2026年2月24日
安全审计
安装于
github-copilot102
gemini-cli102
codex102
kimi-cli102
cursor102
opencode102
Transform content into professional slide deck images.
/canghe-slide-deck path/to/content.md
/canghe-slide-deck path/to/content.md --style sketch-notes
/canghe-slide-deck path/to/content.md --audience executives
/canghe-slide-deck path/to/content.md --lang zh
/canghe-slide-deck path/to/content.md --slides 10
/canghe-slide-deck path/to/content.md --outline-only
/canghe-slide-deck # Then paste content
Agent Execution Instructions :
SKILL_DIR${SKILL_DIR}/scripts/<script-name>.ts| Script | Purpose |
|---|---|
scripts/merge-to-pptx.ts | Merge slides into PowerPoint |
scripts/merge-to-pdf.ts | Merge slides into PDF |
| 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 |
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)
| 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 |
| 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
| 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 |
Decks designed for reading and sharing , not live presentation:
See references/design-guidelines.md for:
See references/layouts.md for layout options.
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.
Detection Priority :
--lang flag (explicit)language settingRule : ALL responses use user's preferred language:
Technical terms (style names, file paths, code) remain in English.
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
Input → Preferences → Analyze → [Check Existing?] → Confirm (1-2 rounds) → Outline → [Review Outline?] → Prompts → [Review Prompts?] → Images → Merge → Complete
1.1 Load Preferences (EXTEND.md)
Use Bash to check EXTEND.md existence (priority order):
# Check project-level first
test -f .canghe-skills/canghe-slide-deck/EXTEND.md && echo "project"
# Then user-level (cross-platform: $HOME works on macOS/Linux/WSL)
test -f "$HOME/.canghe-skills/canghe-slide-deck/EXTEND.md" && echo "user"
┌──────────────────────────────────────────────────┬───────────────────┐ │ Path │ Location │ ├──────────────────────────────────────────────────┼───────────────────┤ │ .canghe-skills/canghe-slide-deck/EXTEND.md │ Project directory │ ├──────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.canghe-skills/canghe-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
source.md)
source.md exists, rename to source-backup-YYYYMMDD-HHMMSS.mdreferences/analysis-framework.md for content analysis1.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 toanalysis.md with:
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 :
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"
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 :
analysis.md with confirmed preferencesskip_outline_review flag from Question 4skip_prompt_review flag from Question 5Create outline using the confirmed style from Step 2.
Style Resolution :
references/styles/{preset}.mdreferences/dimensions/ and combineGenerate :
references/outline-template.md for structureoutline.mdAfter generation :
--outline-only, stop hereskip_outline_review is true → Skip Step 4, go to Step 5skip_outline_review is false → Continue to Step 4Skip 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: [preset name or "custom: texture+mood+typography+density"]
Slide-by-slide summary table:
| # | Title | Type | Layout |
|---|---|---|---|
| 1 | [title] | Cover | title-hero |
| 2 | [title] | Content | [layout] |
| 3 | [title] | Content | [layout] |
| ... | ... | ... | ... |
Use AskUserQuestion :
header: "Confirm"
question: "Ready to generate prompts?"
options:
- label: "Yes, proceed (Recommended)"
description: "Generate image prompts"
- label: "Edit outline first"
description: "I'll modify outline.md before continuing"
- label: "Regenerate outline"
description: "Create new outline with different approach"
After response :
outline.md, ask again when readyreferences/base-prompt.mdLayout: specified, include layout guidance from references/layouts.mdprompts/ directory
prompts/NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.mdAfter generation :
--prompts-only, stop here and output prompt summaryskip_prompt_review is true → Skip Step 6, go to Step 7skip_prompt_review is false → Continue to Step 6Skip this step if user selected "No, skip prompt review" in Step 2.
Purpose : Review prompts before image generation.
Language : Use user's input language or saved language preference.
Display :
Total prompts: N
Style: [preset name or custom dimensions]
Prompt list:
| # | Filename | Slide Title |
|---|---|---|
| 1 | 01-slide-cover.md | [title] |
| 2 | 02-slide-xxx.md | [title] |
| ... | ... | ... |
Path to prompts directory: prompts/
Use AskUserQuestion :
header: "Confirm"
question: "Ready to generate slide images?"
options:
- label: "Yes, proceed (Recommended)"
description: "Generate all slide images"
- label: "Edit prompts first"
description: "I'll modify prompts before continuing"
- label: "Regenerate prompts"
description: "Create new prompts with different approach"
After response :
For--images-only: Start here with existing prompts.
For--regenerate N: Only regenerate specified slide(s).
Standard flow :
slides-{topic-slug}-{timestamp}NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.pngnpx -y bun ${SKILL_DIR}/scripts/merge-to-pptx.ts <slide-deck-dir>
npx -y bun ${SKILL_DIR}/scripts/merge-to-pdf.ts <slide-deck-dir>
Language : Use user's input language or saved language preference.
Slide Deck Complete!
Topic: [topic]
Style: [preset name or custom dimensions]
Location: [directory path]
Slides: N total
- 01-slide-cover.png - Cover
- 02-slide-intro.png - Content
- ...
- {NN}-slide-back-cover.png - Back Cover
Outline: outline.md
PPTX: {topic-slug}.pptx
PDF: {topic-slug}.pdf
| Option | Workflow |
|---|---|
--outline-only | Steps 1-3 only (stop after outline) |
--prompts-only | Steps 1-5 (generate prompts, skip images) |
--images-only | Skip to Step 7 (requires existing prompts/) |
--regenerate N | Regenerate specific slide(s) only |
--prompts-onlyGenerate outline and prompts without images:
/canghe-slide-deck content.md --prompts-only
Output: outline.md + prompts/*.md ready for review/editing.
--images-onlyGenerate images from existing prompts (starts at Step 7):
/canghe-slide-deck slide-deck/topic-slug/ --images-only
Prerequisites:
prompts/ directory with slide prompt filesoutline.md with style information--regenerateRegenerate specific slides:
# Single slide
/canghe-slide-deck slide-deck/topic-slug/ --regenerate 3
# Multiple slides
/canghe-slide-deck slide-deck/topic-slug/ --regenerate 2,5,8
Flow:
| Action | Command | Manual Steps |
|---|---|---|
| Edit | --regenerate N | Update prompt file FIRST → Regenerate image → Regenerate PDF |
| Add | Manual | Create prompt → Generate image → Renumber subsequent → Update outline → Regenerate PDF |
| Delete | Manual | Remove files → Renumber subsequent → Update outline → Regenerate PDF |
prompts/NN-slide-{slug}.md/canghe-slide-deck <dir> --regenerate NIMPORTANT : When updating slides, ALWAYS update the prompt file (prompts/NN-slide-{slug}.md) FIRST before regenerating. This ensures changes are documented and reproducible.
prompts/NN-slide-{new-slug}.mdoutline.mdNN-slide-{slug}.png and prompts/NN-slide-{slug}.mdoutline.mdFormat: NN-slide-[slug].png
NN: Two-digit sequence (01, 02, ...)slug: Kebab-case from content (2-5 words, unique)Renumbering Rule : Only NN changes, slugs remain unchanged.
See references/modification-guide.md for complete details.
| File | Content |
|---|---|
references/analysis-framework.md | Content analysis for presentations |
references/outline-template.md | Outline structure and format |
references/modification-guide.md | Edit, add, delete slide workflows |
references/content-rules.md | Content and style guidelines |
references/design-guidelines.md | Audience, typography, colors, visual elements |
references/layouts.md |
Custom configurations via EXTEND.md. See Step 1.1 for paths and supported options.
Weekly Installs
103
Repository
GitHub Stars
182
First Seen
Feb 24, 2026
Security Audits
Gen Agent Trust HubPassSocketWarnSnykPass
Installed on
github-copilot102
gemini-cli102
codex102
kimi-cli102
cursor102
opencode102
AI Elements:基于shadcn/ui的AI原生应用组件库,快速构建对话界面
69,600 周安装
--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 |
| 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 |
| 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 |
| Layout options and selection tips |
references/base-prompt.md | Base prompt for image generation |
references/dimensions/*.md | Dimension specifications (texture, mood, typography, density) |
references/dimensions/presets.md | Preset → dimension mapping |
references/styles/<style>.md | Full style specifications (legacy) |
references/config/preferences-schema.md | EXTEND.md structure |