mcpField
T
tuzi-slide-deck

tuzi-slide-deck

github.com/tuziapi文档处理39158 次安装27 周前更新
代码仓库

关于 tuzi-slide-deck

tuzi-slide-deck 可将文字内容制作成幻灯片图片,并可指定受众、语言、页数和视觉风格。它还支持仅生成大纲或提示词,以及合并为 PowerPoint 或 PDF。

主要功能

  1. 01根据内容生成幻灯片图片
  2. 02设置风格、受众、语言和页数
  3. 03仅生成大纲或提示词
  4. 04重新生成指定幻灯片
  5. 05合并为 PowerPoint 或 PDF

适用场景

  1. 01根据文字材料制作教学幻灯片
  2. 02按指定风格准备高管简报
  3. 03将生成的幻灯片导出为 PowerPoint 或 PDF

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tuziapi/tuzi-skills --skill tuzi-slide-deck

安装后在 Claude Code 中输入/tuzi-slide-deck确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
analysis-framework.md
base-prompt.md
content-rules.md
design-guidelines.md
layouts.md
modification-guide.md
outline-template.md
references/config/
preferences-schema.md
references/dimensions/
density.md
mood.md
presets.md
texture.md
typography.md
references/styles/
blueprint.md
bold-editorial.md
chalkboard.md
corporate.md
dark-atmospheric.md
editorial-infographic.md
fantasy-animation.md
intuition-machine.md
minimal.md
notion.md
pixel-art.md
scientific.md
sketch-notes.md
vector-illustration.md
vintage.md
watercolor.md
scripts/
merge-to-pdf.ts

详细介绍

幻灯片生成器

将内容转换为专业的幻灯片图像。

用法

/tuzi-slide-deck path/to/content.md
/tuzi-slide-deck path/to/content.md --style sketch-notes
/tuzi-slide-deck path/to/content.md --audience executives
/tuzi-slide-deck path/to/content.md --lang zh
/tuzi-slide-deck path/to/content.md --slides 10
/tuzi-slide-deck path/to/content.md --outline-only
/tuzi-slide-deck  # Then paste content

脚本目录

Agent 执行说明:

  1. 将此 SKILL.md 文件所在目录路径确定为 SKILL_DIR
  2. 脚本路径 = ${SKILL_DIR}/scripts/<script-name>.ts
脚本用途
scripts/merge-to-pptx.ts将幻灯片合并为 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 个词,使用 kebab-case)。示例:"Introduction to Machine Learning" → intro-machine-learning

冲突处理:有关现有内容检测和用户选项,请参阅第 1.3 步。

语言处理

检测优先级:

  1. --lang 标志(显式指定)
  2. EXTEND.md 中的 language 设置
  3. 用户的对话语言(输入语言)
  4. 源内容语言

规则:所有回复均使用用户首选的语言:

  • 问题和确认信息
  • 进度报告
  • 错误消息
  • 完成摘要

技术术语(风格名称、文件路径、代码)保持英文。

工作流

复制此清单,并在完成每项后勾选:

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.1 加载偏好设置(EXTEND.md)

使用 Bash 按优先级顺序检查 EXTEND.md 是否存在:

# Check project-level first
test -f .tuzi-skills/tuzi-slide-deck/EXTEND.md && echo "project"

# Then user-level (cross-platform: $HOME works on macOS/Linux/WSL)
test -f "$HOME/.tuzi-skills/tuzi-slide-deck/EXTEND.md" && echo "user"

┌──────────────────────────────────────────────────┬───────────────────┐ │ 路径 │ 位置 │ ├──────────────────────────────────────────────────┼───────────────────┤ │ .tuzi-skills/tuzi-slide-deck/EXTEND.md │ 项目目录 │ ├──────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.tuzi-skills/tuzi-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 支持:偏好风格 | 自定义尺寸 | 默认受众 | 语言偏好 | 审阅偏好

Schema:references/config/preferences-schema.md

1.2 分析内容

  1. 保存源内容(如果是粘贴的内容,则保存为 source.md)
    • 备份规则:如果 source.md 已存在,将其重命名为 source-backup-YYYYMMDD-HHMMSS.md
  2. 按照 references/analysis-framework.md 进行内容分析
  3. 分析内容特征,提供风格建议
  4. 检测源语言
  5. 确定建议的幻灯片数量
  6. 根据内容生成主题 slug

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,包含:

  • 主题、受众、内容特征
  • 建议的风格(基于自动风格选择)
  • 建议的幻灯片数量
  • 语言检测结果
步骤 2:确认 ⚠️ 必须执行

两轮确认:始终进行第一轮;只有选择“自定义尺寸”时才进行第二轮。

语言:使用用户输入的语言或已保存的语言偏好。

显示摘要:

  • 已识别的内容类型与主题
  • 语言:[来自 EXTEND.md 或检测结果]
  • 建议风格:[预设](基于内容特征)
  • 建议幻灯片数量:[N](基于内容长度)
第一轮(始终进行)

使用 AskUserQuestion 提出全部 5 个问题:

问题 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"
第二轮(仅在选择“自定义尺寸”时进行)

使用 AskUserQuestion 询问全部 4 个维度:

问题 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"

(注意:“纸张”可通过“其他”选项使用)

问题 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"

(注意:“深色”“中性”可通过“其他”选项使用)

问题 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"

(注意:“技术风格”可通过“其他”选项使用)

问题 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"

第二轮结束后:将自定义维度保存为风格配置。

确认后:

  1. 使用已确认的偏好设置更新 analysis.md
  2. 保存问题 4 中的 skip_outline_review 标记
  3. 保存问题 5 中的 skip_prompt_review 标记
  4. → 步骤 3
步骤 3:生成大纲

使用步骤 2 中确认的风格创建大纲。

风格解析:

  • 如果选择了预设 → 读取 references/styles/{preset}.md
  • 如果选择了自定义维度 → 读取 references/dimensions/ 中的维度文件并进行组合

生成:

  1. 按照 references/outline-template.md 的结构进行编写
  2. 根据风格或维度构建 STYLE_INSTRUCTIONS
  3. 应用已确认的受众、语言和幻灯片数量
  4. 保存为 outline.md

生成后:

  • 如果使用 --outline-only,则在此处停止
  • 如果 skip_outline_review 为 true → 跳过步骤 4,前往步骤 5
  • 如果 skip_outline_review 为 false → 继续执行步骤 4
步骤 4:审核大纲(条件步骤)

如果用户在步骤 2 中选择了“No, skip outline review”,则跳过此步骤。

目的:在生成提示词前审核大纲结构。

语言:使用用户输入的语言或已保存的语言偏好。

显示:

  • 幻灯片总数: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"

收到回复后:

  1. 如果选择“Edit outline first” → 告知用户编辑 outline.md,准备好后再次询问
  2. 如果选择“Regenerate outline” → 返回步骤 3
  3. 如果选择“Yes, proceed” → 继续步骤 5
步骤 5:生成提示词
  1. 读取 references/base-prompt.md
  2. 对大纲中的每张幻灯片:
    • 从大纲中提取 STYLE_INSTRUCTIONS(不要再次从风格文件中提取)
    • 添加幻灯片专属内容
    • 如果指定了 Layout:,则加入 references/layouts.md 中的布局指导
  3. 保存到 prompts/ 目录
    • 备份规则:如果提示词文件已存在,将其重命名为 prompts/NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.md

生成后:

  • 如果指定了 --prompts-only,在此处停止并输出提示词摘要
  • 如果 skip_prompt_review 为 true → 跳过步骤 6,前往步骤 7
  • 如果 skip_prompt_review 为 false → 继续步骤 6
步骤 6:审核提示词(条件步骤)

如果用户在步骤 2 中选择了“No, skip prompt review”,则跳过此步骤。

目的:在生成图像前审核提示词。

语言:使用用户输入的语言或已保存的语言偏好。

显示:

  • 提示词总数: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"

收到回复后:

  1. 如果选择“Edit prompts first” → 告知用户先编辑提示词,准备好后再次询问
  2. 如果选择“Regenerate prompts” → 返回步骤 5
  3. 如果选择“Yes, proceed” → 继续步骤 7
步骤 7:生成图像

对于 --images-only:从此处开始,使用现有提示词。

对于 --regenerate N:仅重新生成指定的幻灯片。

标准流程:

  1. 选择可用的图像生成技能
  2. 生成会话 ID:slides-{topic-slug}-{timestamp}
  3. 对每张幻灯片:
    • 备份规则:如果图像文件已存在,将其重命名为 NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.png
    • 使用相同的会话 ID 依次生成图像
  4. 报告进度:“已生成 X/N”(使用用户的语言)
  5. 失败时自动重试一次,然后再报告错误
步骤 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:输出摘要

语言:使用用户输入的语言或已保存的语言偏好。

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

生成大纲和提示词,不生成图像:

/tuzi-slide-deck content.md --prompts-only

输出:outline.md + prompts/*.md,可供审核/编辑。

使用 --images-only

根据现有提示词生成图像(从步骤 7 开始):

/tuzi-slide-deck slide-deck/topic-slug/ --images-only

前提条件:

  • prompts/ 目录中包含幻灯片提示词文件
  • outline.md 中包含风格信息
使用 --regenerate

重新生成指定的幻灯片:

# Single slide
/tuzi-slide-deck slide-deck/topic-slug/ --regenerate 3

# Multiple slides
/tuzi-slide-deck slide-deck/topic-slug/ --regenerate 2,5,8

流程:

  1. 读取指定幻灯片的现有提示词
  2. 仅重新生成这些幻灯片的图像
  3. 重新生成 PPTX/PDF

修改幻灯片

快速参考
操作命令手动步骤
编辑--regenerate N先更新提示词文件 → 重新生成图像 → 重新生成 PDF
添加手动创建提示词 → 生成图像 → 重新编号后续幻灯片 → 更新大纲 → 重新生成 PDF
删除手动移除文件 → 重新编号后续幻灯片 → 更新大纲 → 重新生成 PDF
编辑单张幻灯片
  1. 先更新提示词文件:prompts/NN-slide-{slug}.md
  2. 运行:/tuzi-slide-deck <dir> --regenerate N
  3. 或手动重新生成图片 + PDF

重要:更新幻灯片时,务必先更新提示词文件(prompts/NN-slide-{slug}.md),再重新生成。这样可以确保变更有记录且可复现。

添加新幻灯片
  1. 在指定位置创建提示词文件:prompts/NN-slide-{new-slug}.md
  2. 使用相同的会话 ID 生成图片
  3. 重新编号:后续文件的序号改为 NN+1(slug 保持不变)
  4. 更新 outline.md
  5. 重新生成 PPTX/PDF
删除幻灯片
  1. 删除 NN-slide-{slug}.png 和 prompts/NN-slide-{slug}.md
  2. 重新编号:后续文件的序号改为 NN-1(slug 保持不变)
  3. 更新 outline.md
  4. 重新生成 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.mdEXTEND.md 结构

注意事项

  • 图片生成:每张幻灯片需 10-30 秒
  • 生成失败时自动重试一次
  • 对敏感公众人物使用风格化替代方案
  • 通过会话 ID 保持风格一致
  • 必须确认第 2 步——不得跳过(风格、受众、幻灯片、大纲审核、提示词审核)
  • 第 4 步为条件步骤——仅当用户在第 2 步请求审核大纲时执行
  • 第 6 步为条件步骤——仅当用户在第 2 步请求审核提示词时执行

扩展支持

通过 EXTEND.md 自定义配置。路径和支持的选项请参阅第 1.1 步。

评论

支持 Markdown