$npx -y skills add Supreme-Ultimate/novel-to-script-team --skill image-generation-skill调用 nano banana API(gemini-3.1-flash-image-preview)生成图片。支持纯文本生图和参考图生图。
| 1 | # image-generation-skill |
| 2 | |
| 3 | ## 概述 |
| 4 | 调用 nano banana API 将服化道/分镜提示词转化为图片。支持两种模式: |
| 5 | 1. 纯文本生图:提示词 → API → PNG 图片 |
| 6 | 2. 参考图生图:提示词 + 本地参考图(base64 编码)→ API → PNG 图片 |
| 7 | |
| 8 | ## 前置条件 |
| 9 | - `.env` 或环境变量中配置了 `NANO_BANANA_API_KEY` 和 `NANO_BANANA_BASE_URL` |
| 10 | - Python 3 已安装 |
| 11 | - `requests` 库已安装(`pip install requests`) |
| 12 | |
| 13 | ## 输入 |
| 14 | - 提示词文件:`outputs/{剧本名}/assets/character-prompts.md`、`scene-prompts.md` 或 `prop-prompts.md` |
| 15 | - 单条提示词:直接传入文本 |
| 16 | - 可选参考图:本地图片路径 |
| 17 | |
| 18 | ## 输出 |
| 19 | - 角色图:`outputs/{剧本名}/images/characters/{前缀}-{序号}.png` |
| 20 | - 场景图:`outputs/{剧本名}/images/scenes/{前缀}-{序号}.png` |
| 21 | - 物品图:`outputs/{剧本名}/images/props/{前缀}-{序号}.png` |
| 22 | |
| 23 | ## 执行流程 |
| 24 | |
| 25 | ### 步骤1:环境检查 |
| 26 | 确认 `.env` 中有 `NANO_BANANA_API_KEY` 和 `NANO_BANANA_BASE_URL`: |
| 27 | ```bash |
| 28 | test -f .env && grep -q "NANO_BANANA_API_KEY" .env && grep -q "NANO_BANANA_BASE_URL" .env |
| 29 | ``` |
| 30 | |
| 31 | ### 步骤2:生成角色图(第一批,无外部依赖) |
| 32 | ```bash |
| 33 | python scripts/generate_image.py \ |
| 34 | --prompt-file "outputs/{剧本名}/assets/character-prompts.md" \ |
| 35 | --output-dir "outputs/{剧本名}/images/characters" \ |
| 36 | --prefix char |
| 37 | ``` |
| 38 | |
| 39 | ### 步骤3:生成物品图(第二批,白底独立策略,仅同族物品间有依赖) |
| 40 | ```bash |
| 41 | python scripts/generate_image.py \ |
| 42 | --prompt-file "outputs/{剧本名}/assets/prop-prompts.md" \ |
| 43 | --output-dir "outputs/{剧本名}/images/props" \ |
| 44 | --image-base-dir "outputs/{剧本名}/images" \ |
| 45 | --prefix prop |
| 46 | ``` |
| 47 | |
| 48 | ### 步骤4:生成场景图(第三批,依赖角色图和物品图,通过 --image-base-dir 跨文件引用) |
| 49 | ```bash |
| 50 | python scripts/generate_image.py \ |
| 51 | --prompt-file "outputs/{剧本名}/assets/scene-prompts.md" \ |
| 52 | --output-dir "outputs/{剧本名}/images/scenes" \ |
| 53 | --image-base-dir "outputs/{剧本名}/images" \ |
| 54 | --prefix scene |
| 55 | ``` |
| 56 | |
| 57 | **生成顺序很重要**:角色 → 物品 → 场景 → 帧图,确保被引用的图先生成。场景引用角色图和物品图,所以必须在场景之前生成。帧图依赖角色图和场景图,所以最后生成。 |
| 58 | |
| 59 | ### 步骤5:生成帧图(第四批,按集组织,依赖角色图 + 场景图) |
| 60 | |
| 61 | 帧图由 `seedance-storyboard-skill` 在生成提示词时同步输出到 `03-frame-requests.md`。帧图按集组织,不跨集累积。 |
| 62 | |
| 63 | ```bash |
| 64 | python scripts/generate_image.py \ |
| 65 | --prompt-file "outputs/{剧本名}/storyboard/ep<N>/03-frame-requests.md" \ |
| 66 | --output-dir "outputs/{剧本名}/images/frames/ep<N>" \ |
| 67 | --image-base-dir "outputs/{剧本名}/images" \ |
| 68 | --prefix frame |
| 69 | ``` |
| 70 | |
| 71 | 帧图类型说明: |
| 72 | - **首帧图**:用于 I2V-首帧模式,锁定开场构图 |
| 73 | - **尾帧图**:用于首尾帧模式,锁定结束画面 |
| 74 | - **分镜参考图**:用于多参考模式多时段,引导各时段画面 |
| 75 | |
| 76 | ### 步骤6(可选):参考图生图 |
| 77 | ```bash |
| 78 | python scripts/generate_image.py \ |
| 79 | --prompt "根据参考图风格生成..." \ |
| 80 | --reference-image /path/to/reference.png \ |
| 81 | --output-dir "outputs/{剧本名}/images/characters" \ |
| 82 | --prefix char-ref |
| 83 | ``` |
| 84 | |
| 85 | ### 步骤7:检查输出 |
| 86 | - 确认图片文件存在且非空 |
| 87 | - 报告生成成功/失败的数量 |
| 88 | |
| 89 | ## 成功标准 |
| 90 | - [ ] 所有提示词都已处理 |
| 91 | - [ ] 图片文件存在且大小 > 0 |
| 92 | - [ ] 文件命名符合 `{prefix}-{序号}.png` 规范 |
| 93 | - [ ] 无 API 调用错误 |
| 94 | |
| 95 | ## 错误处理 |
| 96 | - API key 缺失:提示用户配置 `.env` |
| 97 | - API 调用失败:记录错误,继续处理下一条 |
| 98 | - 图片解码失败:记录错误,跳过该条 |