
简介面向AI漫剧与AI短剧创作者的一套Coze平台Seedance视频脚本大师工作流以13个节点串联LLM编排与AI生图链路覆盖剧本解析、分镜规划、角色/道具/场景编排、全局风格控制到最终脚本格式化输出可显著压缩从文本创意到视觉成片的制作周期。压缩包共53个文件以34个Python脚本承担核心处理逻辑6个JSON承载各环节LLM配置与提示词模板5个Shell脚本用于环境搭建与本地运行另有Markdown说明、requirements依赖及Coze工程入口文件整体仅94KB轻量且便于部署。目前已有59人学习下载适合希望快速搭建或二次开发AI漫剧工作流的创作者与开发者。包内包含完整的场景编排、分镜规划、角色/道具/全局风格等LLM配置示例以及可直接执行的生成脚本和运行辅助工具按源码、配置、文档分层组织导入Coze Bot后即可按需调整节点与提示词复用价值较高。1. 从一句选题到一条漫剧这个 Seedance 脚本工作流把最耗人力的中间层自动化了做漫剧短视频的朋友应该都有同感一条 60 秒的漫剧最费时间的不是剪辑而是「脚本 分镜」这一层。剧情要编、镜头要切、画面要描述、每个镜头还得配好运动轨迹最后再跟生图模型磨角色一致性和画风一个人一天能稳定产出两三条就算不错。这套「漫剧大师极速版」工作流本质是把这条人力流水线搬进 Coze扣子输入一个选题13 个节点接力完成 LLM 编排剧情、分镜结构化输出、AI 生图出画面、Seedance 图生视频出动态镜头。适合两类人一是靠漫剧账号做内容矩阵的运营想从一条一条手写变成一次跑一批二是刚接触 coze 工作流搭建的开发者想看看大模型 LLM、代码节点、图像生成和视频插件是怎么串成一条真实生产线的。2. 13 个节点怎么编排从一句话选题到 Seedance 能直接消费的分镜包2.1 四段式分层为什么不能一个 LLM 节点干完全部的活漫剧这条链路上最忌讳的就是「凑合」——让一个 LLM 节点既写剧情又写分镜还写画面描述看起来省事跑两次就知道问题输出一长模型就开始顾此失彼前面定的角色性格到后面就忘了分镜数量忽多忽少给生图的提示词也不可读。所以我搭这类工作流时的第一原则是每个节点只干一件能被校验的事LLM 节点之间用代码节点和条件判断节点做隔离不让模型的输出直接流到下一个模型。这套 13 节点工作流按职责分成五段对应的节点明细如下分段节点类型输入产出输入与清洗01 开始节点系统节点选题、角色设定、风格、集数结构化入参输入与清洗02 文本清洗代码节点 Python开始节点的原始文本清洗后的纯净文本大纲编排03 大纲生成LLM 节点清洗后的选题文本3 个候选剧情大纲大纲编排04 大纲校验条件判断节点大纲 JSON 字符串合格/重试/终止分支分镜展开05 分镜生成LLM 节点选中大纲分镜 JSON 数组分镜展开06 分镜清洗代码节点 Python分镜 JSON 字符串可遍历的分镜数组分镜展开07 循环入口循环节点分镜数组逐个分镜对象素材生成08 图像生成图像生成节点image_prompt分镜静态图素材生成09 图片后处理代码节点 Python图片 URL 或 Base64规范尺寸的图片素材生成10 视频提示词改写LLM 节点分镜文本Seedance 风格 video_prompt素材生成11 视频生成视频生成插件节点图片 video_prompt分镜动态视频收口输出12 结果校验条件判断节点视频产物列表成功/失败统计收口输出13 结束节点系统节点全部产物视频链接 脚本文案这样分段以后每段的失败都只影响本段不会把「剧情写崩」和「画面生成失败」混在一起排查。后面几节把关键节点的参数和写法展开讲。2.2 输入层开始节点先定义好「用户能给你什么」开始节点是工作流唯一面向使用者的口子字段设计比想象中重要。我一般只开放四个字段story_topic选题必填、character_set角色设定JSON 字符串选填、style画风关键词选填、episode_count单次生成集数默认 1。选填字段都配默认值不要强迫用户在入口填一堆东西否则工作流在第一步就会劝退一半人。字段类型我坚持用字符串而不是数组原因是扣子的开始节点对数组格式的输入不友好用户从文档里复制粘贴过来格式经常是坏的清洗节点还要多写一套解析逻辑。文本清洗节点只做三件事去掉多余空白和换行、去掉 Emoji 和 URL、把全角标点转半角。代码很短但省下来的 token 很可观尤其是当用户从短视频文案里直接复制内容进来时import re def clean_input(raw: str) - dict: text raw.strip() text re.sub(r[\U0001F300-\U0001FAFF], , text) # 去 Emoji text re.sub(rhttps?://\S, , text) # 去 URL text text.replace(\u3000, ).replace(\n, ) text re.sub(r\s, , text) return {cleaned: text, length: len(text)}逻辑说明raw从开始节点传入返回清洗后的文本和一个长度计数。length不是给用户看的是给后面的条件判断节点用的——超过 500 字我直接走错误分支返回提示不让超长文本进 LLM 烧 token。参数说明Emoji 的 Unicode 区间\U0001F300-\U0001FAFF覆盖了绝大部分常用 Emoji顺手把兼容 Emoji 也处理掉URL 的正则只匹配http/https开头防止误删正文里的斜杠写法。2.3 大纲层先出三个候选方向再用条件判断做质量闸门我不让 LLM 直接写分镜。第一道 LLM 节点只干一件事根据选题产出三个候选剧情大纲。每个大纲带主线、核心冲突、爆点出现的位置、转折逻辑。这样做的理由很实际直接写分镜时模型容易「自我感觉良好」一个开头就铺了八百字等发现剧情不够撑全集数已经来不及。先出大纲运营可以在工作流之外人工挑一个也可以直接让条件判断节点按规则自动择优。大纲节点用扣子的大模型节点模型选支持长上下文的temperature设 0.7max tokens设 2000避免大纲阶段就把上下文窗口挤爆。提示词里明确要求只输出 JSON 数组你是一名漫剧编剧。根据下面选题生成 3 个候选剧情大纲。 每个大纲必须包含 - main_line主线50 字内 - conflict核心冲突30 字内 - climax_at爆点位置第几集第几镜 - twist转折逻辑80 字内 输出格式严格 JSON 数组不要输出任何解释文字。 [{main_line: ..., conflict: ..., climax_at: ..., twist: ...}] 选题{story_topic} 角色设定{character_set}后面接一个条件判断节点解析返回内容校验是否包含三个对象、每个字段是否都有值。不合格就回到 LLM 节点重试一次重试逻辑在扣子里用「循环 计数变量」实现上限两次超时直接结束工作流并返回失败原因避免死循环烧钱。为什么 13 个节点里要放两个校验用的条件判断节点因为 LLM 不是确定性程序它输出「像」JSON 不代表「是」JSON。把校验做成显式闸门错误率就会从「偶发」变成「可控」。2.4 分镜层把大纲展开成数组为后面的循环节点铺路大纲通过校验后第二个 LLM 节点负责把选中的大纲展开成完整分镜表。这一步的输出结构直接决定后面几个节点能不能逐个处理所以必须规定成 JSON 数组每个元素是一个分镜对象包含scene_id、narration旁白/台词、character出场角色、mood情绪、shot_type景别、camera_move运镜方式、image_prompt给生图模型、video_prompt给视频模型。分镜对象里同时预埋image_prompt和video_prompt两个字段是这套工作流的关键设计AI 生图模型和 Seedance 视频模型的提示词语法完全不同前者吃画面元素和风格后者吃运动轨迹和镜头语言硬憋在一个字段里两边都不讨好。我给分镜 LLM 的指令核心是每个分镜只表达一个镜头、一个画面、一句话剧情不要图省事把两个镜头写进一个 scene。分镜数量控制在 8 到 12 个超过上限会让后续生图和视频环节的耗时成倍增长用户等不起。3. 让 LLM 输出能被 Seedance 消费JSON 结构、代码清洗与提示词改写3.1 分镜对象的数据结构人读一份、模型读一份分镜是这套工作流里所有下游节点的数据契约结构必须定死。我给分镜 LLM 的示例是一个具体的 JSON 对象让它照着这个形状生成{ scene_id: 1, narration: 她推开咖啡馆的门发现窗边坐着的人正是失踪三年的哥哥。, character: 林晚, mood: 震惊, shot_type: 中景, camera_move: 缓推, image_prompt: 林晚中短发米色针织衫推开玻璃门室内暖光日漫风格背景细节丰富, video_prompt: 镜头跟随林晚从门口走向窗边中景缓推背景虚化咖啡馆暖光 }字段说明narration最后会给到配音或字幕环节是给人读的台词文本image_prompt直接进图像生成节点video_prompt进 Seedance 视频生成节点是给模型读的。character和mood看起来是冗余字段实际上有大用——后面接的代码节点可以从数组里按character分组检查同一个角色在不同分镜里的描述是否冲突这也是排查角色一致性问题的数据基础。3.2 工作流编码里的脏活LLM 输出的 JSON 根本不是 JSON无论提示词里怎么强调「只输出 JSON不要解释」LLM 节点还是偶尔给你带个 json 包裹、行尾逗号甚至全角冒号。这种脏输出直接送进下一个节点必炸所以必须有一个代码节点专门做清洗。我在第 6 号节点里放的就是这个解析函数import json, re def parse_llm_json(raw: str): raw raw.strip() # 去掉 markdown 代码块包裹 raw re.sub(r^json|$, , raw, flagsre.MULTILINE).strip() # 全角标点转半角避免 json.loads 直接报错 raw raw.replace(, ,).replace(, :) # 去掉行尾逗号兼容模型多打一个逗号的情况 raw re.sub(r,\s*([}\]]), r\1, raw) try: return json.loads(raw) except json.JSONDecodeError: # 兜底找到第一个 [ 和最后一个 ]截取数组部分 start, end raw.find([), raw.rfind(]) if start -1 or end -1: raise ValueError(no json array found) return json.loads(raw[start:end1])逻辑说明第一步处理的是最常出现的代码块包裹第二步是全角转半角中文输入法下模型很容易输出中文冒号第三步去尾逗号正则,\s*([}\]])匹配的是「逗号后面紧跟右括号」的情况。参数说明第三步正则看起来简单但前提是字段值里不能出现逗号所以我在分镜提示词里写死「描述里不要使用逗号用顿号或空格代替」。清洗失败的节点走错误分支把原始输出写进日志方便判断是模型抽风还是提示词约束不到位。3.3 视频提示词改写Seedance 不读台词只读镜头语言Seedance 这类图生视频模型对提示词的偏好跟生图模型差别很大它可以接受一段自然语言描述但描述里如果写「她很伤心」这种情绪词模型不知道该让画面动哪里写成「镜头缓慢后拉人物低头肩膀轻微起伏背景雨点下落」它就能稳定输出一个情绪镜头。所以分镜对象里的video_prompt不能在分镜生成环节一次性搞定我在第 10 号节点单独放了一个改写 LLM你是视频提示词工程师。把下面的分镜描述改写成适合图生视频模型使用的提示词。 约束 1. 只描述可见画面不写心理活动和情绪词 2. 明确主体运动使用动词 3. 明确相机运动固定 / 推 / 拉 / 摇 / 移 / 跟随 4. 明确光线方向和景别 5. 不超过 80 字不使用逗号以外的标点 输入分镜 旁白{narration} 画面{image_prompt} 运镜{camera_move}改写前和改写后的差异非常明显。「她发现了哥哥」这种描述给到 Seedance生成结果大概率是人物愣在原地的静态画面改成「林晚抬头看向窗边镜头缓推逆光中景」画面就有了运动感和情绪张力。漫剧能不能出「电影感」这一步起的作用比生图参数还大。这套流程也回答了「seedance 如何制作漫剧」这个高频问题不是把剧情文本丢给视频模型而是先把剧情翻译成镜头语言再让视频模型执行。4. 从 AI 生图到图生视频图像节点和 Seedance 的衔接参数怎么设4.1 图像生成节点先锁角色一致性再谈画质这个工作流里的 AI 生图节点用扣子自带的图像生成模型参数设置按漫剧的竖屏场景来图片尺寸选 9:16 竖版这是漫剧的主流画幅生成数量每镜 1 张多生成只会增加筛选成本一致性问题和数量无关风格强度按画风需求调节日漫风格可以拉高一点写实风格保持中档。图像提示词不要让人手动拼我在第 9 号代码节点里拼装CHARACTER_ANCHORS { 林晚: 林晚中短发米色针织衫日常向二次元少女, 哥哥: 哥哥深色外套高个子成熟轮廓日常向二次元 } def build_image_prompt(scene: dict, style: str) - str: anchor CHARACTER_ANCHORS.get(scene[character], scene[character]) return f{anchor}{scene[image_prompt]}{style}竖构图人物主体居中逻辑说明CHARACTER_ANCHORS是每个角色的固定锚定描述无论哪个分镜用到这个角色生图提示词里都带同一段锚定文本这是成本最低的一致性手段。脚本通过scene[character]查表查不到就用原始角色名兜底不会报错。参数说明style从开始节点传入比如「日漫」「韩漫」「厚涂」「赛博朋克」同一批分镜全部追加同样的风格后缀。锚定描述建议写满 30 字以上太短等于没写。4.2 图生视频节点把运动幅度当成风险旋钮图生视频节点接收上一节点的输出图片和改写好的video_prompt调用的就是 Seedance 能力。这里有几个参数是我每次搭都会写进说明文档的时长默认 5 秒选更长的时间出片耗时和费用都成倍增加漫剧单镜头 5 秒已经够用运动幅度第一版不要拉满控制在中等档位幅度拉大伴随的是崩脸和形变概率直线上升翻车率极高镜头运动参数要和video_prompt里写的保持一致如果不一致节点以参数面板为准提示词只起补充作用。这里有一个很多人忽略的点图生视频不是拿「任意一张图」都能生成好结果。图片本身要留出运动余量——主体不能顶满画框背后要有可交代的环境信息。所以在第 9 号图片后处理节点里我除了校验尺寸和格式还会检查图片主体占比主体占比超过 80% 的图直接退回生图节点重新生成并追加「画面上下留白主体居中偏上」的约束。这个校验用图片的透明通道信息近似估算不需要接复杂的视觉模型。4.3 循环与批处理13 个节点里最容易被忽略的节流点分镜是数组所以第 7 号循环节点包住图像生成、图片后处理、视频生成这三个节点逐个分镜处理。循环的好处是每个分镜独立失败、独立重试不会像「一次生成全部分镜图片」那样一个失败全盘重来。但有三个细节直接决定工作流能不能跑完第一循环内节点越少越好视频提示词改写这类轻量 LLM 调用不依赖图片放在循环外一次性处理完再进循环第二循环的并发数设 1不要试图并行调多个高耗时节点扣子对并发请求有限流并行反而容易触发限流把整条工作流拖死第三每个分镜的视频生成节点单独配重试重试上限 2 次超过就跳过当前分镜继续最后在第 12 号结果校验节点汇总失败列表而不是让一个失败分镜卡住后面所有分镜。提示循环节点里所有节点的超时时间统一设置不要用默认值。视频生成节点耗时最长超时设 120 秒图像生成设 60 秒其他设 30 秒超时即重试避免单节点无限挂起。5. 实战避坑Coze 工作流最容易翻车的 5 个环节5.1 LLM 返回的 JSON 永远比想象的脏现象工作流跑到清洗节点直接报ValueError: no json array found打开日志看原始输出明明是一段长得像 JSON 的文本就是解析不过。原因模型在数组前面插了一句「好的这是你的分镜」或者用了中文逗号、行尾多了一个逗号、字段名带了双引号转义。解决清洗函数做四步处理之后再加一道兜底截取逻辑但更重要的一步在提示词侧——明确写「只输出 JSON 数组首尾不要任何解释文字」同时把「描述里不使用逗号」写进字段约束。我见过最多的情况不是模型不会输出而是提示词里根本没强调这件事。5.2 角色一致性玄学换个景别就变脸现象同一角色在第 1 镜和第 5 镜生成的图不像同一个人发型、衣服、脸型对不上。原因生图节点没有固定种子且角色锚定描述太短或者锚定词放在提示词最后被模型忽略了。解决三管齐下。第一图像生成节点固定seed值同一个分镜重试多次不会换人第二锚定描述写到 30 字以上放到提示词最前面并用「」中文逗号和画面描述隔开第三有条件的话给每个角色配置一张参考图扣子图像生成节点支持参考图输入参考图的一致性效果比任何文字锚定都稳定。5.3 Seedance 输出被裁切字幕没地方放现象生成出来的视频里人物主体被切掉一半或者后期加字幕时发现字幕区域正好压在人物脸上。原因生图阶段主体顶满画框没有预留安全区图生视频时镜头一动主体就出画了。解决在image_prompt里统一追加「上下留白主体居中偏上」约束视频比例固定 9:16后期字幕放在画面底部 20% 的区域这个位置在生图时就要避免放重要内容。这个坑属于典型的「生图时没想视频的事」等到了视频阶段才发现构图错了只能回头重新生图一镜返工等于整条链路重跑一遍。5.4 多集漫剧上下文超长导致大纲缩水现象设置生成 3 集结果第一集分镜写得很细第二集开始分镜数量明显变少第三集直接缩成一个模糊的收尾。原因分镜生成节点的max tokens设置太小上下文窗口被前面的内容占满模型只能压缩后面集数的内容。解决把「多集展开」的逻辑拆分——大纲节点只输出每集的核心冲突和爆点然后按集数循环调用分镜生成节点每一集只带自己那一集的大纲进上下文不让上一集的分镜污染下一集。这个方案牺牲了一点节点数换来了输出质量的稳定性。13 节点里有 3 个 LLM 节点每一个都在干不同的事这就是原因。5.5 循环节点把整条工作流拖死现象10 个分镜跑到第 3 个就超时整个工作流失败前面生成的成果全部丢失。原因循环里串了三个高耗时节点且没有配重试上限一个节点卡住后面的分镜全部排队等死。解决循环内只留图像生成和视频生成视频提示词改写挪到循环外视频生成节点加重试策略重试 2 次后跳过当前分镜继续第 12 号结果校验节点收集失败的scene_id最后统一返回「成功 8 镜、失败 2 镜失败镜为第 3、7 镜」。宁可让用户看到不完整的成果也别让用户等十分钟等来一个整体失败。6. 把这套 13 节点方案升级成量产底座三个立刻能用的验证技巧先解决一个刚跑通时最容易忽略的问题怎么判断这次跑出来的结果比上次好我习惯在结束节点前加一个「LLM 裁判」分支把生成的分镜 JSON 数组丢给一个只打分不生成内容的 LLM 节点按四个维度打分剧情爆点密度、分镜衔接流畅度、角色一致性描述、video_prompt 的镜头语言完整性。分数低于阈值的工作流自动回到大纲节点重新生成一轮实现类似「LLM as Judge」的质量闭环。第二个技巧是固定种子做回归测试。同一个选题、同一份参数每周跑一次如果两次生成的画面差异过大说明种子没有被正确传递检查图像生成节点是否勾选了「固定随机种子」。漫剧是连续剧用户对角色外观的记忆跨集存在种子不稳定会直接毁掉续集观感。第三个技巧是把风格从「写死在节点里」提升为工作流入参。刚开始我把「日漫」直接拼在图像提示词后缀里后来发现想试「韩漫」风格要改节点麻烦。现在style字段从开始节点传入生图提示词和视频提示词的改写模板里都引用这个变量一套工作流给无数种画风用这才是「极速版」该有的样子。我自己的教训是最早一版把所有逻辑塞进一个 LLM 节点跑通之后一换选题就翻车后来拆成大纲、分镜、视频提示词三个独立节点错误率降了一个数量级。工作流搭建的价值从来不在于节点多而在于每一层都能单独验证、单独重试。希望这套拆解能帮你少踩几个坑把漫剧量产这件事真正跑起来。本文还有配套的精品资源点击获取