☰
用Claude Code Skill五阶段工作流把网文改编成漫剧剧本
2026/9/30 7:28:23 网站建设 项目流程

简介:面向 Claude Code 的「网文改编漫剧剧本」技能包,专为网络小说作者、动漫编剧及 AI 应用开发者打造,借助五阶段全自动工作流,将长篇网文一键转化为标准漫剧剧本。资源共含 21 个文件、压缩包仅 47KB,以 Markdown 文档为主(14 个 md),辅以 TXT 示例文本、Shell 安装脚本、JSON 项目配置及 License 说明;Markdown 文件覆盖设计规格、角色设定、故事大纲、剧情分析与 QC 报告,完整呈现从立项问答、世界观构建、三层记忆维护到逐章创作与自检返修的流程。已有 100 人学习或下载过该资源。通过这份技能包,读者可获得结构清晰的技能目录、可直接运行的安装脚本、示例小说与改编输出示例,以及质量校验报告,能快速复现 AI 改编流程,为后续动漫制作提供专业、规范的剧本基础,对个人创作者和内容团队均有实用参考价值。

1. 网文改编漫剧剧本的 Claude Code Skill:五阶段到底在解决什么

网文改编漫剧剧本这件事,以前是靠编剧一章一章读稿、拆对白、排分镜,一个三分钟的单集剧本少说折腾半天。这个名为“网文改编漫剧剧本 Claude Code Skill”的项目,把整条链路做成了五阶段全自动工作流,核心是让 Claude Code 按固定工序把网络小说原文转成可直接进分镜制作的标准漫剧剧本。它不是又一个“帮我写剧本”的提示词,而是一套带阶段产物、可回滚、可校验的自动化管线。做漫剧分集编剧、在动画工作流里做剧本前端的团队,或者手里有一批网文版权想做内容增值的平台运营,都能直接拿去用。真正难的不是让模型写对白,而是让它不写小说、写剧本——五阶段的设计目的就是把“镜头语言”这个最玄学的部分拆成可执行的工序。

2. 五阶段工作流的内部逻辑:把小说语言转成镜头语言的关键拆解

2.1 为什么是五阶段,而不是一个提示词走到底

单次对话直接生成剧本,最典型的结果是前面三幕像样,后面开始塌——角色视角漂移、旁白混进对白、动作描写变成小说式抒情。原因是漫剧剧本的信息密度远高于文本摘要,一次生成需要同时处理人设、情节、节奏、镜头、配音整整五层约束,模型很容易顾此失彼。

五阶段的核心价值在于把“一次生成”拆成“五次带检查点的生成”。每个阶段只干一件事,上一阶段的产出作为下一阶段的输入,中间任何一步不对都能单独重跑。这种设计思路其实和常见的 AI 工作流平台一脉相承,很多人会先想到用 dify 工作流或 n8n 工作流去串节点,但问题在于那些平台更适合处理结构化数据流转,而漫剧剧本改编最花力气的是语义理解和格式约束,直接在 Claude Code 里用 Skill 封装反而更轻,不需要额外部署服务,也不依赖网络请求的串联策略。

2.2 阶段一:企划锁定与原文结构解析

第一阶段做的事情是“读进去”。把网文原文片段、主角设定、世界观关键词喂进去,输出一份《项目企划锁》——包含角色表、场景表、金句池、世界观约束。这一阶段不急着写任何镜头,先把后续四个阶段都要复用的“参考系”钉死。

我一般会在阶段一强制输出一个 JSON 结构的角色表,示例:

{ "project": "凡人修仙传之XX篇", "version": "1.0", "characters": [ { "name": "林远", "aliases": ["林师弟", "远哥", "那个外门弟子"], "role": "男主", "voice": "冷静克制,偶尔自嘲", "appearance": "青衫,左眉有疤", "constraint": "修为不得越过筑基期" }, { "name": "苏婉", "aliases": ["苏师妹", "小师姐"], "role": "女主", "voice": "语速快,喜欢反问", "appearance": "红衣,佩短剑", "constraint": "家族背景暂不揭晓" } ], "scenes": ["青云宗外门广场", "后山禁地", "坊市地下拍卖行"], "key_lines": ["修行路上,最怕的不是敌人,是穷。"] }

这段输出的逻辑是:aliases 字段用来解决网文里“一人多名”的问题,比如“林远”在原文里有时被叫“林师弟”,如果不提前归一,后续阶段很容易写乱。voice 字段约束对白风格,这是漫剧对白和小说对白最大的分水岭——小说对白可以书面化,漫剧对白必须能念出来。constraint 字段是给后续阶段上的锁,防止模型写嗨了让角色做出越界动作。

2.3 阶段二:分幕分场与钩子设计

第二阶段把小说章节切成一集漫剧的分幕结构。漫剧和短剧一样吃节奏,单集三到五分钟,必须有钩子、推进、小高潮、下集悬念四个节点。这个阶段我会用表格来定义一集的结构骨架:

幕次时间占比内容目标钩子要求
第1幕20%承接上集尾,抛出新冲突前10秒必须出现新信息
第2幕40%角色交锋,逐步推进每场戏结束时局面比开场更差
第3幕30%小高潮或反转情绪峰值放在第3幕
第4幕10%下集悬念抛出未解问题,不能收干净

分幕的时候最常翻车的点是“忠实还原”和“节奏压缩”打架。网文一章几千字,漫剧一集只能装下其中一到两个核心事件。我要求的处理方式是:阶段二只允许保留影响主线走向的关键冲突,支线人物全部砍掉或合并。所谓“标准漫剧剧本”,标准二字就体现在这里——有固定的幕次结构,而不是把小说章节原样翻译成分镜。

2.4 阶段三到五:对白清洗、画面化输出、一致性校验

阶段三是对白清洗。小说对白往往带有大量叙述性前缀,比如“他冷笑一声说道”,漫剧对白不需要这些,配音只需要台词本身。清洗规则是:保留语气词、拆分长句为短句、补全省略的主语、删除书面连接词。同时把需要角色情绪的部分写成括号内的表演提示,示例:

{ "dialogue": [ { "character": "林远", "line": "我欠你的,今天一次还清。", "delivery": "压低声音,一字一字说" }, { "character": "苏婉", "line": "还清?你拿什么还?", "delivery": "尾音上挑,带着嘲讽" } ] }

阶段四是画面化输出,这是整条工作流里最考验细节的一步。每个镜头必须包含景别、角度、画面内容、角色动作、表情五个字段,缺一个都不行。阶段五是一致性校验,跨集检查称呼是否统一、时间线是否冲突、战力是否越级。五阶段走完后,输出的剧本要和下面这个 schema 对齐:

{ "episode": 12, "total_scenes": 8, "estimated_seconds": 240, "scenes": [ { "scene_id": "S0101", "location": "青云宗外门广场,晨", "shots": [ { "shot_id": "S0101_C01", "shot_size": "全景", "camera_angle": "俯拍", "content": "广场上千名弟子列队,林远站在最末排", "action": "林远抬头望向山门方向", "expression": "平静中带着期待", "dialogue": [], "voiceover": "修行十二年,他终于等到了宗门大比。" } ] } ] }

这个 schema 的意义在于为后续制作环节留好接口。漫剧的实际制作通常会把分镜画面交给 comfyui 工作流去生成静帧,再把对白交给配音合成,所以剧本里每个镜头必须自带画面描述和配音文本,不能让人再去二次加工。

3. 把工作流装进 Skill:SKILL.md、角色与输出格式的落地写法

3.1 Skill 的最小目录结构

拿到“网文改编漫剧剧本 Claude Code Skill”的 zip 包后,解压出来的东西本质上是一个标准 Claude Code Skill 目录。常见做法是放进~/.claude/skills/目录下,Claude Code 就会在对应上下文里识别并加载这个技能。解包后你会看到类似这样的结构:

manju-script-skill/ ├── SKILL.md ├── config.yaml ├── scripts/ │ ├── preprocess_novel.py │ └── validate_script.py └── reference/ ├── shot_size_glossary.md └── dialogue_style_guide.md

SKILL.md 是技能入口,也就是 Claude Code 读取的核心指令文件;config.yaml 存放可调参数;scripts 目录里的两个脚本分别负责输入预处理和产出的校验;reference 目录是模型在生成时可以参考的镜头术语表和对话风格指南。

注意不要小看 reference 目录的作用。漫剧剧本里“景别”这个词,小说作者出身的模型很容易写成“特写”两个字就完事,但有了 shot_size_glossary.md,它就会知道漫剧常用的是远景、全景、中景、近景、特写五档,每个镜头必须明确归到其中一档。

3.2 SKILL.md 的分段指令写法

SKILL.md 的写法决定了这个技能是“像一个人”还是“像一个工具”。我的经验是,把指令分成四段写:角色定义、工作流定义、输出格式约束、禁止项。

--- name: manju-script-workflow description: 将网文章节改编为标准漫剧剧本的五阶段工作流,适用于漫剧分集剧本创作。 --- # 角色 你是一位有五年漫剧编剧经验的总编剧,擅长把小说语言转成镜头语言。 # 工作流(严格按顺序执行) 1. 阶段一:解析输入原文,输出角色表、场景表、金句池。 2. 阶段二:按单集3-5分钟拆解分幕,每集必须包含4幕。 3. 阶段三:清洗对白,拆分长句,补全主语,删除叙述性前缀。 4. 阶段四:根据分幕输出分镜头剧本,每镜必须包含景别、角度、画面内容、动作、表情。 5. 阶段五:执行一致性校验,检查称呼、时间线、战力约束,输出完整JSON。 # 输出格式 严格按 config.yaml 中定义的 schema 输出,禁止输出 Markdown 表格之外的格式。 # 禁止项 - 禁止保留原文中的文学性修饰词,如"他眸光一暗"。 - 禁止在台词中混入动作描写。 - 禁止跨过阶段直接生成最终剧本。

这里的关键是“禁止跨过阶段”。如果模型一次直接给出最终剧本,就是偷工减料,最后出来的多半是小说缩略版。阶段化指令的意义在于强制模型先做拆解,把每个阶段的中间产物暴露出来,这样才能在出错时分段回滚,而不是重来一遍。

3.3 可调参数与配置文件

配置文件是把这个 Skill 从“特定项目专用”变成“可复用资产”的关键。config.yaml 里的参数直接决定剧本风格和物理规格:

episode_seconds: 240 # 单集时长,单位秒 max_scenes_per_episode: 10 # 单集最大场景数 min_scenes_per_episode: 6 # 单集最小场景数 dialogue_ratio: 0.65 # 对白占全片比例,0.65表示65% voiceover_ratio: 0.15 # 旁白占比上限 default_shot_size: "中景" # 默认景别 allowed_shot_sizes: ["远景", "全景", "中景", "近景", "特写"] character_sheet_path: "reference/characters.json"

dialogue_ratio 参数是漫剧剧本里最需要反复调的一项。做甜宠题材时对白可以拉到 70% 以上,因为观众主要靠对话感受人物关系;做玄幻题材时旁白和打斗画面占的比重更大,对白比例要降到 55% 左右,否则每场打戏都在边打边聊天,很出戏。这些参数写进配置文件,不同项目复制目录后只改参数即可,不用改 SKILL.md 本身。

4. 跑通全自动改编流程:输入准备、执行命令与核心参数

4.1 输入预处理:把网文正文变成工作流能吃的格式

阶段一之前最容易被忽略的一步是输入清洗。网文原文通常带章节标题、作者的话、读者评论混排等噪声,这些都会干扰模型对正文结构的判断。常见的做法是先用一个简单的 Python 脚本把正文切干净,只保留纯文本内容和章节标记:

#!/usr/bin/env python3 import re import json def preprocess_novel(raw_path: str, output_path: str, start_chapter: int = 1, end_chapter: int = 5): with open(raw_path, "r", encoding="utf-8") as f: raw_text = f.read() # 按章节目录切分,兼容常见网文章节标题格式 chapter_pattern = re.compile(r"第[0-9一二三四五六七八九十百千]+章[^\n]*") matches = list(chapter_pattern.finditer(raw_text)) chapters = [] for i in range(start_chapter - 1, min(end_chapter, len(matches))): chapter_start = matches[i].start() chapter_end = matches[i + 1].start() if i + 1 < len(matches) else len(raw_text) chapter_title = matches[i].group().strip() body = raw_text[chapter_start:chapter_end] # 去掉作者的话、括号注释等不需要的内容 body = re.sub(r"(.*?)|\(.*?\)", "", body) body = re.sub(r"\n{3,}", "\n\n", body).strip() chapters.append({ "chapter_index": i + 1, "title": chapter_title, "content": body }) with open(output_path, "w", encoding="utf-8") as f: json.dump({"chapters": chapters}, f, ensure_ascii=False, indent=2) print(f"预处理完成,共提取 {len(chapters)} 章,输出到 {output_path}") if __name__ == "__main__": preprocess_novel("assets/novel.txt", "data/input.json", start_chapter=1, end_chapter=3)

这个脚本做的事情是:按章节标题切分原文、删除括号内的注释和多余空行、输出结构化 JSON。start_chapter 和 end_chapter 参数控制一次改编的章节范围——漫剧项目通常是按“一集对应一到三章”的密度规划,所以预处理阶段先切好范围能避免模型在超长输入里丢失前文约束。注意这里没有做任何语义改写,只是物理切割,真正的语义处理全部由 Skill 在五阶段里完成。

4.2 执行工作流与阶段产物检查

输入文件准备好后,在 Claude Code 会话里调用这个 Skill 的方式很直接,在项目目录下输入:

使用 manju-script-workflow 技能,将 data/input.json 改编为漫剧剧本,输出到 output/ep001/

Claude Code 会按照 SKILL.md 里定义的流程开始执行。执行过程中需要盯的不是最终剧本,而是每个阶段的中间产物。我一般会先检查阶段一的角色表是否和前文设定一致,再检查阶段二的分幕是否超过单集时长上限。

阶段产物的检查可以直接看文件:

cat output/ep001/stage1_characters.json cat output/ep001/stage2_scenes.json cat output/ep001/final_script.json

一旦发现角色表里出现了原文没有的人物,或者分幕时出现了第五幕,就要回到对应阶段重新生成。这套“中间产物可见”的设计是五阶段工作流比单次提示词强的地方,模型在黑匣子里跑完了全程和跑两步看一眼,对人工介入的成本差异是数量级的。

4.3 核心参数怎么设:时长、场景数、对白密度

参数的设置不是拍脑袋,而是和漫剧制作的下游环节强相关。我整理了一份常用参数参考:

参数甜宠/日常向玄幻/打斗向悬疑/剧情向
episode_seconds240300240
max_scenes_per_episode6108
dialogue_ratio0.70.550.6
voiceover_ratio0.10.20.15
默认景别近景全景中景

特别说明一下 episode_seconds 和实际字数之间的关系。漫剧的配音语速大约是每分钟 180 到 220 字,所以三分钟一集的对白量大致在 540 到 660 字,旁白再占 100 字左右。如果模型输出的对白总量超过 900 字,基本可以确定会超时。

场景数的设定和制作成本直接挂钩。一个场景意味着至少一套背景、一组人物立绘、可能还有场景内的光影效果。预算有限的团队把 max_scenes_per_episode 压在 6 以内,每集只保留核心冲突场景;预算充足的动画工作室可以把数值放到 10,追求画面丰富度。这些参数既然进了 config.yaml,就说明换项目时不需要动技能逻辑,只改配置就行。

5. 避坑:五阶段全自动漫剧剧本工作流最容易翻车的 4 个位置

5.1 现象:同一角色在第三集突然换了称呼

跑一个多集项目时,第二集出场叫“林远”的角色,到第三集变成了“林大宗主”,再往后变成“那个男人”。原因:阶段一输出的 aliases 字段没被后续阶段引用,模型在长上下文里丢失了对角色本名的约束。

解决:阶段一的角色表必须写入 SKILL.md 的固定引用路径。每次进入阶段二之前,先重读reference/characters.json并加入一条“当前集所有角色必须使用本名+已登记别名,禁止自创称呼”的硬约束。我在实践里发现,这一步能消除九成以上的称呼混乱问题。

5.2 现象:每个镜头都是“特写”,画面没有层次

生成的剧本里十个镜头有八个是“人物脸部特写”,全景和中景几乎没有。原因:模型对漫剧的镜头语言没有概念,默认匹配了小说里“表情细节描写”的惯性。文学作品可以用几十个字描写一个人物的微表情,但漫剧画面需要信息量大的景别来交代空间关系和动作路径。

解决:在阶段四的输入中注入镜头术语表,并强制要求每场戏至少有一个全景或中景作为“空间锚”。check 脚本里会给每个场景的景别分布做统计,如果一场戏里近景和特写占比超过 70%,就自动打回重写。这条规则比任何口头强调都好用,因为它把玄学的“镜头感”变成了可量化的指标。

5.3 现象:对白念出来像朗读课文

看着文本觉得没问题,但让配音演员照着试读,句子长到一口气念不完,书面连接词密集分布。原因:阶段三的对白清洗没有真正执行,模型输出的台词本质上仍是从小说原文里摘出来的。书面语和口语的差异从来不是词汇层面的,是节奏和呼吸层面的。

解决:在阶段三之后加一个“朗读测试”步骤,让 Claude Code 把每句台词按标点切分,检查单句是否超过 15 个字,超过的强制拆分。同时输出台词时在括号内标注气息要求,比如“停顿”“换气”。这种处理方式听起来不高级,但确实能把 AI 剧本里的翻译腔压下去一大截。

5.4 现象:第 1 集到第 10 集的时间线自相矛盾

第一集里主角还是练气三层,第五集打斗时突然用出了筑基期才有的御剑术。原因是阶段一的世界观约束只在单次会话里生效,多集项目开启新会话后,前文的设定已经不在上下文窗口里了。

解决:每集开跑前强制加载上一集产出的stage5_consistency_report.json,里面记录了本集结束时所有角色的能力状态、道具归属、地理方位。新会话从这份“状态快照”开始,而不是从原文重新理解。如果项目切换到新会话时没有加载快照,宁可重新跑一遍阶段一也不要直接续写。

6. 最后一道工序:写个校验脚本,把自动产出变成可交片

五阶段跑完不等于成品能用。用自动化的方式再卡一道墙,把所有硬性错误挡在交片之前,才是这个工作流的完整闭环。我在实际项目里会写一个简单的校验脚本,检查格式完整性、镜头分布、对白比例和角色一致性。下面是一个可抄的版本:

#!/usr/bin/env python3 import json import sys def validate_script(path: str): with open(path, "r", encoding="utf-8") as f: data = json.load(f) errors = [] total_dialogue_chars = 0 total_shots = 0 size_count = {"全景": 0, "中景": 0, "近景": 0, "特写": 0} for scene in data.get("scenes", []): for shot in scene.get("shots", []): total_shots += 1 shot_size = shot.get("shot_size", "") if "全景" in shot_size or "远景" in shot_size: size_count["全景"] += 1 elif "中景" in shot_size: size_count["中景"] += 1 elif "近景" in shot_size: size_count["近景"] += 1 elif "特写" in shot_size: size_count["特写"] += 1 else: errors.append(f"{shot.get('shot_id')} 缺少合法景别: {shot_size}") # 检查镜头内容是否为空 if not shot.get("content", "").strip(): errors.append(f"{shot.get('shot_id')} 画面内容为空") for d in shot.get("dialogue", []): total_dialogue_chars += len(d.get("line", "")) # 对白占比检查,以总字符数估算 total_all_chars = len(json.dumps(data, ensure_ascii=False)) dialogue_ratio = total_dialogue_chars / total_all_chars if total_all_chars > 0 else 0 if dialogue_ratio < 0.3 or dialogue_ratio > 0.8: errors.append(f"对白占比异常: {dialogue_ratio:.2f}") # 检查每场戏是否有多景别 for scene in data.get("scenes", []): scene_shots = scene.get("shots", []) if scene_shots and size_count["全景"] == 0: errors.append(f"场景 {scene.get('scene_id')} 缺少全景或远景镜头") if errors: print("校验未通过,以下问题需要修复:") for err in errors: print(f" - {err}") sys.exit(1) else: print(f"校验通过: {total_shots} 个镜头,对白占比 {dialogue_ratio:.2f}") sys.exit(0) if __name__ == "__main__": validate_script("output/ep001/final_script.json")

这段脚本的校验逻辑很朴素:景别是否存在于白名单、镜头内容是否为空、对白占比是否在合理区间、每场戏是否有多景别。它会拦截掉一批模型自己发现不了的格式问题。我以前批改 AI 剧本全靠肉眼,后来把这套脚本接进工作流,低级错误基本都能在交片前拦下来。一个自动改编工作流能不能长期用,靠的不是模型聪明,而是你有没有一套让产出保持稳定下限的校验机制。这条希望对你正在搭的 ai 漫剧工作流也有帮助。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询