基于AI的Loom视频问答(Gemini-2.5和Slack通知)
高级
这是一个AI, IT Ops领域的自动化工作流,包含 24 个节点。主要使用 If, Set, Code, Wait, Merge 等节点,结合人工智能技术实现智能自动化。 基于AI的Loom视频问答:使用Gemini-2.5和Slack通知
前置要求
- •Slack Bot Token 或 Webhook URL
- •可能需要目标 API 的认证凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "59761dc282918b63de68f8544bab8098be77f63f00c94bc04dd5d71886f7d2e1",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "1b69f192-6e52-4484-8953-285441906bde",
"name": "提取视频ID",
"type": "n8n-nodes-base.set",
"position": [
600,
-420
],
"parameters": {
"values": {
"string": [
{
"name": "videoId",
"value": "={{ $json['Loom Video URL'].split('/').pop().split(\"?\")[0] }}"
}
]
},
"options": {}
},
"typeVersion": 1
},
{
"id": "96a1f9d1-41da-4f73-aef1-5fc61a2ecbde",
"name": "获取下载URL",
"type": "n8n-nodes-base.httpRequest",
"position": [
820,
-425
],
"parameters": {
"url": "=https://www.loom.com/api/campaigns/sessions/{{ $json.videoId }}/transcoded-url",
"method": "POST",
"options": {}
},
"typeVersion": 3
},
{
"id": "983e0686-6a65-495c-af5c-103001995271",
"name": "下载视频内容",
"type": "n8n-nodes-base.httpRequest",
"position": [
1040,
-420
],
"parameters": {
"url": "={{ $json.url }}",
"options": {}
},
"typeVersion": 3
},
{
"id": "9426bf71-eb18-419f-a693-a7b5832956a6",
"name": "Loom URL表单",
"type": "n8n-nodes-base.formTrigger",
"position": [
160,
-420
],
"webhookId": "5c01bf3e-8c98-4311-859e-dac20b35d252",
"parameters": {
"options": {},
"formTitle": "Loom Video Downloader to Gemini",
"formFields": {
"values": [
{
"fieldLabel": "Loom Video URL",
"placeholder": "https://www.loom.com/share/4ef793670bfd4b06a7c042b1b439d51a",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Enter a question about the video",
"requiredField": true
}
]
},
"formDescription": "Enter a public loom video url and the video will be downloaded and provided as input to Google Gemini"
},
"typeVersion": 2.2
},
{
"id": "a7331691-acda-4191-add6-65ab1f61b1d5",
"name": "上传视频数据",
"type": "n8n-nodes-base.httpRequest",
"position": [
2360,
-425
],
"parameters": {
"url": "={{ $json.uploadUrl }}",
"method": "PUT",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Length",
"value": "={{ $json.fileSizeInBytes }}"
},
{
"name": "X-Goog-Upload-Offset",
"value": "0"
},
{
"name": "X-Goog-Upload-Command",
"value": "upload, finalize"
}
]
},
"inputDataFieldName": "data"
},
"typeVersion": 4.1
},
{
"id": "c24fb0b7-d21f-4fe7-bed4-b0e2ecd0c2b2",
"name": "为Gemini启动上传会话",
"type": "n8n-nodes-base.httpRequest",
"position": [
1700,
-500
],
"parameters": {
"url": "=https://generativelanguage.googleapis.com/upload/v1beta/files",
"method": "POST",
"options": {
"response": {
"response": {
"fullResponse": true
}
}
},
"jsonBody": "={\n \"file\": {\n \"display_name\": \"{{ $json.displayName }}\"\n }\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth",
"headerParameters": {
"parameters": [
{
"name": "X-Goog-Upload-Protocol",
"value": "resumable"
},
{
"name": "X-Goog-Upload-Command",
"value": "start"
},
{
"name": "X-Goog-Upload-Header-Content-Length",
"value": "={{ $json.fileSizeInBytes }}"
},
{
"name": "X-Goog-Upload-Header-Content-Type",
"value": "={{ $json.mimeType }}"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"credentials": {
"httpQueryAuth": {
"id": "wDRHYE3a1YNvuZ5Z",
"name": "Gemini API Query Auth"
}
},
"typeVersion": 4.1
},
{
"id": "e92b0b3d-e309-44b3-a288-2fea8f50c695",
"name": "有效的Loom URL?",
"type": "n8n-nodes-base.if",
"position": [
380,
-420
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "debf942c-92e7-43f0-9c9b-15d03aa6e507",
"operator": {
"type": "string",
"operation": "startsWith"
},
"leftValue": "={{ $json['Loom Video URL'] }}",
"rightValue": "https://www.loom.com/share/"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "3180c3a0-b5cc-4501-80ed-2ebce9463af2",
"name": "合并",
"type": "n8n-nodes-base.merge",
"position": [
2140,
-425
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.1
},
{
"id": "5c1a814e-041b-456d-89f2-22a1845d6693",
"name": "合并1",
"type": "n8n-nodes-base.merge",
"position": [
1480,
-420
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.1
},
{
"id": "51021cc5-971d-4287-be7f-d102ccb2505f",
"name": "提取文件详情",
"type": "n8n-nodes-base.set",
"position": [
2580,
-420
],
"parameters": {
"values": {
"string": [
{
"name": "geminiFileUri",
"value": "={{ $json.file.uri }}"
},
{
"name": "geminiFileName",
"value": "={{ $json.file.name }}"
},
{
"name": "geminiFileMimeType",
"value": "={{ $json.file.mimeType }}"
}
]
},
"options": {},
"keepOnlySet": true
},
"typeVersion": 1
},
{
"id": "a0b210dc-4d66-45eb-a1f6-526297049bea",
"name": "等待5秒",
"type": "n8n-nodes-base.wait",
"position": [
3060,
-400
],
"webhookId": "ccaddc3f-1091-4e08-a513-0f61bbfe025f",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "e36643d5-5102-4ef9-99ce-3777d38d0f16",
"name": "循环直到视频激活",
"type": "n8n-nodes-base.splitInBatches",
"position": [
2800,
-425
],
"parameters": {
"options": {
"reset": false
}
},
"typeVersion": 3
},
{
"id": "6496a5f2-b52a-4f68-bfef-09788e36aac1",
"name": "获取视频状态",
"type": "n8n-nodes-base.httpRequest",
"position": [
3240,
-400
],
"parameters": {
"url": "={{ $json.geminiFileUri }}",
"options": {},
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth"
},
"credentials": {
"httpQueryAuth": {
"id": "wDRHYE3a1YNvuZ5Z",
"name": "Gemini API Query Auth"
}
},
"typeVersion": 4.2
},
{
"id": "4a822835-719f-46aa-8f0e-1715af385f7a",
"name": "视频已激活?",
"type": "n8n-nodes-base.if",
"position": [
3460,
-400
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "0f9c3f19-3a7b-43c3-9e81-41cfcf649d00",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.state }}",
"rightValue": "ACTIVE"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "9e78e6d5-435c-4c8a-8cd4-64f0c5e4ff7f",
"name": "要求Gemini总结视频",
"type": "n8n-nodes-base.httpRequest",
"position": [
3740,
-460
],
"parameters": {
"url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro-preview-03-25:generateContent",
"method": "POST",
"options": {},
"jsonBody": "={\n \"contents\": [\n {\n \"parts\": [\n {\n \"file_data\": {\n \"mime_type\": \"video/mp4\",\n \"file_uri\": \"{{ $json.uri }}\"\n }\n },\n {\n \"text\": {{ JSON.stringify($('Loom URL Form').first().json['Enter a question about the video']) }}\n }\n ]\n }\n ]\n} ",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth"
},
"credentials": {
"httpQueryAuth": {
"id": "wDRHYE3a1YNvuZ5Z",
"name": "Gemini API Query Auth"
}
},
"typeVersion": 4.2
},
{
"id": "77df9ffb-2a4d-46c9-a2a1-44eaf1f7a734",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
120,
-640
],
"parameters": {
"color": 7,
"width": 1080,
"height": 420,
"content": "## 下载Loom视频"
},
"typeVersion": 1
},
{
"id": "89545746-96c1-4896-95bf-c5bca17b1ef3",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1200,
-640
],
"parameters": {
"color": 5,
"width": 1300,
"height": 420,
"content": "## 上传视频到Gemini"
},
"typeVersion": 1
},
{
"id": "f35ceb48-2931-47b5-835a-bf3cfbec813b",
"name": "提取上传URL",
"type": "n8n-nodes-base.set",
"position": [
1920,
-500
],
"parameters": {
"values": {
"string": [
{
"name": "uploadUrl",
"value": "={{ $json.headers['x-goog-upload-url'] }}"
}
]
},
"options": {},
"keepOnlySet": true
},
"typeVersion": 1
},
{
"id": "02cff2c4-5f4f-4422-acc8-bb5e6a125365",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2500,
-640
],
"parameters": {
"width": 1120,
"height": 420,
"content": "## 在与LLM请求使用前确保视频已激活"
},
"typeVersion": 1
},
{
"id": "9f457708-2b80-403e-8030-1dbdbc81bc54",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
3620,
-640
],
"parameters": {
"color": 4,
"width": 580,
"height": 420,
"content": "## 向Gemini LLM发送请求"
},
"typeVersion": 1
},
{
"id": "33800aac-7646-40ce-98b2-213f48f91ad8",
"name": "计算文件大小",
"type": "n8n-nodes-base.code",
"position": [
1240,
-520
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "// Get the input item (using $input.item for single item processing is fine)\nconst item = $input.item;\n\n// --- Define the Expected Binary Property Name ---\n// This is crucial. If the node feeding this Code node outputs binary data\n// under a different property name (e.g., 'file', 'binaryOutput'),\n// you MUST change this value accordingly.\nconst binaryPropertyName = 'data';\n\n// --- Check if any binary data exists and if the specific property is present ---\nif (!item.binary || !item.binary[binaryPropertyName]) {\n const availableProperties = item.binary ? Object.keys(item.binary).join(', ') : 'none';\n throw new Error(`Binary property '${binaryPropertyName}' not found on input item. Available binary properties: ${availableProperties}. Check the 'Property Name' setting in the preceding node if it handles binary data (e.g., HTTP Request, Read File).`);\n}\n\n// --- Access Binary Data and Calculate Size using Helpers ---\n// Use the n8n helper function to get the buffer\nconst buffer = await this.helpers.getBinaryDataBuffer(0, binaryPropertyName);\n\n// The length of the buffer *is* the size in bytes\nconst fileSizeInBytes = buffer.length;\n\n// --- Prepare Output JSON ---\nconst outputJson = {\n fileSizeInBytes: fileSizeInBytes,\n};\n\nreturn outputJson;"
},
"typeVersion": 2
},
{
"id": "e6fdc875-2fde-4da3-8330-11e72ba02d33",
"name": "设置视频属性",
"type": "n8n-nodes-base.set",
"position": [
1240,
-360
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "185823b8-48f0-423b-a670-33a5215cf348",
"name": "mimeType",
"type": "string",
"value": "={{ $binary.data.mimeType }}"
},
{
"id": "94cce1af-7bcc-49ea-9968-c0b12c2fbc82",
"name": "displayName",
"type": "string",
"value": "=loom_{{ $('Extract Video ID').item.json.videoId }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "3ae06fca-7edb-4949-a9e7-588256ffddd0",
"name": "Slack",
"type": "n8n-nodes-base.slack",
"position": [
4020,
-460
],
"webhookId": "3ec96773-ccb6-446d-8b2f-0d53e50bfca8",
"parameters": {
"text": "=Loom video response from Gemini: {{ $json.candidates[0].content.parts[0].text }}",
"user": {
"__rl": true,
"mode": "username",
"value": "@giosegar"
},
"select": "user",
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "9",
"name": "Bot access token"
}
},
"typeVersion": 2.3
},
{
"id": "b564cf3b-1fd7-4b4d-9fda-1e5ba2842224",
"name": "便签说明4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-440,
-640
],
"parameters": {
"width": 420,
"height": 400,
"content": "## 如何使用此工作流"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Merge": {
"main": [
[
{
"node": "Upload Video Data",
"type": "main",
"index": 0
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "Start Upload Session for Gemini",
"type": "main",
"index": 0
},
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Loom URL Form": {
"main": [
[
{
"node": "Valid Loom URL?",
"type": "main",
"index": 0
}
]
]
},
"Video Active?": {
"main": [
[
{
"node": "Loop Until Video Is Active",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait 5 Seconds",
"type": "main",
"index": 0
}
]
]
},
"Wait 5 Seconds": {
"main": [
[
{
"node": "Get Video Status",
"type": "main",
"index": 0
}
]
]
},
"Valid Loom URL?": {
"main": [
[
{
"node": "Extract Video ID",
"type": "main",
"index": 0
}
]
]
},
"Extract Video ID": {
"main": [
[
{
"node": "Fetch Download URL",
"type": "main",
"index": 0
}
]
]
},
"Get Video Status": {
"main": [
[
{
"node": "Video Active?",
"type": "main",
"index": 0
}
]
]
},
"Upload Video Data": {
"main": [
[
{
"node": "Extract File Details",
"type": "main",
"index": 0
}
]
]
},
"Fetch Download URL": {
"main": [
[
{
"node": "Download Video Content",
"type": "main",
"index": 0
}
]
]
},
"Calculate File Size": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"Extract File Details": {
"main": [
[
{
"node": "Loop Until Video Is Active",
"type": "main",
"index": 0
}
]
]
},
"Set Video Attributes": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
},
"Download Video Content": {
"main": [
[
{
"node": "Calculate File Size",
"type": "main",
"index": 0
},
{
"node": "Set Video Attributes",
"type": "main",
"index": 0
}
]
]
},
"Extract URL for Uploading": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Loop Until Video Is Active": {
"main": [
[
{
"node": "Ask Gemini to Summarize Video",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait 5 Seconds",
"type": "main",
"index": 0
}
]
]
},
"Ask Gemini to Summarize Video": {
"main": [
[
{
"node": "Slack",
"type": "main",
"index": 0
}
]
]
},
"Start Upload Session for Gemini": {
"main": [
[
{
"node": "Extract URL for Uploading",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 人工智能, IT 运维
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
WordPress 内容生成器 v3
WordPress 内容生成器 v3
If
Set
Code
+21
102 节点Alex Kim
人工智能
WordPress终极内容生成器 v2 - AlexK1919
WordPress终极内容生成器
If
Set
Code
+17
61 节点Alex Kim
人工智能
使用GPT-4.1、Outlook和Mem.ai自动化Microsoft Teams会议分析
使用GPT-4.1、Outlook和Mem.ai自动化Microsoft Teams会议分析
If
Set
Code
+19
61 节点Wayne Simpson
人力资源
(Duc)深度研究市场模板
集成PerplexityAI研究和OpenAI内容的多层级WordPress博客生成器
If
Set
Xml
+28
132 节点Daniel Ng
人工智能
AI智能助手:与Supabase存储和Google Drive文件对话
AI智能助手:与Supabase存储和Google Drive文件对话
If
Set
Wait
+20
62 节点Mark Shcherbakov
工程
使用 Qdrant 的完整 RAG 系统,带自动来源引用
使用Qdrant、Gemini和OpenAI构建带自动引用的RAG系统
Set
Code
Wait
+15
29 节点Davide
人工智能
工作流信息
难度等级
高级
节点数量24
分类2
节点类型10
作者
GiovanniSegar
@giosegarI build automations and web apps for businesses. If your business has over $1M in revenue, I'll help you scale with smart systems.
外部链接
在 n8n.io 查看 →
分享此工作流