AutomationFlowsAI & RAG › Recreate Instagram Reels with Gemini 2.0 Analysis & Minimax Video Generation

Recreate Instagram Reels with Gemini 2.0 Analysis & Minimax Video Generation

ByAditya Malur @aditya-malur on n8n.io

This n8n template demonstrates how to automatically download an Instagram Reel, analyze its content using AI video understanding, and regenerate a similar video using AI video generation models. The workflow creates AI-powered variations of existing video content while…

Chat trigger trigger★★★★☆ complexityAI-powered27 nodesChat TriggerHTTP Request
AI & RAG Trigger: Chat trigger Nodes: 27 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #9863 — we link there as the canonical source.

This workflow follows the Chat Trigger → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "dcc4b180-ff2b-4c25-8ed5-656cf2486369",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -3520,
        6720
      ],
      "parameters": {
        "public": true,
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "c55d1a20-41bd-401f-a6d7-2108676bec65",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        1072,
        6880
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "af963e02-411d-42f7-9ba3-0e6491322762",
      "name": "Reel Downloader",
      "type": "n8n-nodes-base.httpRequest",
      "maxTries": 2,
      "position": [
        -3152,
        6720
      ],
      "parameters": {
        "url": "https://instagram-reels-downloader-api.p.rapidapi.com/download",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{ $json.chatInput }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-host",
              "value": "instagram-reels-downloader-api.p.rapidapi.com"
            },
            {
              "name": "x-rapidapi-key",
              "value": "YOUR_RAPIDAPI_KEY_HERE"
            }
          ]
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "a226abcb-4fd1-4eb0-a0fa-fa7153b808f8",
      "name": "Formatter",
      "type": "n8n-nodes-base.set",
      "position": [
        -2784,
        6720
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e6ccf368-0d16-4bf2-a76f-914f89e1e137",
              "name": "Instagram Reel",
              "type": "string",
              "value": "={{ $json.data.medias[0].url }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "2bcb1d3e-bb25-42a9-a180-b7a1164c0fd9",
      "name": "Checks Null/ Not",
      "type": "n8n-nodes-base.if",
      "position": [
        -2368,
        6720
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "9f27c94c-b55f-4ab2-8a35-6307baa44149",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json['Instagram Reel'] }}",
              "rightValue": "null"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "1a229642-9bb9-4138-8e32-1b9162c91d13",
      "name": "Download Reel",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1984,
        6736
      ],
      "parameters": {
        "url": "={{ $json[\"Instagram Reel\"] }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "ab413b31-c433-419e-911c-246fa7fb5637",
      "name": "Upload the video to model",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1520,
        6736
      ],
      "parameters": {
        "url": "https://generativelanguage.googleapis.com/upload/v1beta/files?key=YOUR_TOKEN_HERE",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "binaryData",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Goog-Upload-Command",
              "value": "start, upload, finalize"
            },
            {
              "name": "X-Goog-Upload-Header-Content-Length",
              "value": "1.37"
            },
            {
              "name": "X-Goog-Upload-Header-Content-Type",
              "value": "video/mp4"
            },
            {
              "name": "Content-Type",
              "value": "video/mp4"
            }
          ]
        },
        "inputDataFieldName": "=data"
      },
      "typeVersion": 4.2
    },
    {
      "id": "f837cae5-5cea-4af2-9384-197f529f01ea",
      "name": "Analyse the Video",
      "type": "n8n-nodes-base.httpRequest",
      "maxTries": 2,
      "position": [
        -1072,
        6736
      ],
      "parameters": {
        "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=YOUR_TOKEN_HERE",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"contents\": [\n    {\n      \"parts\": [\n        {\n          \"file_data\": {\n            \"mime_type\": \"video/mp4\",\n            \"file_uri\": \"{{ $json.file.uri }}\"\n          }\n        },\n        {\n          \"text\": \"You are a highly advanced video interpreter model Your role is to observe and analyze the full input video in detail and produce a complete and literal visual and audio explanation of the entire video sequence frame by frame The context is that your output will be passed as input to a downstream AI video generation model which will recreate the same video using only the output you generate Therefore your output must serve as a perfect structural and sensory blueprint for that video to be reproduced without any changes deviations or loss of fidelity Your task is to describe the video from start to end with extreme precision including every single visual auditory spatial and emotional detail you must include what appears in each frame the characters and subjects involved their movements gestures facial expressions eye direction clothing background objects camera movement zoom lighting angle shadows time of day environment sounds background audio tone and transitions between scenes You must describe it literally and completely Do not skip any detail or infer any abstract meaning The output must be returned as a single uninterrupted block of plain lowercase human readable english text without any formatting punctuation quotation marks commas periods hyphens special characters or line breaks This is required because your output will be embedded as a string inside a JSON field used for AI model chaining This is not a summary Your output must act as an instruction set for recreating the entire video exactly as it appears Do not interpret or shorten any part Write with complete continuity as if the generation model will reassemble the visuals and audio step by step from your description Below is an example output This is only to show the structure and style Your own output must be fully based on the actual video analysis and should not copy the content in the example Example Output a young woman stands on a rooftop during golden hour wearing a white flowy dress her hair is gently blowing in the wind as she looks toward the sunset a warm orange glow lights up the sky with streaks of pink clouds the city skyline is visible in the background slightly out of focus the camera slowly pans from left to right in a wide angle shot capturing the depth of the scene soft piano music plays in the background along with faint sounds of birds chirping the woman closes her eyes and breathes deeply her facial expression is calm and reflective the lighting gradually dims as the sun lowers a close up shot shows her hand brushing against the edge of the rooftop wall then cuts to a medium shot from behind where she walks slowly toward the edge stopping to look out at the skyline again her posture is relaxed and the wind continues to blow softly rustling the fabric of her dress the piano music fades slightly as ambient city noise becomes more noticeable the final frame lingers on her silhouette against the fading sky before fading to black Your actual output must follow this style but be derived purely from the video input being analyzed The output will be directly passed in a JSON payload to the video generation model so do not include anything other than the raw string as described above\"\n        }\n      ]\n    }\n  ]\n}\n",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/js"
            }
          ]
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "8c2b42df-2ec6-4262-8627-714e25034267",
      "name": "Create the Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -592,
        6736
      ],
      "parameters": {
        "url": "https://api.replicate.com/v1/models/minimax/video-01/predictions",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"input\": {\n    \"prompt\": \"{{ $json.candidates[0].content.parts[0].text }}\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            },
            {
              "name": "Prefer",
              "value": "wait"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "33a3eea0-fe56-4dbb-a96f-1000a9bbf99c",
      "name": "Pause",
      "type": "n8n-nodes-base.wait",
      "position": [
        -192,
        6736
      ],
      "parameters": {
        "amount": 2
      },
      "typeVersion": 1.1
    },
    {
      "id": "73edd192-4845-4808-9610-580f8b5db865",
      "name": "Get Status of the Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        240,
        6736
      ],
      "parameters": {
        "url": "=https://api.replicate.com/v1/predictions/{{ $json[\"id\"] }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "794baa4c-4cec-4836-b76d-7dd53918806f",
      "name": "Checks if the video generation is complete",
      "type": "n8n-nodes-base.if",
      "position": [
        640,
        6736
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "e84d5ff5-7f10-442d-9c32-5eec66c3db10",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "succeeded"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "ee3192d1-a2bc-4801-8368-f5c4528290c6",
      "name": "Fetches the Video Output",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1440,
        6720
      ],
      "parameters": {
        "url": "={{ $json.output }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "6daa32dd-e817-4e42-85d7-674b4eed02d7",
      "name": "Note: Step 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3632,
        6928
      ],
      "parameters": {
        "width": 340,
        "height": 440,
        "content": "## \ud83c\udfaf STEP 1: Input Trigger\n\n**What happens here:**\nThis chat trigger node waits for a user to send a message (the Instagram Reel URL).\n\n**How it works:**\n- User sends Instagram Reel URL via chat\n- The URL is captured in `{{ $json.chatInput }}`\n- Workflow execution begins\n\n**No configuration needed** - webhook ID is auto-generated"
      },
      "typeVersion": 1
    },
    {
      "id": "8b3a98fb-32e1-4f53-9882-8f57899f7724",
      "name": "Note: Step 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3248,
        6928
      ],
      "parameters": {
        "width": 340,
        "height": 428,
        "content": "## \ud83d\udce5 STEP 2: Download Instagram Reel\n\n**What happens here:**\nCalls RapidAPI to fetch the Instagram Reel metadata and download URL.\n\n**Configuration required:**\n\u270f\ufe0f Replace `YOUR_RAPIDAPI_KEY_HERE` with your actual RapidAPI key\n\n**Headers to check:**\n- `x-rapidapi-host`: Already configured\n- `x-rapidapi-key`: \u26a0\ufe0f ADD YOUR KEY HERE\n\n**Output:**\nReturns JSON with video URL in `data.medias[0].url`"
      },
      "typeVersion": 1
    },
    {
      "id": "2da72c87-6f5e-4052-8b2e-60ba34bb48e7",
      "name": "Note: Step 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2864,
        6928
      ],
      "parameters": {
        "width": 320,
        "height": 424,
        "content": "## \ud83d\udd04 STEP 3: Format Data\n\n**What happens here:**\nExtracts the video URL from the API response and stores it in a clean variable.\n\n**Technical detail:**\n- Takes `$json.data.medias[0].url`\n- Assigns it to `Instagram Reel` variable\n- Makes data easier to reference later\n\n**No configuration needed** - this is data transformation only"
      },
      "typeVersion": 1
    },
    {
      "id": "58addef3-be3a-4b80-a970-5d77a3ce7335",
      "name": "Note: Step 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2480,
        6928
      ],
      "parameters": {
        "width": 320,
        "height": 408,
        "content": "## \u2705 STEP 4: Validation Check\n\n**What happens here:**\nChecks if the video URL was successfully retrieved.\n\n**Logic:**\n- IF URL = null \u2192 Retry the download (loops back)\n- IF URL exists \u2192 Continue to download\n\n**Why this matters:**\nSometimes API calls fail. This ensures we have valid data before proceeding.\n\n**No configuration needed**"
      },
      "typeVersion": 1
    },
    {
      "id": "d8c4d98c-661b-40f7-a847-222ad690aa8d",
      "name": "Note: Step 5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2096,
        6928
      ],
      "parameters": {
        "width": 320,
        "height": 404,
        "content": "## \ud83c\udfa5 STEP 5: Download Video File\n\n**What happens here:**\nActually downloads the Instagram Reel video file as binary data.\n\n**Technical detail:**\n- Uses the URL from previous step\n- Downloads complete video file\n- Stores as binary data for upload\n\n**Output format:** Binary video data (MP4)\n\n**No configuration needed**"
      },
      "typeVersion": 1
    },
    {
      "id": "7d2e936a-a47e-44b8-80cc-785803a54578",
      "name": "Note: Step 6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1648,
        6928
      ],
      "parameters": {
        "width": 340,
        "height": 412,
        "content": "## \u2601\ufe0f STEP 6: Upload to Google AI\n\n**What happens here:**\nUploads the video to Google's Gemini model for analysis.\n\n**Configuration required:**\n\u270f\ufe0f Replace `YOUR_GOOGLE_API_KEY_HERE` in the URL parameter\n\n**Headers (pre-configured):**\n- Upload commands for Google's File API\n- Content-Type set to video/mp4\n\n**Output:**\nGoogle returns a `file.uri` that identifies your uploaded video"
      },
      "typeVersion": 1
    },
    {
      "id": "bd715b50-2069-481b-a61e-a618896c4e1f",
      "name": "Note: Step 7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1216,
        6928
      ],
      "parameters": {
        "width": 340,
        "height": 484,
        "content": "## \ud83e\udd16 STEP 7: AI Video Analysis\n\n**What happens here:**\nSends the uploaded video to Gemini 2.0 Flash to analyze and describe every detail.\n\n**Configuration required:**\n\u270f\ufe0f Replace `YOUR_GOOGLE_API_KEY_HERE` in the URL parameter\n\n**What the AI does:**\n- Analyzes video frame-by-frame\n- Describes visuals, audio, movements, lighting\n- Outputs a detailed text description\n- Format: continuous lowercase text (no punctuation)\n\n**This description becomes the prompt for video generation!**"
      },
      "typeVersion": 1
    },
    {
      "id": "3176969b-25e3-4ecc-b9ea-1c80064d28ac",
      "name": "Note: Step 8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -752,
        6928
      ],
      "parameters": {
        "width": 340,
        "height": 468,
        "content": "## \ud83c\udfac STEP 8: Generate New Video\n\n**What happens here:**\nUses Replicate's Minimax Video-01 model to create a new video based on the AI analysis.\n\n**Configuration required:**\n\u270f\ufe0f Replace `YOUR_REPLICATE_API_KEY_HERE` in Authorization header\n\n**How it works:**\n- Takes the Gemini description as prompt\n- Sends to Minimax video generation model\n- Returns a prediction ID (not the video yet!)\n\n**Note:** Video generation is asynchronous - we need to check status"
      },
      "typeVersion": 1
    },
    {
      "id": "95a5a943-9a2a-47dc-b185-ff5d1afda54c",
      "name": "Note: Step 9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        6928
      ],
      "parameters": {
        "width": 320,
        "height": 444,
        "content": "## \u23f8\ufe0f STEP 9: Wait Period\n\n**What happens here:**\nPauses workflow execution for 2 minutes.\n\n**Why we wait:**\n- Video generation takes time (typically 2-5 minutes)\n- We give the model time to process\n- Then we check if it's complete\n\n**Adjustable:**\nChange the `amount` parameter if videos consistently take longer/shorter\n\n**No API keys needed**"
      },
      "typeVersion": 1
    },
    {
      "id": "69a0cc2e-c288-4bc6-9f03-86afb8b83407",
      "name": "Note: Step 10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        112,
        6928
      ],
      "parameters": {
        "width": 340,
        "height": 428,
        "content": "## \ud83d\udd0d STEP 10: Check Status\n\n**What happens here:**\nQueries Replicate API to see if video generation is complete.\n\n**Configuration required:**\n\u270f\ufe0f Replace `YOUR_REPLICATE_API_KEY_HERE` in Authorization header\n\n**Technical detail:**\n- Uses prediction ID from Step 8\n- Checks generation status\n- Returns: \"succeeded\", \"processing\", or \"failed\"\n\n**Next:** Decision node checks the status"
      },
      "typeVersion": 1
    },
    {
      "id": "db7b806f-3199-4b3d-958e-d5006812a6d9",
      "name": "Note: Step 11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        6928
      ],
      "parameters": {
        "width": 340,
        "height": 428,
        "content": "## \u2705 STEP 11: Status Decision\n\n**What happens here:**\nChecks if video generation succeeded.\n\n**Logic flow:**\n- \u2705 If status = \"succeeded\" \u2192 Fetch the video\n- \u274c If still processing \u2192 Loop back to Wait node\n\n**Why loop:**\nSome videos take longer than 2 minutes. This ensures we don't miss the result.\n\n**No configuration needed**"
      },
      "typeVersion": 1
    },
    {
      "id": "b4ec7a9e-99ff-47ba-8b43-d409f00cdb7a",
      "name": "Note: Step 12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1376,
        6912
      ],
      "parameters": {
        "width": 360,
        "height": 512,
        "content": "## \ud83c\udf89 STEP 12: Download Generated Video\n\n**What happens here:**\nFetches the final AI-generated video file.\n\n**Configuration required:**\n\u270f\ufe0f Replace `YOUR_REPLICATE_API_KEY_HERE` in Authorization header\n\n**Output:**\n- Binary video file (MP4)\n- Ready for download or further processing\n\n**Success!** Your AI-regenerated video is complete.\n\n---\n\n\ud83d\udca1 **Pro Tip:** You can add nodes here to:\n- Upload to cloud storage\n- Send via email/webhook\n- Post to social media"
      },
      "typeVersion": 1
    },
    {
      "id": "67ebb65b-ff83-4307-9dcb-1a1c20f96e52",
      "name": "Note: Wait Loop",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        7088
      ],
      "parameters": {
        "width": 320,
        "height": 328,
        "content": "## \ud83d\udd01 Wait Loop Node\n\n**What happens here:**\nThis is where the workflow waits if video generation is still processing.\n\n**Connected from:**\nThe \"false\" branch of Step 11 decision node\n\n**Loops back to:**\nStep 10 (Status check)\n\n**This creates a polling mechanism** that keeps checking until the video is ready."
      },
      "typeVersion": 1
    },
    {
      "id": "86dc1407-c0db-4702-b72e-45f5d8f909d2",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3856,
        5216
      ],
      "parameters": {
        "color": 4,
        "width": 5840,
        "height": 2528,
        "content": "## \ud83c\udfac Trending Instagram Reel URL to AI Video Generator\n\n**What this workflow does:**\nThis automation takes an Instagram Reel URL, downloads it, analyzes the video content using AI, and regenerates a similar video using AI video generation.\n\n**Perfect for:** Content creators, social media managers, and anyone wanting to create variations of existing video content.\n\n---\n\n### \ud83d\udccb Setup Requirements:\n\n**1. RapidAPI Key** (for Instagram downloads)\n- Sign up at https://rapidapi.com\n- Subscribe to \"Instagram Reels Downloader API\"\n- Copy your API key\n\n**2. Google AI Studio API Key** (for Gemini video analysis)\n- Go to https://aistudio.google.com/apikey\n- Create a new API key\n- Enable Gemini API access\n\n**3. Replicate API Key** (for video generation)\n- Sign up at https://replicate.com\n- Go to Account Settings \u2192 API Tokens\n- Create a new token\n\n---\n\n### \ud83d\udd27 Configuration Steps:\n\n1. **Replace ALL instances** of the following placeholders:\n   - `YOUR_RAPIDAPI_KEY_HERE` \u2192 Your RapidAPI key\n   - `YOUR_GOOGLE_API_KEY_HERE` \u2192 Your Google AI Studio key (appears twice)\n   - `YOUR_REPLICATE_API_KEY_HERE` \u2192 Your Replicate key (appears 3 times)\n\n2. **Activate the workflow** in n8n\n\n3. **Test with an Instagram Reel URL**\n\n---\n\n### \u26a0\ufe0f Important Notes:\n- Video generation can take 2-5 minutes\n- Ensure you have credits in your Replicate account\n- The workflow includes retry logic for failed requests\n- Webhook IDs will be auto-generated when you save"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Get Status of the Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pause": {
      "main": [
        [
          {
            "node": "Get Status of the Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Formatter": {
      "main": [
        [
          {
            "node": "Checks Null/ Not",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Reel": {
      "main": [
        [
          {
            "node": "Upload the video to model",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Reel Downloader": {
      "main": [
        [
          {
            "node": "Formatter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Checks Null/ Not": {
      "main": [
        [
          {
            "node": "Reel Downloader",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Download Reel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create the Video": {
      "main": [
        [
          {
            "node": "Pause",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyse the Video": {
      "main": [
        [
          {
            "node": "Create the Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Status of the Video": {
      "main": [
        [
          {
            "node": "Checks if the video generation is complete",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload the video to model": {
      "main": [
        [
          {
            "node": "Analyse the Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "Reel Downloader",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Checks if the video generation is complete": {
      "main": [
        [
          {
            "node": "Fetches the Video Output",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This n8n template demonstrates how to automatically download an Instagram Reel, analyze its content using AI video understanding, and regenerate a similar video using AI video generation models. The workflow creates AI-powered variations of existing video content while…

Source: https://n8n.io/workflows/9863/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This workflow allows users to ask portfolio-related questions in a simple format (). It validates the input, fetches client data and holdings from Google Sheets, retrieves live market prices via API,

Chat Trigger, Google Sheets, HTTP Request +2
AI & RAG

This workflow is for: People who want to quickly launch simple landing pages without paying monthly fees to landing page creators. It’s ideal for rapid prototyping, generation of large amounts of land

Google Gemini, OpenAI, Chat Trigger +3
AI & RAG

Automate the creation of high-performing YouTube Shorts in minutes! Content Creators: Generate engaging short videos effortlessly. Marketing Agencies: Produce client-ready content quickly. Business Ow

Chat Trigger, HTTP Request, OpenAI
AI & RAG

I prepared a comprehensive guide demonstrating how to build a multi-level retrieval AI agent in n8n that smartly narrows down search results first by file descriptions, then retrieves detailed vector

Tool Code, Chat Trigger, OpenAI +2
AI & RAG

🚨 LinkedIn search is BROKEN.

Chat Trigger, Google Sheets, HTTP Request +2