Preguntas y Respuestas sobre Videos de Loom Basadas en IA (Gemini-2.5 y Notificaciones de Slack)
Este es unAI, IT Opsflujo de automatización del dominio deautomatización que contiene 24 nodos.Utiliza principalmente nodos como If, Set, Code, Wait, Merge, combinando tecnología de inteligencia artificial para lograr automatización inteligente. Preguntas y Respuestas sobre Videos de Loom Basadas en IA: Usando Gemini-2.5 y Notificaciones de Slack
- •Bot Token de Slack o URL de Webhook
- •Pueden requerirse credenciales de autenticación para la API de destino
Nodos utilizados (24)
{
"meta": {
"instanceId": "59761dc282918b63de68f8544bab8098be77f63f00c94bc04dd5d71886f7d2e1",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "1b69f192-6e52-4484-8953-285441906bde",
"name": "Extraer ID del Video",
"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": "Obtener URL de Descarga",
"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": "Descargar Contenido del Video",
"type": "n8n-nodes-base.httpRequest",
"position": [
1040,
-420
],
"parameters": {
"url": "={{ $json.url }}",
"options": {}
},
"typeVersion": 3
},
{
"id": "9426bf71-eb18-419f-a693-a7b5832956a6",
"name": "Formulario de URL de Loom",
"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": "Subir Datos del Video",
"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": "Iniciar Sesión de Subida para 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": "¿URL de Loom Válida?",
"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": "Combinar",
"type": "n8n-nodes-base.merge",
"position": [
2140,
-425
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.1
},
{
"id": "5c1a814e-041b-456d-89f2-22a1845d6693",
"name": "Combinar1",
"type": "n8n-nodes-base.merge",
"position": [
1480,
-420
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.1
},
{
"id": "51021cc5-971d-4287-be7f-d102ccb2505f",
"name": "Extraer Detalles del Archivo",
"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": "Esperar 5 Segundos",
"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": "Bucle Hasta que el Video Esté Activo",
"type": "n8n-nodes-base.splitInBatches",
"position": [
2800,
-425
],
"parameters": {
"options": {
"reset": false
}
},
"typeVersion": 3
},
{
"id": "6496a5f2-b52a-4f68-bfef-09788e36aac1",
"name": "Obtener Estado del Video",
"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": "¿Video Activo?",
"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": "Pedir a Gemini que Resuma el Video",
"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": "Nota Adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
120,
-640
],
"parameters": {
"color": 7,
"width": 1080,
"height": 420,
"content": "## Download Loom Video\n\nEnter loom video url via form, then make requests to loom api to get url of video and then download."
},
"typeVersion": 1
},
{
"id": "89545746-96c1-4896-95bf-c5bca17b1ef3",
"name": "Nota Adhesiva1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1200,
-640
],
"parameters": {
"color": 5,
"width": 1300,
"height": 420,
"content": "## Upload Video to Gemini\n\nExtract data from video needed for upload to Gemini. Then start an authenticated upload session, get the url to upload to and upload the video."
},
"typeVersion": 1
},
{
"id": "f35ceb48-2931-47b5-835a-bf3cfbec813b",
"name": "Extraer URL para Subir",
"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": "Nota Adhesiva2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2500,
-640
],
"parameters": {
"width": 1120,
"height": 420,
"content": "## Ensure Video Is Active Before Using with LLM Request\n\nUploaded videos start in \"PROCESSING\" state when first uploaded and need to be \"ACTIVE\" before they can be provided to a Gemini LLM request."
},
"typeVersion": 1
},
{
"id": "9f457708-2b80-403e-8030-1dbdbc81bc54",
"name": "Nota Adhesiva3",
"type": "n8n-nodes-base.stickyNote",
"position": [
3620,
-640
],
"parameters": {
"color": 4,
"width": 580,
"height": 420,
"content": "## Send Request to Gemini LLM\n\nOnce video is active, send video to Gemini with prompt from the form"
},
"typeVersion": 1
},
{
"id": "33800aac-7646-40ce-98b2-213f48f91ad8",
"name": "Calcular Tamaño del Archivo",
"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": "Establecer Atributos del Video",
"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": "Nota Adhesiva4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-440,
-640
],
"parameters": {
"width": 420,
"height": 400,
"content": "## How to use the workflow\nThis workflow takes a Loom link, extracts the video ID, uses the Loom API to download the video, then sends it to Gemini along with your question. Finally, it sends the output to Slack. \n\nTo use it, you just need to add your own [API key for Gemini](https://aistudio.google.com/app/apikey) and Slack connection. \n\nClick the link above to get your Gemini API key, then add a generic \"Query auth\" type credential in n8n. The name will be \"key\" and the value will be your API key.\n\nOne way to customize this workflow would be to make the trigger any received email, extract the Loom link, and run an auto-prompt like \"Describe this video in detail\". "
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"3180c3a0-b5cc-4501-80ed-2ebce9463af2": {
"main": [
[
{
"node": "a7331691-acda-4191-add6-65ab1f61b1d5",
"type": "main",
"index": 0
}
]
]
},
"5c1a814e-041b-456d-89f2-22a1845d6693": {
"main": [
[
{
"node": "c24fb0b7-d21f-4fe7-bed4-b0e2ecd0c2b2",
"type": "main",
"index": 0
},
{
"node": "3180c3a0-b5cc-4501-80ed-2ebce9463af2",
"type": "main",
"index": 1
}
]
]
},
"9426bf71-eb18-419f-a693-a7b5832956a6": {
"main": [
[
{
"node": "e92b0b3d-e309-44b3-a288-2fea8f50c695",
"type": "main",
"index": 0
}
]
]
},
"4a822835-719f-46aa-8f0e-1715af385f7a": {
"main": [
[
{
"node": "e36643d5-5102-4ef9-99ce-3777d38d0f16",
"type": "main",
"index": 0
}
],
[
{
"node": "a0b210dc-4d66-45eb-a1f6-526297049bea",
"type": "main",
"index": 0
}
]
]
},
"a0b210dc-4d66-45eb-a1f6-526297049bea": {
"main": [
[
{
"node": "6496a5f2-b52a-4f68-bfef-09788e36aac1",
"type": "main",
"index": 0
}
]
]
},
"e92b0b3d-e309-44b3-a288-2fea8f50c695": {
"main": [
[
{
"node": "1b69f192-6e52-4484-8953-285441906bde",
"type": "main",
"index": 0
}
]
]
},
"1b69f192-6e52-4484-8953-285441906bde": {
"main": [
[
{
"node": "96a1f9d1-41da-4f73-aef1-5fc61a2ecbde",
"type": "main",
"index": 0
}
]
]
},
"6496a5f2-b52a-4f68-bfef-09788e36aac1": {
"main": [
[
{
"node": "4a822835-719f-46aa-8f0e-1715af385f7a",
"type": "main",
"index": 0
}
]
]
},
"a7331691-acda-4191-add6-65ab1f61b1d5": {
"main": [
[
{
"node": "51021cc5-971d-4287-be7f-d102ccb2505f",
"type": "main",
"index": 0
}
]
]
},
"96a1f9d1-41da-4f73-aef1-5fc61a2ecbde": {
"main": [
[
{
"node": "983e0686-6a65-495c-af5c-103001995271",
"type": "main",
"index": 0
}
]
]
},
"33800aac-7646-40ce-98b2-213f48f91ad8": {
"main": [
[
{
"node": "5c1a814e-041b-456d-89f2-22a1845d6693",
"type": "main",
"index": 0
}
]
]
},
"51021cc5-971d-4287-be7f-d102ccb2505f": {
"main": [
[
{
"node": "e36643d5-5102-4ef9-99ce-3777d38d0f16",
"type": "main",
"index": 0
}
]
]
},
"e6fdc875-2fde-4da3-8330-11e72ba02d33": {
"main": [
[
{
"node": "5c1a814e-041b-456d-89f2-22a1845d6693",
"type": "main",
"index": 1
}
]
]
},
"983e0686-6a65-495c-af5c-103001995271": {
"main": [
[
{
"node": "33800aac-7646-40ce-98b2-213f48f91ad8",
"type": "main",
"index": 0
},
{
"node": "e6fdc875-2fde-4da3-8330-11e72ba02d33",
"type": "main",
"index": 0
}
]
]
},
"f35ceb48-2931-47b5-835a-bf3cfbec813b": {
"main": [
[
{
"node": "3180c3a0-b5cc-4501-80ed-2ebce9463af2",
"type": "main",
"index": 0
}
]
]
},
"e36643d5-5102-4ef9-99ce-3777d38d0f16": {
"main": [
[
{
"node": "9e78e6d5-435c-4c8a-8cd4-64f0c5e4ff7f",
"type": "main",
"index": 0
}
],
[
{
"node": "a0b210dc-4d66-45eb-a1f6-526297049bea",
"type": "main",
"index": 0
}
]
]
},
"9e78e6d5-435c-4c8a-8cd4-64f0c5e4ff7f": {
"main": [
[
{
"node": "3ae06fca-7edb-4949-a9e7-588256ffddd0",
"type": "main",
"index": 0
}
]
]
},
"c24fb0b7-d21f-4fe7-bed4-b0e2ecd0c2b2": {
"main": [
[
{
"node": "f35ceb48-2931-47b5-835a-bf3cfbec813b",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Inteligencia Artificial, Operaciones de TI
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
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.
Compartir este flujo de trabajo