简介这份资源是面向AI短剧与漫剧创作者的本地化一站式生成工具基于Seedance2.0接入覆盖剧本创作、剧本分析、小说改编、AI分镜、图片资产到成片输出的完整链路适合希望把真人短剧或漫剧工作流搬到本机、对数据隐私有要求的个人创作者与小型团队无需依赖云端即可完成从故事到成片的制作。压缩包共1180个文件约19.93MB以1125个webp图片资产为主辅以30个js脚本、json配置、md说明、svg与png素材以及Dockerfile、nginx.conf、docker-compose相关yml、sh启动脚本等部署文件兼顾前端界面与本地服务运行。目前已有413人学习下载。资源提供可运行的本地工作流管理平台目录结构清晰包含语音样本清单、样式表与容器化配置便于读者直接部署体验、按模块替换素材并在此基础上二次开发自己的短剧生成流程。1. AI漫剧工具链拆解从剧本到分镜Seedance2.0 到底能替人做多少事AI漫剧和 AI 仿真人短剧最近被讨论得很热但真正动手做一集三分钟以上的连续内容你会发现卡点根本不在“能不能生成一张好看的图”而在剧本结构、角色一致性、分镜节奏和资产复用这四件事上。Seedance2.0 专用创作工具这个标题本质上描述的是一条从剧本创作、剧本分析、小说改编到 AI 分镜、图片资产管理的完整链路最后打包成可复用的工作流。它适合两类人一是想用 AI 做短剧但被“每集角色长得不一样”折磨过的独立创作者二是手里有小说 IP、想低成本验证漫剧化可行性的小团队。这篇不吹工具多神只讲这条链路怎么搭、参数怎么定、哪里最容易翻车。2. 剧本创作与小说改编把文本变成 AI 能吃的结构2.1 为什么直接丢小说原文给 AI 分镜一定翻车很多人第一步就错了把小说一章几千字直接扔给分镜工具期待它自动产出镜头。结果要么镜头数量爆炸要么关键情节被压缩成一句话。原因在于小说是“阅读逻辑”分镜是“视觉逻辑”两者之间缺了一层结构化拆解。常见做法是先把小说改编成剧本格式再拆成“场次-镜头”两级结构。剧本格式的核心不是文学性而是可执行性每场戏必须有明确的地点、时间、出场角色、动作描述和对白。AI 分镜工具需要的是“谁、在哪、做什么、说什么”而不是心理描写和环境渲染。我一般会用一个中间层脚本把小说文本按章节切分后逐章做三件事提取角色列表、提取场景地点、提取关键动作节点。这一步可以用大模型 API 批量跑但提示词要锁死输出格式否则后续解析会崩。# 小说章节结构化拆解示例 # 输入单章小说文本 # 输出JSON 格式的场次列表 import json def parse_chapter_to_scenes(chapter_text, chapter_id): 将小说章节拆解为场次结构 chapter_text: 原始小说文本 chapter_id: 章节编号用于后续追踪 prompt f 你是一个剧本拆解助手。请将以下小说章节拆解为场次列表。 要求 1. 每个场次包含地点、时间、出场角色、动作描述、对白 2. 动作描述只保留可视觉化的内容删除心理描写 3. 输出严格 JSON 数组不要额外解释 章节内容 {chapter_text} # 实际调用大模型 API 时替换此处 # response llm_client.chat(prompt) # scenes json.loads(response) # 占位返回结构实际使用时替换为真实解析结果 scenes [ { scene_id: f{chapter_id}_01, location: 废弃工厂, time: 夜晚, characters: [林默, 神秘人], actions: [林默推开门, 神秘人转身], dialogue: [你终于来了。] } ] return scenes # 参数说明 # chapter_text 建议控制在 2000 字以内过长会导致模型遗漏细节 # 如果章节超过 3000 字先按段落切分再合并场次这段代码的关键不在调用哪个模型而在输出格式的约束。scene_id用章节号加序号是为了后续分镜和图片资产能按场次归档。actions字段只保留可画出来的动作这是给分镜工具减负。如果你跳过这一步直接让分镜工具读小说它会在“她心里五味杂陈”这种句子上浪费大量算力最后给你一个莫名其妙的空镜头。2.2 剧本分析怎么判断一场戏值不值得做剧本分析不是文学评论是成本评估。一场戏如果涉及三个以上角色同框、复杂动作、特殊场景制作成本会指数级上升。我一般会用一个简单的评分表来筛维度低分1分高分3分处理建议同框角色数1人3人以上高分场次拆成单人镜头动作复杂度静态对话打斗/追逐高分场次用分镜替代连续动作场景复用率新场景已有场景优先保留可复用场景对白密度无对白长对白长对白拆成多镜头这个表的作用是让你在改编阶段就砍掉“看起来精彩但做不出来”的场次。AI 漫剧的强项是静态或微动态镜头不是连续打斗。把打斗写成“三招定胜负”的分镜比硬做十秒连续动作要现实得多。2.3 小说改编的节奏控制一集三分钟需要多少场戏按我的经验一集三分钟的 AI 漫剧有效内容大约 150 到 180 秒。去掉片头片尾正片约 140 秒。如果每个镜头平均 3 到 4 秒一集需要 35 到 45 个镜头。按每场戏 5 到 8 个镜头算一集需要 5 到 7 场戏。这个数字很重要因为它决定了你改编小说时的取舍标准。一集只能容纳 5 到 7 场戏意味着小说里大量支线必须砍掉或合并。我一般会在改编前先画一个“场次预算表”把小说章节按场次拆出来后按重要度排序只保留前 7 场。剩下的要么合并要么留到下一集。提示不要在一集里塞超过 8 场戏否则每个镜头会被压缩到 2 秒以内观众根本看不清画面AI 生成的连贯性也会崩。3. AI 分镜与图片资产角色一致性靠的不是模型是资产管理3.1 分镜脚本的字段设计让每一帧都有据可查分镜脚本不是画分镜图是写清楚每个镜头要什么。我用的分镜表包含这些字段镜头编号、场次编号、景别、角色、动作、对白、参考图、生成状态。其中“参考图”和“生成状态”是很多人忽略的但它们是保证角色一致性的关键。景别我一般只分四种远景、中景、近景、特写。AI 生成时景别直接决定提示词里镜头焦段的描述。中景和近景是 AI 漫剧的主力远景用来交代环境特写用来强调情绪。# 分镜表生成示例 # 输入场次列表 # 输出带镜头编号的分镜表 def generate_storyboard(scenes): 将场次列表展开为分镜表 每个场次按 5-8 个镜头拆分 storyboard [] shot_counter 1 for scene in scenes: # 根据动作数量决定镜头数 action_count len(scene[actions]) shot_count min(max(action_count * 2, 5), 8) for i in range(shot_count): shot { shot_id: fS{shot_counter:03d}, scene_id: scene[scene_id], shot_type: 中景, # 默认中景后续手动调整 characters: scene[characters], action: scene[actions][i % action_count], dialogue: scene[dialogue][0] if scene[dialogue] else , ref_image: , # 留空后续填入角色参考图路径 status: pending } storyboard.append(shot) shot_counter 1 return storyboard # 参数说明 # shot_count 限制在 5-8 之间低于 5 节奏太慢高于 8 单镜头太短 # ref_image 字段是角色一致性的核心每个镜头必须关联到具体角色图 # status 用于追踪生成进度pending/generated/approved 三态这个分镜表生成后ref_image字段是空的需要手动或半自动填入。填什么填这个镜头里出现的角色的参考图路径。这就是下一节要讲的图片资产管理。3.2 图片资产库角色一致性的黑匣子在这里AI 漫剧最大的玄学就是“同一个角色上一集和下一集长得不一样”。解决这个问题不靠模型升级靠资产库。我的做法是给每个角色建一个独立文件夹里面放三类图定妆图、表情图、动作图。定妆图是角色的标准正面、侧面、背面各一张用于生成时的参考。表情图是喜、怒、哀、惊四种基础表情用于对白镜头。动作图是走、跑、坐、站等常用姿态用于动作镜头。这些图不需要全部手画可以用 AI 生成后人工筛选。关键是筛选标准要统一面部特征一致、服装一致、发型一致。我一般会生成 20 张选 5 张淘汰率很高但一旦定下来后续所有镜头都从这里取参考。资产类型数量要求用途更新频率定妆图3张/角色基础参考一旦确定不再改表情图4张/角色对白镜头每集可补充动作图6-8张/角色动作镜头按需补充场景图2-3张/场景环境参考复用为主这个表的核心逻辑是定妆图是锚点不能动表情图和动作图是扩展可以随剧情增加。场景图尽量复用新场景意味着新的生成成本。3.3 分镜到图片的生成流程提示词怎么写才不跑偏有了分镜表和资产库生成图片的提示词就有了骨架。我用的提示词模板是景别 角色描述 动作 场景 风格词。其中角色描述直接从资产库的定妆图标签里取不临时编。# 图片生成提示词组装示例伪代码实际调用各平台 API # 输入分镜表一行 角色资产库 shot_type中景 character_desc林默黑色短发灰色风衣冷峻表情 action推开门 scene废弃工厂夜晚月光从破窗照入 style动漫风格赛璐璐上色高对比度 prompt${shot_type}${character_desc}${action}${scene}${style} echo $prompt # 输出示例 # 中景林默黑色短发灰色风衣冷峻表情推开门废弃工厂夜晚月光从破窗照入动漫风格赛璐璐上色高对比度这个模板的关键是角色描述必须来自资产库不能每次重新描述。如果你每次都用不同的词描述同一个角色AI 就会给你不同的脸。把角色描述固化下来是保证一致性的最低成本手段。注意风格词也要固化。同一部剧里不要混用“赛璐璐”和“厚涂”否则画面质感会跳。我一般会在项目开始时定一个风格词表全剧只用这一套。4. Seedance2.0 工作流搭建把零散步骤串成可复用管线4.1 目录结构设计资产、剧本、分镜、输出怎么放工作流的第一步不是写代码是定目录。我用的结构是这样的project/ ├── scripts/ # 剧本和小说原文 │ ├── novel/ # 小说章节 │ └── screenplay/ # 改编后的剧本 ├── assets/ # 图片资产 │ ├── characters/ # 角色资产 │ │ └── linmo/ # 单个角色文件夹 │ └── scenes/ # 场景资产 ├── storyboard/ # 分镜表 ├── output/ # 生成结果 │ ├── images/ # 生成的图片 │ └── video/ # 合成的视频 └── config/ # 配置文件 └── style.json # 风格词表这个结构的好处是每个环节的输入输出都有固定位置脚本可以按路径读取不需要手动指定文件。config/style.json放风格词和角色描述模板全项目共用。4.2 批量生成脚本怎么一次跑完一集的分镜图单张生成效率太低一集 40 个镜头手动跑不现实。我一般写一个批量脚本读分镜表逐行组装提示词调用生成接口按 shot_id 命名保存。# 批量生成分镜图示例 import json import os def batch_generate(storyboard_path, output_dir, style_config): 读取分镜表批量生成图片 storyboard_path: 分镜表 JSON 路径 output_dir: 输出目录 style_config: 风格配置字典 with open(storyboard_path, r, encodingutf-8) as f: storyboard json.load(f) os.makedirs(output_dir, exist_okTrue) for shot in storyboard: if shot[status] ! pending: continue # 组装提示词 prompt f{shot[shot_type]}{shot[characters]}{shot[action]}{style_config[style]} # 调用生成接口此处为伪代码 # image generate_image(prompt, ref_imageshot[ref_image]) # 保存 output_path os.path.join(output_dir, f{shot[shot_id]}.png) # image.save(output_path) shot[status] generated print(f生成完成{shot[shot_id]}) # 回写状态 with open(storyboard_path, w, encodingutf-8) as f: json.dump(storyboard, f, ensure_asciiFalse, indent2) # 参数说明 # status 字段用于断点续跑已生成的镜头不会重复生成 # ref_image 传入角色参考图路径影响生成一致性 # 输出文件名用 shot_id方便后续按分镜表合成视频这个脚本的核心是status字段的断点续跑机制。批量生成中途失败是常态没有状态记录就得从头再来。ref_image参数是传给生成接口的参考图不同平台接口不一样但逻辑都是“给一张参考图让生成结果向它靠拢”。4.3 视频合成图片序列怎么变成带节奏的短剧图片生成完只是素材还需要合成视频。我一般用 FFmpeg 做基础合成每个镜头按分镜表里的时长设置停留时间对白镜头加淡入淡出动作镜头加轻微推拉。# 图片序列合成视频示例 # 假设图片按 shot_id 命名已按顺序排列 ffmpeg -framerate 1/3 -pattern_type glob -i output/images/S*.png \ -c:v libx264 -pix_fmt yuv420p -vf scale1080:1920 \ output/video/episode01.mp4 # 参数说明 # -framerate 1/3 表示每张图停留 3 秒 # scale1080:1920 是竖屏短剧标准分辨率 # 如果需要每个镜头不同时长改用 concat 方式逐个拼接这个命令是最简版本实际使用中每个镜头时长不同需要用 concat 文件列表逐个指定。但核心逻辑一样图片按顺序排列每张停留指定时间最后合成一个视频文件。提示合成前先检查图片命名顺序S001到S040必须严格按分镜表顺序否则会出现镜头错位。我一般会在合成前跑一个校验脚本检查文件数量和命名连续性。5. 避坑与排查AI 漫剧制作中最容易翻车的五个地方5.1 角色脸崩同一角色在不同镜头里像两个人现象第一集林默是瓜子脸第三集变成圆脸观众一眼看出不是同一个人。原因生成时没有传参考图或者参考图本身不统一。很多人第一次生成时随手选了一张好看的图当参考第二次又换了一张导致角色特征漂移。解决定妆图一旦确定全剧只用这一套。每个角色的定妆图放在固定路径生成脚本强制读取。如果某张定妆图生成效果不好重新生成后要替换掉旧图并重新生成所有已完成的镜头。这个成本很高所以定妆图阶段要多花时间。5.2 分镜节奏拖沓一集三分钟像看了五分钟现象每个镜头停留时间过长对白说完画面还停着观众觉得闷。原因分镜表里镜头数量不够或者合成时每个镜头统一给了 5 秒。AI 漫剧的镜头节奏比实拍快因为画面信息量低需要更频繁的切换来维持注意力。解决对白镜头 2 到 3 秒动作镜头 3 到 4 秒空镜不超过 2 秒。一集 40 个镜头是底线低于 35 个就会明显拖沓。合成时按镜头类型设置不同时长不要一刀切。5.3 提示词跑偏想要中景给了个全身远景现象分镜表写的是中景生成出来是远景角色小得看不清表情。原因提示词里景别词的位置太靠后或者被其他描述词淹没。AI 生成对提示词的前几个词权重最高景别必须放在最前面。解决提示词模板固定为“景别角色动作场景风格”。景别永远在第一位。如果还是跑偏在景别后加“close-up shot”或“medium shot”的英文对照部分模型对英文景别词更敏感。5.4 资产库混乱找不到某个角色的参考图现象生成到一半发现某个角色的参考图找不到了或者文件夹里混了多个版本。原因资产库没有版本管理手动保存时命名随意林默.png和林默_最终.png混在一起。解决角色文件夹里只保留一套定妆图命名固定为front.png、side.png、back.png。旧版本移到archive/子文件夹不删除但不再引用。生成脚本只读固定路径不读 archive。5.5 批量生成中断跑到一半报错不知道跑到哪了现象批量生成 40 张图跑到第 23 张时报错退出重新跑又从第一张开始。原因脚本没有状态记录或者状态回写失败。解决每生成一张就立即回写status字段不要等全部跑完再写。回写用临时文件加替换的方式避免写入中断导致 JSON 损坏。重新跑时跳过status ! pending的镜头。6. 进阶技巧用分镜表反推剧本修改点分镜表不只是生成图片的输入它还是剧本的体检报告。当你把一场戏拆成 8 个镜头后如果发现其中 5 个镜头都是两个角色站着说话这场戏的视觉表现力就有问题。我一般会在分镜完成后做一次“镜头类型分布检查”如果中景占比超过 70%说明这场戏太静态需要加入特写或远景来调节节奏。另一个技巧是用分镜表反推对白长度。一个镜头 3 秒正常语速能说 8 到 10 个字。如果分镜表里某个对白超过 15 个字要么拆成两个镜头要么删减对白。这个检查在合成前做比合成后发现口型对不上再改要省事得多。检查项健康值异常处理中景占比40%-60%超过 70% 加特写或远景单镜头对白字数8-12字超过 15 字拆镜头同场景连续镜头数不超过 6 个超过则插入环境空镜角色同框镜头占比不超过 30%超过则拆成单人镜头这个表是我做了十几集之后总结出来的不一定适合所有风格但能帮你避开最明显的节奏问题。最后说一个血泪教训不要在生成完所有图片后才开始合成视频一定要先合成一集试看确认节奏和角色一致性没问题再批量做后续集数。我最早做的时候一口气生成了三集的图合成后发现角色脸崩了三集全部重做。现在我的习惯是每集先做 5 个镜头合成 15 秒样片确认没问题再铺开。希望帮到你。本文还有配套的精品资源点击获取