Back to Skills
    🦞

    nanobanana-ppt-skills

    - **Skill 名称**: ppt-generator-pro

    By @itrocker
    View on GitHub
    SKILL.md
    # 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 Key
    - `KLING_SECRET_KEY`: 可灵 AI Secret Key
    
    ### Python 依赖
    
    ```bash
    pip install google-genai pillow python-dotenv
    ```
    
    ### 视频功能依赖
    
    ```bash
    # macOS
    brew install ffmpeg
    
    # Ubuntu/Debian
    sudo apt-get install ffmpeg
    ```
    
    ## 🚀 使用方法
    
    ### 在 Claude Code 中调用
    
    ```bash
    /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/` 目录,列出可用风格:
    
    ```python
    # 自动检测风格文件
    styles = ['gradient-glass.md', 'vector-illustration.md']
    ```
    
    **如果有多个风格,使用 AskUserQuestion:**
    
    ```markdown
    问题: 请选择 PPT 风格
    选项:
    - 渐变毛玻璃卡片风格(科技感、商务演示)
    - 矢量插画风格(温暖、教育培训)
    ```
    
    #### 1.3 选择页数范围
    
    使用 AskUserQuestion 询问:
    
    ```markdown
    问题: 希望生成多少页 PPT?
    选项:
    - 5 页(5 分钟演讲)
    - 5-10 页(10-15 分钟演讲)
    - 10-15 页(20-30 分钟演讲)
    - 20-25 页(45-60 分钟演讲)
    ```
    
    #### 1.4 选择分辨率
    
    ```markdown
    问题: 选择图片分辨率
    选项:
    - 2K (2752x1536) - 推荐,快速生成
    - 4K (5504x3072) - 高质量,适合打印
    ```
    
    #### 1.5 是否生成视频(可选)
    
    如果配置了可灵 AI 密钥,询问:
    
    ```markdown
    问题: 是否生成转场视频?
    选项:
    - 仅图片(快速)
    - 图片 + 转场视频(完整体验)
    ```
    
    ### 阶段 2: 文档分析与内容规划
    
    #### 2.1 内容规划策略
    
    根据页数范围,智能规划每一页内容:
    
    **5 页版本:**
    1. 封面:标题 + 核心主题
    2. 要点 1:第一个核心观点
    3. 要点 2:第二个核心观点
    4. 要点 3:第三个核心观点
    5. 总结:核心结论或行动建议
    
    **5-10 页版本:**
    1. 封面
    2-3. 引言/背景
    4-7. 核心内容(3-4 个关键观点)
    8-9. 案例或数据支持
    10. 总结与行动建议
    
    **10-15 页版本:**
    1. 封面
    2-3. 引言/目录
    4-6. 第一章节(3 页)
    7-9. 第二章节(3 页)
    10-12. 第三章节/案例研究
    13-14. 数据可视化
    15. 总结与下一步
    
    **20-25 页版本:**
    1. 封面
    2. 目录
    3-4. 引言和背景
    5-8. 第一部分(4 页)
    9-12. 第二部分(4 页)
    13-16. 第三部分(4 页)
    17-19. 案例研究
    20-22. 数据分析和洞察
    23-24. 关键发现和建议
    25. 总结与致谢
    
    #### 2.2 生成 slides_plan.json
    
    创建 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 确定工作目录
    
    **独立模式:**
    ```bash
    cd /path/to/ppt-generator
    ```
    
    **Skill 模式:**
    ```bash
    cd ~/.claude/skills/ppt-generator
    ```
    
    #### 3.2 执行生成命令
    
    ```bash
    python generate_ppt.py \
      --plan slides_plan.json \
      --style styles/gradient-glass.md \
      --resolution 2K
    ```
    
    **或使用 uv run(推荐):**
    ```bash
    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 图片
    
    我会读取所有生成的图片:
    
    ```python
    # 自动读取输出目录中的所有图片
    slides = ['slide-01.png', 'slide-02.png', ...]
    ```
    
    #### 4.2 分析图片差异并生成提示词
    
    对于每对相邻图片,我会:
    1. **视觉分析**:理解两张图片的布局、元素、色彩差异
    2. **生成预览提示词**:为首页创建可循环的微动效描述
    3. **生成转场提示词**:详细描述如何从起始帧过渡到结束帧
    
    **示例输出:**
    ```json
    {
      "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 生成的提示词文件:
    
    ```bash
    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` 文件:
    
    1. **脚本所在目录** - `./ppt-generator/.env`
    2. **向上查找项目根目录** - 直到找到包含 `.git` 或 `.env` 的目录
    3. **Claude Skill 标准位置** - `~/.claude/skills/ppt-generator/.env`
    4. **系统环境变量** - 如果以上都未找到
    
    ### .env 文件示例
    
    ```bash
    # 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`)
    
    **视觉特点:**
    - 扁平化矢量设计
    - 统一黑色轮廓线
    - 复古柔和配色
    - 几何化简化
    
    **适用场景:**
    - 教育培训
    - 创意提案
    - 儿童相关
    - 温暖品牌故事
    
    ### 添加自定义风格
    
    1. 在 `styles/` 目录创建新的 `.md` 文件
    2. 按照现有风格格式编写
    3. 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           # 完整视频
    ```
    
    ## 🎯 最佳实践
    
    1. **文档质量**:输入文档内容越清晰结构化,生成的 PPT 质量越高
    2. **页数选择**:根据文档长度和演示场景合理选择页数
    3. **分辨率选择**:日常使用推荐 2K,重要展示场合可选 4K
    4. **视频功能**:首次使用建议先尝试仅图片模式,熟悉后再使用视频功能
    5. **提示词调整**:查看 `prompts.json` 了解生成逻辑,可手动调整后重新生成
    
    ## 📝 使用示例
    
    ### 示例 1: 快速生成
    
    **用户输入:**
    ```
    我需要基于这份会议纪要生成一个 5 页的 PPT,使用矢量插画风格。
    
    会议主题:Q1 产品路线图规划
    参与人:产品团队
    
    讨论内容:
    1. 用户反馈汇总
    2. 新功能优先级
    3. 技术可行性评估
    4. Q1 里程碑
    5. 下一步行动项
    ```
    
    **Skill 执行:**
    1. 收集输入(已提供内容)
    2. 确认风格(矢量插画)
    3. 确认页数(5 页)
    4. 确认分辨率(询问用户)
    5. 生成 slides_plan.json
    6. 执行生成命令
    7. 返回结果
    
    ### 示例 2: 完整流程
    
    **用户输入:**
    ```
    基于 AI-Product-Design.md 文档,生成一个 15 页的 PPT,使用渐变毛玻璃风格,需要转场视频。
    ```
    
    **Skill 执行:**
    1. 读取文档内容
    2. 确认风格(渐变毛玻璃)
    3. 确认页数(15 页)
    4. 确认分辨率(询问用户)
    5. 确认生成视频(是)
    6. 分析文档,规划 15 页内容
    7. 生成 slides_plan.json
    8. 生成 PPT 图片
    9. 生成转场视频
    10. 合成完整视频
    11. 返回所有结果
    
    ## 🔄 更新日志
    
    ### 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`