从 YAML 场景到 Replicate 出图,我用的是一条「YAML → gen 脚本 → Replicate API」的流水线。这里记完整流程和踩坑点。

1. 流程概览

  1. 写 YAML:按 玲依 YAML 脚本约定 写好 comic_infopanels
  2. 跑 gen 脚本:例如 node gen.js scene_01.yaml --ref reference.png --out ./output,脚本负责读 YAML、拼 prompt、按格顺序调 Replicate。
  3. Replicate 出图:每格调用一次 Replicate 上的图生图模型(如 nano-banana-2 / 其他 Flux 系),传入参考图、可选前一帧、以及本格 prompt。
  4. 收图与拼四格:脚本把每格保存为独立文件,再用手工或简单脚本拼成四格图。

2. gen 脚本做什么

  • 解析 YAML:读 comic_infopanels,按 panel1~panel4 顺序遍历。
  • 拼 prompt:把全局 style、color_scheme、background_style 和当前格的 scene、action、expression、details 拼成一条英文或中文 prompt(视模型而定)。
  • 调 Replicate:用官方 replicate Node 包或 HTTP API,每格一次 run(model, { prompt, image: 参考图, reference_image: 前一格 });第一格没有「前一格」,只传参考图。
  • 写文件:把返回的图片 URL 下载下来,按约定命名(如 scene_01_panel1.png)写到 --out 目录。

本项目 devDependencies 里已有 replicate,gen 脚本可直接 require('replicate')import 后调用。

3. nano-banana-2 与参考图、前一帧

  • 模型:Replicate 上搜索 nano-banana 或 Flux 相关 image-to-image 模型,选支持 image + prompt 的那种;有的模型参数叫 reference_imageinit_image,需看该模型页的 Input 说明。
  • 参考图:即玲依的「定妆照」,每格都传,保证角色一致。
  • 前一帧:从第二格开始,把上一格的成图作为 image / init_image 传入,本格 prompt 里写「与上一格同一角色、动作/表情接续」,能明显提升连贯性。
  • 参数:常见有 promptimagestrength(对原图保留程度)、guidance_scale 等;第一格若用参考图生成,可适当提高 strength 让角色更稳,后续格可略降以便多一点动作变化。

4. 踩坑记录

  • 图片格式与大小:Replicate 多数模型对输入图有大小/比例限制,上传前可先 resize 到 768 或 1024,避免报错。
  • 速率限制:连续多格会连续调 API,注意 Replicate 的 rate limit,必要时在 gen 脚本里加 setTimeout 或排队。
  • 参考图与前一帧谁是谁:有的模型区分「风格/角色参考」和「构图参考」两个输入,需对照文档把「定妆照」和「上一格」分别接到对应参数上。
  • 输出路径:建议 gen 脚本里用「场景名 + panel 序号」命名,和 YAML 文件名、博客里的图片路径统一(如 lingyi-daily/xigua/scene_01_xxx.png),方便后续写文章引用。

5. 小结

步骤做法
输入YAML 场景 + 一张玲依参考图
第一格参考图 + 本格 prompt,无前一帧
第二~四格参考图 + 前一格成图 + 接续 prompt
出图Replicate(如 nano-banana-2)按格调用,结果落盘
发布按命名规范放到博客图床,在文章里引用

这样从 YAML 到 Replicate 的一键生成流程就闭环了;配合 参考图与分镜实战YAML 脚本约定,改剧情或风格只需改 YAML 再跑一遍 gen。

6. 附件下载

以下脚本已随本文提供,可直接下载使用。使用前请配置环境变量 REPLICATE_API_TOKEN,并按本地环境修改脚本内的 参考图路径referenceImagePath)和 YAML 目录yamlDir)。运行方式:node gen.js 处理全部场景,或 node gen.js 1 3 只生成第 1、3 个场景。

文件说明
gen.js按 YAML 目录顺序调用 Replicate(google/nano-banana-2),前一帧 + 参考图传入 image_input,输出到各 YAML 同级的 output 目录