动物进化史视频制作,coze扣子工作流从0开始搭建教程
不知道大家有没有发现,随着目前AI大模型能力越来越强,生物进化史赛道优质的视频越来越多了?
成品展示:
接下来我就一步一步带着大家搭建一套这样的工作流。
创建工作流

登录扣子官网,创建一个工作流地址:扣子 - AI Agent智能办公平台 - 扣子用AI重塑生产力与工作效率
第 1 步:先放好启动入口
参数设置:
-
APIkey(字符串):必填,用来调用插件生成图片和视频 -
bgm_url(字符串):默认值填背景音乐链接 -
input(字符串):必填,用来输入要生成进化史的生物名称
第 2 步:让大模型先生成生物进化阶段列表
-
从「开始」拉出一个新的
【大模型】节点。重命名为:"2-进化"
模型选择:
-
模型:豆包·2.0·mini
参数设置:
-
input(字符串):引用「开始」输出的input
系统提示词:
# 角色
你是一位专业且资深的生物进化史研究专家,擅长以通俗易懂且条理清晰的方式,向用户输出古生物的进化史。能够精准涵盖不同地质时期具有代表性的古生物种类及进化脉络,并且能依据科学权威资料,保证信息的准确性。
## 技能
### 技能 1: 输出古生物进化史
1. 当用户提出{{input}}时,按照地质年代顺序,依次列举出不同时期具有代表性的古生物及其出现的大致时间。
2. 利用搜索工具查找所列举古生物信息,确保其基于科学研究和广泛认可的资料。
3. 输出格式为:
以下是输出示例
{
"三叶虫 寒武纪\n(距今约 5.6 亿年前)",
"海口虫 寒武纪晚期\n(距今约 4.85 亿年前)",
"海鱼 奥陶纪早期\n(距今约 4.6 亿年前)",
...
"渐新马 新生代渐新世\n(距今约 3500 万年前)",
"中新马 新生代中新世\n(距今约 1200 万年前)",
"现代驴"
}
## 限制:
- 只输出与生物进化史相关的古生物信息,拒绝回答与该主题无关的话题。
- 输出内容必须按照“古生物名称 地质年代时期(距今约 X 亿/万年前)”的格式进行组织。
用户提示词:
{{input}}
输出变量:
-
output(字符串列表) -
reasoning_content(字符串)
第 3 步:把进化阶段改写成图片提示词和视频提示词
-
从「2-进化」拉出一个新的
【大模型】节点。重命名为:"3-动物进化提示词"
模型选择:
-
模型:DeepSeek-V3.2
参数设置:
-
input(字符串列表):引用「2-进化」输出的output
系统提示词:
# 角色
你是一名专注于制作生物进化史短视频的博主,擅长以生动有趣且专业的方式,通过AI视频呈现不同生物在各个时期的进化历程。
## 技能
### 技能 1: 生成进化进程脚本
1. 当用户输入具体生物时,需要梳理该生物的进化时间以及对应的物种形态,形成详细的进化进程脚本。
2. 针对每个进化阶段,编写准确且富有画面感的文生图提示词(image_prompt),这些提示词要能够清晰描绘出该阶段生物的特征、所处环境等细节。
3. 基于文生图提示词,进一步创作图生视频提示词(video_prompt),确保视频风格统一为现实主义风格,能够生动展示生物进化的动态过程。
## 限制:
- 只围绕生物进化史相关内容进行回复,拒绝回答无关话题。
- 所输出的进化进程脚本、文生图和图生视频提示词需逻辑清晰、符合生物学常识。
- 输出内容应条理清晰,符合相应的结构要求。
用户提示词:
{{input}}
输出变量:
-
image_prompt(字符串列表) -
video_prompt(字符串列表)
第 4 步:循环生成每个阶段的图片
-
从「3-动物进化提示词」拉出一个新的
【循环】节点。重命名为:"4-循环"
参数设置:
-
input(字符串列表):引用「3-动物进化提示词」输出的image_prompt -
循环类型:数组循环
-
循环次数:
10
第 4.1 步:在循环里生成图片
-
在「4-循环」内部,从「【入口】」拉出一个新的
【插件】节点,插件市场搜即梦图片生成,选jimeng_generate_image。重命名为:"4.1-图片生成"
参数设置:
-
key(字符串):引用「开始」输出的mihe_key -
prompt(字符串):引用「4-循环」当前循环项input -
model(字符串):图片4.0 -
ratio(字符串):9:16
第 4.2 步:判断图片有没有生成成功
-
在「4-循环」内部,从「4.1-图片生成」拉出一个新的
【选择器】节点。重命名为:"4.2-选择器"
参数设置:
-
条件:判断「4.1-图片生成」输出的
url是否存在 -
条件成立:回到「4-循环」的循环出口
-
条件不成立:继续走到下一步重新生成
第 4.3 步:失败时再补生成一次图片
-
在「4-循环」内部,从「4.2-选择器」的否则分支拉出一个新的
【插件】节点,插件市场搜即梦图片生成,选jimeng_generate_image。重命名为:"4.3-图片生成" -
从「4.3-图片生成」连回「4-循环」的循环出口
参数设置:
-
key(字符串):引用「开始」输出的mihe_key -
prompt(字符串):引用「4-循环」当前循环项input -
model(字符串):图片4.0 -
ratio(字符串):9:16
第 5 步:整理首帧和尾帧图片
-
从「4-循环」拉出一个新的
【代码】节点。重命名为:"5-尾帧图片"
参数设置:
-
imageUrls(字符串列表):引用「4-循环」输出的output -
array(字符串列表):引用「3-动物进化提示词」输出的image_prompt
输出变量:
-
firstElementNullified(字符串列表) -
lastElementNullified(字符串列表) -
processedArray(字符串列表)
代码直接抄:
async function main({ params }) {
// 从参数中获取图片地址数组
const imageUrls = params.imageUrls || [];
const array = params.array || [];
// 处理普通数组:自动移除最后一个元素
let processedArrayResult = {
error: null,
processedArray: []
};
if (array.length === 0) {
processedArrayResult = {
error: "输入的数组为空",
processedArray: []
};
} else {
// 创建新数组,移除最后一个元素
const processedArray = array.slice(1);
processedArrayResult = {
error: null,
processedArray
};
processedArray.push("");
}
// 处理图片地址数组
let imageProcessingResult = {
error: null,
firstElementNullified: [],
lastElementNullified: []
};
if (imageUrls.length === 0) {
imageProcessingResult = {
error: "输入的图片地址数组为空",
firstElementNullified: [],
lastElementNullified: []
};
} else {
// 创建新数组并将第一个元素置为空字符串
const firstElementNullified = [...imageUrls];
firstElementNullified[0] = "";
// 创建新数组,移除第一个元素,其他元素前移,最后添加空字符串
const lastElementNullified = imageUrls.slice(1);
lastElementNullified.push("");
imageProcessingResult = {
error: null,
firstElementNullified,
lastElementNullified
};
}
// 返回合并的结果
return {
...processedArrayResult,
...imageProcessingResult
};
}
第 6 步:循环把图片生成视频
-
从「5-尾帧图片」拉出一个新的
【循环】节点。重命名为:"6-生成视频"
参数设置:
-
shou(字符串列表):引用「4-循环」输出的output -
video_prompt(字符串列表):引用「3-动物进化提示词」输出的video_prompt -
wei(字符串列表):引用「5-尾帧图片」输出的lastElementNullified -
循环类型:数组循环
-
循环次数:
10
第 6.1 步:在循环里生成视频
-
在「6-生成视频」内部,从「【入口】」拉出一个新的
【插件】节点,插件市场搜即梦视频生成,选jimeng_generate_video。重命名为:"6.1-视频生成"
参数设置:
-
key(字符串):引用「开始」输出的mihe_key -
prompt(字符串):引用「6-生成视频」当前循环项video_prompt -
duration(整数):5 -
image_tail(字符串):引用「6-生成视频」当前循环项wei -
image_url(字符串):引用「6-生成视频」当前循环项shou -
model(字符串):视频3.0
第 6.2 步:判断视频有没有生成成功
-
在「6-生成视频」内部,从「6.1-视频生成」拉出一个新的
【选择器】节点。重命名为:"6.2-选择器"
参数设置:
-
条件:判断「6.1-视频生成」输出的
url是否存在 -
条件成立:回到「6-生成视频」的循环出口
-
条件不成立:继续走到下一步重新生成
第 6.3 步:失败时再补生成一次视频
-
在「6-生成视频」内部,从「6.2-选择器」的否则分支拉出一个新的
【插件】节点,插件市场搜即梦视频生成,选jimeng_generate_video。重命名为:"6.3-视频生成" -
从「6.3-视频生成」连回「6-生成视频」的循环出口
参数设置:
-
key(字符串):引用「开始」输出的mihe_key -
prompt(字符串):引用「6-生成视频」当前循环项video_prompt -
duration(整数):5 -
image_tail(字符串):引用「6-生成视频」当前循环项wei -
image_url(字符串):引用「6-生成视频」当前循环项shou -
model(字符串):视频3.0
第 7 步:把生成的视频结果提取成视频链接
-
从「6-生成视频」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选get_url。重命名为:"7-视频链接"
参数设置:
-
开启批量处理:是
-
批量列表
item1(字符串列表):引用「6-生成视频」输出的output -
output(字符串):引用当前批量项item1
第 8 步:把对象列表转成普通视频链接列表
-
从「7-视频链接」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选objs_to_str_list。重命名为:"8-视频列表"
参数设置:
-
outputs(对象数组):引用「7-视频链接」输出的outputList
第 9 步:根据视频列表算出时间线
-
从「8-视频列表」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选video_timelines。重命名为:"9-视频时间线"
参数设置:
-
links(字符串列表):引用「8-视频列表」输出的infos
第 10 步:把视频链接和时间线组装成剪映视频数据
-
从「9-视频时间线」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选video_infos。重命名为:"10-视频信息"
参数设置:
-
timelines(对象数组):引用「9-视频时间线」输出的timelines -
video_urls(字符串列表):引用「8-视频列表」输出的infos
第 11 步:把背景音乐链接转成列表
-
从「10-视频信息」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选str_to_list。重命名为:"11-背景音乐列表"
参数设置:
-
obj(字符串):引用「开始」输出的bgm_url
第 12 步:把背景音乐和总时间线组装成音频数据
-
从「11-背景音乐列表」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选audio_infos。重命名为:"12-背景音乐infos"
参数设置:
-
mp3_urls(字符串列表):引用「11-背景音乐列表」输出的infos -
timelines(对象数组):引用「9-视频时间线」输出的all_timelines
第 13 步:生成底部字幕数据
-
从「12-背景音乐infos」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选caption_infos。重命名为:"13-底部字幕信息"
参数设置:
-
texts(字符串列表):引用「2-进化」输出的output -
timelines(对象数组):引用「9-视频时间线」输出的timelines -
in_animation(字符串):弹入
第 14 步:把用户输入转成顶部字幕列表
-
从「13-底部字幕信息」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选str_to_list。重命名为:"14-顶部字幕"
参数设置:
-
obj(字符串):引用「开始」输出的input
第 15 步:生成顶部字幕数据
-
从「14-顶部字幕」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选caption_infos。重命名为:"15-顶部字幕信息"
参数设置:
-
texts(字符串列表):引用「14-顶部字幕」输出的infos -
timelines(对象数组):引用「9-视频时间线」输出的all_timelines
第 16 步:创建剪映草稿
-
从「15-顶部字幕信息」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选create_draft。重命名为:"16-草稿"
参数设置:
-
不用填参数,直接创建草稿
第 17 步:把视频添加进剪映草稿
-
从「16-草稿」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选add_videos。重命名为:"17-添加视频"
参数设置:
-
draft_id(字符串):引用「16-草稿」输出的draft_id -
video_infos(字符串):引用「10-视频信息」输出的infos
第 18 步:把背景音乐添加进剪映草稿
-
从「17-添加视频」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选add_audios。重命名为:"18-背景音乐添加"
参数设置:
-
audio_infos(字符串):引用「12-背景音乐infos」输出的infos -
draft_id(字符串):引用「16-草稿」输出的draft_id
第 19 步:把顶部字幕添加进剪映草稿
-
从「18-背景音乐添加」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选add_captions。重命名为:"19-添加顶部字幕"
参数设置:
-
captions(字符串):引用「15-顶部字幕信息」输出的infos -
draft_id(字符串):引用「16-草稿」输出的draft_id -
alignment(整数):1 -
border_color(字符串):#000000 -
font(字符串):抖音美好体 -
font_size(整数):25 -
text_color(字符串):#ffa800 -
transform_y(小数):1047
第 20 步:把底部字幕添加进剪映草稿
-
从「19-添加顶部字幕」拉出一个新的
【插件】节点,插件市场搜剪映小助手,选add_captions。重命名为:"20-添加底部字幕"
参数设置:
-
captions(字符串):引用「13-底部字幕信息」输出的infos -
draft_id(字符串):引用「16-草稿」输出的draft_id -
alignment(整数):1 -
border_color(字符串):#000000 -
font(字符串):抖音美好体 -
font_size(整数):13 -
text_color(字符串):#ffffff -
transform_y(小数):-900
第 21 步:返回最终剪映草稿 ID
-
把「20-添加底部字幕」和
【结束】节点连上。
参数设置:
-
output(字符串):引用「16-草稿」输出的draft_id

这就是整个工作流搭建的过程,接下来我们只需要点击试运行,成功的话就会得到这样一个草稿ID

只需要把这个草稿ID复制下来,然后打开我们的剪映小助手把草稿ID复制进去,然后点击创建剪映草稿(注意不要复制引号)

稍等一下,创建成功之后打开剪映,就会看到剪映里面多出了一个黑色的草稿,只要点进去就能看到我们的视频了

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐





























所有评论(0)