简介:这是一套面向AI短剧与AI漫剧创作者的本地化生成工具,基于Seedance2.0接入,覆盖从剧本创作、剧本分析、小说改编到AI分镜、图片资产管理的完整链路,适合希望把故事快速转化为成片、又对数据隐私有要求的个人创作者与小型团队。压缩包共1180个文件,约19.93MB,以1125个webp图片资产为主,辅以30个js脚本、json配置、md说明文档及Dockerfile、nginx.conf、docker-compose.yml等部署文件,兼顾素材库与本地运行环境。资源内置短剧工作流管理平台,灵活度较高,可支撑AI真人剧与AI漫剧两类形态,数据不出本机。目前已有413人学习下载,读者可借此搭建本地短剧生产管线,理解分镜与资产组织方式,并参考其目录结构与容器化配置快速启动项目。
1. 从剧本到成片:这套 Seedance2.0 专用工具到底替谁省了事
如果你最近在折腾 AI 漫剧或者 AI 仿真人短剧,大概率已经被一条流水线折磨过:小说改剧本、剧本拆成分镜、分镜再一张张生成主体图、最后拼成能看的短剧。每一步单拎出来都有工具,但串起来就是一堆复制粘贴和格式转换。这套 Seedance2.0 专用创作工具,本质上是把「剧本创作 → 剧本分析 → 小说改编 → AI 分镜 → 图片资产」这条链路收进一个包里,让 AI 短剧的制作流程从散装变成成套。它适合两类人:一类是零基础想跑通 AI 漫剧制作全流程的新手,照着模块顺序走就能出东西;另一类是已经用过单点工具、被资产管理和分镜一致性坑过的熟手,想看看别人的工作流是怎么组织的。下面我按实际拆包和复现的顺序讲,重点放在每个模块怎么用、参数怎么设、哪里容易翻车。
2. 剧本创作与小说改编:把原始文本喂进去之前先做这三件事
2.1 为什么不能直接把小说丢给模型
很多人拿到这套工具的第一反应是把整本小说粘贴进剧本创作模块,指望它一次吐出可拍的分镜脚本。血泪经验是:这样出来的东西角色名会漂移、场景会合并、对白会丢。原因不复杂,长文本在切分和改写过程中,模型对「谁在说话、在哪说话」的锚点会逐渐模糊。常见做法是先把小说按章节或场景切成 800~1500 字的片段,每个片段单独跑改编,最后再合并。这套工具的剧本创作模块本身支持分段输入,但分段策略得你自己定。
具体操作上,我一般会先做三件事:提取角色表、标注场景切换点、把叙述性描写和对白分开。角色表不用很复杂,一个 JSON 就够,字段包括角色名、别名、性别、年龄段、外貌关键词。场景切换点用空行或者标记符号标出来,方便后续分镜模块识别。对白和叙述分开是为了让剧本分析模块能准确统计每个角色的台词量,避免出现主角没几句话、配角疯狂输出的情况。
{ "characters": [ { "name": "林晚", "aliases": ["晚晚", "林小姐"], "gender": "female", "age_range": "22-26", "appearance_keywords": ["长发", "冷色系穿搭", "清瘦"] }, { "name": "陆沉", "aliases": ["陆总", "阿沉"], "gender": "male", "age_range": "28-32", "appearance_keywords": ["短发", "深色西装", "高挑"] } ], "scene_breaks": ["###SCENE###"], "dialogue_marker": "「」" }这个 JSON 的作用是给后续所有模块提供一致性锚点。角色别名不写全,分镜阶段就会出现同一个人被生成成不同脸的情况。appearance_keywords 不用写得太文学,越具体越好,比如「冷色系穿搭」比「气质清冷」对图像生成更有约束力。scene_breaks 和 dialogue_marker 是给剧本分析模块用的,告诉它哪里切场景、哪里是台词。
2.2 小说改编的提示词结构
小说改编模块的核心是把叙述文本转成「场景 + 动作 + 对白」的结构化剧本。这套工具没有强制提示词模板,但根据我实际跑下来的经验,提示词里必须包含四个要素:输出格式、角色约束、场景约束、对白风格。缺一个,输出就会偏。
你是一个短剧剧本改编助手。请将以下小说片段改编为结构化剧本。 输出格式要求: - 每个场景以 [场景编号] 开头 - 场景内按「动作描述」和「角色名:对白」交替输出 - 动作描述不超过 50 字,对白不超过 30 字 角色约束: - 只能使用角色表中出现的角色名 - 角色别名统一替换为正式名 - 不得新增角色 场景约束: - 每个场景只发生在一个地点 - 场景切换必须用 ###SCENE### 标记 对白风格: - 短句为主,符合短剧节奏 - 保留原文关键信息,不自行扩写剧情 小说片段: {{segment_text}}这个提示词的关键在于「不得新增角色」和「不自行扩写剧情」这两条。不加这两条,模型会为了「让剧情更完整」自己加人物、加冲突,后面分镜就对不上了。输出格式里的字数限制也不是随便写的,动作描述超过 50 字,分镜模块拆镜头时会拆得很碎,影响主体图的一致性。
2.3 剧本分析模块的参数怎么调
剧本分析模块干的事是统计和校验:每个角色出场次数、台词量、场景数量、预估分镜数。这些数据直接决定后面图片资产要准备多少张主体图。参数上主要关注两个:分镜粒度(shot_granularity)和角色出场阈值(character_threshold)。
分镜粒度控制每个动作描述被拆成几个镜头。设成 1 表示一个动作一个镜头,设成 2 表示一个动作拆成两个镜头(比如「林晚推开门」拆成「手放在门把上」和「门打开,林晚走进来」)。短剧一般设 1 到 2 之间,设太高会导致镜头数爆炸,图片资产跟不上。角色出场阈值是过滤次要角色的,出场次数低于这个值的角色不生成主体图,只在远景或群像里出现。一般设 3,也就是出场少于 3 次的角色不单独建资产。
# 剧本分析模块的典型调用方式(以工具包内脚本为例) python analyze_script.py \ --input ./output/script_structured.txt \ --character-table ./config/characters.json \ --shot-granularity 2 \ --character-threshold 3 \ --output ./output/analysis_report.json跑完之后重点看 analysis_report.json 里的三个字段:total_scenes、total_shots、character_appearance_count。total_shots 如果超过 200,说明分镜粒度设高了或者剧本本身太长,需要回头压缩。character_appearance_count 里如果主角的出场次数和配角差距不大,说明改编阶段对白分配有问题,得回去调提示词。
3. AI 分镜与图片资产:主体图库怎么建才不崩
3.1 分镜脚本的字段设计
AI 分镜模块的输入是结构化剧本,输出是带镜头信息的 JSON 或表格。这套工具默认输出的分镜字段包括:镜头编号、场景编号、角色列表、动作描述、景别、机位、预估时长。其中景别和机位是影响主体图生成质量的关键。景别一般分远景、中景、近景、特写,机位分平视、俯视、仰视。短剧里近景和特写占比高,因为要突出表情和情绪。
{ "shot_id": "S001", "scene_id": "SC01", "characters": ["林晚"], "action": "林晚站在窗前,手里握着一封信", "shot_type": "medium", "camera_angle": "eye_level", "estimated_duration": 3.5, "asset_refs": ["lin_wan_base_01", "letter_prop_01"] }asset_refs 是分镜和图片资产之间的桥梁。每个角色在每个场景里用哪张主体图,靠这个字段关联。如果 asset_refs 为空,说明这个镜头还没有对应的图片资产,需要去图片资产模块补建。常见坑是分镜阶段没写 asset_refs,到了生成阶段才发现缺图,回头补很麻烦。
3.2 主体图库的建立流程
AI 漫剧主体图库不是随便生成几张角色图就完事。它需要保证同一个角色在不同镜头、不同表情、不同角度下看起来是同一个人。这套工具的图片资产模块提供了主体图库的管理功能,但生成策略得自己定。我一般按「基础形象 → 表情变体 → 角度变体 → 服装变体」的顺序建。
基础形象是角色的标准正面半身像,用来做所有变体的参考图。表情变体至少覆盖中性、微笑、愤怒、悲伤四种。角度变体覆盖正面、侧面、四分之三侧面。服装变体按剧本里出现的服装数量来,每套服装一张。生成的时候用基础形象作为参考图,配合不同的提示词。
# 基础形象生成提示词示例 masterpiece, best quality, character design sheet, female, 24 years old, long black hair, pale skin, cold color palette clothing, slim figure, front view, half body, neutral expression, clean background, consistent lighting # 表情变体提示词(在基础形象基础上追加) smiling expression, same character, same clothing, same lighting, front view, half body这里的关键是「same character, same clothing, same lighting」这三句。不加这三句,模型会重新随机生成一个长得像但不一样的人。另外基础形象的背景要干净,不要有复杂场景,否则变体生成时背景会干扰角色特征。
3.3 图片资产的命名与索引
图片资产一多,命名就是灾难。我见过有人用「最终版」「最终版2」「真的最终版」来命名,后面分镜引用的时候根本找不到。这套工具本身不强制命名规则,但为了分镜模块能自动关联,建议用「角色名_类型_编号」的格式。类型包括 base(基础形象)、expr(表情)、angle(角度)、costume(服装)、prop(道具)。
| 资产类型 | 命名示例 | 用途 |
|---|---|---|
| 基础形象 | lin_wan_base_01 | 所有变体的参考图 |
| 表情变体 | lin_wan_expr_smile_01 | 对应分镜中的表情需求 |
| 角度变体 | lin_wan_angle_side_01 | 侧面镜头 |
| 服装变体 | lin_wan_costume_red_01 | 特定场景服装 |
| 道具 | letter_prop_01 | 分镜中出现的道具 |
命名定好之后,在分镜的 asset_refs 里直接引用文件名(不带扩展名),图片资产模块会自动匹配。如果匹配不上,先检查文件名大小写和分隔符是否一致,这是最常见的翻车点。
4. 避坑与排查:跑这套工作流最容易翻车的五个地方
4.1 角色名漂移
现象:分镜脚本里同一个角色出现「林晚」「晚晚」「林小姐」三个名字,图片资产生成了三套不同的脸。原因:小说改编阶段没有做别名统一,或者角色表里的 aliases 字段没写全。解决:在剧本分析模块跑之前,先用脚本扫一遍所有角色名,和角色表做比对,不一致的强制替换。我一般会在分析脚本里加一个--strict-name-check参数,遇到未注册的角色名直接报错,不往下走。
4.2 分镜粒度过高导致图片资产爆炸
现象:一个 10 分钟左右的短剧,分镜数超过 300,图片资产要建 500 多张,根本跑不完。原因:shot_granularity 设成了 3 或更高,或者剧本本身动作描述太细。解决:先把 shot_granularity 降到 1 或 2,再看 total_shots 是否在 150~200 的合理区间。如果还是高,说明剧本改编阶段动作描述写太细了,回去压缩动作描述的字数。
4.3 主体图一致性崩坏
现象:同一个角色在不同镜头里脸型、发色、服装细节对不上。原因:生成变体时没有用基础形象作为参考图,或者参考图权重设太低。解决:确认生成流程里基础形象图被正确引用,参考图权重(reference_weight)一般设 0.6~0.8,太低会漂移,太高会导致表情变体变化不明显。这个参数在不同生成后端里名字可能不一样,常见的是 image_weight 或 ref_strength。
4.4 分镜和资产对不上号
现象:分镜 JSON 里 asset_refs 引用的文件名在资产目录里找不到。原因:命名规则不统一,或者资产生成后改了名没同步更新分镜。解决:建一个校验脚本,跑一遍所有 asset_refs,输出缺失列表。这个脚本很简单,但能省掉大量手动排查时间。
import json import os def check_asset_refs(shot_file, asset_dir): with open(shot_file, 'r', encoding='utf-8') as f: shots = json.load(f) missing = [] for shot in shots: for ref in shot.get('asset_refs', []): # 检查常见图片扩展名 found = False for ext in ['.png', '.jpg', '.jpeg', '.webp']: if os.path.exists(os.path.join(asset_dir, ref + ext)): found = True break if not found: missing.append({ 'shot_id': shot['shot_id'], 'missing_ref': ref }) if missing: print(f"发现 {len(missing)} 个缺失资产引用:") for m in missing: print(f" 镜头 {m['shot_id']} 缺少 {m['missing_ref']}") else: print("所有资产引用均存在") return missing # 使用示例 check_asset_refs('./output/shots.json', './assets/images')这个脚本的逻辑很直接:遍历每个镜头的 asset_refs,在资产目录里找对应文件。找不到就记录下来。参数上只需要传分镜文件和资产目录两个路径。建议每次生成完新资产后都跑一遍,不要等到生成阶段才发现缺图。
4.5 剧本分析报告里的数据没人看
现象:分析报告生成了,但没人看,到了分镜阶段才发现角色出场次数不对、场景数超了。原因:分析报告是 JSON,不直观。解决:写一个简单的格式化脚本,把关键数据打出来,或者直接在看板里展示。我一般会在分析脚本最后加一段打印,把 total_scenes、total_shots、top 5 角色出场次数直接输出到终端,跑完就能看到。
5. 进阶技巧:用主体图库反哺分镜一致性校验
5.1 把资产索引变成校验依据
主体图库建好之后,它不只是生成图片的素材库,还可以反过来校验分镜的一致性。具体做法是:从资产索引里提取每个角色的特征向量(或者简单的颜色直方图、人脸 embedding),然后对分镜里引用的资产做比对。如果同一个角色在不同镜头里引用的资产特征差异超过阈值,就标记出来人工检查。
这套工具本身没有内置这个校验,但用 Python 加一个轻量脚本就能做。我一般用颜色直方图做快速筛查,因为计算快、依赖少。人脸 embedding 更准,但需要额外模型,看项目需求取舍。
import cv2 import numpy as np import json import os def extract_histogram(image_path): img = cv2.imread(image_path) if img is None: return None # 转 HSV 空间,对光照变化更鲁棒 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # 只取 H 和 S 通道的直方图 hist = cv2.calcHist([hsv], [0, 1], None, [50, 60], [0, 180, 0, 256]) cv2.normalize(hist, hist) return hist.flatten() def check_consistency(shot_file, asset_dir, threshold=0.7): with open(shot_file, 'r', encoding='utf-8') as f: shots = json.load(f) # 按角色分组收集资产 character_assets = {} for shot in shots: for ref in shot.get('asset_refs', []): # 从命名中提取角色名(假设格式为 角色名_类型_编号) parts = ref.split('_') if len(parts) >= 2: char_name = parts[0] + '_' + parts[1] if char_name not in character_assets: character_assets[char_name] = [] character_assets[char_name].append(ref) # 对每个角色的资产做两两比对 for char, refs in character_assets.items(): hists = [] valid_refs = [] for ref in refs: for ext in ['.png', '.jpg', '.jpeg', '.webp']: path = os.path.join(asset_dir, ref + ext) if os.path.exists(path): h = extract_histogram(path) if h is not None: hists.append(h) valid_refs.append(ref) break if len(hists) < 2: continue # 计算两两相似度 for i in range(len(hists)): for j in range(i + 1, len(hists)): similarity = cv2.compareHist( hists[i].astype(np.float32), hists[j].astype(np.float32), cv2.HISTCMP_CORREL ) if similarity < threshold: print(f"角色 {char} 的资产 {valid_refs[i]} 和 {valid_refs[j]} 相似度偏低:{similarity:.3f}") # 使用示例 check_consistency('./output/shots.json', './assets/images', threshold=0.7)这段代码的逻辑是:先从分镜文件里按角色分组收集资产引用,然后对每个角色的资产提取 HSV 直方图,两两计算相关性。相关性低于阈值(默认 0.7)的就打印出来。参数上 threshold 可以根据实际效果调,0.6 更宽松,0.8 更严格。注意这个方法是快速筛查,不是精确判断,颜色差异大不一定代表角色不一致,但颜色差异小通常说明一致性还行。
5.2 分镜节奏的量化检查
除了角色一致性,分镜节奏也是短剧能不能留住人的关键。我一般会统计三个指标:平均镜头时长、特写占比、场景切换频率。平均镜头时长太短(低于 2 秒)观众会晕,太长(超过 6 秒)会拖。特写占比在短剧里一般 30%~50% 比较合适。场景切换频率太高说明场景太碎,太低说明节奏慢。
这些数据从分镜 JSON 里直接算就行,不需要额外工具。我习惯在分析报告里加一个 rhythm_check 字段,把这三个指标和推荐区间一起输出。跑完分镜脚本就能看到,不用等到成片才发现节奏不对。
5.3 一个我踩过的坑
早期我跑这套工作流的时候,图省事跳过了剧本分析模块,直接拿改编后的剧本去生成分镜。结果分镜出来 400 多个镜头,图片资产建到一半就发现角色出场次数严重不均,主角有 200 多个镜头,配角只有几个,但配角的脸生成了十几张。回头补分析报告,发现是改编阶段对白分配出了问题,配角在小说里的戏份被压缩了,但分镜阶段又按原文动作描述拆了太多镜头。从那以后我每次跑这套流程,都强制先跑剧本分析,看 total_shots 和 character_appearance_count 两个数据,确认在合理区间才往下走。这个习惯帮我省掉了大量返工时间。希望帮到你。
本文还有配套的精品资源,点击获取