AutomationFlowsAI & RAG › Create AI YouTube Shorts from Video

Create AI YouTube Shorts from Video

Original n8n title: AI Youtube Shorts Creator 🤖🎞️: Prompt-based Clipping, Dubbing & Social Upload

ByDavide Boizza @n3witalia on n8n.io

This workflow automates the process of creating short video clips from a YouTube video based on specific content requested by the user.

Event trigger★★★★★ complexityAI-powered35 nodesHTTP RequestChain LlmOpenAI ChatOutput Parser StructuredGoogle DriveFtpN8N Nodes Postiz
AI & RAG Trigger: Event Nodes: 35 Complexity: ★★★★★ AI nodes: yes Added:

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

This workflow follows the Chainllm → Google Drive 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
{
  "id": "zJJcFlQRh8m8pHIs",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Create video clip from Youtube video",
  "tags": [],
  "nodes": [
    {
      "id": "c6eaa11b-40a5-44c9-a9cd-26d2bc672223",
      "name": "Generate transcript",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -400,
        1648
      ],
      "parameters": {
        "url": "=https://www.youtube-transcript.io/api/transcripts",
        "method": "POST",
        "options": {},
        "jsonBody": "={ \n  \"ids\": [\"{{ $json['VIDEO ID'] }}\"]\n} ",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e72a6e88-61fa-47c0-91db-fff37850a378",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -960,
        1648
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "2fb35652-576e-452f-9022-e2ae9b4b2fda",
      "name": "Download Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -416,
        1360
      ],
      "parameters": {
        "url": "=https://youtube-video-fast-downloader-24-7.p.rapidapi.com/download_video/{{ $json['VIDEO ID'] }}",
        "options": {
          "redirect": {
            "redirect": {}
          }
        },
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "quality",
              "value": "247"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-host",
              "value": "youtube-video-fast-downloader-24-7.p.rapidapi.com"
            },
            {
              "name": "x-rapidapi-key",
              "value": "XXX"
            }
          ]
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "4485d551-5405-4368-bd2d-f92e4796da46",
      "name": "Basic LLM Chain",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        32,
        1648
      ],
      "parameters": {
        "text": "=Requested content:  {{ $('Set params').item.json.PROMPT }}\n\nFull transcript:\n{{ JSON.stringify(\n$json.transcript) }}",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "=# VIDEO TRANSCRIPT TIMESTAMP EXTRACTOR\n\n## Role\nYou are a precise video transcript analyzer. Given a YouTube transcript and a user request, your job is to identify the exact moment in the video where the requested topic, sentence, or event occurs, and return its timing in seconds.\n\n---\n\n## Input you will receive\n- **Transcript**: a JSON array of transcript segments, each containing:\n  - `start`: start time of the segment in seconds (as a string)\n  - `dur`: duration of the segment in seconds (as a string)\n  - `text`: the spoken text (may contain `\\n` noise \u2014 ignore it)\n- **User request**: a description of what to locate in the video\n\n---\n\n## Your task\n1. Read through the full transcript carefully\n2. Identify the segment or range of segments where the requested content occurs\n3. Calculate:\n   - `start_time`: the `start` value of the first matching segment, rounded to the nearest integer\n   - `end_time`: `start` + `dur` of the last matching segment, rounded to the nearest integer\n   - `duration`: `end_time` - `start_time`\n\n---\n\n## Hard constraints\n- Ignore segments where `text` is only `\\n` or whitespace\n- If the content spans multiple consecutive segments, merge them into a single time range\n- If the requested content is not found in the transcript, return `null` for all fields with a `\"found\": false` flag\n- Always round all values to the nearest integer (no decimals)\n\n---\n\n## Output format\n\nReturn a valid JSON object only. No explanation, no markdown, no text outside the JSON.\n\n{\n  \"found\": true,\n  \"start_time\": <integer>,\n  \"end_time\": <integer>,\n  \"duration\": <integer>\n}"
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "b7abbb12-c263-4fe9-9113-376999a0ce3e",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        32,
        1872
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "a3c1818a-d38d-416e-a74f-a00df63cf8a8",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        176,
        1872
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"found\": true,\n  \"start_time\": 130,\n  \"end_time\": 135,\n  \"duration\": 5\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "a0a1de1a-fb73-455d-bfe2-dc8274ea198b",
      "name": "Upload file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        320,
        1360
      ],
      "parameters": {
        "name": "={{$('Set params').item.json['VIDEO ID']}}.mp4",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1tkCr7xdraoZwsHqeLm7FZ4aRWY94oLbZ",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1tkCr7xdraoZwsHqeLm7FZ4aRWY94oLbZ",
          "cachedResultName": "n8n"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "1c2f0692-9d1b-45a4-819c-bcd4640e5827",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        -128,
        1360
      ],
      "parameters": {
        "amount": 300
      },
      "typeVersion": 1.1
    },
    {
      "id": "03e45f79-c8d1-4930-8e5b-3942608f2f52",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -192,
        1216
      ],
      "parameters": {
        "color": 7,
        "width": 448,
        "height": 304,
        "content": "## IMPORTANT Note\nThe file will soon be ready (from 20 to 300 seconds). Until it is ready, attempting to access it will return a 404 error. The file will be available for download only 10 minute"
      },
      "typeVersion": 1
    },
    {
      "id": "0cbaac74-99ef-479e-b122-76e8d11a1a46",
      "name": "Upload to FTP",
      "type": "n8n-nodes-base.ftp",
      "position": [
        320,
        1184
      ],
      "parameters": {
        "path": "=/n3wstorage/test/{{ $json.name }}",
        "options": {},
        "operation": "upload"
      },
      "credentials": {
        "ftp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fb35dcc0-7a3a-429f-ac3e-aaa5c89af00d",
      "name": "Wait 30 sec.",
      "type": "n8n-nodes-base.wait",
      "position": [
        -448,
        2192
      ],
      "parameters": {
        "amount": 30
      },
      "typeVersion": 1.1
    },
    {
      "id": "8e0960fa-7424-49ae-a558-a78e25483219",
      "name": "Get final video url",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        224,
        2176
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/workflow-utilities/requests/{{ $json.request_id }}",
        "options": {},
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "dabfce7c-cc91-4e66-97e0-b11a5c523f21",
      "name": "Video Dubbing",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -800,
        2192
      ],
      "parameters": {
        "url": "https://queue.fal.run/fal-ai/workflow-utilities/trim-video",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "video_url",
              "value": "={{ $json.video_url }}"
            },
            {
              "name": "start_time",
              "value": "={{ $('Basic LLM Chain').item.json.output.start_time }}"
            },
            {
              "name": "end_time",
              "value": "={{ $('Basic LLM Chain').item.json.output.end_time }}"
            },
            {
              "name": "duration",
              "value": "={{ $('Basic LLM Chain').item.json.output.duration }}"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "60fa701c-8d70-47cf-87a2-189cd7563db2",
      "name": "Get status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -208,
        2192
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/workflow-utilities/requests/{{ $('Video Dubbing').item.json.request_id }}/status ",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "7483ec75-620a-4ab8-9b4e-69244b681e74",
      "name": "Completed?",
      "type": "n8n-nodes-base.if",
      "position": [
        -32,
        2192
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "383d112e-2cc6-4dd4-8985-f09ce0bd1781",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "COMPLETED"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3dcdf09a-107c-4fc9-8552-738481a2578a",
      "name": "Get video file",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        432,
        2176
      ],
      "parameters": {
        "url": "={{ $json.video.url }}",
        "options": {}
      },
      "typeVersion": 4.4
    },
    {
      "id": "2b62f3fa-791e-4af2-8e1d-9701a7340efc",
      "name": "Get video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        64,
        1360
      ],
      "parameters": {
        "url": "={{ $json.file }}",
        "options": {
          "response": {
            "response": {}
          }
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "ec6bc17d-771c-4007-b763-4716201cf46d",
      "name": "Set video url",
      "type": "n8n-nodes-base.set",
      "position": [
        704,
        1632
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b112828a-934a-4058-bbfb-0faa94554aa3",
              "name": "video_url",
              "type": "string",
              "value": "=https://n3wstorage.b-cdn.net/test/{{ $('Set params').item.json['VIDEO ID'] }}.mp4"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "c5aadbe7-8a57-4a78-a251-e34e9a1410e5",
      "name": "Output found?",
      "type": "n8n-nodes-base.if",
      "position": [
        384,
        1648
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "dc205567-6836-43a1-b846-357f35553fef",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.output.found }}",
              "rightValue": false
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "1fafa452-fdf4-4494-a0c7-0f26325a86ae",
      "name": "Upload to FTP server",
      "type": "n8n-nodes-base.ftp",
      "position": [
        720,
        1968
      ],
      "parameters": {
        "path": "=/n3wstorage/test/{{ $('Set params').item.json['VIDEO ID'] }}_clip.mp4",
        "options": {},
        "operation": "upload"
      },
      "credentials": {
        "ftp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d586ed02-77b8-4e7b-b885-f145e7d601c2",
      "name": "Upload to Postiz",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        720,
        2816
      ],
      "parameters": {
        "url": "https://api.postiz.com/public/v1/upload",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3203edb1-0b5a-4a07-891f-54239174c279",
      "name": "Upload to Instagram",
      "type": "n8n-nodes-postiz.postiz",
      "position": [
        976,
        2816
      ],
      "parameters": {
        "date": "={{ $now.format('yyyy-LL-dd') }}T{{ $now.format('HH:ii:ss') }}",
        "posts": {
          "post": [
            {
              "value": {
                "contentItem": [
                  {
                    "image": {
                      "imageItem": [
                        {
                          "id": "={{ $json.id }}",
                          "path": "={{ $json.path }}"
                        }
                      ]
                    },
                    "content": "=XXX"
                  }
                ]
              },
              "integrationId": "XXX"
            }
          ]
        },
        "shortLink": true
      },
      "credentials": {
        "postizApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0c80f760-cf34-4c29-b708-ebbcd42ab55b",
      "name": "Upload to TikTok",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        720,
        2640
      ],
      "parameters": {
        "url": "https://api.upload-post.com/api/upload",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "title",
              "value": "=SET_TITLE"
            },
            {
              "name": "user",
              "value": "YOUR_USERNAME"
            },
            {
              "name": "platform[]",
              "value": "tiktok"
            },
            {
              "name": "video",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "1a7debcd-064d-4531-9b69-22e12fb7c212",
      "name": "Upload to Youtube",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        720,
        2480
      ],
      "parameters": {
        "url": "https://api.upload-post.com/api/upload",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "title",
              "value": "=SET_TITLE"
            },
            {
              "name": "user",
              "value": "YOUR_USERNAME"
            },
            {
              "name": "platform[]",
              "value": "youtube"
            },
            {
              "name": "video",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "cf8865fd-241f-4c06-b1eb-2a912a07abe2",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        2352
      ],
      "parameters": {
        "color": 7,
        "width": 544,
        "height": 688,
        "content": "## UPLOAD TO SOCIAL\nGet [Upload-Post API](https://www.upload-post.com/?linkId=lp_144414&sourceId=n3witalia&tenantId=upload-post-app) to share video on TikTok and Youtube\nGet [Postiz API](https://postiz.pro/n3witalia) to share video on Instagram"
      },
      "typeVersion": 1
    },
    {
      "id": "d1f33537-0497-4c8c-ad72-0cc3c5dfb581",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -496,
        1216
      ],
      "parameters": {
        "color": 7,
        "width": 288,
        "height": 304,
        "content": "## RAPIDAPI KEY\nGet and set RapidAPI Key for [Youtube video downloader](https://rapidapi.com/nikzeferis/api/youtube-video-fast-downloader-24-7/playground)"
      },
      "typeVersion": 1
    },
    {
      "id": "b99d207d-ddb8-4db6-a96c-0b973cbaa58f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -480,
        1536
      ],
      "parameters": {
        "color": 7,
        "width": 272,
        "height": 288,
        "content": "## Y-TRANSCRIPT KEY\nGet [Youtube Transcript API](youtube-transcript.io)"
      },
      "typeVersion": 1
    },
    {
      "id": "cf1c1bac-a600-4707-ac51-6b0dae47d685",
      "name": "Set params",
      "type": "n8n-nodes-base.set",
      "position": [
        -704,
        1648
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "99dcf0ad-672e-42de-a510-848149ac084e",
              "name": "VIDEO ID",
              "type": "string",
              "value": "eLz22nWmiuI"
            },
            {
              "id": "a6d6e179-6ce9-4ca2-83db-e178b72681bd",
              "name": "PROMPT",
              "type": "string",
              "value": "How to obtain Gemini API"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "776bbde0-c284-45d7-9573-a439f4153da6",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -784,
        1536
      ],
      "parameters": {
        "color": 7,
        "width": 272,
        "height": 288,
        "content": "## PARAMS\nSet Youtube ID video and prompt (the content you want to search for within the video)"
      },
      "typeVersion": 1
    },
    {
      "id": "2c153d1f-3c12-4af5-ae0e-66dd483e495a",
      "name": "Get transcript",
      "type": "n8n-nodes-base.set",
      "position": [
        -176,
        1648
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "988dd8ee-bb0f-4c2f-bf4d-1f900cc6cb79",
              "name": "transcript",
              "type": "array",
              "value": "={{ $json.tracks[0].transcript }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1f470689-0871-4cc7-859d-0a79089dcb4d",
      "name": "Upload do Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        720,
        2160
      ],
      "parameters": {
        "name": "={{$('Set params').item.json['VIDEO ID']}}_clip.mp4",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1tkCr7xdraoZwsHqeLm7FZ4aRWY94oLbZ",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1tkCr7xdraoZwsHqeLm7FZ4aRWY94oLbZ",
          "cachedResultName": "n8n"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "cb82173a-900c-4758-8f1a-8e93ea5f168a",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -192,
        1536
      ],
      "parameters": {
        "color": 7,
        "width": 752,
        "height": 288,
        "content": "## TIMESTAMP EXTRACTOR\nSearch within the video transcript for the content searched for in the set prompt"
      },
      "typeVersion": 1
    },
    {
      "id": "11180877-c8ff-4ff5-b114-327d08344fef",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -832,
        2096
      ],
      "parameters": {
        "color": 7,
        "width": 1216,
        "height": 320,
        "content": "## CREATE SHORT VIDEO\nCreate a short video clips from a YouTube video based on specific content requested by the user"
      },
      "typeVersion": 1
    },
    {
      "id": "7623b1ac-3b45-4b4f-9eab-809bc23a4bf3",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1296,
        912
      ],
      "parameters": {
        "width": 768,
        "height": 592,
        "content": "## AI YouTube Shorts Creator: Prompt-Based Clipping, Dubbing & Social Upload\n\nThis workflow automates the process of creating short video clips from a YouTube video based on specific content requested by the user.\n\nTis is a complete AI-powered video clipping and distribution system, turning any YouTube video into ready-to-publish short-form content automatically\n\n### How it works\n\nThis workflow turns a YouTube video into a short clip based on a user\u2019s prompt. It fetches the transcript, uses an OpenAI model to identify the most relevant segment with precise start and end timestamps, downloads the source video, uploads it to BunnyCDN for a public URL, then sends the URL and timecodes to Fal.run to trim the clip. Once generated, the final short is downloaded and distributed automatically to Google Drive, BunnyCDN, TikTok, YouTube, and Instagram through the configured APIs.\n\n### Setup steps\n\nConfigure all required credentials before running the workflow: RapidAPI for video download, youtube-transcript for transcript retrieval, OpenAI for clip detection, and Fal Run for trimming. Then set up Google Drive OAuth2 and BunnyCDN FTP for storage, optionally connect Postiz for Instagram and Upload-post for TikTok and YouTube publishing, and update the workflow test variables such as `VIDEO ID`, `PROMPT`, destination folder IDs, FTP paths, titles, usernames, and platform-specific integration fields.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8e6c431f-a7b4-4f2a-8b0d-e7716165c4af",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2080,
        768
      ],
      "parameters": {
        "color": 7,
        "width": 736,
        "height": 736,
        "content": "## MY NEW YOUTUBE CHANNEL\n\ud83d\udc49 [Subscribe to my new **YouTube channel**](https://youtube.com/@n3witalia). Here I\u2019ll share videos and Shorts with practical tutorials and **FREE templates for n8n**.\n\n[![image](https://n3wstorage.b-cdn.net/n3witalia/youtube-n8n-cover.jpg)](https://youtube.com/@n3witalia)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "def77dea-83c9-4788-97b2-aa5c54f1eb8a",
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Get video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get video": {
      "main": [
        [
          {
            "node": "Upload file",
            "type": "main",
            "index": 0
          },
          {
            "node": "Upload to FTP",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Completed?": {
      "main": [
        [
          {
            "node": "Get final video url",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 30 sec.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get status": {
      "main": [
        [
          {
            "node": "Completed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set params": {
      "main": [
        [
          {
            "node": "Generate transcript",
            "type": "main",
            "index": 0
          },
          {
            "node": "Download Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file": {
      "main": [
        []
      ]
    },
    "Wait 30 sec.": {
      "main": [
        [
          {
            "node": "Get status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Output found?": {
      "main": [
        [
          {
            "node": "Set video url",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set video url": {
      "main": [
        [
          {
            "node": "Video Dubbing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Video Dubbing": {
      "main": [
        [
          {
            "node": "Wait 30 sec.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Video": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get transcript": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get video file": {
      "main": [
        [
          {
            "node": "Upload do Drive",
            "type": "main",
            "index": 0
          },
          {
            "node": "Upload to FTP server",
            "type": "main",
            "index": 0
          },
          {
            "node": "Upload to Youtube",
            "type": "main",
            "index": 0
          },
          {
            "node": "Upload to TikTok",
            "type": "main",
            "index": 0
          },
          {
            "node": "Upload to Postiz",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain": {
      "main": [
        [
          {
            "node": "Output found?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload to Postiz": {
      "main": [
        [
          {
            "node": "Upload to Instagram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Generate transcript": {
      "main": [
        [
          {
            "node": "Get transcript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get final video url": {
      "main": [
        [
          {
            "node": "Get video file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Set params",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

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

About this workflow

This workflow automates the process of creating short video clips from a YouTube video based on specific content requested by the user.

Source: https://n8n.io/workflows/14191/ — 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

The best content automation template in the market is now even better—with “deep research” on time-sensitive topics\! Unlike most n8n content automation templates that are mainly for “demo purposes,”

OpenAI, HTTP Request, XML +11
AI & RAG

Use cases are many: This tool is perfect for YouTube and Shorts creators who want to publish daily content without showing their face, TikTok and Reels marketers automating voice-over-driven videos, a

Google Drive, Output Parser Structured, Chain Llm +4
AI & RAG

This workflow is perfect for graphic designers, creative agencies, marketing teams, or freelancers who regularly use AI-generated images in their projects. It's specifically beneficial for teams that

Google Sheets, Google Drive, HTTP Request +5
AI & RAG

Awesome N8N Templates. Uses notion, lmChatOpenAi, outputParserStructured, chainLlm. Event-driven trigger; 36 nodes.

Notion, OpenAI Chat, Output Parser Structured +8
AI & RAG

This n8n template demonstrates how to use Kie.ai's powerful image generation models to create and enhance images using AI, with automated story creation, image upscaling, and organized file management

HTTP Request, Google Drive, Google Sheets +3