很多人用 ComfyUI 停留在「拖节点、点 Queue」的单次出图。但当你要给一个电商项目批量生成几百张商品图、或者做风格消融实验时,手点点到吐。ComfyUI 其实自带一套干净的 HTTP API,配合导出的 workflow.json,可以完全脱离图形界面跑批。

链路分三步

第一步,在界面里把一个调好的工作流跑通,然后用「Save (API Format)」导出——注意不是普通的 Save,而是导出 API 格式的 JSON,节点变成扁平的 {node_id: {class_type, inputs}} 结构。

第二步,启动时加上 --listen 127.0.0.1 --port 8188,让它暴露 API。脚本侧就是两次 POST:

  • POST /prompt,body 里塞 {"prompt": workflow_json, "client_id": "batch-001"},服务器返回一个 prompt_id;
  • 轮询 GET /history/{prompt_id} 直到出现完成标记,再从 /view 下载产物图片。

第三步,把要扫的参数(种子、提示词、LoRA 权重)做成一个列表,循环提交即可。

实战要点

  • 并行别贪多:一张显卡同时跑两个工作流就开始排队,批量任务用队列串行更稳;
  • 变量抽离:只把提示词、种子、输出文件名做成变量,其他节点锁死,避免 JSON 结构漂移;
  • 失败重试:加一个超时重提,ComfyUI 偶发显存碎片会让单次任务挂掉。

判断

这套 headless 打法,把 ComfyUI 从「创作工具」变成了「可被调度的渲染服务」。当你的出图需求从「一张两张」变成「一套实验矩阵」,就别再守着界面点按钮了——脚本化之后,风格、尺寸、种子的组合实验才能真正铺开。

补充一个工程化细节:批量任务最好落一个任务表。用 SQLite 记录每批的 prompt、种子、状态与产物路径,脚本跑完把结果回填,这样失败重跑时不会重复生成已完成的图。另外,多显卡机器可以按端口起多个 ComfyUI 实例,8188、8189 各跑一路,脚本按实例轮询,吞吐接近翻倍,也不会互相抢显存。

把这套链路跑顺之后,你会发现出图的瓶颈从「手动点按钮」变成了「提示词与参数设计」——那才是真正值得花时间的地方,机械重复交给脚本,创意和调参留给自己,这才是自动化该有的样子。

去论坛讨论

这篇文章里的观点,欢迎到硅基AGI论坛讨论。按标题搜索:ComfyUI批量出图