漫剧创作助手
当用户要进行漫剧的整体创作,使用此技能进行剧本生成,分镜剧本生成,人物形象生成,分镜视频合成,将分镜视频进行拼接合并成一集漫剧,并将最终视频发布到抖音。
为什么用这个 Skill?
- 漫剧创作助手:针对的是从一集漫剧的整体生成的自动化流程创建,包含漫剧剧本生成、分镜剧本、漫剧人物形象生成、漫剧分镜视频生成、漫剧分镜视频合并、发布到抖音。
- 漫剧创作:根据提示词进行漫剧剧本创建 → 将剧本根据提示词中的参数拆分成分镜剧本 → 创建漫剧的人物库 → 根据分镜脚本与人物库生成分镜视频 → 将分镜视频根据顺序合并形成最终的漫剧 → 将最终视频发布到抖音。
技术能力依赖
| 能力 | 实现方式 | 说明 |
| ----------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 剧本/分镜文案生成 | 工具自带文本模型(LLM) | 使用 Agent 内置的大语言模型直接生成剧本、分镜脚本等文本内容 |
| 人物形象图片生成 | 腾讯云点播 VOD(tencent-VOD Skill) | 文生图,调用 tencent-VOD Skill 的图片生成能力,根据剧本中人物描述生成人物形象参考图 |
| 分镜视频生成 | 腾讯云点播 VOD(tencent-VOD Skill) | 文生视频(Kling 3.0 模型),调用 tencent-VOD Skill 的视频生成能力,根据分镜脚本 + 人物形象参考图生成每个分镜的短视频(强制音画同出,强制传入角色参考图保持人物一致性,支持首尾帧+音画同出同时启用) |
| 视频上传 | 腾讯云 VOD(tencent-VOD Skill) | 将本地分镜视频上传至 VOD 获取 FileId 和播放 URL,供后续 AI 语音识别使用 |
| AI 语音识别 | VOD AIGC Chat + Gemini 2.5 Flash | 利用多模态大模型传入视频 URL,识别视频中的语音对话内容及时间轴 |
| SRT 字幕生成 | 标准 SRT 格式输出 | 将 AI 识别结果按时间轴整理为标准 .srt 字幕文件 |
| 字幕与视频合并 | 本地脚本(scripts/mergeVedio.py) | 通过本地 Python 脚本将 SRT 字幕文件硬烧制(burn-in)到分镜视频画面中,使用 Pillow + moviepy 逐帧渲染字幕,生成带烧制字幕的最终分镜视频 |
| 视频拼接合并 | 腾讯云点播 VOD(tencent-VOD Skill) | 使用 tencent-VOD Skill 的 EditMedia / ComposeMedia 接口将多段分镜视频按顺序拼接合并为最终漫剧 |
| 抖音视频发布 | 抖音开放平台(douyin-video-publish Skill) | 将最终合并完成的漫剧视频发布到抖音平台,支持设置标题、描述、标签、封面等发布参数 |
漫剧助手的工作流程
第一步:生成漫剧剧本(文本模型)
使用工具自带的文本模型(LLM),根据用户的提示词生成完整的漫剧剧本。
输入:用户提示词(包含漫剧名称、时长、背景设定、风格等)
输出:完整的漫剧剧本文档(Markdown 格式),保存至本地 桌面/漫剧/{漫剧名称}/{漫剧名称}.md
执行方式:直接使用 Agent 内置 LLM 能力生成,生成后写入本地文件
剧本台词要求(重要):
- 剧本中必须包含丰富的角色对话台词,台词是漫剧的核心表现手段,每个场景都应有角色间的对话或内心独白
- 台词需体现角色性格特征,不同角色的语言风格应有区分(如:豪迈型、阴险型、温柔型等)
- 台词内容需推动剧情发展,避免无意义的寒暄或冗余对白
- 台词格式统一为:"角色名:台词内容",便于后续分镜拆分和配音合成
- 建议台词占总篇幅的 50% 以上,确保漫剧有足够的对白支撑后续的配音和字幕制作
第二步:生成分镜剧本(文本模型)
使用工具自带的文本模型(LLM),将第一步生成的完整剧本按照分镜时长标准拆分为分镜剧本。
输入:第一步的剧本 + 分镜拆分规则(如每 10 秒一个分镜)
输出:分镜剧本文档,保存至本地 桌面/漫剧/{漫剧名称}/{漫剧名称}-分镜.md,包含每个分镜的:
- 分镜编号
- 时长
- 画面描述(用于生成视频的 Prompt)
- 人物动作/表情
- 角色台词(必填,需根据故事情节为每个出场角色撰写对话台词,格式为"角色名:台词内容")
- 旁白(可选,用于补充叙事或场景过渡)
- 镜头运动描述
角色台词撰写要求(重要):
分镜文案中必须根据故事情节,为每个出场角色撰写符合剧情的对话台词。台词需体现当前场景中角色间的互动、冲突或情感表达。
示例格式:
## 分镜 01(10秒)
**画面描述**:月夜,福威镖局大堂,余沧海率众闯入,与林平之对峙
**角色台词**:
- 余沧海:林家小儿,乖乖交出辟邪剑谱,饶你不死!
- 林平之:余沧海!你害我林家满门,今日便与你拼个你死我活!
**旁白**:(旁白)二人目光如刀,大堂中杀气弥漫
**人物动作/表情**:余沧海冷笑,单手负背;林平之握剑怒目
**镜头运动**:镜头从余沧海缓慢推至林平之特写
- 每个分镜至少包含 1-3 组角色对话,台词内容需紧扣当前分镜的剧情节点
- 台词语言风格需符合角色身份和性格(如反派阴狠、主角坚毅、长辈慈祥等)
- 台词需有交锋感和戏剧张力,避免平淡无味的对话
- 多角色场景中,每个出场角色都应有至少一句台词
- 台词将直接用于视频生成时的音画同出(中文语音对话),必须清晰、完整、可朗读
台词分配原则:
- 每个分镜必须包含角色对话台词,根据剧情为出场角色撰写有意义的对白
- 根据分镜时长合理分配台词量:10 秒分镜建议 2-4 句角色台词,15 秒分镜建议 3-6 句角色台词
- 纯动作/过渡分镜可在角色台词之外增加旁白辅助叙事,但仍需保留至少 1 句角色台词(如角色的呐喊、自言自语等)
- 台词分配应均匀,避免某些分镜台词过多而某些分镜完全无声
- 台词内容必须紧扣剧情发展,体现角色间的冲突、合作、情感变化等戏剧元素
执行方式:直接使用 Agent 内置 LLM 能力生成,生成后写入本地文件
第三步:生成人物形象图片(tencent-VOD Skill)
使用 tencent-VOD Skill 的文生图能力,根据剧本中描述的主要人物生成角色形象参考图。
输入:从剧本中提取的人物外貌描述
输出:每个主要角色的形象参考图片,保存至本地 桌面/漫剧/{漫剧名称}/characters/ 目录
执行方式:调用 tencent-VOD Skill 的图片生成接口
Prompt 构建规则:
- 包含人物性别、年龄、体型、服饰、发型等关键特征
- 指定艺术风格(如:国风动漫、2D 赛璐璐、水墨风等)
- 保持风格一致性,同一部漫剧的角色使用统一的风格描述前缀
本地保存:生成的图片需下载到本地,保存路径为:
桌面/漫剧/{漫剧名称}/characters/{角色名}.png
第四步:生成分镜视频(tencent-VOD Skill)
使用 tencent-VOD Skill 的文生视频能力,结合第二步的分镜脚本和第三步的人物形象,为每个分镜生成短视频。
输入:分镜画面描述 + 人物形象参考图(必传) + 前一集关键帧(如有)
输出:每个分镜对应的短视频文件(含音画同出音轨),保存至本地 桌面/漫剧/{漫剧名称}/clips/ 目录
执行方式:调用 tencent-VOD Skill 的视频生成接口(必须开启音画同出)
人物形象一致性保障机制(强制):
生成每个分镜视频时,必须确保视频中的人物形象与第三步生成的人物参考图保持高度一致。具体机制如下:
- 人物参考图强制传入:每个分镜生成视频时,必须将该分镜中出场角色的形象参考图(来自
characters/目录)作为参考图(reference image)传入视频生成接口,不可省略 - 人物特征描述复用:在视频生成 Prompt 中,必须包含与人物形象生成时完全一致的角色外貌描述(性别、年龄、体型、服饰、发型、五官特征等),确保文字描述与参考图双重约束
- 全分镜统一风格前缀:所有分镜视频的 Prompt 必须使用相同的艺术风格前缀(如"国风动漫风格,赛璐璐着色"),确保全剧视觉风格一致
- 多角色场景处理:当一个分镜中有多个角色出场时,需同时传入所有出场角色的参考图,并在 Prompt 中分别描述各角色的位置和动作
- 处理逻辑:
for 每个分镜: 识别当前分镜中出场的角色列表 从 characters/ 目录加载对应角色的参考图 在 Prompt 中加入各角色的外貌特征描述(与第三步生成时使用的描述一致) 加入统一的艺术风格前缀 将角色参考图作为 reference image 传入视频生成接口 → 确保生成的视频中人物形象与参考图一致 - 一致性校验标准:
- 同一角色在不同分镜中的服装、发型、体型、肤色必须保持一致
- 如发现角色形象偏差较大,应调整 Prompt 增强角色特征描述后重新生成
- 角色的面部特征(五官比例、表情基调)应跨分镜保持可辨识度
关键帧衔接机制:
为保证前后分镜视频的视觉连贯性,从第 2 个分镜开始,需要从前一集已生成的视频中抽取关键帧作为本集视频的参考:
-
关键帧抽取:当前一集视频生成完成后,从该视频中抽取关键帧图片
- 每次抽取最多 2 张关键帧图片
- 优先抽取视频尾部的帧(最后一帧 + 倒数 1/3 处的帧),确保与下一集开头的视觉衔接
- 抽取的关键帧保存至:
桌面/漫剧/{漫剧名称}/keyframes/{分镜编号}-key{序号}.png
-
视频生成方式选择:
- 方式 A(首尾帧模式,优先使用):使用可灵3.0-Omni/可灵3.0 的首尾帧功能,将前一集的尾帧作为本集的首帧传入,实现无缝衔接。可灵3.0已支持首尾帧模式下同时开启音画同出,统一设置
OutputConfig.AudioGeneration=Enabled - 方式 B(参考图模式,备选):如接口异常,将抽取的关键帧图片作为参考图(reference image)传入,引导本集视频的生成,确保视觉风格和场景的连贯性。同样开启音画同出(
OutputConfig.AudioGeneration=Enabled)
- 方式 A(首尾帧模式,优先使用):使用可灵3.0-Omni/可灵3.0 的首尾帧功能,将前一集的尾帧作为本集的首帧传入,实现无缝衔接。可灵3.0已支持首尾帧模式下同时开启音画同出,统一设置
-
判断逻辑:
if 当前分镜编号 == 1: # 第一集:无需关键帧参考,直接根据 Prompt + 人物形象生成 设置 OutputConfig.AudioGeneration = "Enabled"(开启音画同出) 使用文生视频直接生成 else: # 第 2 集及之后:需要关键帧衔接 从前一集视频抽取关键帧(最多 2 张) 设置 OutputConfig.AudioGeneration = "Enabled"(Kling 3.0 所有模式均支持音画同出) if 生视频接口支持首尾帧参数(Kling 3.0 默认支持): 将前一集尾帧设为本集首帧 → 生成视频(方式 A,有声) else: 将关键帧作为参考图传入 → 生成视频(方式 B,有声)
音画同出机制(强制启用):
生成分镜视频时,必须开启音画同出功能(即视频生成时同时生成匹配的音频/音效),确保每个分镜视频自带环境音效和动作音效:
- 强制启用音频生成:在调用生视频接口时,必须设置
OutputConfig.AudioGeneration为Enabled,所有模式均强制开启,不可跳过 - 音频内容:音频应匹配画面内容,包含环境音效、动作音效等(如风声、脚步声、打斗声等)
- 与字幕的关系:音画同出生成的音轨包含中文语音对话和环境音效,后续第五步会将视频上传至 VOD,通过 AIGC Chat 多模态大模型识别语音内容,生成 SRT 字幕后通过本地脚本
scripts/mergeVedio.py将字幕硬烧制到视频画面中 - 模型与参数说明:
- 使用模型:优先使用 可灵3.0-Omni(
ModelName=kling-v3-omni),备选 可灵3.0(ModelName=kling-v3) - 模型选择优先级:
kling-v3-omni>kling-v3 - 音画同出参数字段:
OutputConfig.AudioGenerationEnabled:开启音画同出(所有模式强制使用)
- 动作控制参数字段:
SceneType- 当
ModelName为 Kling 系列时,取值motion_control表示动作控制
- 当
- 可灵3.0/3.0-Omni 新特性:3.0 版本已支持首尾帧模式下同时开启音画同出,不再存在互斥限制
- 使用模型:优先使用 可灵3.0-Omni(
- 执行逻辑:
for 每个分镜视频: # 可灵3.0/3.0-Omni 所有模式均支持音画同出,统一开启 设置 ModelName = "kling-v3-omni"(优先)或 "kling-v3"(备选) 设置 OutputConfig.AudioGeneration = "Enabled" 在 Prompt 中加入音效/环境声描述(如:风声呼啸、剑鸣声、脚步声等) 在 Prompt 中加入"中文配音,中文语音对话" → 生成的视频文件自带音轨(中文语音对话 + 环境音效 + 动作音效)
Prompt 构建规则:
- 基于分镜剧本中的画面描述
- 融入人物特征描述,保持角色一致性
- 包含镜头运动描述(如:镜头缓慢推进、俯拍、特写等)
- 包含场景氛围描述(光影、天气、色调等)
- 如有前一集关键帧参考,在 Prompt 中补充"承接上一镜头"的过渡描述
- 如支持音画同出,在 Prompt 中必须补充音效/环境声描述(如:风声呼啸、剑鸣声、脚步声等),确保生成的音频匹配画面内容
- 中文配音要求:Prompt 中必须明确指示"中文配音,中文语音对话",确保生成的视频音频中角色对话和旁白使用中文语音
- 禁止生成乱码文字:Prompt 中必须明确指示"画面中不得出现任何文字、字符、字母、符号等乱码内容",避免 AI 视频生成模型在画面中渲染出无意义的乱码文字或符号
禁止乱码规则(强制):
生成分镜视频时,严格禁止视频画面中出现任何乱码、无意义文字或随机字符。具体约束如下:
- Prompt 负面提示词(Negative Prompt):每次调用视频生成接口时,必须在 Prompt 或负面提示词中加入以下约束:
- "no text, no letters, no characters, no words, no subtitles, no watermark, no symbols in the video frame"
- "画面中不出现任何文字、字母、字符、乱码、水印"
- 画面内容限制:
- 视频画面中禁止出现任何非剧情需要的文字内容
- 禁止出现随机字母、乱码符号、无意义字符串
- 如剧情需要展示文字道具(如书信、牌匾),需在 Prompt 中明确指定具体内容,避免模型随机生成乱码文字
- 质量检查:
- 生成视频后如发现画面中存在乱码或无意义文字,应标记该分镜并考虑重新生成
- 重新生成时加强负面提示词的约束力度
注意事项:
- 每个分镜独立生成视频
- 按分镜编号顺序严格依次执行(后一集依赖前一集的关键帧,不可并行)
- 记录每个分镜视频的 result_url,用于后续拼接
- 每个分镜视频生成后需下载到本地保存
- 禁止画面乱码:每次生成视频时必须携带负面提示词,禁止画面中出现乱码/无意义文字/随机字符
- 人物一致性:每个分镜必须传入出场角色的参考图,确保人物形象跨分镜保持一致
- 音画同出必须开启:每个分镜视频生成时必须强制启用音画同出(
OutputConfig.AudioGeneration=Enabled),但首尾帧模式除外(首尾帧仅支持无声,需设为Disabled) - 关键帧抽取失败时不阻塞流程,降级为无参考图的纯文生视频模式
- 音画同出接口调用失败时不阻塞流程,降级为无音效视频(后续通过文案配音补充完整音轨)
本地保存:生成的视频和关键帧需下载到本地,保存路径为:
桌面/漫剧/{漫剧名称}/clips/{分镜编号}-{分镜描述简称}.mp4
桌面/漫剧/{漫剧名称}/keyframes/{分镜编号}-key1.png
桌面/漫剧/{漫剧名称}/keyframes/{分镜编号}-key2.png
第五步:语音识别与字幕合成
第四步生成的分镜视频已通过音画同出包含中文语音对话和环境音效。本步骤将视频上传至腾讯云 VOD,通过 AI 多模态大模型识别视频中的语音对话内容,生成 SRT 字幕文件,最后通过本地脚本 scripts/mergeVedio.py 将字幕硬烧制到视频画面中,形成最终的带字幕分镜视频。
输入:第四步生成的分镜视频(已含中文语音对话音轨)
输出:带字幕的分镜视频,覆盖保存至本地 桌面/漫剧/{漫剧名称}/clips/ 目录
5.1 上传视频至腾讯云 VOD:
将第四步生成的本地分镜视频上传到腾讯云 VOD(云点播),获取 FileId 和播放 URL。
- 上传工具:使用
vod_upload.py upload脚本 - 上传目标:腾讯云 VOD(云点播)
- 输出结果:
- FileId:视频在 VOD 中的唯一标识
- 播放 URL:视频的可访问播放地址
- 处理逻辑:
for 每个分镜视频: 调用 vod_upload.py upload 上传本地 mp4 文件 → 获取 FileId 和播放 URL → 用于后续 AI 语音识别
5.2 AI 识别视频语音:
利用 VOD AIGC Chat + 多模态大模型(Gemini 2.5 Flash),传入视频 URL,识别视频中的语音对话内容。
- 识别工具:使用
vod_aigc_chat.py chat脚本 - 识别引擎:VOD AIGC Chat + Gemini 2.5 Flash 多模态大模型
- 输入:5.1 步骤获取的视频播放 URL
- 识别方式:将视频 URL 传入多模态大模型,由模型识别视频中的语音对话内容
- 识别输出:
- 每段语音对话的文字内容
- 每段语音对话的起止时间戳
- 处理逻辑:
for 每个分镜视频: 调用 vod_aigc_chat.py chat,传入视频播放 URL → 多模态大模型识别视频中的语音对话 → 获取识别结果(文字内容 + 时间轴) → 用于后续 SRT 字幕文件生成
5.3 生成 SRT 字幕文件:
将 AI 识别结果按时间轴整理为标准 .srt 字幕文件。
- 字幕来源:5.2 步骤中 AI 识别输出的语音对话内容及时间轴
- 输出格式:标准 SRT 字幕文件格式
- SRT 文件格式示例:
1 00:00:01,000 --> 00:00:03,500 林冲:此仇不共戴天 2 00:00:04,000 --> 00:00:07,200 鲁智深:兄弟莫急,且听我一言 3 00:00:07,500 --> 00:00:10,000 二人目光交汇,杀意凛然 - 时间轴规则:
- 时间轴基于 AI 识别结果中的起止时间戳
- 多句对话按顺序排布,确保前后字幕无重叠
- 相邻字幕之间留 200-500ms 间隔,避免视觉跳跃
- 文件保存路径:
桌面/漫剧/{漫剧名称}/clips/{分镜编号}-subtitle.srt - 处理逻辑:
for 每个分镜视频: 获取 5.2 步骤的 AI 识别结果 if 识别结果不为空: 将识别结果按时间轴整理为 SRT 格式 → 保存为 clips/{分镜编号}-subtitle.srt else: # 无语音内容的分镜跳过字幕生成 跳过
5.4 字幕烧制到视频(本地脚本 scripts/mergeVedio.py)【强制执行,不可跳过】:
通过本地 Python 脚本 scripts/mergeVedio.py 将 SRT 字幕文件**硬烧制(hardsub/burn-in)**到分镜视频画面中,形成最终的带字幕分镜视频。该脚本使用 Pillow + moviepy 逐帧渲染字幕到视频画面,烧制后字幕不可关闭、不可移除,确保在任何播放器/平台播放时都能显示字幕。
- 烧制工具:本地 Python 脚本
scripts/mergeVedio.py(纯本地处理,无需云端依赖)- 依赖库:
moviepy、Pillow(PIL)、numpy - 系统依赖:
ffmpeg(用于最终视频编码) - 安装依赖:
pip install moviepy Pillow numpy
- 依赖库:
- 输入:
- 分镜视频文件:
clips/{分镜编号}-{分镜描述简称}.mp4(第四步生成的原始视频) - 对应的 SRT 字幕文件:
clips/{分镜编号}-subtitle.srt(5.3 步骤生成的字幕文件) - 路径必须匹配:SRT 文件名中的分镜编号必须与视频文件名中的分镜编号一致
- 分镜视频文件:
- 字幕样式规范(脚本内置):
- 位置:视频画面底部居中(距底边约 50px)
- 字体:白色字体 + 黑色描边(描边宽度 2px,确保在任何背景下可读)
- 字号:28px(脚本默认值,可通过修改
FONT_SIZE常量调整) - 中文字体:优先使用 Arial Unicode.ttf,备选 STHeiti / Hiragino Sans GB
- 时间对齐:字幕显示时间与 SRT 时间轴精确对齐,逐帧判断当前时间对应的字幕
- 烧制方式:硬字幕(hardsub),使用 Pillow 逐帧将字幕直接渲染到视频画面像素中
- 脚本调用方式:
# 在执行前,需要修改脚本中的 base_dir 和 clips_info 参数 # base_dir = '桌面/漫剧/{漫剧名称}' # clips_info = [('01-分镜描述.mp4', '01-subtitle.srt'), ...] # 方式一:直接修改脚本参数后运行 python scripts/mergeVedio.py # 方式二:在代码中调用 burn_subtitles 函数 from scripts.mergeVedio import burn_subtitles success = burn_subtitles(video_path, srt_path, output_path) - 强制执行逻辑(5.3 生成 SRT 后必须立即执行 5.4):
for 每个分镜视频: srt_path = "clips/{分镜编号}-subtitle.srt" video_path = "clips/{分镜编号}-{分镜描述简称}.mp4" output_path = "clips/{分镜编号}-{分镜描述简称}-sub.mp4" if SRT 字幕文件存在 且 文件内容非空: # 【必须执行】调用 mergeVedio.py 的 burn_subtitles 函数 success = burn_subtitles(video_path, srt_path, output_path) # 【必须验证】烧制成功后验证输出文件 if success 且 输出文件存在 且 文件大小 > 0: → 将 output_path 重命名覆盖 video_path(或直接使用 -sub.mp4 文件) → 标记该分镜: 字幕烧制成功 ✓ else: → 烧制失败,重试一次 → 重试仍失败,标记该分镜: 字幕烧制失败 ✗,记录错误原因 else: # 无字幕文件或字幕为空的分镜(如纯动作无对话场景) → 标记该分镜: 无需字幕烧制(无语音内容) → 保留原视频不变 - 烧制结果汇总(必须输出):
完成 5.4 后,输出字幕烧制结果汇总: ┌──────────┬────────────────────────────┬──────────────┐ │ 分镜编号 │ 视频文件 │ 字幕烧制状态 │ ├──────────┼────────────────────────────┼──────────────┤ │ 01 │ 01-xxxx.mp4 │ ✓ 烧制成功 │ │ 02 │ 02-xxxx.mp4 │ ✓ 烧制成功 │ │ 03 │ 03-xxxx.mp4 │ ✗ 烧制失败 │ └──────────┴────────────────────────────┴──────────────┘ → 烧制成功的视频将用于第六步拼接 → 烧制失败的视频将使用原始无字幕版本(降级处理)
执行顺序:
本地视频 → 上传 VOD → AI 识别语音 → 生成 SRT 字幕 → 本地脚本字幕烧制(mergeVedio.py 硬字幕) → 带烧制字幕的分镜视频
关键强调:SRT 字幕文件生成后,必须紧接着执行 5.4 字幕烧制,不可仅生成 SRT 文件就结束第五步。字幕烧制完成并验证成功后,第五步才算真正完成。
注意事项:
- 字幕烧制为强制步骤:第五步的字幕烧制(5.4)是必须执行的环节,不可跳过。生成 SRT 文件≠字幕烧制完成,必须通过本地脚本
scripts/mergeVedio.py将 SRT 字幕硬烧制到视频画面中,才算完成字幕流程 - 烧制 vs 生成的区别:5.3 是"生成 SRT 字幕文件"(文本文件),5.4 是"将 SRT 烧制到视频画面"(视频处理)。两者缺一不可,仅完成 5.3 而未执行 5.4 = 最终视频无字幕
- 视频上传失败时不阻塞流程,降级为无字幕的视频
- AI 语音识别失败时不阻塞流程,降级为无字幕的视频
- SRT 字幕生成后保存至本地,供 5.4 烧制使用或手动调整
- 字幕烧制后的视频覆盖保存至同一路径(烧制版本替换原始无字幕版本)
- 字幕烧制完成后必须验证:确认输出的视频文件已包含烧制字幕(文件存在且大小大于原始视频的 80%),再进入第六步
- 禁止仅生成 SRT 就跳到第六步:如果 5.3 成功生成了 SRT 文件,就必须执行 5.4 将字幕烧制到视频中,绝对不允许仅保留 SRT 文件而使用无字幕的原始视频进入第六步
第六步:视频拼接合并(腾讯云 VOD)
使用腾讯云点播 VOD 的视频编辑能力(tencent-VOD Skill),将第五步完成字幕烧制后的所有分镜视频按照分镜剧本的先后顺序拼接合并为最终的漫剧视频。
输入:第五步完成字幕烧制后的所有分镜视频的 URL / FileId 列表(按分镜顺序排列)
输出:合并后的完整漫剧视频(已包含烧制字幕),下载保存至本地 桌面/漫剧/{漫剧名称}/output/{漫剧名称}-final.mp4
调用流程:
- 将第五步中完成字幕烧制后的每个分镜视频上传至腾讯云 VOD(或直接使用已有的 FileId)
- 重要:必须使用第五步 5.4 字幕合并后的视频文件(即
clips/{分镜编号}-{分镜描述简称}.mp4,已包含烧制字幕),而非第四步的原始无字幕视频 - 如果某个分镜在第五步中未成功进行字幕烧制(如无语音内容或字幕合并失败),则使用第四步的原始视频
- 重要:必须使用第五步 5.4 字幕合并后的视频文件(即
- 按照分镜顺序构建文件列表
- 调用 EditMedia 接口进行拼接
- 等待拼接任务完成
- 获取最终视频的播放地址
- 将最终视频下载到本地
桌面/漫剧/{漫剧名称}/output/{漫剧名称}-final.mp4
字幕烧制确认(强制):
拼接前必须确认每个分镜视频的字幕烧制状态:
for 每个分镜视频:
if 第五步字幕烧制后的视频文件存在:
使用烧制字幕后的视频文件 → 加入拼接列表
else:
使用第四步原始视频文件(降级处理) → 加入拼接列表
→ 记录警告:分镜 {编号} 未完成字幕烧制
注意事项:
- 必须优先使用字幕烧制后的视频:第六步拼接的输入源必须是第五步 5.4 完成字幕硬烧制后的分镜视频(字幕已嵌入画面),确保最终合并视频包含字幕
- 最终输出视频 = 带烧制字幕的完整漫剧:第六步输出的
{漫剧名称}-final.mp4必须是包含烧制字幕的版本,因为输入的每个分镜视频都已经在 5.4 中完成了字幕烧制 - 如果所有分镜视频都未完成字幕烧制,应在拼接完成后明确警告用户最终视频不含字幕,并建议返回第五步重新执行字幕烧制
- 拼接顺序严格按照分镜编号,不可打乱
- 最终视频质量确认:拼接完成后,确认输出文件存在、大小合理、可正常播放,且包含烧制字幕(因为输入源已含烧制字幕,拼接后自动带有字幕)
第七步:发布到抖音(douyin-video-publish Skill)
使用 douyin-video-publish Skill,将第六步合并完成的最终漫剧视频发布到抖音平台。
输入:第六步生成的最终漫剧视频 桌面/漫剧/{漫剧名称}/output/{漫剧名称}-final.mp4 + 发布参数
输出:抖音视频发布成功,返回视频链接/视频 ID
执行方式:调用 douyin-video-publish Skill 的视频发布接口
发布参数构建规则:
- 视频文件:使用第六步输出的最终漫剧视频文件路径
- 视频标题:默认使用漫剧名称,用户可自定义
- 视频描述:基于漫剧剧本内容自动生成一段吸引人的简介(50-150字),包含关键剧情看点
- 话题标签:自动生成相关话题标签,包含:
#漫剧#AI漫剧#短剧- 基于漫剧题材生成的标签(如:
#武侠#悬疑#校园等) - 用户可自定义追加标签
- 封面图片:
- 优先从最终视频中抽取最具视觉冲击力的画面作为封面
- 或使用第三步生成的人物形象图片作为封面
- 用户可指定自定义封面
调用流程:
- 确认最终视频文件已生成且可用
- 自动生成发布所需的标题、描述和标签
- 调用
douyin-video-publishSkill 上传视频并设置发布参数 - 等待上传和发布完成
- 返回发布结果(视频链接、视频 ID、发布状态)
处理逻辑:
# 确认最终视频文件存在
video_path = "桌面/漫剧/{漫剧名称}/output/{漫剧名称}-final.mp4"
if 视频文件存在:
# 构建发布参数
title = 漫剧名称(或用户自定义标题)
description = 基于剧本自动生成的视频简介
tags = ["漫剧", "AI漫剧", "短剧"] + 题材相关标签
cover = 从视频中抽取封面 或 使用人物形象图
# 调用 douyin-video-publish Skill 发布
调用 douyin-video-publish Skill 上传并发布视频
→ 返回发布结果(视频链接、状态)
else:
报告错误:最终视频文件未找到,请先完成视频合并步骤
注意事项:
- 发布前需确认第六步的视频合并已完成且文件存在
- 视频文件大小需符合抖音平台限制
- 如用户未明确要求发布到抖音,可在视频合并完成后询问用户是否需要发布
- 发布失败时如实反馈错误信息,附上可能的原因和解决方案
- 发布成功后向用户展示视频链接和发布状态
所有生成的文件按以下目录结构组织,必须保存在用户指定的文件夹下,以漫剧名称命名:
根目录:桌面/漫剧/{漫剧名称}/
桌面/漫剧/{漫剧名称}/
├── {漫剧名称}.md # 完整漫剧剧本(文本模型生成,本地保存)
├── {漫剧名称}-分镜.md # 分镜剧本(文本模型生成,本地保存)
├── characters/ # 人物形象目录(tencent-VOD 生图后下载到本地)
│ ├── {角色名1}.png
│ ├── {角色名2}.png
│ └── ...
├── keyframes/ # 关键帧目录(从前一集视频抽取,用于下一集衔接参考)
│ ├── 01-key1.png
│ ├── 01-key2.png
│ ├── 02-key1.png
│ ├── 02-key2.png
│ └── ...
├── clips/ # 分镜视频及字幕目录(含最终带字幕的视频)
│ ├── 01-{分镜描述简称}.mp4
│ ├── 01-subtitle.srt # 分镜01的 SRT 字幕文件
│ ├── 02-{分镜描述简称}.mp4
│ ├── 02-subtitle.srt # 分镜02的 SRT 字幕文件
│ └── ...
└── output/ # 最终输出目录(tencent-VOD 拼接后下载到本地)
└── {漫剧名称}-final.mp4 # 合并后的最终漫剧
命名规则:
- 文件夹和文件统一以漫剧名称命名
- 剧本文件:
{漫剧名称}.md - 分镜文件:
{漫剧名称}-分镜.md - 关键帧文件:
{分镜编号}-key{序号}.png(每集最多 2 张) - 最终视频:
{漫剧名称}-final.mp4 - 所有云端生成的资源(图片、视频、关键帧、音频)必须下载到对应的本地目录
常见使用场景
场景 1:完整漫剧创作(全流程)
用户:"漫剧名称:笑傲江湖巅峰之战,生成一个 30 秒的漫剧,剧本以笑傲江湖的福威镖局为背景进行创作,要求故事简短、精彩,按照 10 秒一集的节奏做分镜,将所有文件保存在我桌面漫剧目录中"
Step 1:使用内置 LLM 生成漫剧剧本 → 保存为 桌面/漫剧/笑傲江湖巅峰之战/笑傲江湖巅峰之战.md
Step 2:使用内置 LLM 生成分镜剧本(3 个分镜,每个 10 秒) → 保存为 桌面/漫剧/笑傲江湖巅峰之战/笑傲江湖巅峰之战-分镜.md
Step 3:使用 tencent-VOD Skill 生图生成角色形象 → 下载保存至 桌面/漫剧/笑傲江湖巅峰之战/characters/ 目录
Step 4:使用 tencent-VOD Skill 生视频依次生成 3 个分镜视频 → 下载保存至 桌面/漫剧/笑傲江湖巅峰之战/clips/ 目录
Step 5:上传分镜视频至 VOD → AIGC Chat 识别语音 → 生成 SRT 字幕 → 本地脚本 mergeVedio.py 将字幕硬烧制到视频画面中
Step 6:使用 tencent-VOD Skill EditMedia 将 3 个带烧制字幕的分镜视频拼接 → 下载保存至 桌面/漫剧/笑傲江湖巅峰之战/output/ 目录
Step 7:使用 douyin-video-publish Skill 将最终视频发布到抖音 → 返回发布链接
场景 2:仅生成剧本和分镜
用户:"帮我生成一个 60 秒的漫剧剧本,题材是校园悬疑,按 15 秒一个分镜拆分"
Step 1:使用内置 LLM 生成漫剧剧本
Step 2:使用内置 LLM 将剧本拆分为 4 个分镜(每个 15 秒)
场景 3:根据已有剧本生成视频
用户:"我已经有分镜剧本了(附上文件),帮我直接生成视频并合并"
Step 1:解析用户提供的分镜剧本
Step 2:使用 tencent-VOD Skill 生图生成人物形象 → 下载保存至本地 characters/ 目录
Step 3:使用 tencent-VOD Skill 生视频逐个分镜生成视频 → 下载保存至本地 clips/ 目录
Step 4:上传分镜视频至 VOD → AIGC Chat 识别语音 → 生成 SRT 字幕 → 本地脚本 mergeVedio.py 将字幕硬烧制到视频画面中
Step 5:使用 tencent-VOD Skill EditMedia 将带烧制字幕的分镜视频拼接合并 → 下载保存至本地 output/ 目录
Step 6:使用 douyin-video-publish Skill 将最终视频发布到抖音 → 返回发布链接
Agent 执行规范
认证流程
- 腾讯云 VOD(tencent-VOD Skill):统一使用
tencent-VODSkill 提供的认证方式(SecretId / SecretKey),涵盖文生图、文生视频、视频拼接合并等全部多媒体能力 - 本地字幕烧制脚本(scripts/mergeVedio.py):纯本地执行,无需云端认证,依赖 Python 环境(moviepy + Pillow + numpy)和系统 ffmpeg
- 抖音开放平台(douyin-video-publish Skill):使用
douyin-video-publishSkill 提供的认证方式(OAuth 授权),用于视频发布到抖音平台
核心约束
- 零交互原则:流程中各步骤自动衔接,无需逐步确认
- 人物一致性:每个分镜视频中的角色形象必须与第三步生成的人物参考图保持一致,必须传入角色参考图作为 reference image
- 风格一致性:同一部漫剧中所有人物形象和分镜视频需保持统一的艺术风格
- 音画同出强制:所有分镜视频生成时必须开启音画同出功能,确保视频自带环境音效
- 字幕烧制强制:第五步 5.3 生成 SRT 字幕文件后,必须立即执行 5.4 将字幕硬烧制到视频画面中(通过本地脚本
scripts/mergeVedio.py)。仅生成 SRT 文件不算完成字幕处理,必须烧制到视频中。第六步拼接时必须使用字幕烧制后的视频文件,确保最终合并视频包含烧制字幕 - 顺序保障:分镜视频必须严格按照分镜编号顺序进行拼接
- 禁止伪造结果:任何能力调用失败时,必须返回明确的错误信息,不得编造 URL 或描述生成内容
- 文件管理:所有生成物按规范目录结构保存在用户指定文件夹下,以漫剧名称命名,方便用户查找和管理
- 本地保存必选:所有云端生成的资源(图片、视频)必须下载到对应的本地目录,确保用户在本地可直接访问
- 统一命名:文件夹和核心文件统一以漫剧名称命名,子目录按 characters/clips/output 分类
- 进度反馈:每完成一个步骤后,向用户报告当前进度和下一步操作
错误处理
- 如果视频生成失败,尝试调整 Prompt 后重试(最多 2 次)
- 如果 VOD 拼接失败,检查视频文件是否全部就绪后重试
- 所有错误信息如实反馈给用户,附上建议的解决方案
依赖
| 依赖项 | 版本要求 | 用途 | | ------------------------------------------ | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | 内置 LLM | 工具自带 | 剧本 / 分镜文案生成 | | 腾讯云 VOD(tencent-VOD Skill) | API 3.0 | 人物形象生图、分镜视频生成(可灵3.0-Omni 优先 / 可灵3.0 备选,音画同出,首尾帧+音画同出同时支持)、视频上传、AIGC Chat 语音识别、视频拼接合并 | | 本地脚本(scripts/mergeVedio.py) | Python 3.7+ | 字幕硬烧制(burn-in) —— 使用 Pillow + moviepy 逐帧将 SRT 字幕渲染到视频画面中,生成带不可关闭字幕的最终视频 | | moviepy + Pillow + numpy | 最新版 | mergeVedio.py 的 Python 依赖库 | | ffmpeg | 4.0+ | 视频编码、分辨率统一、视频拼接(mergeVedio.py 调用) | | 抖音开放平台(douyin-video-publish Skill) | - | 将最终合并完成的漫剧视频发布到抖音平台 | | Python | 3.7+ | 脚本执行环境 |
扫码联系在线客服