Source Code
PPT Generator Pro - Claude Code Skill
📋 元数据
- Skill 名称: ppt-generator-pro
- 版本: 2.0.0
- 描述: 基于 AI 自动生成高质量 PPT 图片和视频,支持智能转场和交互式播放
- 作者: 歸藏
- 标签: ppt, presentation, video, ai, nano-banana, kling-ai, image-generation
✨ 功能特性
核心功能
- 🤖 智能文档分析 - 自动提取核心要点,规划 PPT 内容结构
- 🎨 多风格支持 - 内置渐变毛玻璃、矢量插画两种专业风格
- 🖼️ 高质量图片 - 使用 Nano Banana Pro 生成 16:9 高清 PPT
- 🎬 AI 转场视频 - 可灵 AI 生成流畅的页面过渡动画
- 🎮 交互式播放器 - 视频+图片混合播放,支持键盘导航
- 🎥 完整视频导出 - FFmpeg 合成包含所有转场的完整 PPT 视频
新功能 (v2.0)
- 🔄 首页循环预览 - 自动生成吸引眼球的循环动画
- 🎞️ 智能转场 - 自动生成页面间的过渡视频
- 🔧 参数统一 - 自动统一所有视频分辨率和帧率
📦 系统要求
环境变量
必需:
GEMINI_API_KEY: Google AI API 密钥(用于生成 PPT 图片)
可选(用于视频功能):
KLING_ACCESS_KEY: 可灵 AI Access KeyKLING_SECRET_KEY: 可灵 AI Secret Key
Python 依赖
pip install google-genai pillow python-dotenv
视频功能依赖
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt-get install ffmpeg
🚀 使用方法
在 Claude Code 中调用
/ppt-generator-pro
或直接告诉 Claude:
我想基于以下文档生成一个 5 页的 PPT,使用渐变毛玻璃风格。
[文档内容...]
📝 Skill 执行流程
阶段 1: 收集用户输入
1.1 获取文档内容
选项 A: 文档路径
用户: 基于 my-document.md 生成 PPT
→ 使用 Read 工具读取文件内容
选项 B: 直接文本
用户: 我想生成一个关于 AI 产品设计的 PPT
主要内容:
1. 现状分析
2. 设计原则
3. 案例研究
选项 C: 主动询问
如果用户未提供内容,询问:
"请提供文档路径或直接粘贴文档内容"
1.2 选择风格
扫描 styles/ 目录,列出可用风格:
# 自动检测风格文件
styles = ['gradient-glass.md', 'vector-illustration.md']
如果有多个风格,使用 AskUserQuestion:
问题: 请选择 PPT 风格
选项:
- 渐变毛玻璃卡片风格(科技感、商务演示)
- 矢量插画风格(温暖、教育培训)
1.3 选择页数范围
使用 AskUserQuestion 询问:
问题: 希望生成多少页 PPT?
选项:
- 5 页(5 分钟演讲)
- 5-10 页(10-15 分钟演讲)
- 10-15 页(20-30 分钟演讲)
- 20-25 页(45-60 分钟演讲)
1.4 选择分辨率
问题: 选择图片分辨率
选项:
- 2K (2752x1536) - 推荐,快速生成
- 4K (5504x3072) - 高质量,适合打印
1.5 是否生成视频(可选)
如果配置了可灵 AI 密钥,询问:
问题: 是否生成转场视频?
选项:
- 仅图片(快速)
- 图片 + 转场视频(完整体验)
阶段 2: 文档分析与内容规划
2.1 内容规划策略
根据页数范围,智能规划每一页内容:
5 页版本:
- 封面:标题 + 核心主题
- 要点 1:第一个核心观点
- 要点 2:第二个核心观点
- 要点 3:第三个核心观点
- 总结:核心结论或行动建议
5-10 页版本:
- 封面 2-3. 引言/背景 4-7. 核心内容(3-4 个关键观点) 8-9. 案例或数据支持
- 总结与行动建议
10-15 页版本:
- 封面 2-3. 引言/目录 4-6. 第一章节(3 页) 7-9. 第二章节(3 页) 10-12. 第三章节/案例研究 13-14. 数据可视化
- 总结与下一步
20-25 页版本:
- 封面
- 目录 3-4. 引言和背景 5-8. 第一部分(4 页) 9-12. 第二部分(4 页) 13-16. 第三部分(4 页) 17-19. 案例研究 20-22. 数据分析和洞察 23-24. 关键发现和建议
- 总结与致谢
2.2 生成 slides_plan.json
创建 JSON 文件:
{
"title": "文档标题",
"total_slides": 5,
"slides": [
{
"slide_number": 1,
"page_type": "cover",
"content": "标题:AI 产品设计指南\n副标题:构建以用户为中心的智能体验"
},
{
"slide_number": 2,
"page_type": "content",
"content": "核心原则\n- 简单直观\n- 快速响应\n- 透明可控"
},
{
"slide_number": 3,
"page_type": "content",
"content": "设计流程\n1. 用户研究\n2. 原型设计\n3. 测试迭代"
},
{
"slide_number": 4,
"page_type": "data",
"content": "用户满意度\n使用前:65%\n使用后:92%\n提升:+27%"
},
{
"slide_number": 5,
"page_type": "content",
"content": "总结\n- 以用户为中心\n- 持续优化迭代\n- 数据驱动决策"
}
]
}
重要: 将此文件保存到:
- 独立使用:
./slides_plan.json - Skill 模式:
.claude/skills/ppt-generator/slides_plan.json
阶段 3: 生成 PPT 图片
3.1 确定工作目录
独立模式:
cd /path/to/ppt-generator
Skill 模式:
cd ~/.claude/skills/ppt-generator
3.2 执行生成命令
python generate_ppt.py \
--plan slides_plan.json \
--style styles/gradient-glass.md \
--resolution 2K
或使用 uv run(推荐):
uv run python generate_ppt.py \
--plan slides_plan.json \
--style styles/gradient-glass.md \
--resolution 2K
参数说明:
--plan: slides 规划 JSON 文件路径--style: 风格文件路径--resolution: 分辨率(2K 或 4K)--template: HTML 模板路径(可选)
3.3 监控生成进度
脚本会输出进度信息:
✅ 已加载环境变量: /path/to/.env
📊 开始生成 PPT 图片...
总页数: 5
分辨率: 2K (2752x1536)
风格: 渐变毛玻璃卡片风格
🎨 生成第 1 页 (封面页)...
提示词已生成
调用 Nano Banana Pro API...
✅ 第 1 页生成成功 (32.5 秒)
🎨 生成第 2 页 (内容页)...
✅ 第 2 页生成成功 (28.3 秒)
...
✅ 所有页面生成完成!
📁 输出目录: outputs/20260112_143022/
阶段 4: 生成转场提示词(视频模式需要)
这是 Skill 的核心优势:我(Claude Code)会分析生成的 PPT 图片,为每个转场生成精准的视频提示词。
4.1 读取并分析 PPT 图片
我会读取所有生成的图片:
# 自动读取输出目录中的所有图片
slides = ['slide-01.png', 'slide-02.png', ...]
4.2 分析图片差异并生成提示词
对于每对相邻图片,我会:
- 视觉分析:理解两张图片的布局、元素、色彩差异
- 生成预览提示词:为首页创建可循环的微动效描述
- 生成转场提示词:详细描述如何从起始帧过渡到结束帧
示例输出:
{
"preview": {
"slide_path": "outputs/.../slide-01.png",
"prompt": "画面保持封面的静态构图,中心的3D玻璃环缓慢旋转..."
},
"transitions": [
{
"from_slide": 1,
"to_slide": 2,
"prompt": "镜头从封面开始,玻璃环逐渐解构,分裂成透明碎片..."
}
]
}
4.3 保存提示词文件
我会将生成的提示词保存到:
outputs/TIMESTAMP/transition_prompts.json
关键优势:
- ✅ 不需要单独的 Claude API 密钥
- ✅ 提示词针对实际图片内容定制
- ✅ 考虑文字稳定性,避免视频模型弄模糊文字
- ✅ 符合渐变毛玻璃风格的视觉语言
阶段 5: 生成转场视频(可选)
如果用户选择生成视频,使用阶段 4 生成的提示词文件:
python generate_ppt_video.py \
--slides-dir outputs/20260112_143022/images \
--output-dir outputs/20260112_143022_video \
--prompts-file outputs/20260112_143022/transition_prompts.json
生成内容:
- 首页循环预览视频(
preview.mp4) - 页面间转场视频(
transition_01_to_02.mp4等) - 交互式视频播放器(
video_index.html) - 完整视频(
full_ppt_video.mp4)
阶段 6: 返回结果
6.1 仅图片模式
✅ PPT 生成成功!
📁 输出目录: outputs/20260112_143022/
🖼️ PPT 图片: outputs/20260112_143022/images/
🎬 播放网页: outputs/20260112_143022/index.html
打开播放网页:
open outputs/20260112_143022/index.html
播放器快捷键:
- ← → 键: 切换页面
- ↑ Home: 回到首页
- ↓ End: 跳到末页
- 空格: 暂停/继续自动播放
- ESC: 全屏切换
- H: 隐藏/显示控件
5.2 视频模式
✅ PPT 视频生成成功!
📁 输出目录: outputs/20260112_143022_video/
🖼️ PPT 图片: outputs/20260112_143022/images/
🎬 转场视频: outputs/20260112_143022_video/videos/
🎮 交互式播放器: outputs/20260112_143022_video/video_index.html
🎥 完整视频: outputs/20260112_143022_video/full_ppt_video.mp4
打开交互式播放器:
open outputs/20260112_143022_video/video_index.html
播放逻辑:
1. 首页: 播放循环预览视频
2. 按右键 → 播放转场视频 → 显示目标页图片(2 秒)
3. 再按右键 → 播放下一个转场 → 显示下一页图片
4. 依此类推...
视频播放器快捷键:
- ← → 键: 上一页/下一页(含转场)
- 空格: 播放/暂停当前视频
- ESC: 全屏切换
- H: 隐藏/显示控件
🔧 环境变量配置
.env 文件位置
Skill 会按以下顺序查找 .env 文件:
- 脚本所在目录 -
./ppt-generator/.env - 向上查找项目根目录 - 直到找到包含
.git或.env的目录 - Claude Skill 标准位置 -
~/.claude/skills/ppt-generator/.env - 系统环境变量 - 如果以上都未找到
.env 文件示例
# Google AI API 密钥(必需)
GEMINI_API_KEY=your_gemini_api_key_here
# 可灵 AI API 密钥(可选,用于视频功能)
KLING_ACCESS_KEY=your_kling_access_key_here
KLING_SECRET_KEY=your_kling_secret_key_here
⚠️ 错误处理
常见错误及解决方案
1. API 密钥未设置
错误: ⚠️ 未找到 .env 文件,尝试使用系统环境变量
未设置 GEMINI_API_KEY 环境变量
解决:
1. 创建 .env 文件
2. 添加 GEMINI_API_KEY=your_key_here
2. Python 依赖缺失
错误: ModuleNotFoundError: No module named 'google.genai'
解决: pip install google-genai pillow python-dotenv
3. FFmpeg 未安装
错误: ❌ FFmpeg 不可用!
解决: brew install ffmpeg # macOS
sudo apt-get install ffmpeg # Ubuntu
4. API 调用失败
错误: API 调用超时或失败
解决:
1. 检查网络连接
2. 确认 API 密钥有效
3. 稍后重试
5. 视频生成失败
错误: 可灵 AI 密钥未配置
解决:
1. 如果只需要图片,跳过视频生成步骤
2. 如果需要视频,配置 KLING_ACCESS_KEY 和 KLING_SECRET_KEY
🎨 风格系统
已内置风格
1. 渐变毛玻璃卡片风格 (gradient-glass.md)
视觉特点:
- Apple Keynote 极简主义
- 玻璃拟态效果
- 霓虹紫/电光蓝/珊瑚橙渐变
- 3D 玻璃物体 + 电影级光照
适用场景:
- 科技产品发布
- 商务演示
- 数据报告
- 企业品牌展示
2. 矢量插画风格 (vector-illustration.md)
视觉特点:
- 扁平化矢量设计
- 统一黑色轮廓线
- 复古柔和配色
- 几何化简化
适用场景:
- 教育培训
- 创意提案
- 儿童相关
- 温暖品牌故事
添加自定义风格
- 在
styles/目录创建新的.md文件 - 按照现有风格格式编写
- Skill 会自动识别并提供选择
📊 技术细节
API 配置
Nano Banana Pro(图片生成):
- 模型:
gemini-3-pro-image-preview - 比例:
16:9 - 响应模式:
IMAGE - 分辨率:2K (2752x1536) 或 4K (5504x3072)
可灵 AI(视频生成):
- 模式:专业模式(professional)
- 时长:5 秒
- 分辨率:1920x1080
- 帧率:24fps
FFmpeg(视频合成):
- 编码:H.264
- 质量:CRF 23
- 帧率:24fps(统一)
- 分辨率:1920x1080(统一)
性能指标
生成速度:
- PPT 图片:~30 秒/页(2K)| ~60 秒/页(4K)
- 转场视频:~30-60 秒/段
- 视频合成:~5-10 秒
文件大小:
- PPT 图片:~2.5MB/页(2K)| ~8MB/页(4K)
- 转场视频:~3-5MB/段(1080p,5 秒)
- 完整视频:~12-20MB(5 页 PPT + 转场)
📁 文件组织
输出目录结构
仅图片模式:
outputs/20260112_143022/
├── images/
│ ├── slide-01.png
│ ├── slide-02.png
│ └── ...
├── index.html # 图片播放器
└── prompts.json # 提示词记录
视频模式:
outputs/20260112_143022_video/
├── videos/
│ ├── preview.mp4 # 首页循环预览
│ ├── transition_01_to_02.mp4
│ ├── transition_02_to_03.mp4
│ └── ...
├── video_index.html # 交互式播放器
└── full_ppt_video.mp4 # 完整视频
🎯 最佳实践
- 文档质量:输入文档内容越清晰结构化,生成的 PPT 质量越高
- 页数选择:根据文档长度和演示场景合理选择页数
- 分辨率选择:日常使用推荐 2K,重要展示场合可选 4K
- 视频功能:首次使用建议先尝试仅图片模式,熟悉后再使用视频功能
- 提示词调整:查看
prompts.json了解生成逻辑,可手动调整后重新生成
📝 使用示例
示例 1: 快速生成
用户输入:
我需要基于这份会议纪要生成一个 5 页的 PPT,使用矢量插画风格。
会议主题:Q1 产品路线图规划
参与人:产品团队
讨论内容:
1. 用户反馈汇总
2. 新功能优先级
3. 技术可行性评估
4. Q1 里程碑
5. 下一步行动项
Skill 执行:
- 收集输入(已提供内容)
- 确认风格(矢量插画)
- 确认页数(5 页)
- 确认分辨率(询问用户)
- 生成 slides_plan.json
- 执行生成命令
- 返回结果
示例 2: 完整流程
用户输入:
基于 AI-Product-Design.md 文档,生成一个 15 页的 PPT,使用渐变毛玻璃风格,需要转场视频。
Skill 执行:
- 读取文档内容
- 确认风格(渐变毛玻璃)
- 确认页数(15 页)
- 确认分辨率(询问用户)
- 确认生成视频(是)
- 分析文档,规划 15 页内容
- 生成 slides_plan.json
- 生成 PPT 图片
- 生成转场视频
- 合成完整视频
- 返回所有结果
🔄 更新日志
v2.0.0 (2026-01-12)
- 🎬 新增视频功能
- 可灵 AI 转场视频生成
- 交互式视频播放器
- FFmpeg 完整视频合成
- 首页循环预览视频
- 🔧 优化视频合成
- 自动统一分辨率和帧率
- 修复视频拼接兼容性问题
- 静态图片展示时间改为 2 秒
- 🔑 改进环境变量
- 智能查找 .env 文件
- 支持多种部署模式
- 自动向上查找项目根目录
- 📚 文档完善
- 重命名为 SKILL.md(符合官方规范)
- 更新所有路径和命令
- 添加视频功能使用指南
v1.0.0 (2026-01-09)
- ✨ 首次发布
- 🎨 内置 2 种专业风格
- 🖼️ 支持 2K/4K 分辨率
- 🎬 HTML5 图片播放器
- 📊 智能文档分析
📄 许可证
MIT License
📞 技术支持
- 项目架构:参见
ARCHITECTURE.md - API 管理:参见
API_MANAGEMENT.md - 环境配置:参见
ENV_SETUP.md - 安全说明:参见
SECURITY.md - 完整文档:参见
README.md