name: baoyu-slide-deck description: 从内容生成专业幻灯片图像。创建带有样式指令的大纲,然后生成单个幻灯片图像。当用户要求"创建幻灯片"、“制作演示文稿”、“生成幻灯片”、"幻灯片"或"PPT"时使用。
幻灯片生成器
将内容转换为专业幻灯片图像。
使用方式
/baoyu-slide-deck 路径/到/content.md
/baoyu-slide-deck 路径/到/content.md --style sketch-notes
/baoyu-slide-deck 路径/到/content.md --audience executives
/baoyu-slide-deck 路径/到/content.md --lang zh
/baoyu-slide-deck 路径/到/content.md --slides 10
/baoyu-slide-deck 路径/到/content.md --outline-only
/baoyu-slide-deck # 然后粘贴内容
脚本目录
代理执行指令:
- 将此 SKILL.md 文件的目录路径确定为
SKILL_DIR - 脚本路径 =
${SKILL_DIR}/scripts/<script-name>.ts
| 脚本 | 用途 |
|---|---|
scripts/merge-to-pptx.ts |
将幻灯片合并为 PowerPoint |
scripts/merge-to-pdf.ts |
将幻灯片合并为 PDF |
选项
| 选项 | 描述 |
|---|---|
--style <名称> |
视觉样式:预设名称、custom 或自定义样式名称 |
--audience <类型> |
目标受众:初学者、中级、专家、高管、普通读者 |
--lang <代码> |
输出语言(en、zh、ja 等) |
--slides <数字> |
目标幻灯片数量(推荐 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/{主题-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 个单词,kebab-case)。示例:“Introduction to Machine Learning” → intro-machine-learning
冲突处理: 参见步骤 1.3 用于现有内容检测和用户选项。
语言处理
检测优先级:
--lang标志(显式)- EXTEND.md
language设置 - 用户对话语言(输入语言)
- 源内容语言
规则: 所有响应使用用户首选语言:
- 问题和确认
- 进度报告
- 错误消息
- 完成摘要
技术术语(样式名称、文件路径、代码)保持英文。
工作流程
复制此检查清单,并在完成项目时勾选:
幻灯片生成进度:
- [ ] 步骤 1:设置与分析
- [ ] 1.1 加载偏好设置
- [ ] 1.2 分析内容
- [ ] 1.3 检查现有 ⚠️ 必需
- [ ] 步骤 2:确认 ⚠️ 必需(第 1 轮,可选第 2 轮)
- [ ] 步骤 3:生成大纲
- [ ] 步骤 4:审核大纲(条件性)
- [ ] 步骤 5:生成提示
- [ ] 步骤 6:审核提示(条件性)
- [ ] 步骤 7:生成图像
- [ ] 步骤 8:合并为 PPTX/PDF
- [ ] 步骤 9:输出摘要
流程
输入 → 偏好设置 → 分析 → [检查现有?] → 确认(1-2 轮) → 大纲 → [审核大纲?] → 提示 → [审核提示?] → 图像 → 合并 → 完成
步骤 1:设置与分析
1.1 加载偏好设置(EXTEND.md)
使用 Bash 检查 EXTEND.md 存在性(优先级顺序):
# 先检查项目级别
test -f .baoyu-skills/baoyu-slide-deck/EXTEND.md && echo "project"
# 然后用户级别(跨平台:$HOME 在 macOS/Linux/WSL 上工作)
test -f "$HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md" && echo "user"
┌──────────────────────────────────────────────────┬───────────────────┐ │ 路径 │ 位置 │ ├──────────────────────────────────────────────────┼───────────────────┤ │ .baoyu-skills/baoyu-slide-deck/EXTEND.md │ 项目目录 │ ├──────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md │ 用户主目录 │ └──────────────────────────────────────────────────┴───────────────────┘
当找到 EXTEND.md → 读取、解析、输出摘要给用户:
📋 从 [完整路径] 加载偏好设置
├─ 样式:[预设/自定义名称]
├─ 受众:[受众或"自动检测"]
├─ 语言:[语言或"自动检测"]
└─ 审核:[启用/禁用]
当未找到 EXTEND.md → 使用 AskUserQuestion 进行首次设置或使用默认值进行。
EXTEND.md 支持: 首选样式 | 自定义维度 | 默认受众 | 语言偏好 | 审核偏好
模式:references/config/preferences-schema.md
1.2 分析内容
- 保存源内容(如果粘贴,保存为
source.md)- 备份规则: 如果
source.md存在,重命名为source-backup-YYYYMMDD-HHMMSS.md
- 备份规则: 如果
- 遵循
references/analysis-framework.md进行内容分析 - 分析内容信号以推荐样式
- 检测源语言
- 确定推荐的幻灯片数量
- 从内容生成主题 slug
1.3 检查现有内容 ⚠️ 必需
必须在继续步骤 2 前执行。
使用 Bash 检查输出目录是否存在:
test -d "slide-deck/{topic-slug}" && echo "exists"
如果目录存在,使用 AskUserQuestion:
header: "现有"
question: "发现现有内容。如何继续?"
options:
- label: "重新生成大纲"
description: "保留图像,仅重新生成大纲"
- label: "重新生成图像"
description: "保留大纲,仅重新生成图像"
- label: "备份并重新生成"
description: "备份到 {slug}-backup-{timestamp},然后重新生成全部"
- label: "退出"
description: "取消,保持现有内容不变"
保存到 analysis.md 包含:
- 主题、受众、内容信号
- 推荐样式(基于自动样式选择)
- 推荐幻灯片数量
- 语言检测
步骤 2:确认 ⚠️ 必需
两轮确认: 第 1 轮始终进行,第 2 轮仅在选择了"自定义维度"时进行。
语言: 使用用户输入语言或保存的语言偏好。
显示摘要:
- 内容类型 + 识别的主题
- 语言:[来自 EXTEND.md 或检测]
- 推荐样式: [预设](基于内容信号)
- 推荐幻灯片: [N](基于内容长度)
第 1 轮(始终)
使用 AskUserQuestion 处理所有 5 个问题:
问题 1:样式
header: "样式"
question: "此幻灯片使用哪种视觉样式?"
options:
- label: "{recommended_preset}(推荐)"
description: "基于内容分析的最佳匹配"
- label: "{alternative_preset}"
description: "[备选样式描述]"
- label: "自定义维度"
description: "分别选择纹理、氛围、字体排版、密度"
问题 2:受众
header: "受众"
question: "主要读者是谁?"
options:
- label: "普通读者(推荐)"
description: "广泛吸引力,可访问内容"
- label: "初学者/学习者"
description: "教育焦点,清晰解释"
- label: "专家/专业人士"
description: "技术深度,领域知识"
- label: "高管"
description: "高级洞察,最小细节"
问题 3:幻灯片数量
header: "幻灯片"
question: "需要多少张幻灯片?"
options:
- label: "{N} 张幻灯片(推荐)"
description: "基于内容长度"
- label: "较少({N-3} 张幻灯片)"
description: "更紧凑,细节较少"
- label: "更多({N+3} 张幻灯片)"
description: "更详细的分解"
问题 4:审核大纲
header: "大纲"
question: "在生成提示前审核大纲?"
options:
- label: "是,审核大纲(推荐)"
description: "审核幻灯片标题和结构"
- label: "否,跳过大纲审核"
description: "直接进行提示生成"
问题 5:审核提示
header: "提示"
question: "在生成图像前审核提示?"
options:
- label: "是,审核提示(推荐)"
description: "审核图像生成提示"
- label: "否,跳过提示审核"
description: "直接进行图像生成"
第 2 轮(仅在选择了"自定义维度"时)
使用 AskUserQuestion 处理所有 4 个维度:
问题 1:纹理
header: "纹理"
question: "哪种视觉纹理?"
options:
- label: "干净"
description: "纯色,无纹理"
- label: "网格"
description: "微网格覆盖,技术性"
- label: "有机"
description: "柔和纹理,手绘感"
- label: "像素"
description: "块状像素,8 位美学"
(注意:“纸张” 可通过其他方式使用)
问题 2:氛围
header: "氛围"
question: "哪种色彩氛围?"
options:
- label: "专业"
description: "冷中性,海军蓝/金色"
- label: "暖色调"
description: "大地色调,友好"
- label: "冷色调"
description: "蓝色、灰色,分析性"
- label: "鲜艳"
description: "高饱和度,大胆"
(注意:“暗色调”、“中性” 可通过其他方式使用)
问题 3:字体排版
header: "字体排版"
question: "哪种字体排版样式?"
options:
- label: "几何"
description: "现代无衬线,干净"
- label: "人文"
description: "友好,可读性强"
- label: "手写"
description: "马克笔/刷子,有机"
- label: "编辑"
description: "杂志风格,戏剧性"
(注意:“技术性” 可通过其他方式使用)
问题 4:密度
header: "密度"
question: "信息密度?"
options:
- label: "平衡(推荐)"
description: "每张幻灯片 2-3 个关键点"
- label: "极简"
description: "一个焦点点,最大空白空间"
- label: "密集"
description: "多个数据点,紧凑"
第 2 轮后: 存储自定义维度作为样式配置。
确认后:
- 更新
analysis.md以包含确认的偏好设置 - 存储来自问题 4 的
skip_outline_review标志 - 存储来自问题 5 的
skip_prompt_review标志 - → 步骤 3
步骤 3:生成大纲
使用步骤 2 确认的样式创建大纲。
样式解析:
- 如果选择了预设 → 读取
references/styles/{preset}.md - 如果选择了自定义维度 → 从
references/dimensions/读取维度文件并组合
生成:
- 遵循
references/outline-template.md以获取结构 - 从样式或维度构建 STYLE_INSTRUCTIONS
- 应用确认的受众、语言、幻灯片数量
- 保存为
outline.md
生成后:
- 如果
--outline-only,在此停止 - 如果
skip_outline_review为真 → 跳过步骤 4,转到步骤 5 - 如果
skip_outline_review为假 → 继续到步骤 4
步骤 4:审核大纲(条件性)
跳过此步骤 如果用户在步骤 2 中选择了"否,跳过大纲审核"。
目的: 在生成提示前审核大纲结构。
语言: 使用用户输入语言或保存的语言偏好。
显示:
- 总幻灯片:N
- 样式:[预设名称或"自定义:纹理+氛围+字体排版+密度"]
- 按幻灯片摘要表:
| # | 标题 | 类型 | 布局 |
|---|-------|------|--------|
| 1 | [标题] | 封面 | title-hero |
| 2 | [标题] | 内容 | [布局] |
| 3 | [标题] | 内容 | [布局] |
| ... | ... | ... | ... |
使用 AskUserQuestion:
header: "确认"
question: "准备生成提示?"
options:
- label: "是,继续(推荐)"
description: "生成图像提示"
- label: "先编辑大纲"
description: "我会修改 outline.md 后再继续"
- label: "重新生成大纲"
description: "以不同方法创建新大纲"
响应后:
- 如果"先编辑大纲" → 通知用户编辑
outline.md,准备好时再次询问 - 如果"重新生成大纲" → 回到步骤 3
- 如果"是,继续" → 继续到步骤 5
步骤 5:生成提示
- 读取
references/base-prompt.md - 对于大纲中的每张幻灯片:
- 从大纲(而非样式文件)提取 STYLE_INSTRUCTIONS
- 添加幻灯片特定内容
- 如果指定了
Layout:,则包括来自references/layouts.md的布局指导
- 保存到
prompts/目录- 备份规则: 如果提示文件存在,重命名为
prompts/NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.md
- 备份规则: 如果提示文件存在,重命名为
生成后:
- 如果
--prompts-only,在此停止并输出提示摘要 - 如果
skip_prompt_review为真 → 跳过步骤 6,转到步骤 7 - 如果
skip_prompt_review为假 → 继续到步骤 6
步骤 6:审核提示(条件性)
跳过此步骤 如果用户在步骤 2 中选择了"否,跳过提示审核"。
目的: 在生成图像前审核提示。
语言: 使用用户输入语言或保存的语言偏好。
显示:
- 总提示:N
- 样式:[预设名称或自定义维度]
- 提示列表:
| # | 文件名 | 幻灯片标题 |
|---|----------|-------------|
| 1 | 01-slide-cover.md | [标题] |
| 2 | 02-slide-xxx.md | [标题] |
| ... | ... | ... |
- 提示目录路径:
prompts/
使用 AskUserQuestion:
header: "确认"
question: "准备生成幻灯片图像?"
options:
- label: "是,继续(推荐)"
description: "生成所有幻灯片图像"
- label: "先编辑提示"
description: "我会修改提示后再继续"
- label: "重新生成提示"
description: "以不同方法创建新提示"
响应后:
- 如果"先编辑提示" → 通知用户编辑提示,准备好时再次询问
- 如果"重新生成提示" → 回到步骤 5
- 如果"是,继续" → 继续到步骤 7
步骤 7:生成图像
对于 --images-only: 从此处开始使用现有提示。
对于 --regenerate N: 仅重新生成指定幻灯片。
标准流程:
- 选择可用的图像生成技能
- 生成会话 ID:
slides-{topic-slug}-{timestamp} - 对于每张幻灯片:
- 备份规则: 如果图像文件存在,重命名为
NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.png - 使用相同会话 ID 顺序生成图像
- 备份规则: 如果图像文件存在,重命名为
- 报告进度:“已生成 X/N”(使用用户语言)
- 在报告错误前自动重试一次失败
步骤 8:合并为 PPTX 和 PDF
npx -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>
步骤 9:输出摘要
语言: 使用用户输入语言或保存的语言偏好。
幻灯片生成完成!
主题: [主题]
样式: [预设名称或自定义维度]
位置: [目录路径]
幻灯片: 共 N 张
- 01-slide-cover.png - 封面
- 02-slide-intro.png - 内容
- ...
- {NN}-slide-back-cover.png - 封底
大纲: 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
生成大纲和提示而不生成图像:
/baoyu-slide-deck content.md --prompts-only
输出:outline.md + prompts/*.md 准备审核/编辑。
使用 --images-only
从现有提示生成图像(从步骤 7 开始):
/baoyu-slide-deck slide-deck/topic-slug/ --images-only
先决条件:
prompts/目录包含幻灯片提示文件outline.md包含样式信息
使用 --regenerate
重新生成特定幻灯片:
# 单张幻灯片
/baoyu-slide-deck slide-deck/topic-slug/ --regenerate 3
# 多张幻灯片
/baoyu-slide-deck slide-deck/topic-slug/ --regenerate 2,5,8
流程:
- 读取指定幻灯片的现有提示
- 仅重新生成这些幻灯片的图像
- 重新生成 PPTX/PDF
幻灯片修改
快速参考
| 操作 | 命令 | 手动步骤 |
|---|---|---|
| 编辑 | --regenerate N |
先更新提示文件 → 重新生成图像 → 重新生成 PDF |
| 添加 | 手动 | 创建提示 → 生成图像 → 重排后续 → 更新大纲 → 重新生成 PDF |
| 删除 | 手动 | 移除文件 → 重排后续 → 更新大纲 → 重新生成 PDF |
编辑单张幻灯片
- 先更新提示文件 在
prompts/NN-slide-{slug}.md - 运行:
/baoyu-slide-deck <目录> --regenerate N - 或手动重新生成图像 + PDF
重要: 更新幻灯片时,始终先更新提示文件(prompts/NN-slide-{slug}.md)再重新生成。这确保更改被记录且可重现。
添加新幻灯片
- 在位置创建提示:
prompts/NN-slide-{new-slug}.md - 使用相同会话 ID 生成图像
- 重排: 后续文件重编号为 NN+1(slug 不变)
- 更新
outline.md - 重新生成 PPTX/PDF
删除幻灯片
- 移除
NN-slide-{slug}.png和prompts/NN-slide-{slug}.md - 重排: 后续文件重编号为 NN-1(slug 不变)
- 更新
outline.md - 重新生成 PPTX/PDF
文件命名
格式:NN-slide-[slug].png
NN: 两位序列号(01、02、…)slug: 来自内容的 kebab-case(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 结构 |
注意事项
- 图像生成:每张幻灯片 10-30 秒
- 生成失败时自动重试一次
- 对于敏感公众人物使用风格化替代
- 通过会话 ID 保持样式一致性
- 步骤 2 确认必需 - 不要跳过(样式、受众、幻灯片、大纲审核、提示审核)
- 步骤 4 条件性 - 仅在用户在步骤 2 请求大纲审核时
- 步骤 6 条件性 - 仅在用户在步骤 2 请求提示审核时
扩展支持
通过 EXTEND.md 自定义配置。参见步骤 1.1 以获取路径和支持的选项。