n8n自动化工作流学习笔记-生成动物跳水视频
目录
1.工作流概览
2.工作流拆解
3.工作流实操
3.1.Trigger manually
3.2.Google sheets(拿数据)
3.3.Basic LLM Chain(生成图片提示词)
3.4.HTTP Request(生图)
3.5.HTTP Request(提交生成视频请求)
3.6.Wait(等待)
3.7.HTTP Request(抓取视频)
3.8.Wait(等待)
3.9.Extract from File(下载json信息)
3.10.HTTP Request(提交配音请求)
3.11.Wait(等待)
3.12.HTTP Request(下载视频节点)
3.13.Google sheets(将链接更新到文档中)
4.成果展示
1.工作流概览
2.工作流拆解
该工作流分为三个层级:
第一层:图像生成层
- Google Sheets节点(用于抓取目标动物信息)
- 提示词生成节点
- 图像生成节点
第二层:视频生成层
- HTTP请求节点(提交视频生成任务)
- 延迟节点(等待视频生成)
- 视频下载节点
- 延迟节点(持续检查任务状态)
说明:视频生成采用异步处理模式,类比餐厅就餐流程:下单(提交请求)→ 等待(延迟)→ 上菜(下载)→ 厨房确认(定期检查)。
第三层:音频处理层
- 文件提取节点(获取视频文件链接)
- HTTP请求节点(提交音频生成任务)
- 延迟节点
- 音频下载节点
最终处理:视频更新节点将最终生成的视频链接回传至Google Sheets表格。
3.工作流实操
3.1.
Trigger manually
Trigger 的作用是,作为工作流开始的入口,当点击"Execute Workflow"后,流程就会从这里开始执行。
3.2.Google sheets(拿数据)
节点配置
表格内容
动物 | 更新状态 | 链接 |
猫 | 待完成 | |
狗 | 待完成 | |
兔子 | 待完成 |
Google sheets的相关api配置参考其他文章。
填写第一二列的数据(我们主要抓取第一列的动物信息,然后在第二列更新好配套的完成状态,没有开始跑之前一律把下拉菜单里面的状态更新成未完成,下拉菜单右键单元格就能找到),第三列留空。
3.3.Basic LLM Chain(生成图片提示词)
节点配置
对应大模型配置(相关认证配置见其他文章)
用户提示词如下:
你现在是一个专业的AI绘画提示词(Prompt)生成器。请你根据我提供的固定场景描述,生成1条独立的、可用于AI绘画的提示词。固定场景要求如下:视角与构图: 一个从侧面拍摄的中景镜头,构图稳定。焦点清晰地落在主体 {{ $json['动物'] }} 身上。地点与核心元素: 场景为一个光线明亮的室内奥运会跳水场馆。主体 {{ $json['动物'] }} 正从右向左走在一块浅蓝色的跳水板上。背景细节: 背景是一面纯净的蓝色墙壁,墙壁左上方印有清晰的白色奥运五环标志。在主体动物的后方,可以看到一名坐在高脚椅上、身穿红色上衣的模糊工作人员,以及更远处的模糊观众席。在画面的右侧,可以看到跳水台的银色金属扶手/楼梯结构。你的任务:
在上述固定场景中,将核心主体设定为:一只 {{ $json['动物'] }}。输出要求:生成1条独立的提示词。最终输出的提示词要完整、流畅地融合所有场景描述。注意!!!只输出最终生成的提示词内容,不要包含任何其他无关文字。生成的动物要面冲着泳池
配置完了上面的东西,就可以进行测试,点击 exevute step,让他跑起来,旁边生成提示词tips:结果你如果满意的话,就可以点右上角的大头针固定,这样,再测试后面节点的时候,这个节点会持续输出你固定的这一次的结果,比较省 token
3.4.HTTP Request(生图)
节点配置
url:https://api.apicore.ai/v1/images/generations
参考api手册填写:https://doc.apicore.ai/api-303532198
未建立过授权的,记得填写鉴权信息,这里用的是https://api.apicore.ai/
目前书虫的那个api平台返回值由变化,导致所有信息都堆在输出的data字段里面了
所以在这里添加一个code节点节点配置
json参考如下
// n8n Code节点通用代码:解析嵌套字符串JSON
// 支持批量输入,自动处理异常return items.map(item => {let parsed = {};try {// 1. 解析 data 字段(字符串转对象)parsed = JSON.parse(item.json.data);} catch (e) {// 解析失败,返回原始内容和错误信息return {json: {error: 'data字段不是有效的JSON字符串',original: item.json.data}};}// 2. 取出你需要的字段(可根据实际需求调整)const revisedPrompt = parsed.data?.[0]?.revised_prompt ?? null;const url = parsed.data?.[0]?.url ?? null;const created = parsed.created ?? null;return {json: {created,revised_prompt: revisedPrompt,url}};
});
配置好之后,再次运行你就会发现,code节点把杂乱的信息整理成整齐的字段,里面就有我们需要的url字段,后面直接引用这个字段就OK了
3.5.HTTP Request(提交生成视频请求)
这次我们用到的是海螺2模型,文档链接在这里:https://fal.ai/models/fal-ai/minimax/hailuo02/standard/image-to-video/api
不会看文档的咱们还是一步一步来,请求方式选 post,ur 填这个 https://queue.fal.run/fal-ai/minimax/hailuo-02/standard/image-to-video
身份认证选择 generic credential type,下面选择头部认证 header auth,然后在新建一个认证fal 的认证账户跟前面略有不同的点是,这里不是 Bearer+空格+api key,这里变成了 Key+空格+apikey,其他都一样,配置的时候要注意!!
节点配置
提示词如下
The animal leaped from the diving platform, performed a forward three-and-a-half somersault pike in mid-air, executed an elegant dive, and finally plunged into the pool.
3.6.Wait(等待)
跟了一个 wait 节点,加了几秒钟的延迟,避免视频不会立刻的生成出来,加一个延迟相对保险,这里配置的是 5分钟,可以按需调整
3.7.HTTP Request(抓取视频)
按照我的这个图中设置,并选取 fal的认证,记得把红框的那个标签拉到 ur 的文本框里面
设置好了之后,这里还有一个重要的设置,点击上面的第二个标签 settings,在红框标注位置选择带着错误输出,这样我们的节点就有成功和不成功的两种输出状态,帮助我们判断,成功的状态我们后面要串到下一层的输入里面去,失败的状态我们可以加个延迟(这里我是延迟 10 秒钟,配置方法跟上面的延迟-样),然后再串回这个抓取视频的节点,这样如果一直没有抓取成功的话,这个抓取节点,每隔十秒钟就会重新进行一次下载任务,这样就能帮我们实现一个轮训的效果。
节点配置
3.8.Wait(等待)
跟了一个 wait 节点,加了几秒钟的延迟,避免视频抓取失败,加一个延迟相对保险,这里配置的是 10秒,可以按需调整
3.9.Extract from File(下载json信息)
如果上一步传递的是url则不需要,如果是json,需要添加这个节点
节点配置
3.10.HTTP Request(提交配音请求)
逻辑跟刚才提交视频的请求一样,这里大家就按照图配置吧,提示词我就直接用的是生成视频的提示词然后 url 记得拉到对应位置
节点配置
3.11.Wait(等待)
跟了一个 wait 节点,加了几秒钟的延迟,避免视频配音未完成,加一个延迟相对保险,这里配置的是 1分钟,可以按需调整
3.12.HTTP Request(下载视频节点)
配置跟上面的抓取视频一样,按照下图配置即可,抓取失败的输出记得串回延迟节点,达到轮询的效果
节点配置
3.13.Google sheets(将链接更新到文档中)
节点配置