扣子(coze)高级实战-从“一张图”到“多镜头影视解说”
先看结果肖申克电影剪辑-V2关注我免费领取1月“plus”会员升级前后对比MVP版本升级版画面全程一张静态封面图每个分镜独立配图画面随旁白切换大模型输出一篇完整口播文案分镜脚本含旁白、时长、画面描述图像生成1次N次每个分镜1次视频合成1次图片音频合成N次小段合成 1次整体拼接字幕不变不变 涉及改动的节点以下节点与MVP版本完全不变不再重复介绍第一步创建工作流、开始节点第六步中的 compile_image_audio、audio_to_subtitle和add_subtitles第七步结束节点与测试发布本次只改三处第二步大模型提示词改为输出分镜JSON新增循环结构循环体内TTS 图像生成 compile_image_audio新增代码节点收集小视频URL concat_videos拼接开始(电影名) ↓ 大模型 ↓ ┌─────────────────────────────────────────────┐ │ 循环节点 │ │ ↓ 循环体内 | ├─ 代码节点提取大模型分镜头 │ │ ├─ TTS(当前分镜 narration → 该段音频) │ │ ├─ 图像生成(当前分镜 visual_prompt → 图片) │ │ └─ compile_image_audio(图片 音频 → 小视频) │ └─────────────────────────────────────────────┘ ↓ concat_videos(拼接成完整视频) ↓ audio_to_subtitle(语音自动转字幕) ↓ add_subtitles(叠加字幕) ↓ 结束(输出完整视频URL)改动一第二步——大模型输出分镜脚本把原来生成整篇文案的提示词替换为以下内容。关键是输出一个JSON对象包含分镜数组。# 角色设定 你是一个拥有千万粉丝的抖音影视解说博主风格犀利、口语化、善于埋钩子、制造悬念。同时你也是一名专业的分镜师能将解说文案拆分为分镜脚本。 # 任务 请根据电影名称生成一篇影视解说文案并拆分为3-5个分镜。整体篇幅适合40-60秒口播。 # 输入数据 电影名称{{movie_name}} # 输出要求 请严格输出一个JSONs数组不要加任何额外说明不要使用代码块标记。格式如下 [ { index: 1, narration: 第1个分镜的旁白文本, duration: 10, visual_prompt: 用于AI生成图片的画面描述英文详细描述场景、人物、光影、构图 }, { index: 2, narration: 第2个分镜的旁白文本, duration: 12, visual_prompt: ... } ] # 约束规则 - 所有内容必须基于电影真实情节严禁编造。 - 全程用“你”“我”对话感像是在跟朋友聊天。 - 禁止出现“大家好”“欢迎收看”等套话。 - visual_prompt必须用英文适合AI绘画工具理解描述要具体场景、人物、光影、构图。 - duration单位为秒每个分镜建议8-15秒。 - 分镜数量控制在3-5个。 - 不要重复我的要求不要重复规则开头3秒钩子这种话就不要返回了不要推理内容我只要结果关键输出的是一个纯JSON。因为每个分镜的旁白就是独立文本不再需要整段文案。改动二搭建循环结构核心升级新增节点1循环节点操作解读添加“循环”节点连接在大模型节点之后。配置循环数据点击循环节点在“循环数据”输入框中通过“添加变量” → “节点引用” → 选择大模型节点输出的 output 字段即分镜数组。循环次数留空自动按数组长度执行。新增节点2循环体内提取分镜头详细信息由于大模型生成输出的是数组TTS只需要单镜头的旁白照片生成只需要提示词所以要用代码解析一下:输入为单次循环的item也就是分镜头输出为四个字段index、duration 、narration 、visual_prompt✍️ 代码async def main(args): # 当前循环的是 单个对象item item_str args[params][input] #item_strjson.loads(item) # 直接取 title 和 url index item_str[index] duration item_str[duration] narration item_str[narration] visual_prompt item_str[visual_prompt] return {index: index,duration:duration,narration:narration,visual_prompt:visual_prompt}新增节点3添加TTS节点操作解读双击循环节点进入内部画布。配置TTSinput引用循环当前项的narration字段。具体操作点“添加变量” → “节点引用” → 选择“循环” → 当前项 →narration。voice_id、speaking_rate、format等参数与MVP完全一致。 TTS输出该分镜旁白的独立音频URL。新增节点4循环体内添加图像生成操作解读和TTS并行添加“Doubao-图像生成自接入版”插件或与TTS节点并行节省时间。配置图像生成prompt引用循环当前项的visual_prompt字段。req_schedule_conf、height、width等与MVP一致。 输出图片URL存放在data.data.image_urls数组中。后续需要提取第一个URL。新增节点5循环体内合成小视频操作解读在提取图片URL的代码节点后添加“视频剪辑工具”的compile_image_audio工具。配置image_url引用上一步代码节点的image_url。audio_url引用循环体内TTS节点的音频URL。 该节点输出这个小分镜的视频URL可直接引用其data或video_url字段。✅ 至此循环体内一次执行就完成了一个分镜的“配音出图合成小视频”。循环执行完毕后每个分镜都会输出一段小视频。改动三收集小视频URL并拼接新增节点6拼接视频concat_videos操作解读在代码节点后添加“视频剪辑工具”的concat_videos工具。配置video_urls引用代码节点输出的video_urls数组。 该节点输出拼接后的完整视频URL。后续步骤拼接后的视频进入audio_to_subtitle→add_subtitles→ 结束节点。与MVP完全一致。 测试要点试运行输入“《肖申克的救赎》”观察大模型是否输出标准JSON无代码块包裹循环是否执行了预期次数可在循环节点上看到迭代次数每个分镜的小视频URL是否有效检查循环输出或代码节点输出拼接后的视频时长是否合理画面是否随旁白切换如果循环内TTS或图像生成失败检查插件是否正常工作可先在循环外单独测试单个分镜的TTS出图。如果拼接后只有第一段有声音检查concat_videos是否保留了音频轨默认会保留必要时检查每个小视频是否包含音频。⚠️ 升级版常见踩坑现象原因解决循环只执行一次循环数据引用错误未选到scenes数组检查大模型输出的JSON字段名确认scenes存在且为数组图片生成有时为空visual_prompt不合理或被拦截简化prompt确保符合内容政策可统一加“safe for work”代码节点收集不到视频URLcompile_image_audio输出字段路径变化打印loop_output查看实际结构调整代码中的取值路径TTS调用频繁限流免费额度或并发限制循环节点勾选“串行执行”避免同时发起多个TTS请求 后续再升级方向精确控制分镜时长目前每个分镜的音频时长由TTS自动决定后续可在分镜脚本中指定精确时长或利用TTS返回的音频实际时长来统一节奏。转场效果若concat_videos支持可配置转场动画。数字人出镜将静态图替换为蝉镜数字人口播视频。现在你已经从“有声幻灯片”升级到“多镜头影视解说”。初版建议用简化音频方案先跑通确认多画面切换效果后再做精确同步。