不会写分镜也能拍:开源 Toonflow 保姆级实测,1 分钟漫剧从剧本到成片
Docker 装 Toonflow、稍后配置进画布、雨夜便利店扩到 60 秒 14 镜;附分镜模板、定妆图、失败账单、协议红绿灯。
目录· 32 节
- Toonflow 是什么,为什么选它
- 第一步:安装(四个真实的坑)
- 有 compose 的正常机器,照抄这几行
- 坑 1:bun install 报 HTTP 5xx
- 坑 2:3000 端口被占
- 坑 3:没有登录鉴权,别把端口直接放到公网
- 坑 4:host 网络会监听所有网卡
- 第二步:第一次打开,跟着点
- 1. 快速开始页:点「稍后配置」
- 2. 首页:先认一下侧栏
- 3. 设置:知道 Key 填在哪就行,现在可以不填
- 4. 新建项目 = 选一个服务器上的文件夹
- 5. 进入画布
- 6. 添加节点
- 第三步:剧本和分镜(这是决定成败的一步)
- 60 秒剧本:两个人、一个房间、一个道具
- 分镜怎么写:五条铁律
- 《雨夜便利店》14 镜总表
- 模板下载(Excel / WPS / 飞书表格可直接打开)
- 在 Toonflow 里怎么放
- 第四步:角色定妆和关键帧
- 关键帧精选
- 第五步:逐镜出片,然后拼成 60 秒
- 成片(粗剪)
- 在 Toonflow 里的操作
- 出片记录(照实写)
- 拼接
- 账单(这一版 60 秒)
- 连续性:两个最实用的技巧
- 协议红绿灯:想接单变现,先看这一节
- 保姆级检查清单
- 下一步
AI 工具实战 · 漫剧特辑 · 保姆级
上一期我们只做了一件事:同一个剧本、同一组关键帧,比 Muse、Grok、本地 H3 谁拍 15 秒更好。评论区问得最多的反而不是「哪家引擎强」,而是:我不会写分镜、不会剪辑,有没有一个开源的工作台,能把剧本 → 分镜 → 角色 → 出片串起来?
这期补的就是这条路。主角是开源画布工作台 Toonflow,题材沿用《雨夜便利店》,从 15 秒扩到 60 秒 14 镜,每一步都写清楚点哪里、填什么、哪里会翻车、花了多少钱。
Toonflow 是什么,为什么选它
一句话:开源版的 LibTV / TapNow——一块无限画布,上面放文本、图片、视频、音频节点,节点之间连线,AI 对话助手帮你拆剧本、搭流程。
- 仓库:github.com/HBAI-Ltd/Toonflow-app
- 协议:MIT,可以商用(这一点在开源漫剧工具里并不常见,后面红绿灯一节细说)
- 热度:GitHub 约 2 万 star(我们查的时候约 19.9k),10 月底仍在更新
- 形态:Windows / Apple 芯片 Mac 桌面版、Android ARM64 版、Docker、源码;可以接云端 API,也可以接本地 ComfyUI
选它做保姆级主线,原因很朴素:star 最多、协议最干净、有图形界面,新手踩雷的概率最低。
第一步:安装(四个真实的坑)
新手首选桌面版:去 GitHub Releases 下载安装包,双击装好就行。但官方没有 Linux 桌面版——Linux、NAS、云服务器只能走 Docker 或源码。我们就是在 Linux 上用 Docker 装的,下面四个坑全是实际踩到的。
有 compose 的正常机器,照抄这几行
git clone https://github.com/HBAI-Ltd/Toonflow-app && cd Toonflow-app
# 坑 1:bun.lock 里写死了已停用的淘宝源,先换成 npmmirror(上游修了的话这行不会改动任何东西)
sed -i 's#http://registry.npm.taobao.org/#https://registry.npmmirror.com/#g' bun.lock
docker compose up -d --build
docker compose logs -f # 看到 [服务启动成功] 就可以开浏览器
# 打开 http://127.0.0.1:3000
坑 1:bun install 报 HTTP 5xx
bun.lock 里有 28 个包的下载地址是 http://registry.npm.taobao.org/,这个域名早就停用了。不改,Docker 构建一定卡在依赖安装这一步。上面那行 sed 把它换成 https://registry.npmmirror.com/,修好后我们第二次构建用了 2 分 20 秒,镜像约 3.16 GB。
坑 2:3000 端口被占
很多人电脑上 3000 端口已经被别的开发工具占了(我们这台被 Remotion Studio 占了)。两种改法:
- 在
compose.yaml里把端口改成"127.0.0.1:3010:3000"; - 或者设置环境变量
TOONFLOW_SERVER_PORT——README 里没写,是翻apps/server/src/index.ts才看到的(同一处还有TOONFLOW_DATA_DIR)。
坑 3:没有登录鉴权,别把端口直接放到公网
README 自己也写了:Toonflow 的网页端没有登录。装在云服务器上时只绑 127.0.0.1,远程用 SSH 隧道访问:
ssh -N -L 3000:127.0.0.1:3000 用户@你的服务器
# 然后在自己电脑浏览器打开 http://127.0.0.1:3000
坑 4:host 网络会监听所有网卡
我们这台机器的 Docker 没有 bridge 网络(构建时报 network bridge not found),只好 --network=host,于是 -p 127.0.0.1:... 不生效,服务监听的是 *:3010。机器不对公网问题不大;对公网的服务器请用正常的 bridge 网络 + -p 127.0.0.1:3000:3000,或者用防火墙挡住。
# 我们最终的启动命令(没有 compose 插件时的等价写法)
docker build --network=host -t toonflow:local .
docker run -d --name toonflow --init --restart unless-stopped \
--network=host -e TOONFLOW_SERVER_PORT=3010 \
-v toonflowData:/app/data toonflow:local
数据在卷 toonflowData 里。千万别 docker compose down -v,那个 -v 会把你的项目一起删掉。
第二步:第一次打开,跟着点
界面默认跟系统语言。我们第一次打开是英文,先点右上角「语言」切成「简体中文」,下面所有截图和按钮名都以中文界面为准。
1. 快速开始页:点「稍后配置」

首次打开 #/hello「快速开始」:登录 TF-Router 自动配置 / 设备互联 / 添加私有提供商 / 稍后配置。
四个按钮里,新手直接点最小的那个 「稍后配置」。前两个会把你带去注册官方中转、配对设备;第三个要你马上填 API Key。这时候你还不知道要用哪家模型,没必要先填。
2. 首页:先认一下侧栏

首页 #/home:侧栏「首页 / 项目 / 探索 / 素材库 / 设备互联 / 设置」;中间是「今天要做点什么?」输入框和「新建项目」。
3. 设置:知道 Key 填在哪就行,现在可以不填

设置左侧分类:界面设置、常规配置、文本模型、媒体模型、插件市场、MCP、网络设置……

文本模型(写剧本、拆分镜用):TF-router(官方)「粘贴 API Key」→「保存」;也可以「添加供应商 / 添加自定义供应商」。

媒体模型(出图、出视频用):同样是粘贴 Key;另有「获取模型 / 编辑模型」。截图里没有填任何密钥。
供应商和要填的字段(只列字段名,Key 请你自己在界面里输入):
| 用途 | 供应商 | 要填什么 | 备注 |
|---|---|---|---|
| 文本 | deepSeek | apiKey | 拆分镜够用,便宜 |
| 文本 | 自定义 | API 地址、协议(openai-completions / openai-responses / anthropic-messages)、Key、模型 ID | 任何 OpenAI 兼容服务都行,本地 llama.cpp 也行 |
| 媒体 | metaso | apiKey、baseUrl | MiniMax-H3,768P 约 ¥0.09/秒,2K 约 ¥0.15/秒 |
| 媒体 | compshare(优云智算) | apiKey、minimaxApiKey | H3 768P 约 ¥0.08/秒,另有 seedream、seedance 等 |
| 媒体 | tfRouter / apiMart | apiKey | Seedance、Wan、H3、各家生图模型 |
| 媒体 | 自定义(含 ComfyUI) | 按生成的配置文件 | 接本地显卡 |
4. 新建项目 = 选一个服务器上的文件夹

首页点「新建项目」,弹出的不是起名框,而是「选择服务器工作目录」:新建文件夹 → 点「选择此目录」。
这一步第一次会让人愣一下:「新建项目」其实是选一个工作目录。点「新建文件夹」建一个(比如 rain-night),进去后点「选择此目录」。
5. 进入画布

空画布 #/workspace:中间「双击画布 自由生成节点」+ 图片生成 / 视频生成 / 音频生成;顶部「画布 | 文档」;右侧 AI 对话(搭建创作画布 / 梳理故事分镜 / 生成图片素材)。
6. 添加节点

底栏「+ 添加节点」:文本、图片、视频、音频、音频生成、3D导演台、逐帧拉片、图片生成、视频生成、上传。

「文本」节点:放剧本或单镜提示词。节点上有编辑、添加到素材库、下载图标。
另外两个界面细节:Toonflow 没有全局「导出」按钮,成品靠每个节点上的「下载」图标导出;顶部切到「文档」能看到工作区里的 assets 文件夹和 画布1.json。
第三步:剧本和分镜(这是决定成败的一步)
60 秒剧本:两个人、一个房间、一个道具
我们用了 defto 的新手原则:第一部片只练 两个人(林夏、店员阿哲)、一个场景(便利店内外)、一个道具(07 号钥匙)。结构按 钩子 → 升级 → 反转 → 悬念:
| 段 | 秒 | 发生了什么 | 观众要问的问题 |
|---|---|---|---|
| 钩子 | 0–17 | 雨夜门口捡钥匙,店里灯闪,字条「找到我」 | 谁在叫她? |
| 升级 | 17–34 | 进店,店员说「今晚就你一个客人」;字条背面写着「07号柜」 | 店员知道什么? |
| 反转 | 34–51 | 07 号柜里是她自己的红围巾,拍立得写着「明天 23:47」 | 她为什么在未来出现过? |
| 悬念 | 51–60 | 钟到 23:46,店员消失,手机收到自己号码发来的「别回头」 | 身后是谁? |
全片对白只有 32 个字,平均每秒约 0.5 字——节奏靠画面推,不靠嘴。
分镜怎么写:五条铁律
字段规范借用 RooYun《AI 漫剧分镜怎么写》,我们精简成五条:
- 情绪必须翻译成动作。 不写「她很害怕」,写「猛抬头、后退撞到柜门」。AI 看不懂形容词,只看得懂动作。
- 每镜 2–6 秒。 超过 6 秒画面容易崩,要更长就拆成两镜。
- 台词 ≈ 每秒 4 字,单镜不超过 20 字。 超了就拆镜或删字。
- 写清开始和结束状态。 下一镜的开始 = 上一镜的结束,这样才能用尾帧接首帧。
- 画面里的中文后期贴。 纸条、手机屏、钟面,AI 经常写错。
《雨夜便利店》14 镜总表
| 镜 | 秒 | 景别/运镜 | 画面 | 情绪→动作 | 台词 |
|---|---|---|---|---|---|
| S01 | 4 | 远景 / 缓慢下摇 | 雨中只有便利店亮着,霓虹倒映积水 | 孤独→空街+唯一光源 | — |
| S02 | 4 | 中景 / 缓推 | 林夏蹲下捡起黄铜钥匙,慢慢抬头 | 好奇→捡起时停半拍 | 这是谁的钥匙…… |
| S03 | 4 | 特写 / 微推 | 掌心钥匙,号牌「07」,雨点打在上面 | 紧张→手指收紧 | — |
| S04 | 5 | 全景 / 慢推 | 日光灯闪,货架边飘着纸条「找到我」 | 疑惑→后退半步 | ……找到我? |
| S05 | 4 | 中景背侧 / 跟拍 | 推开玻璃门,门铃晃,风衣滴水 | 犹豫→手在门把停一下 | (画外)欢迎光临。 |
| S06 | 5 | 中近景 / 固定 | 阿哲低头擦柜台,始终不抬眼 | 诡异→不对视、动作机械 | 今晚就你一个客人。 |
| S07 | 4 | 近景 / 横移 | 走到第三排货架,取下纸条翻面 | 谨慎→先回头看收银台 | — |
| S08 | 4 | 特写 / 固定 | 纸条背面圆珠笔字「07号柜」 | 震惊→手轻微发抖 | (内心)七号柜? |
| S09 | 5 | 中景 / 缓推 | ATM 旁一排旧寄存柜,停在 07 号前 | 下决心→深呼吸 | — |
| S10 | 4 | 特写 / 固定 | 钥匙插进锁孔,转动,咔哒 | 紧张→转得很慢 | — |
| S11 | 5 | 近景 / 缓推 | 柜里是同款红围巾 + 拍立得 | 不敢信→左手摸围巾,右手拿照片 | 这是……我的围巾? |
| S12 | 4 | 插入特写 / 极慢推 | 拍立得:她站在这家店里,「明天 23:47」 | 恐惧→只有手指在抖 | — |
| S13 | 4 | 中近→全景 / 甩镜 | 墙钟 23:46,收银台空了,抹布滴水 | 惊恐→猛抬头 | 人呢? |
| S14 | 4 | 特写→倒影 / 定格 | 手机:来自「林夏」——「别回头」;倒影里多了个人 | 僵住→眼睛往旁边瞟 | — |
完整版每镜还有开始/结束状态、声音、参考图、连续性要点、生成模式、引擎建议和可直接粘贴的英文提示词,都在下面的 CSV 里。
模板下载(Excel / WPS / 飞书表格可直接打开)
- 分镜模板 · Markdown(含单镜卡和五条铁律)
- 分镜模板 · 空白 CSV(15 行,18 个字段)
- 角色卡模板 · Markdown
- 《雨夜便利店》填好的 14 镜分镜 CSV(含英文提示词)
- 《雨夜便利店》60 秒剧本全文
在 Toonflow 里怎么放
- 手动(新手推荐):添加一个「文本」节点,粘贴整份剧本;再按镜号每镜加一个「文本」节点,粘贴 CSV 里那一镜的英文提示词。14 个节点竖着排一列,一眼能看到全片。
- 用 Agent:右侧对话点「梳理故事分镜」,或者直接说「拆成 14 镜、每镜 4–5 秒、竖屏 9:16,每镜写开始和结束状态」。前提是文本模型已经填了 Key。
第四步:角色定妆和关键帧
角色一致性靠两样东西:一张五视图定妆图,加上每条提示词里逐字粘贴的角色锚点。我们的锚点是:
Lin Xia (young East Asian woman, 24, short black bob haircut with straight bangs,
beige trench coat, bright red scarf draped over left shoulder)

林夏:正面 / 3/4 / 侧面 / 背面 / 脸部特写。黑色波波头、米色风衣、红围巾、白手机。小问题:围巾两肩都搭了,单镜提示词里要再强调「scarf over left shoulder」。

阿哲:凌乱黑发、深绿店员马甲、名牌「哲」(字写对了)、黑眼圈、始终低头,右手拿灰抹布。
在 Toonflow 里:添加「图片生成」节点贴定妆提示词生成;已经有图的话直接「上传」或拖进画布(单文件上限 100MB)。后面每个视频节点都把对应角色的定妆图连进去当参考。
关键帧精选

S01 · 空街、24H 霓虹倒映积水,画面中下部留了一点金属反光——给 S02 捡钥匙做铺垫。

S06 · 阿哲低头擦柜台,墙钟在上方——这个钟后面 S13 要用。

S08 · 「07号柜」这次一次写对,但正式发布仍建议后期贴字。

S11 · 柜里叠着同款红围巾和拍立得,她左手摸自己的围巾。

S12 · 拍立得右下角「明天 23:47」写对了;人物是 3/4 背影,不是严格背对,可以接受。

S14 · 手机「来自:林夏」「别回头」,玻璃倒影里多了一个人影。人影比预期明显,后期压暗一点更吓人。

S13 · ⚠️ 翻车样本:抽了两次,墙钟都不是 23:46(第一次挂在天花板上、指着约 10:10)。解决办法不是继续抽,而是剪辑时叠一张 23:46 的钟面。
第五步:逐镜出片,然后拼成 60 秒
成片(粗剪)
《雨夜便利店》第 1 集 · 60.0 秒 · 14 镜硬切 · 720×1280 · 24fps · 带 Muse 原生音轨。这是粗剪:还没加 IndexTTS 对白、没贴字、S13 钟面没修。
![]()
14 镜中帧一览(上排 S01–S07,下排 S08–S14)。脸、波波头、红围巾整体是稳的;店内布局在镜头之间有漂移。
在 Toonflow 里的操作
- 添加「视频生成」节点 → 把这一镜的关键帧(或上一镜尾帧)、角色定妆图连进来;
- 粘贴这一镜的英文提示词 → 选模型、画幅 9:16、清晰度、时长 → 发送;
- 生成好后点节点上的「下载」;
- 如果像我们一样在画布外用 Muse / Grok 出片,就把 mp4 拖回画布的「视频」节点,保持整片在一块画布上可见。
出片记录(照实写)
| 镜 | 来源 | 单次耗时 | 结果 |
|---|---|---|---|
| S01、S05、S06、S08、S09、S10、S12、S13、S14 | Muse I2V 新生成 | 136–216 秒 | 一次成功 |
| S02–S04 | 复用上一期 Muse 成片 | — | 直接用 |
| S07 | Muse I2V(借用 S08 的图当首帧) | 163 秒 | ⚠️ 能用但弱:「翻纸条」这个动作没看清 |
| S11 | 第 1 次 Muse → 兜底 Grok | 168 秒 | ❌ Muse 只回了一段文字、不出视频;Grok 返回 HTTP 422 |
| S11 | 第 2 次 Muse | 137 秒 | ✅ 成功 |
两个值得记下来的教训:
- S07 没有专属关键帧就容易弱。 我们偷懒用 S08 的纸条特写当首帧,结果「走过去 → 回头 → 取下 → 翻面」这么多动作塞进 4 秒,模型只做了一半。正确做法是给 S07 单独出一张关键帧,或者用首尾帧模式(首帧:站在货架口;尾帧:纸条背面朝镜头)。
- 失败了先原样重试一次,再考虑换引擎。 S11 第一次 Muse 回了一句「已按本次上传的这张图做第一帧生成……」却没有视频,Grok 兜底又 422(推测是 1584×2816 大图或参数被拒)。第二次原样重发 Muse 就过了。我们给自己定的规矩是每镜最多 3 次,三次都不行就改提示词或换引擎,别一直抽。
拼接
每镜按分镜秒数从头裁,统一 720×1280 / 24fps,然后硬切拼接:
# 每镜:裁到分镜秒数、统一尺寸帧率
ffmpeg -i s01-muse.mp4 -t 4 -vf "scale=720:1280:force_original_aspect_ratio=increase,crop=720:1280,fps=24,setsar=1" \
-c:v libx264 -crf 20 -c:a aac -ar 44100 -ac 2 trimmed/s01.mp4
# 全部:硬切拼接
ffmpeg -f concat -safe 0 -i list.txt -c copy rain-night-60s-rough.mp4
不想碰命令行,就把 14 段直接拖进剪映,按分镜秒数裁,效果一样。
账单(这一版 60 秒)
| 项 | 实际用量 | 现金 |
|---|---|---|
| 定妆图 + 关键帧(Grok 生图) | 2 张定妆 + 9 张新关键帧,其中 S13、S14 各抽 2 次 | 订阅额度内,¥0 |
| 视频(Muse I2V) | 11 镜新生成,共 12 次请求(S11 失败 1 次) | 订阅额度内,¥0 |
| 复用上一期 | S02–S04 关键帧和视频 | ¥0 |
| Toonflow 本身 | MIT 开源,自己机器跑 | ¥0 |
| 本次合计 | ¥0 现金(占用 Muse / Grok 订阅额度) |
如果你想把有口型的镜头(S06「今晚就你一个客人」、S11「这是……我的围巾?」等)换成云端 MiniMax-H3:
| 方案 | 估算 |
|---|---|
| 只给 4 个口型镜用云端 H3 768P(5 秒 × 每镜 3 次) | 约 ¥5–6 |
| 全片 60 秒都用 H3 768P(按 3 次重试) | 约 ¥15–17 |
| 全片 H3 2K(metaso) | 约 ¥27 |
| DeepSeek 用 Agent 拆分镜 | 不到 ¥1 |
| 对照:Toonflow 官方 README 案例(2 分钟片,Seedance 2.0 + GPT Image 2 + Claude) | 约 ¥130 |
时间上,出图约 30 分钟,视频单条 2–3.5 分钟、串行跑完约 40 分钟,加上配音和剪辑,一部 60 秒片大约 2.5–3 小时。
连续性:两个最实用的技巧
- 尾帧当下一镜首帧。 分镜里写好的「结束状态」就是为这一步准备的。每镜生成后,截最后一帧(播放器截帧,或
ffmpeg -sseof -0.1 -i 上一镜.mp4 -frames:v 1 tail.jpg),连到下一镜视频节点当首帧。动作连贯的段落(S09 → S10 → S11)最受益。 - Agent 默认走 Seedance,要用别的模型就点名。 Toonflow 内置的工作流经常默认调用 Seedance。如果你打算用 H3、Muse 或 Grok,要在对话里明确写「视频模型用 MiniMax-H3」,或者干脆跳过 Agent,用手动节点。不然很可能是一边报缺 Key、一边按你没打算用的模型计费。
协议红绿灯:想接单变现,先看这一节
B 站卖课的教程基本不讲这个,但对想拿成片接商单的人,这一节比任何提示词都重要:
| 工具 | 协议 | 灯 | 一句话 |
|---|---|---|---|
| Toonflow | MIT | 🟢 | 可商用,保留版权声明即可 |
| 火宝短剧 huobao-drama | CC BY-NC-SA | 🔴 | 禁止商用,名气大但不能拿来接单 |
| Wav2Lip | 仅限研究 | 🔴 | 口型同步老牌方案,不能商用;可看 Apache-2.0 的 LatentSync |
| ArcReel、moyin-creator、Openframe | AGPL-3.0 | 🟡 | 自己用没问题;改了代码再对外提供服务,要连带开源(传染性) |
| IndexTTS | 自定义协议 | 🟡 | 商用前读原文 |
想看更全的开源漫剧工具清单,推荐 awesome-manyu:41+ 个项目,每周刷新,自带协议红绿灯标注。
保姆级检查清单
- 桌面版(Win / Mac)或 Docker 装好;Docker 构建前换掉
bun.lock里的淘宝源 - 端口冲突就改端口或用
TOONFLOW_SERVER_PORT;云服务器只绑 127.0.0.1,用 SSH 隧道访问 - 右上角切「简体中文」→ 快速开始点「稍后配置」
- 新建项目 = 选工作目录;进画布先搭剧本和 14 个分镜文本节点
- 分镜五条铁律:情绪变动作、2–6 秒、每秒 4 字、写开始/结束状态、画面中文后期贴
- 两张五视图定妆图 + 角色锚点逐字粘贴进每条提示词
- 每镜最多 3 次;失败先原样重试一次
- 用尾帧接下一镜首帧;Agent 里点名你要的视频模型
- 节点「下载」导出 → 剪映裁剪、贴字(钟面、纸条、手机屏)、配音
- 想商用:检查每个工具的协议
下一步
- 这期粗剪还差:IndexTTS 对白、S13 钟面叠图、S07 重做(首尾帧)。补完会更新成片。
- 下一篇打算做 「分镜写好 vs 写差,出片差多少?同一场戏 6 种分镜写法实测」——RooYun 的模板很好,但还没人拿出片对照证明它到底好在哪。
- 再往后是开源工作台横评:Toonflow vs LocalMiniDrama vs ArcReel,同一剧本、同一套 API,比装机时间、出错点、花费和角色一致性。
还没看过引擎对比的,可以先回看上一期:同一个剧本,三家 AI 拍 15 秒漫剧:Muse vs Grok vs 本地 H3。
同一栏目
工具实测全部 →同一个剧本,三家 AI 拍 15 秒漫剧:Muse vs Grok vs 本地 H3
同剧本同关键帧,Muse、Grok Imagine Video 1.5、本地 MiniMax H3 各拼一条 15 秒漫剧;记下耗时、分辨率、拼镜 vs 单段、显存坑与接缝。
1 美分一张也能锁住商品?五家 AI 拍同一条表带:画质、成本与选型一次讲清
同一条第三方 Apple Watch 表带,两轮实测:同提示词产品静物 + 同参考图上腕图生图。逐张点评 Grok、MuseAI、Qwen Image 2.1、ChatGPT、Gemini,附 2026-10 公开价格对照和电商视觉选型矩阵。