| name | ai-manga-drama |
| description | AI漫剧导演——根据背景剧情或主题,完成镜头规划→分镜图生成→视频生成(wan2.6音画同步)→视频合并的完整漫剧制作流水线。全程调用 neta 的 make-image、make-video(model_w)、merge-video 接口。当用户想制作漫剧、竖屏动态漫画、AI短剧、或将剧情/主题转化为视频内容时触发。 |
AI 漫剧导演
基于 neta 能力的全流程漫剧制作技能。核心流程:
剧情分析 → 剧本撰写(台词) → BGM生成(make-song,一轨) → 镜头规划 → 分镜图生成 → 视频生成(仅对白+音效,无BGM) → 视频合并(混入BGM)
⚠️ 音频架构说明(必读):
wan2.6 对每个视频片段独立生成 BGM,合并后各段音乐互不衔接。
正确做法:BGM 只生成一次(make-song),每段视频不生成 BGM,只保留对白与音效,最后 merge-video 时混入统一 BGM。
前置要求: 需要 neta 技能可用(已设置 NETA_TOKEN)
Step 1:剧情摄入与分析
从用户输入中提取:
| 要素 | 说明 |
|---|
| 故事背景 | 世界观、时代、地点 |
| 主角 | 外貌、性格、服装(跨镜头一致性关键) |
| 配角 | 名字、与主角关系、外貌简述 |
| 核心冲突 | 本集的主要矛盾 |
| 情感基调 | 热血 / 温情 / 悬疑 / 喜剧 / 恐怖 等 |
| 美术风格 | 日漫 / 国漫 / 写实 / 赛博朋克 / 古风 等 |
若信息不足,只问一次,列出所有缺失项后等待回复。
Step 2:剧本撰写(台词规划)⚠️ 不可跳过
在规划任何镜头之前,先写完整的分场剧本。 这是保证台词逻辑连贯的唯一方式。
读取 refs/shot-planning.md → 第一节:剧本格式,输出本集完整剧本:
=== 《剧名》第X集 剧本 ===
【第一场】地点:XXX 时间:XXX
(场景描述:...)
[角色A]:台词内容。(情绪/动作备注)
[角色B]:台词内容。(情绪/动作备注)
(旁白/内心独白)
【第二场】...
剧本规则:
- 台词必须有人物动机,不能是信息堆砌
- 每场的结尾必须为下一场制造"拉力"(悬念/情绪转折/问题)
- 台词总量控制:每集 6-12 句对白,少而精
- 写完后展示给用户确认,有修改意见先改剧本,再继续
Step 3:BGM 生成(make-song)⚠️ 不可跳过,必须在视频之前完成
生成整集唯一一轨 BGM。 所有视频片段的 BGM 共用这一轨,不在视频生成阶段单独生成。
先根据剧情基调设计 BGM 风格,输出音频设计单:
=== 《剧名》第X集 音频设计单 ===
【BGM 风格描述(用于 make-song)】
风格:(例:重工业电子乐+弦乐铺底 / 古风琵琶轻音乐 / 钢琴独奏)
情绪:(例:紧张压迫、悲壮史诗、温柔治愈)
节奏:(例:中慢节奏,约80BPM / 快节奏,约130BPM)
时长:约 [镜头总数 × 10] 秒(估算)
【每段视频的音效规则(不含BGM)】
- 有台词镜头:生成对白音频,语气参见剧本备注
- 无台词镜头:生成场景环境音(例:风声、爆炸远声、室内静谧)
- 禁止:在任何单段视频提示词中要求生成背景音乐
然后执行 make-song 生成 BGM:
cd /Users/yves/.claude/skills/neta && npm start make-song \
-p "<风格描述>" \
-l ""
(-l 歌词留空表示纯音乐/纯配乐模式)
记录 BGM 的输出 URL/UUID,后续 merge-video 时使用。
展示设计单与 BGM 结果给用户确认后继续。
Step 4:镜头规划
读取 refs/shot-planning.md → 第二节:镜头规划格式执行规划。
每个镜头必须填写的字段(不可省略):
【镜头 N】[功能标签:开场/引入/发展/高潮/转折/结尾]
所属场:第X场(对应剧本)
前接:镜头N-1 的画面结束状态(例:人物背影望向远方)
后接:镜头N+1 的画面起始状态(例:切入室内近景)
过渡方式:硬切 / 淡入淡出 / 推近 / 拉远
景别:大远景 / 远景 / 全景 / 中景 / 近景 / 特写
角度:平视 / 仰角 / 俯角 / 侧面
主体:谁在画面中,做什么
背景:场景具体描述(同场连续镜头必须保持一致)
氛围:光影、色调
台词:(引用剧本原文,或"无台词")
说话者:(有台词时必填)
动态:视频阶段的核心动作(一个动作,简洁)
音频:(直接复制音频设计单,特殊镜头例外)
衔接规则(严格执行):
- 同一场景的连续镜头:背景描述必须一致,不得突然改变环境
- 跨场景切换:必须标注"场景切换"并说明新场景
- 前接/后接字段:确保 N 的"后接"与 N+1 的"前接"在逻辑上连续
- 景别变化:避免相邻两个镜头景别完全相同(会导致视觉跳跃)
规划完成后展示完整镜头表,等待用户确认。
Step 5:分镜图生成(make-image)
逐镜头执行,读取 refs/prompt-templates.md → 分镜图提示词部分构建提示词。
关键规则:
- 宽高比统一使用
9:16
- 每个提示词必须包含角色核心外貌描述(发型+眼睛+服装)
- 同一场景的镜头,背景描述保持相同措辞
neta 命令:
cd /Users/yves/.claude/skills/neta && npm start make-image \
-p "<构建好的提示词>" \
-a "9:16"
从 JSON 输出中提取图片 URL,更新镜头表:镜头N → 图片URL: <url>
所有图片生成后,展示图片列表,询问用户是否继续。
Step 6:视频生成(make-video,model_w = wan2.6)
读取 refs/prompt-templates.md → 视频动态提示词部分构建每个镜头的动态描述。
wan2.6 能力: 1080p / 24fps / 原生音画同步 / 口型对齐 / 单片段最长 15 秒 / 支持多分镜
镜头分组规则(多分镜策略)
同一场景内的连续 2-3 个镜头 → 合并为一条多分镜视频,可减少硬切割感:
分组示例:
镜头1(开场空镜) → 单独一条视频(场景建立)
镜头2 + 镜头3(同场对话) → 合为一条多分镜视频
镜头4 + 镜头5(同场冲突) → 合为一条多分镜视频
镜头6(跨场切换) → 单独一条视频(新场景建立)
镜头7 + 镜头8(同场结尾) → 合为一条多分镜视频
分组判断标准:
- 同一场景(背景相同)且连续 → 可合组
- 景别差异明显(如大远景→特写)→ 可合组,wan2.6 会处理切换
- 跨场景切换处 → 必须单独一条视频,作为明确的场景切割点
- 有台词的镜头 → 优先单独,保证口型同步精度
提示词构建规则
单镜头视频(无 --multi-shots):
- 描述动态和音效,不重复图片中已有的静态内容
- ⚠️ 严禁在提示词中要求生成背景音乐/BGM
- 音频只写:场景环境音 + 人物对白(有台词镜头)
- 核心动作保持单一,加"缓缓/轻轻/慢慢"控制幅度
多分镜视频(加 --multi-shots):
读取 refs/prompt-templates.md → 多分镜提示词部分
音频字段写法:
# 无台词镜头
声音:战场远处炮声与防空警报声环境音,无背景音乐。
# 有台词镜头
声音:室内安静环境音,人物台词:"XXX"(语气备注),无背景音乐。
neta 命令:
cd /Users/yves/.claude/skills/neta && npm start make-video \
-i "<镜头N的图片URL>" \
-p "<动态描述>" \
-m "model_w"
cd /Users/yves/.claude/skills/neta && npm start make-video \
-i "<该组第一个镜头的图片URL>" \
-p "<多分镜格式提示词>" \
-m "model_w" \
--multi-shots
从输出中提取视频 URL/UUID:视频组N → 视频: <url>
Step 7:视频合并(merge-video)+ 混入 BGM
所有视频片段就绪后,将 Step 3 生成的 BGM URL 一并传入,在合并时混入:
cd /Users/yves/.claude/skills/neta && npm start merge-video \
-i "按顺序合并视频:<url1>, <url2>, ..., <urlN>;混入背景音乐:<BGM的URL>"
BGM 在此步骤统一叠加,保证全集音乐连续不断。
Step 8:交付与总结
【漫剧成片】
标题: <剧目名称>
集数: 第 X 集
镜头数: N 个
成片 URL: <merge-video 输出的 URL>
镜头对照表:
镜头1 [景别] → 图片URL | 视频URL
...
询问用户:
- 哪个镜头需要重新生成?
- 是否制作下一集?
- 是否添加片头/片尾?
快速参考
| 步骤 | 命令 | 关键参数 |
|---|
| 生成分镜图 | make-image | -a "9:16" |
| 生成视频 | make-video | -m "model_w" |
| 合并成片 | merge-video | 按顺序传入所有视频 |
参考文档