Novel Chapter → Video Storyboard · JSON

把一章小说,
变成能拍的分镜脚本。

分镜编剧 Agent 接收一章小说正文(.txt),自动拆分人物 / 场景 / 动作,按「单镜 ≤15 秒、画面连续、可首尾帧理解」的规则产出忠实原文的分镜脚本 JSON——原来约 2.7 小时的人工分镜,现在约 92 秒

92s
单章分镜实测耗时
100×
相较人工提速
11
步可校验工作流
≤15s
单镜时长上限
S1
崎寂说完那句,不再停留,干脆利落转身,风衣下摆划破空气,潇洒离场。中全景淡入visual 摘录 · 第八章
8s
S2
直播间弹幕因听不清而炸锅。不发明崎寂刚才的台词,也不安排懂唇语的人成功翻译。中近景固定硬切
8s
S3
琉璃猛地从呆滞中惊醒,向前追了半步,脱口喊他。已走到拐角的崎寂停下,微微侧身,面具转向她。中全景硬切
8s
Live Demo

像在飞书里给它派活一样,试一下

下面的对话是真实运行流程的前端模拟:你发指令,它按 11 步工作流逐条推进,最后展示真实产出的 JSON(摘录自 2026-08-25 实际运行结果)。不接入任何真实模型与数据,也不会上传你输入的任何内容。

分镜编剧Agent
Feishu 私聊 · WebSocket 常驻
SIMULATED
待命
等待指令…
说明:演示内容为前端模拟,JSON 为真实运行产物的摘录;真实 Agent 通过私有飞书通道运行,不对公网开放调用。
11-Step Workflow

每一章,都走完这 11 步才交付

不是「读小说写摘要」——是从文本里识别可上镜的人物 / 场景 / 动作,拆成画面连续的镜头序列,并在不新增关键剧情的前提下自检、修正、落盘。

STEP 01

输入锁定与可读性校验

锁定用户指定的唯一 .txt;只认确切文件名,不扫目录、不猜文件;总字符数 ≥ 100 才通过。

异常:文件不存在 / 过小 / 不可读 → 停止并说明原因,不改选文件
STEP 02

章节元信息识别

检测章节标题行(第N章,中英文数字均可);文件内含多个章节标题时,按位置拆分、每章独立成篇。

识别不出 → 章节号/标题置空,回退占位命名,不因缺章节信息失败
STEP 03

可上镜信息提取

提取人物 / 场景 / 动作,只保留「影响可拍画面」的信息;心理活动、抽象叙述默认不提取。

仅被提及、不出镜的角色不安排出镜
STEP 04

镜头切分

景别 / 人物组合 / 场景空间 / 时间跳跃 / 动作目标明确变化时切镜;单镜画面连续、≤15 秒。

将超时先找停顿点;找不到则强制切镜并留痕
STEP 05

镜头字段生成

逐镜生成景别、运镜、时长、首尾帧、对白、角色、场景、音效、转场;先保证 visual 可拍,再补其余。

对白尽量保留原句;首尾帧可合理推出才填,否则 ""
STEP 06

对照原文自检与自动修正

按「原文依据 → 人物场景一致 → 可拍性 → 镜号切镜」检查;新增原文没有的关键情节 / 人物 / 结果 = 一票否决。

形式问题自动修;解释权问题交人
STEP 07

附件归档

缺陷进 issues、优化进 suggestions、说明进 notes;强制切镜、降级、歧义必须留痕。

STEP 08

结构化校验(写盘前闸门)

合法 JSON、meta/shots/attachments 三分结构、镜号连续、时长合法、空值约定正确——全部通过才允许写盘。

任一硬条件失败不写盘;可修则修后复检
STEP 09

命名与安全落盘

按「章节号-标题-时间戳-分镜.json」命名;重名不覆盖、追加序号;写后读回校验。

占位词:未识别章节 / 未识别标题(带源文件基名)
STEP 10

阻断性风险判定

存在必须人工介入的阻断项(严重歧义、人物冲突、不可拍等)→ 暂停自动交付,保留产物与 issues,请求人工处理。

STEP 11

交付判定

执行交付清单,输出状态与结果定位:成功 / 成功但有 issues / 失败 / 待人工。

「有文件」不等于「交付成功」
Input / Output Contract

输入输出契约:先约定,后执行

一切行为受这份契约约束——输入要死、画面为纲、忠实原文、先规则后自拟、交付看清单。

输入

用户指定的一章小说正文
约定
格式.txt,含章节号和标题(首行识别不出不阻断)
大小总字符数 ≥ 100
来源飞书消息给文件名或绝对路径;只给文件名时默认在指定根目录按确切文件名解析
数量一次一章;单文件含多章标题时自动拆分、每章独立成篇

输出

该章分镜脚本 JSON
约定
文件章节号-标题-时间戳-分镜.json
顶层meta / shots / attachments
镜头shot_no 从 1 连续;duration_sec 为 0<x≤15
空值首尾帧无内容用 ""(禁用 null);attachments 无内容为 []

每镜字段

shots[] 完整字段
字段说明
shot_no镜号,从 1 起连续不重复
shot_size景别(优先已知枚举)
camera_move运镜(优先已知枚举)
duration_sec时长,0 < x ≤ 15
start_frame / end_frame首尾帧,无则 ""
visual画面描述(连续、可拍、只写本镜内可见内容)
narration_or_dialogue旁白 / 对白(尽量保留原句)
characters角色字符串数组
scene场景
audio{ sfx, bgm } 两键,常规镜头可空
transition转场(优先已知枚举)

已知枚举

优先选用,必要时允许自拟并留痕
维度枚举
景别极特写 / 特写 / 近景 / 中近景 / 中景 / 中全景 / 全景 / 远景 / 大远景
运镜固定 / 推 / 拉 / 摇 / 移 / 跟 / 升 / 降 / 环绕 / 手持 / 甩
转场硬切 / 淡入 / 淡出 / 叠化 / 闪白 / 闪黑 / 擦除 / 分屏 / 匹配剪辑
真实输出文件命名示例
第八章-别说傻话了-20260825-010018-分镜.json
第七章-是魔鬼吗-20260825-010018-分镜.json
1-重生漫威-我爹是托尼·斯塔克-20260820-分镜.json
Capability & Boundary

能做与不能做,白纸黑字

能力边界是 Agent 的「剧本围读」——明确写死的红线,比能力本身更重要。

它能做

  • 忠实原文拆镜:可合理推断画面,不新增原文没有的关键情节 / 人物 / 结果
  • 自动多章拆分:单个文件含多个章节标题时,按位置拆分、每章独立成篇
  • 风险留痕:强制切镜、降级处理、识别失败均写入 attachments 供人工复核
  • 自检自修:镜号、格式、空值、枚举就近修正等自动完成
  • 安全落盘:写盘后读回校验 JSON 可解析;重名不覆盖、追加序号
  • 交付判定:四种明确状态——成功 / 成功但有 issues / 失败 / 待人工

它不做(红线)

  • 不生成视频 / 配音 / 配图——只出分镜脚本,不产出成片
  • 不改写、不续写小说正文
  • 不扫目录挑文件——只处理你指定的确切文件,找不到就报「文件不存在」
  • 不批量多章——一次只处理一章
  • 不维护跨章人设库(造型一致性只在 suggestions 里提醒)
  • 不自动发布 / 上传到任何外部平台
成功
可交付,且 issues 为空
成功但有 issues
可交付,存在非阻断风险或妥协,必须提示查看
失败
不可交付,返回明确原因
待人工
存在阻断项(严重歧义 / 人物冲突 / 不可拍等),等人工裁定
人工兜底原则:Agent 修表达和格式;人裁定剧情解释权与不可拍难题。触发阻断条件时,Agent 会暂停自动推进并写明原因,绝不为了「看起来完整」掩盖问题。
Built On

技术栈

一个专业 Agent 平台 + 一个聊天入口 + 一套文档工具,没有自研轮子。

Runtime
Hermes Agent 平台

承载 Agent 本体:SOUL.md 人设与 11 步工作流、storyboard-writer 技能 + 5 份规则文档、模型栈(主模型 + 多模型聚合)、JSON 校验与安全落盘、交付回执。

Channel
飞书机器人 · WebSocket

「分镜编剧Agent」常驻飞书私聊,open_id 白名单准入;gateway 由系统守护进程 7×24 托管,发一条消息即触发。

Tooling
feishu_docs.py CLI

飞书云文档 / 表格 / 多维表格 CRUD,零第三方依赖(纯标准库),用于把分镜脚本进一步发布成团队可协作查看的文档。

Model Stack
可配置模型栈

主模型 + 参考模型 + 聚合器均可按需更换(当前:deepseek 主模型 + grok 参考 + Claude 聚合的 MoA 架构),规则全部本地化、不依赖特定模型。