Plantilla-Jsoncut imagen a video-nocodb

Avanzado

Este es unautomatización que contiene 32 nodos.Utiliza principalmente nodos como If, Code, Wait, Merge, NocoDb. Crear videos de historias virales a partir de indicaciones de texto usando GPT, Gemini y JsonCut

Requisitos previos
  • Pueden requerirse credenciales de autenticación para la API de destino
  • Clave de API de OpenAI

Categoría

-
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "FeATxwI6wsWxI9FS",
  "meta": {
    "instanceId": "9d644af8fe730dfb972042f018ed45ff1dc2e7905a9737d59584dbe5b8c7f571",
    "templateCredsSetupCompleted": true
  },
  "name": "Template-Jsoncut-images-to-video-nocodb",
  "tags": [
    {
      "id": "4f5HsQRwHRxYIUuf",
      "name": "jsoncut",
      "createdAt": "2025-10-12T07:39:06.742Z",
      "updatedAt": "2025-10-12T07:39:06.742Z"
    }
  ],
  "nodes": [
    {
      "id": "efbe1b62-900e-4b67-9269-b260fab0fa93",
      "name": "Esperar",
      "type": "n8n-nodes-base.wait",
      "position": [
        1808,
        -304
      ],
      "webhookId": "4dbe100a-7853-4e41-aca9-e85575d1782a",
      "parameters": {
        "unit": "seconds",
        "amount": 3
      },
      "typeVersion": 1
    },
    {
      "id": "c6ecd939-fca4-495f-ba6e-e4942d840729",
      "name": "Si Éxito",
      "type": "n8n-nodes-base.if",
      "position": [
        2224,
        -304
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.data.status }}",
              "value2": "COMPLETED"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "913331fc-3926-4fce-b727-f1ef610d9ae3",
      "name": "Si Error",
      "type": "n8n-nodes-base.if",
      "position": [
        2240,
        -64
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.data.status }}",
              "value2": "FAILED"
            },
            {
              "value1": "={{ $json.data.status }}",
              "value2": "CANCELLED"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c89e1256-72cd-4346-9043-4b7630e45626",
      "name": "Descargar Imagen",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2400,
        -320
      ],
      "parameters": {
        "url": "=https://api.jsoncut.com/api/v1/files/{{ $json.data.outputFileId }}/download",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        },
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/octet-stream"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "SX6i9sHw3AcKihne",
          "name": "JsonCut API Key"
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "c1b3af1d-fab0-4c91-88ef-8d5fbae01823",
      "name": "Detener por Error",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        2432,
        -64
      ],
      "parameters": {
        "errorMessage": "Failed to generate image"
      },
      "typeVersion": 1
    },
    {
      "id": "1c23012e-a186-4174-bd63-8e05bea44b81",
      "name": "Agregar",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1376,
        -304
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "upload_results"
      },
      "typeVersion": 1
    },
    {
      "id": "d9dbc3a6-e2d1-47a3-979e-014ba6f2e26b",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        672,
        -608
      ],
      "parameters": {
        "width": 432,
        "height": 896,
        "content": "### Upload Files to JsonCut API"
      },
      "typeVersion": 1
    },
    {
      "id": "1a9195a4-e997-4d80-9abb-99a96ee3ab9c",
      "name": "Nota Adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1520,
        -400
      ],
      "parameters": {
        "color": 4,
        "width": 1104,
        "height": 576,
        "content": "### Create Job with Jsoncut API and wait for the result\nAlternatively, the JsonCut Community node can also be used (https://github.com/jsoncut/n8n-nodes-jsoncut)."
      },
      "typeVersion": 1
    },
    {
      "id": "116c4e0b-2533-4ef1-bee3-8c90d15b1527",
      "name": "Crear Trabajo JsonCut",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1584,
        -304
      ],
      "parameters": {
        "url": "https://api.jsoncut.com/api/v1/jobs",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"type\": \"video\",\n  \"config\": {\n    \"width\": 1080,\n    \"height\": 1920,\n    \"fps\": 25,\n    \"format\": \"mp4\",\n    \"audioTracks\": [\n      {\n        \"path\": \"{{ $json.upload_results[1].body.data.storageUrl }}\",\n        \"mixVolume\": 0.8,\n        \"start\": 1,\n        \"cutFrom\": 0,\n        \"cutTo\": {{ $('calculate audio duration').item.json.duration_seconds }}\n      },\n      {\n        \"path\": \"{{ $json.upload_results[2].data.storageUrl }}\",\n        \"mixVolume\": 0.2,\n        \"start\": 0,\n        \"cutFrom\": 0\n      }\n    ],\n    \"defaults\": {\n      \"layer\": {\n        \"googleFont\": \"Montserrat:700\",\n        \"textColor\": \"#ffffff\",\n        \"fontSize\": 54\n      }\n    },\n    \"clips\": [\n      {\n        \"duration\": {{ $('calculate audio duration').item.json.duration_seconds + 2 }},\n        \"layers\": [\n          {\n            \"type\": \"fill-color\",\n            \"color\": \"#000000\"\n          },\n          {\n            \"type\": \"image-overlay\",\n            \"path\": \"{{ $json.upload_results[0].storageUrl[0] }}\",\n            \"start\": 1,\n            \"stop\": {{ 1 + ($('calculate audio duration').item.json.duration_seconds / 5) }},\n            \"zoomDirection\": \"in\",\n            \"zoomAmount\": 0.15,\n            \"height\": 1,\n            \"opacity\": 0.9\n          },\n          {\n            \"type\": \"image-overlay\",\n            \"path\": \"{{ $json.upload_results[0].storageUrl[1] }}\",\n            \"start\": {{ 1 + ($('calculate audio duration').item.json.duration_seconds / 5) }},\n            \"stop\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 5) * 2 ) }},\n            \"zoomDirection\": \"right\",\n            \"zoomAmount\": 0.15,\n            \"height\": 1,\n            \"opacity\": 0.9\n          },\n          {\n            \"type\": \"image-overlay\",\n            \"path\": \"{{ $json.upload_results[0].storageUrl[2] }}\",\n            \"start\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 5) * 2 ) }},\n            \"stop\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 5) * 3 ) }},\n            \"zoomDirection\": \"left\",\n            \"zoomAmount\": 0.15,\n            \"height\": 1,\n            \"opacity\": 0.9\n          },\n          {\n            \"type\": \"image-overlay\",\n            \"path\": \"{{ $json.upload_results[0].storageUrl[3] }}\",\n            \"start\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 5) * 3 ) }},\n            \"stop\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 5) * 4 ) }},\n            \"zoomDirection\": \"out\",\n            \"zoomAmount\": 0.15,\n            \"height\": 1,\n            \"opacity\": 0.9\n          },\n          {\n            \"type\": \"image-overlay\",\n            \"path\": \"{{ $json.upload_results[0].storageUrl[4] }}\",\n            \"start\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 5) * 4 ) }},\n            \"stop\": {{ $('calculate audio duration').item.json.duration_seconds + 1 }},\n            \"zoomDirection\": \"in\",\n            \"zoomAmount\": 0.15,\n            \"height\": 1,\n            \"opacity\": 0.9\n          },\n          {\n            \"type\": \"image-overlay\",\n            \"path\": \"{{ $json.upload_results[3].data.storageUrl }}\",\n            \"start\": 1,\n            \"stop\": {{ $('calculate audio duration').item.json.duration_seconds + 1 }},\n            \"position\": \"bottom\",\n            \"width\": 0.1,\n            \"height\": 0.1,\n            \"zoomDirection\": null\n          },\n          {\n            \"type\": \"title\",\n            \"text\": \"{{ $('Generate content and Image Prompt').item.json.message.content.text_segments[0] }}\",\n            \"start\": 1,\n            \"stop\": {{ 1 + ($('calculate audio duration').item.json.duration_seconds / 4) }},\n            \"position\": \"center\",\n            \"zoomDirection\": null\n          },\n          {\n            \"type\": \"title\",\n            \"text\": \"{{ $('Generate content and Image Prompt').item.json.message.content.text_segments[1] }}\",\n            \"start\": {{ 1 + ($('calculate audio duration').item.json.duration_seconds / 4) }},\n            \"stop\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 4) * 2 ) }},\n            \"position\": \"center\",\n            \"zoomDirection\": null\n          },\n          {\n            \"type\": \"title\",\n            \"text\": \"{{ $('Generate content and Image Prompt').item.json.message.content.text_segments[2] }}\",\n            \"start\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 4) * 2 ) }},\n            \"stop\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 4) * 3 ) }},\n            \"position\": \"center\",\n            \"zoomDirection\": null\n          },\n          {\n            \"type\": \"title\",\n            \"text\": \"{{ $('Generate content and Image Prompt').item.json.message.content.text_segments[3] }}\",\n            \"start\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 4) * 3 ) }},\n            \"stop\": {{ $('calculate audio duration').item.json.duration_seconds + 1 }},\n            \"position\": \"center\",\n            \"zoomDirection\": null\n          }\n        ]\n      }\n    ]\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "SX6i9sHw3AcKihne",
          "name": "JsonCut API Key"
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "8368485d-a6e4-4376-8f7f-b5633844dba3",
      "name": "Verificar Estado de Trabajo JsonCut",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2032,
        -304
      ],
      "parameters": {
        "url": "=https://api.jsoncut.com/api/v1/jobs/{{ $('Create JsonCut Job').item.json.data.jobId }}",
        "options": {},
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "SX6i9sHw3AcKihne",
          "name": "JsonCut API Key"
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "e5750b7b-8b1c-4abd-9ffe-7e474991c710",
      "name": "Generar Contenido y Prompt de Imagen",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -96,
        -448
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-mini",
          "cachedResultName": "GPT-5-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=You are a creative video director and scriptwriter for short-form social media videos (Instagram, TikTok, YouTube Shorts).  \nYour task is to generate **cohesive and emotionally consistent content** based on a given *theme*:\n\n```\n{{ $json['Video Theme'] }}\n```\nand the *setting* (ignore if empty):\n```\n{{ $json['Video Setting'] || \"\"}}\n```\n\nUse the following Style for the background images (if not empty). Also keep the full style for each image prompt (e.g. is it a painting or photo?):\n```\n{{ $json['Image Style'] || \"\"}}\n```\n\n---\n\n### GOAL\nCreate a concept for a 20–40 second video with consistent **visual style, tone, and lighting**, including:\n1. **5 detailed prompts** for AI-generated background images  \n2. **1 full narration text** (to be spoken by a narrator)  \n3. **4 sequential text segments** that align perfectly with the narration (each about the same length, representing the same story flow)  \n4. **1 short caption** for a social media post promoting this video  \n\n---\n\n### IMAGE PROMPT GUIDELINES\n- Each image prompt should clearly describe the **scene**, **style**, **setting**, **mood**, **lighting**, and **color tone**.  \n- All 5 images must feel visually and emotionally consistent.  \n- Choose an appropriate general lighting mood (e.g. bright and hopeful, dark and moody, colorful and energetic, monochrome and calm).  \n- Example structure for each image prompt:  \n  *“A cinematic photo of [subject/scene], [lighting type], [environment details], [emotion/feeling], [color palette/style].”*  \n- Style examples: “cinematic”, “soft focus”, “warm tones”, “volumetric light”, “dreamy atmosphere”, etc.  \n\n---\n\n### TEXT CREATION GUIDELINES\n- The full text should sound natural when spoken by a narrator.  \n- It should flow smoothly and build emotional or motivational impact.  \n- The 4 text segments should represent logical parts of the full narration (e.g. setup, reflection, climax, resolution).  \n- Keep tone consistent with the image prompts (motivational, dramatic, peaceful, etc.).\n- Do not use \"-\" or \"—\" (thinking / pause )\n\n---\n\n### OUTPUT FORMAT (JSON)\nReturn the result **only** as valid JSON structured like this:\n\n```json\n{\n  \"image_prompts\": [\n    \"Prompt 1\",\n    \"Prompt 2\",\n    \"Prompt 3\",\n    \"Prompt 4\",\n    \"Prompt 5\"\n  ],\n  \"full_text\": \"Complete narration text here.\",\n  \"text_segments\": [\n    \"Part 1 text\",\n    \"Part 2 text\",\n    \"Part 3 text\",\n    \"Part 4 text\"\n  ],\n  \"caption\": \"Short social media caption here.\"\n}\n```\n\nexample output:\n{\n  \"image_prompts\": [\n    \"A cinematic sunrise over misty mountains, golden light, hopeful tone, warm color palette\",\n    \"A lone runner on a foggy trail, morning light breaking through clouds, determination and focus\",\n    \"Close-up of hands tying running shoes, soft golden backlight, texture-rich realism\",\n    \"Runner pushing through rain, dramatic contrast lighting, resilience mood\",\n    \"A victorious silhouette at the mountain peak, glowing sky, triumphant energy\"\n  ],\n  \"full_text\": \"Every dream begins as a whisper. Most give up before the echo returns. But those who keep moving, step by step, turn the whisper into a roar. Keep going, your sunrise is closer than you think.\",\n  \"text_segments\": [\n    \"Every dream begins as a whisper.\",\n    \"Most give up before the echo returns.\",\n    \"But those who keep moving, step by step, turn the whisper into a roar.\",\n    \"Keep going... your sunrise is closer than you think.\"\n  ],\n  \"caption\": \"Don’t stop now, your sunrise is coming. 🌅 #motivation #dreambig\"\n}\n"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "nthYYcpDIou7MYYb",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "9b178dec-c384-4706-9bb2-0ff6e20c6842",
      "name": "Subir Logo",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        752,
        112
      ],
      "parameters": {
        "url": "https://api.jsoncut.com/api/v1/files/upload",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "SX6i9sHw3AcKihne",
          "name": "JsonCut API Key"
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "731fba29-88e3-49be-b923-761fed1852fa",
      "name": "Nota Adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        80
      ],
      "parameters": {
        "color": 3,
        "width": 272,
        "height": 208,
        "content": "### Download external ressources"
      },
      "typeVersion": 1
    },
    {
      "id": "4489772b-903b-429a-bedf-f56acae3d07a",
      "name": "Nota Adhesiva3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        -608
      ],
      "parameters": {
        "color": 3,
        "width": 752,
        "height": 432,
        "content": "### Generate Script and Background Image Prompts"
      },
      "typeVersion": 1
    },
    {
      "id": "9b384086-9370-445c-a405-be429a6e6850",
      "name": "Descargar Marca de Agua",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -80,
        128
      ],
      "parameters": {
        "url": "https://img.icons8.com/?size=100&id=532&format=png&color=000000",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "35542d13-b584-439c-9b4b-793b3f026a56",
      "name": "Obtener Lista de Audio de Fondo",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -48,
        -112
      ],
      "parameters": {
        "url": "https://api.openverse.engineering/v1/audio/",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "q",
              "value": "ambiente"
            },
            {
              "name": "license",
              "value": "cc0,by,by-sa"
            },
            {
              "name": "format",
              "value": "json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "6c959a7f-82b0-4180-ac6b-a929eca0c5d2",
      "name": "Nota Adhesiva5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        -160
      ],
      "parameters": {
        "color": 3,
        "width": 480,
        "height": 224,
        "content": "### download Random Background music"
      },
      "typeVersion": 1
    },
    {
      "id": "1d248ef1-3fe8-40ec-9289-b606895934a7",
      "name": "Descargar MP3",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        160,
        -112
      ],
      "parameters": {
        "url": "={{ $json.results[Math.floor(Math.random() * $json.results.length)].url }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "e5c524c4-3741-49ca-b1b6-e18d3755f16b",
      "name": "Subir Música de Fondo",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        752,
        -112
      ],
      "parameters": {
        "url": "https://api.jsoncut.com/api/v1/files/upload",
        "method": "POST",
        "options": {
          "redirect": {
            "redirect": {}
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "SX6i9sHw3AcKihne",
          "name": "JsonCut API Key"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "86c12a83-8f1e-45e3-88d9-7c34c8f24a29",
      "name": "Dividir Prompts de Imagen",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        256,
        -528
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "message.content.image_prompts"
      },
      "typeVersion": 1
    },
    {
      "id": "87c26b9e-1553-4ed4-973d-a81b11a3a519",
      "name": "Generar una Imagen",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        464,
        -528
      ],
      "parameters": {
        "prompt": "=Generate in the format 9:16 (no text in image): {{ $json['message.content.image_prompts'] }}",
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "models/imagen-4.0-generate-001",
          "cachedResultName": "models/imagen-4.0-generate-001"
        },
        "options": {},
        "resource": "image"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "5rD55sSvtNJ9AlHH",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a5d687a8-bc65-4bac-915d-deccdc2c8098",
      "name": "Generar Audio",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        256,
        -336
      ],
      "parameters": {
        "input": "={{ $json.message.content.full_text }}",
        "voice": "echo",
        "options": {},
        "resource": "audio"
      },
      "credentials": {
        "openAiApi": {
          "id": "nthYYcpDIou7MYYb",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "5f471cee-9b78-4cb0-8711-dfcbb4897d01",
      "name": "Subir Imágenes de Fondo",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        752,
        -528
      ],
      "parameters": {
        "url": "https://api.jsoncut.com/api/v1/files/upload",
        "method": "POST",
        "options": {
          "redirect": {
            "redirect": {}
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "SX6i9sHw3AcKihne",
          "name": "JsonCut API Key"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "4c4efcd6-0224-4003-85b6-3269359085df",
      "name": "Subir Audio de Voz",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        752,
        -320
      ],
      "parameters": {
        "url": "https://api.jsoncut.com/api/v1/files/upload",
        "method": "POST",
        "options": {
          "redirect": {
            "redirect": {}
          },
          "response": {
            "response": {
              "fullResponse": true
            }
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "SX6i9sHw3AcKihne",
          "name": "JsonCut API Key"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "bd711a93-ab0c-4dba-bdf2-d149030decdb",
      "name": "URLs de Imágenes de Fondo",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        976,
        -528
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "data.storageUrl"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fa3bd8e1-a251-4fa0-a2f8-6c6ec83801b2",
      "name": "Combinar Todas las Subidas",
      "type": "n8n-nodes-base.merge",
      "position": [
        1232,
        -336
      ],
      "parameters": {
        "numberInputs": 4
      },
      "typeVersion": 3.2
    },
    {
      "id": "4f0167a3-e215-4524-b606-7e70835796da",
      "name": "Calcular Duración del Audio",
      "type": "n8n-nodes-base.code",
      "position": [
        464,
        -336
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "language": "python",
        "pythonCode": "import base64\n\n# Get binary MP3 data from the input item\nbinary_data = _input.item.binary['data']\nbuffer = base64.b64decode(binary_data['data'])\n\ndef get_bitrate(bitrate_index, version, layer):\n    bitrates = {\n        'V1L3': [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320],\n        'V2L3': [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],\n    }\n    table = bitrates['V1L3'] if version == 3 else bitrates['V2L3']\n    return table[bitrate_index] * 1000\n\nbitrate = 0\nfile_size = len(buffer)\n\n# Scan for first MP3 frame header (starts with 0xFFE)\nfor i in range(len(buffer) - 4):\n    if buffer[i] == 0xFF and (buffer[i + 1] & 0xE0) == 0xE0:\n        version_bits = (buffer[i + 1] >> 3) & 0x03\n        layer_bits = (buffer[i + 1] >> 1) & 0x03\n        bitrate_index = (buffer[i + 2] >> 4) & 0x0F\n\n        version = 3 if version_bits == 3 else 2\n        layer = 3 - (layer_bits - 1)\n\n        bitrate = get_bitrate(bitrate_index, version, layer)\n        if bitrate > 0:\n            break\n\nif bitrate == 0:\n    _input.item.json['duration_seconds'] = None\n    _input.item.json['error'] = 'Could not detect bitrate'\n    return _input.item\n\n# Calculate duration: file size (bits) / bitrate\nduration_seconds = (file_size * 8) / bitrate\n\n# Write results into JSON\n_input.item.json['duration_seconds'] = round(duration_seconds, 2)\n_input.item.json['duration_minutes'] = round(duration_seconds / 60, 2)\n_input.item.json['bitrate'] = bitrate\n_input.item.json['file_size_bytes'] = file_size\n\nreturn _input.item\n"
      },
      "typeVersion": 2
    },
    {
      "id": "efd1bde6-0c7e-41df-80ec-de2e7b80bfb4",
      "name": "Al Enviar el Formulario",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -384,
        -272
      ],
      "webhookId": "d3afd952-d50b-4e19-8eb5-9e37816d355a",
      "parameters": {
        "options": {},
        "formTitle": "Social Video Production Input",
        "formFields": {
          "values": [
            {
              "fieldType": "textarea",
              "fieldLabel": "Video Theme",
              "placeholder": "Enter the main theme or motto for your video (e.g., ‘Embrace the small wins’ for a motivational video).",
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Video Setting",
              "placeholder": "Describe the setting or mood of the video (e.g., a calm, cozy evening with soft lighting for a relaxed, reflective feel).",
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Image Style",
              "placeholder": "Optional: Define the style of the background images (e.g. Watercolor Painting)"
            }
          ]
        },
        "formDescription": "Provide the core idea and the setting for your video. These details will guide the generation of a polished, ready-to-publish social media video."
      },
      "typeVersion": 2.2
    },
    {
      "id": "01a424d4-17f9-4d47-8921-d231c3f1d7f3",
      "name": "Guardar Video en NocoDB",
      "type": "n8n-nodes-base.nocoDb",
      "position": [
        2688,
        -320
      ],
      "parameters": {
        "table": "mu9r5htgfwxolb2",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldName": "Theme",
              "fieldValue": "={{ $('On form submission').item.json['Video Theme'] }}"
            },
            {
              "fieldName": "Setting",
              "fieldValue": "={{ $('On form submission').item.json['Video Setting'] || \"\" }}"
            },
            {
              "fieldName": "Style",
              "fieldValue": "={{ $('On form submission').item.json['Image Style'] || \"\" }}"
            },
            {
              "fieldName": "Output",
              "binaryData": true,
              "binaryProperty": "data"
            }
          ]
        },
        "operation": "create",
        "projectId": "prcn8tlyu7dbn60",
        "authentication": "nocoDbApiToken"
      },
      "credentials": {
        "nocoDbApiToken": {
          "id": "JQaKWA6ljHUEheIi",
          "name": "NocoDB Local"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "d341edf1-f747-43c5-8192-56900d04da04",
      "name": "Nota Adhesiva4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        -528
      ],
      "parameters": {
        "color": 6,
        "width": 560,
        "height": 416,
        "content": "## Exmpe Form Input\n\n1. General Video Theme:\nOvercoming struggles / personal growth\n\n2. Video Setting:\nIntrospective, deep thinking, sunrise or twilight moments, emotional reflection\n\n3. Background Image Style: \nWatercolor painting with muted colors, low light"
      },
      "typeVersion": 1
    },
    {
      "id": "763a2957-3e11-4f38-872e-ed58b84a9378",
      "name": "Nota Adhesiva6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2640,
        -576
      ],
      "parameters": {
        "color": 6,
        "width": 480,
        "height": 464,
        "content": "## Stores the final output in a new Table Row\n\n### Row Content:\n1. Theme\n2. Setting\n3. Style\n4. Output Video File"
      },
      "typeVersion": 1
    },
    {
      "id": "5be95991-a680-4363-8f1b-7e0b1c7a18a1",
      "name": "Nota Adhesiva8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2640,
        -80
      ],
      "parameters": {
        "color": 6,
        "width": 480,
        "height": 128,
        "content": "## Example Output\n\n[📹 View Video (Google Drive)](https://drive.google.com/file/d/1Cl0KwgRgcuBPVdGgL-nqAcheyvfVXttD/preview)\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "826504f6-36f9-4c5b-83d8-1a1f30d8f248",
  "connections": {
    "efbe1b62-900e-4b67-9269-b260fab0fa93": {
      "main": [
        [
          {
            "node": "8368485d-a6e4-4376-8f7f-b5633844dba3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "913331fc-3926-4fce-b727-f1ef610d9ae3": {
      "main": [
        [
          {
            "node": "c1b3af1d-fab0-4c91-88ef-8d5fbae01823",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "efbe1b62-900e-4b67-9269-b260fab0fa93",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1c23012e-a186-4174-bd63-8e05bea44b81": {
      "main": [
        [
          {
            "node": "116c4e0b-2533-4ef1-bee3-8c90d15b1527",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c6ecd939-fca4-495f-ba6e-e4942d840729": {
      "main": [
        [
          {
            "node": "c89e1256-72cd-4346-9043-4b7630e45626",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "913331fc-3926-4fce-b727-f1ef610d9ae3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9b178dec-c384-4706-9bb2-0ff6e20c6842": {
      "main": [
        [
          {
            "node": "fa3bd8e1-a251-4fa0-a2f8-6c6ec83801b2",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "1d248ef1-3fe8-40ec-9289-b606895934a7": {
      "main": [
        [
          {
            "node": "e5c524c4-3741-49ca-b1b6-e18d3755f16b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c89e1256-72cd-4346-9043-4b7630e45626": {
      "main": [
        [
          {
            "node": "01a424d4-17f9-4d47-8921-d231c3f1d7f3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a5d687a8-bc65-4bac-915d-deccdc2c8098": {
      "main": [
        [
          {
            "node": "4f0167a3-e215-4524-b606-7e70835796da",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "87c26b9e-1553-4ed4-973d-a81b11a3a519": {
      "main": [
        [
          {
            "node": "5f471cee-9b78-4cb0-8711-dfcbb4897d01",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fa3bd8e1-a251-4fa0-a2f8-6c6ec83801b2": {
      "main": [
        [
          {
            "node": "1c23012e-a186-4174-bd63-8e05bea44b81",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "116c4e0b-2533-4ef1-bee3-8c90d15b1527": {
      "main": [
        [
          {
            "node": "efbe1b62-900e-4b67-9269-b260fab0fa93",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9b384086-9370-445c-a405-be429a6e6850": {
      "main": [
        [
          {
            "node": "9b178dec-c384-4706-9bb2-0ff6e20c6842",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "efd1bde6-0c7e-41df-80ec-de2e7b80bfb4": {
      "main": [
        [
          {
            "node": "e5750b7b-8b1c-4abd-9ffe-7e474991c710",
            "type": "main",
            "index": 0
          },
          {
            "node": "35542d13-b584-439c-9b4b-793b3f026a56",
            "type": "main",
            "index": 0
          },
          {
            "node": "9b384086-9370-445c-a405-be429a6e6850",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4c4efcd6-0224-4003-85b6-3269359085df": {
      "main": [
        [
          {
            "node": "fa3bd8e1-a251-4fa0-a2f8-6c6ec83801b2",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "86c12a83-8f1e-45e3-88d9-7c34c8f24a29": {
      "main": [
        [
          {
            "node": "87c26b9e-1553-4ed4-973d-a81b11a3a519",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "01a424d4-17f9-4d47-8921-d231c3f1d7f3": {
      "main": [
        []
      ]
    },
    "bd711a93-ab0c-4dba-bdf2-d149030decdb": {
      "main": [
        [
          {
            "node": "fa3bd8e1-a251-4fa0-a2f8-6c6ec83801b2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e5c524c4-3741-49ca-b1b6-e18d3755f16b": {
      "main": [
        [
          {
            "node": "fa3bd8e1-a251-4fa0-a2f8-6c6ec83801b2",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "8368485d-a6e4-4376-8f7f-b5633844dba3": {
      "main": [
        [
          {
            "node": "c6ecd939-fca4-495f-ba6e-e4942d840729",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5f471cee-9b78-4cb0-8711-dfcbb4897d01": {
      "main": [
        [
          {
            "node": "bd711a93-ab0c-4dba-bdf2-d149030decdb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4f0167a3-e215-4524-b606-7e70835796da": {
      "main": [
        [
          {
            "node": "4c4efcd6-0224-4003-85b6-3269359085df",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "35542d13-b584-439c-9b4b-793b3f026a56": {
      "main": [
        [
          {
            "node": "1d248ef1-3fe8-40ec-9289-b606895934a7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e5750b7b-8b1c-4abd-9ffe-7e474991c710": {
      "main": [
        [
          {
            "node": "86c12a83-8f1e-45e3-88d9-7c34c8f24a29",
            "type": "main",
            "index": 0
          },
          {
            "node": "a5d687a8-bc65-4bac-915d-deccdc2c8098",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿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

¿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.

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos32
Categoría-
Tipos de nodos13
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34