AutomationFlowsAI & RAG › Repurpose Youtube Videos Across Social Media with Gemini AI and Contentdrips

Repurpose Youtube Videos Across Social Media with Gemini AI and Contentdrips

ByShayan Ali Bakhsh @kshayan091 on n8n.io

This workflow helps you repurpose your YouTube videos across multiple social media platforms with zero manual effort. It’s designed for creators, businesses, and marketers who want to maximize reach without spending hours re-uploading content everywhere. Trigger from YouTube The…

Event trigger★★★★★ complexityAI-powered47 nodesHTTP RequestRSS Feed ReadDiscordStop And ErrorError TriggerN8N Nodes ContentdripsGoogle Gemini
AI & RAG Trigger: Event Nodes: 47 Complexity: ★★★★★ AI nodes: yes Added:
Repurpose Youtube Videos Across Social Media with Gemini AI and Contentdrips — n8n workflow card showing HTTP Request, RSS Feed Read, Discord integration

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

This workflow follows the Discord → 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
{
  "id": "fxWUeIE9Gz6cj2FA",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Repurpose youtube video",
  "tags": [],
  "nodes": [
    {
      "id": "9b3b6baa-ec80-4ad2-a9e7-ff9285c1bb8d",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "disabled": true,
      "position": [
        2128,
        1408
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "fcd53179-853c-478a-a8db-b1c4f7b4d918",
      "name": "\ud83d\udccb Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1072,
        1488
      ],
      "parameters": {
        "color": 6,
        "width": 800,
        "height": 436,
        "content": "## \ud83c\udfac YouTube Channel Auto-Notification System\n\n### \ud83d\udccb What This Workflow Does:\n- **Subscribes** to YouTube channel notifications using PubSubHubbub\n- **Receives** real-time notifications when new videos are uploaded\n- **Logs** video details automatically to Google Sheets\n- **Responds** to YouTube's verification challenges\n\n### \ud83d\udd27 Setup Requirements:\n1. Replace channel ID in subscription URL\n2. Configure webhook endpoint\n3. Set up Google Sheets credentials\n4. Update verify token if needed\n\n### \u26a1 Auto-Trigger:\nOnce set up, this workflow automatically runs whenever a new video is published on the monitored YouTube channel!"
      },
      "typeVersion": 1
    },
    {
      "id": "59aae255-48e0-4f43-a666-f502c00d7e18",
      "name": "\ud83d\udd10 Subscription Setup",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1072,
        1024
      ],
      "parameters": {
        "color": 6,
        "width": 808,
        "height": 420,
        "content": "## \ud83d\udd10 Subscription Setup Process\n\n### Step 1: Manual Subscription\n- **One-time setup** to register webhook with YouTube\n- Sends subscription request to Google's PubSubHubbub service\n- Includes callback URL, channel ID, and verification tokens\n\n### \ud83d\udcdd Key Parameters:\n- **hub.callback**: Your n8n webhook URL\n- **hub.topic**: YouTube channel feed URL\n- **hub.verify_token**: Security token (lakshit)\n- **hub.lease_seconds**: Subscription duration (10 days)\n\n### \u26a0\ufe0f Important:\n- Run this manually once to establish the subscription!\n- Schedule to run this every 4 to 5 days to subscribe to channel again, because one subscription last max 10 days"
      },
      "typeVersion": 1
    },
    {
      "id": "1773188a-8bcd-4886-8358-5aadbb4043cc",
      "name": "\ud83c\udfaf Processing Pipeline",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1072,
        1968
      ],
      "parameters": {
        "color": 6,
        "width": 800,
        "height": 420,
        "content": "## \ud83c\udfaf Auto-Processing Pipeline\n\n### Verification Flow:\n1. **YouTube Challenge** \u2192 Verify webhook ownership\n2. **Token Validation** \u2192 Confirm security token\n3. **Challenge Response** \u2192 Send back verification code\n\n### Notification Flow:\n1. **New Video Alert** \u2192 Real-time notification received\n2. **Data Extraction** \u2192 Parse video ID and URL\n3. **Sheet Update** \u2192 Log to Google Sheets automatically\n\n### \ud83d\udcca Data Captured:\n- Video ID\n- YouTube video link\n- Status (ready for processing)"
      },
      "typeVersion": 1
    },
    {
      "id": "f4e7d86a-c7fc-475e-abfb-e066572e34ff",
      "name": "\ud83d\udce1 Subscribe to YouTube Notifications",
      "type": "n8n-nodes-base.httpRequest",
      "disabled": true,
      "position": [
        2592,
        1344
      ],
      "parameters": {
        "url": "https://pubsubhubbub.appspot.com/subscribe",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "hub.callback",
              "value": "https://n8n.glamoursuiting.com/webhook/youtube-trigger"
            },
            {
              "name": "hub.topic",
              "value": "https://www.youtube.com/feeds/videos.xml?channel_id=UC6ZligwnOYKDjgKFHEPTXzg"
            },
            {
              "name": "hub.verify",
              "value": "async"
            },
            {
              "name": "hub.mode",
              "value": "subscribe"
            },
            {
              "name": "hub.verify_token",
              "value": "shayan_ali_bakhsh"
            },
            {
              "name": "hub.secret",
              "value": "shayan_ali_bakhsh"
            },
            {
              "name": "hub.lease_seconds",
              "value": "864000"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "12b8e0c6-8bfc-4c5f-8407-956cb1275a44",
      "name": "\ud83c\udfa3 YouTube Webhook Listener",
      "type": "n8n-nodes-base.webhook",
      "disabled": true,
      "position": [
        2144,
        1632
      ],
      "parameters": {
        "path": "youtube-trigger",
        "options": {},
        "responseMode": "responseNode",
        "multipleMethods": true
      },
      "typeVersion": 2
    },
    {
      "id": "323cfcbe-ef49-4af4-a87b-147dc6671495",
      "name": "\u2705 Send Verification Response",
      "type": "n8n-nodes-base.respondToWebhook",
      "disabled": true,
      "position": [
        2768,
        1616
      ],
      "parameters": {
        "options": {},
        "respondWith": "text",
        "responseBody": "={{ $json.challenge }}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "ffdbe5fd-9a7b-44df-87ad-8d8ebda0cdc3",
      "name": "\ud83d\udd10 Validate Security Token",
      "type": "n8n-nodes-base.code",
      "disabled": true,
      "position": [
        2544,
        1616
      ],
      "parameters": {
        "jsCode": "const query = $input.first().json.query;\nconst verifyToken = query['hub.verify_token'];\nconst challenge = query['hub.challenge'];\nconst mode = query['hub.mode'];\n\n// Verify the token matches what you sent (yours is \"lakshit\")\nif (verifyToken === 'shayan_ali_bakhsh' && mode === 'subscribe') {\n  return [{\n    json: {\n      challenge: challenge,\n      status: 200,\n      message: 'Verification successful'\n    }\n  }];\n} else {\n  return [{\n    json: {\n      challenge: 'Forbidden',\n      status: 403,\n      message: 'Invalid verification'\n    }\n  }];\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "27b62c94-994d-4b96-80b5-1fe62ed05d74",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1968,
        1008
      ],
      "parameters": {
        "width": 1184,
        "height": 1136,
        "content": "# Subscribe to youtube RSS feed using PUBSUBHUBHUB\nYou can try this method as well, by which youtube will automatically send you the channel latest video, but it did not worked on my new youtube video. It might work on old channels with good followings"
      },
      "typeVersion": 1
    },
    {
      "id": "f4d12ca8-7bc6-4102-9da7-8c1654ca2b0d",
      "name": "Trigger every 5 days",
      "type": "n8n-nodes-base.scheduleTrigger",
      "disabled": true,
      "position": [
        2144,
        1248
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "daysInterval": 5
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "0bc80a1e-896a-4711-b008-ea3c799db25c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1952,
        -704
      ],
      "parameters": {
        "width": 1232,
        "height": 1120,
        "content": "# Youtube video trigger\n- It will get YouTube channel videos after every 10 minutes and check for latest video\n\nHow it works\n- Trigger node that will trigger the workflow after every 10 minutes\n- RSS feed, to get all videos of a youtube channel.\n- Then Check if the video is latest ( We check the latest video ID with the last saved youtube ID )\n\n### How to get youtube Channel RSS link\n- Go to that specific youtube channel\n- Mouse right click -> select \"View Page Source\"\n- Then search \"channel_id\" and find something \"https://www.youtube.com/feeds/videos.xml?channel_id=UC6ZligwnOYKDjgKFHEPTXzg\"\n\nTutorial Link: [How to get youtube channel RSS Feed Link](https://chuck.is/yt-rss/#:~:text=Hit%20CTRL%2BF%20to%20pull,preferred%20RSS%20reader%20and%20rejoice.)"
      },
      "typeVersion": 1
    },
    {
      "id": "76fd1340-43b4-4a4a-8a0c-09a814280a28",
      "name": "Log Response",
      "type": "n8n-nodes-base.code",
      "disabled": true,
      "position": [
        2544,
        1824
      ],
      "parameters": {
        "jsCode": "const data = $input.all()\nconsole.log(\"Data  received : \",data)\nreturn $input.all();"
      },
      "typeVersion": 2
    },
    {
      "id": "1e424fc7-5247-4365-adf8-4c2573f57fdf",
      "name": "Run every 10 minutes",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        2080,
        -80
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 10
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "22064e2c-9b71-44c7-8869-abb54c2e34ef",
      "name": "Fetch Youtube Channel Videos",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        2320,
        -80
      ],
      "parameters": {
        "url": "https://www.youtube.com/feeds/videos.xml?channel_id=UC6ZligwnOYKDjgKFHEPTXzg",
        "options": {
          "customFields": "media:group"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "6331aa57-bc47-49c8-893f-731eff2ce5e3",
      "name": "Organize Items",
      "type": "n8n-nodes-base.code",
      "position": [
        2560,
        -80
      ],
      "parameters": {
        "jsCode": "const data = $getWorkflowStaticData('global'); // Correct static data helper\n\n// Get the first (latest) item only\nconst item = $input.first().json;\nconst mediaGroup = item[\"media:group\"] || {};\nconst rawThumb = mediaGroup[\"media:thumbnail\"]?.[0]?.[\"$\"]?.url || null;\nconst thumbnail = rawThumb ? rawThumb.replace(\"hqdefault\", \"mqdefault\") : null;\n\nconst latest = {\n  title: item.title || null,\n  link: item.link || null,\n  author: item.author || null,\n  publishedAt: item.pubDate || null,\n  videoId: (item.id || \"\").replace(\"yt:video:\", \"\"),\n  description: mediaGroup[\"media:description\"]?.[0] || null,\n  thumbnail,\n  views: mediaGroup[\"media:community\"]?.[0]?.[\"media:statistics\"]?.[0]?.[\"$\"]?.views || null,\n  rating: mediaGroup[\"media:community\"]?.[0]?.[\"media:starRating\"]?.[0]?.[\"$\"]?.average || null,\n  ratingCount: mediaGroup[\"media:community\"]?.[0]?.[\"media:starRating\"]?.[0]?.[\"$\"]?.count || null,\n};\n\n// Compare with last saved videoId\nif (!data.lastVideoId) {\n  data.lastVideoId = latest.videoId;\n  return [{ json: { new: true, item: latest } }];\n}\n\nif (data.lastVideoId !== latest.videoId) {\n  data.lastVideoId = latest.videoId;\n  return [{ json: { new: true, item: latest } }];\n}\n\nreturn [{ json: { new: false, item: latest } }];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "5b9e82a1-9642-43e0-9bd6-88e4419f994d",
      "name": "Stop",
      "type": "n8n-nodes-base.noOp",
      "position": [
        3008,
        128
      ],
      "parameters": {},
      "retryOnFail": false,
      "typeVersion": 1
    },
    {
      "id": "e251b461-3138-4b86-9a55-a0006e1baa9f",
      "name": "If new video",
      "type": "n8n-nodes-base.if",
      "position": [
        2800,
        -80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "6d9e9eef-92c5-42f3-9fda-9474a21ba675",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.new }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "cabd2507-02f7-425d-a97c-bab0ae9390b0",
      "name": "Destroy Access Token",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        7040,
        96
      ],
      "parameters": {
        "url": "https://socialbu.com/api/v1/auth/logout",
        "method": "POST",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{ $('SocialBu Access Token').first().json.authToken }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "76a5b7be-46f3-4945-97bd-20069469e671",
      "name": "Get Accounts",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        5152,
        112
      ],
      "parameters": {
        "url": "https://socialbu.com/api/v1/accounts",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{ $json.authToken }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "0c1b8517-4d07-4dab-acdc-d57c72c85c91",
      "name": "Get Upload URL",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        5152,
        -208
      ],
      "parameters": {
        "url": "https://socialbu.com/api/v1/upload_media",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n\"name\": \"image.png\",\n\"mime_type\": \"image/png\"\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{ $json.authToken }}"
            }
          ]
        }
      },
      "notesInFlow": false,
      "typeVersion": 4.2
    },
    {
      "id": "964b1b3f-0196-4444-b796-15e153d76c22",
      "name": "Upload PDF",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        5664,
        -384
      ],
      "parameters": {
        "url": "={{ $json.signed_url }}",
        "method": "PUT",
        "options": {},
        "sendBody": true,
        "contentType": "binaryData",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "image/png"
            },
            {
              "name": "x-amz-acl",
              "value": "=private"
            }
          ]
        },
        "inputDataFieldName": "=image.png"
      },
      "typeVersion": 4.2
    },
    {
      "id": "4f639d19-c264-43e7-a0a2-e48861006716",
      "name": "Download Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        5456,
        -384
      ],
      "parameters": {
        "url": "={{ $('Content drips Create Image').item.json.export_url }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file",
              "outputPropertyName": "=image.png"
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "7e0e96c0-bb71-461d-999a-65b566253c2d",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        6224,
        96
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "bc1d5f1b-a618-46f5-b569-fbe6af4e74e4",
      "name": "Error Message",
      "type": "n8n-nodes-base.discord",
      "position": [
        7728,
        -304
      ],
      "parameters": {
        "content": "=There was an Error in your execution\nNode: {{ $json.execution.mode }}\nError: {{ $json.execution.error.message }}\nWorkflow Name: {{ $json.workflow.name }}\nWorkflow ID: {{ $json.workflow.id }}",
        "guildId": {
          "__rl": true,
          "mode": "id",
          "value": "1383872015349452971"
        },
        "options": {},
        "resource": "message",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "1383872016851144786",
          "cachedResultUrl": "https://discord.com/channels/1383872015349452971/1383872016851144786",
          "cachedResultName": "general"
        },
        "authentication": "oAuth2"
      },
      "credentials": {
        "discordOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "c6f2dc17-2e90-496f-a48d-87fad6feb081",
      "name": "Success Message",
      "type": "n8n-nodes-base.discord",
      "position": [
        7728,
        96
      ],
      "parameters": {
        "content": "=Successfully Posted YouTube update on all Platforms",
        "guildId": {
          "__rl": true,
          "mode": "id",
          "value": "1383872015349452971"
        },
        "options": {},
        "resource": "message",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "1383872016851144786",
          "cachedResultUrl": "https://discord.com/channels/1383872015349452971/1383872016851144786",
          "cachedResultName": "general"
        },
        "authentication": "oAuth2"
      },
      "credentials": {
        "discordOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "2dc4a7fe-3a7d-451a-ab11-83f99b185fc9",
      "name": "Stop and Error",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        6016,
        -192
      ],
      "parameters": {
        "errorMessage": "Could not Upload Image to Social BU after 4 retries"
      },
      "typeVersion": 1
    },
    {
      "id": "588e2ee8-fa5f-4d57-b820-3dfa2cad856a",
      "name": "Error Trigger",
      "type": "n8n-nodes-base.errorTrigger",
      "position": [
        7456,
        -304
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "a93facdb-6b84-4e0e-96ad-225a3e1cb978",
      "name": "Organaize Output",
      "type": "n8n-nodes-base.code",
      "position": [
        3760,
        -96
      ],
      "parameters": {
        "jsCode": "const unstructuredJson = $input.first().json.content?.parts?.[0]?.text || \"\";\n\n// Clean up markdown fences if they exist\nconst cleaned = unstructuredJson\n  .replace(/^```json\\s*/i, \"\")\n  .replace(/```$/i, \"\")\n  .trim();\n\nlet finalJson;\n\ntry {\n  finalJson = JSON.parse(cleaned);\n} catch (error) {\n  // fallback in case parsing fails\n  finalJson = {\n    short_description: null,\n    post_text: null,\n    error: \"Failed to parse AI response\",\n    raw: unstructuredJson\n  };\n}\n\nreturn finalJson;"
      },
      "typeVersion": 2
    },
    {
      "id": "35901d01-12f6-4c40-b4fd-5c7f5f6b4933",
      "name": "Content drips Create Image",
      "type": "n8n-nodes-contentdrips.contentdrips",
      "onError": "continueErrorOutput",
      "position": [
        4256,
        -96
      ],
      "parameters": {
        "branding": {
          "bio": "n8n Expert",
          "name": "Shayan Ali Bakhsh",
          "handle": "@shayan_ali_bakhsh",
          "website_url": "https://testwebsite.com",
          "avatar_image_url": "https://media.licdn.com/YOUR_AWS_SECRET_KEY_HERE-displayphoto-shrink_800_800/B4DZb4DiJ_GYAg-/0/1747918401685?e=1759968000&v=beta&t=3NZvitbqo8XVtg4oO9-N9IsQ2052zFhNDe3G2cF4gZo"
        },
        "operation": "generateGraphicSync",
        "templateId": "154452",
        "pollingConfig": {
          "maxWaitTime": 10,
          "pollInterval": 10
        },
        "contentUpdates": {
          "updates": [
            {
              "label": "description",
              "value": "={{ $json.short_description }}"
            },
            {
              "type": "image",
              "label": "thumbnail",
              "value": "={{ $('Organize Items').item.json.item.thumbnail }}"
            },
            {
              "label": "bio",
              "value": "n8n Expert"
            }
          ]
        },
        "includeBranding": true
      },
      "credentials": {
        "contentdripsApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e743360b-c93e-4667-9a78-b2b690337997",
      "name": "SocialBu Access Token",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        4768,
        -112
      ],
      "parameters": {
        "url": "https://socialbu.com/api/v1/auth/get_token",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n \"email\": \"super_famous@trust_me_bro.com\",\n \"password\": \"a secret password that not even your wife knows\"\n}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.2
    },
    {
      "id": "dcdf9d1b-c6d9-4fc6-ac33-f18deaac5779",
      "name": "Check if Image Uploaded",
      "type": "n8n-nodes-base.code",
      "position": [
        5456,
        -208
      ],
      "parameters": {
        "jsCode": "let retry = 0;\n\nwhile (retry < 4) {\n  await new Promise(resolve => setTimeout(resolve, 5000));\n\n  const apiCall = await this.helpers.httpRequest({\n      method: 'GET',\n      url: `https://socialbu.com/api/v1/upload_media/status`,\n      qs: {\n          key: $input.first().json.key,\n      },\n      headers: {\n          Authorization: `Bearer ${$('SocialBu Access Token').first().json.authToken}`\n      },\n      json: true,\n  });\n\n  // Check success\n  if (apiCall?.success === true) {\n      return [{ json: { success: true, data: apiCall } }];\n  }\n\n  // Increment retry\n  retry++;\n}\n\n// After all retries failed\nreturn [{ json: { success: false } }];"
      },
      "typeVersion": 2
    },
    {
      "id": "0b8833ca-6ed2-41f4-b99c-1b5ddc01df4f",
      "name": "Image Uploaded",
      "type": "n8n-nodes-base.if",
      "position": [
        5664,
        -208
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2efc43b6-92cc-4ca2-b86b-9450549f82d7",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.success }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "0cf02af1-9e1d-46d1-8148-07622cc834a1",
      "name": "Organize Object",
      "type": "n8n-nodes-base.code",
      "position": [
        6480,
        96
      ],
      "parameters": {
        "jsCode": "const allData = $input.all();\n\n// Format JS Date to \"YYYY-MM-DD HH:mm:ss\" (UTC)\nfunction formatDateToUTCString(date) {\n  const pad = (n) => (n < 10 ? '0' + n : n);\n\n  return (\n    date.getUTCFullYear() + '-' +\n    pad(date.getUTCMonth() + 1) + '-' +\n    pad(date.getUTCDate()) + ' ' +\n    pad(date.getUTCHours()) + ':' +\n    pad(date.getUTCMinutes()) + ':' +\n    pad(date.getUTCSeconds())\n  );\n}\n\n// Publish time: current UTC + 1 minute\nconst publishAt = formatDateToUTCString(new Date(Date.now() + 60 * 1000));\n\n// Extract upload_token from the first item\nconst uploadToken = $input.first().json.data.upload_token;\n\n// Collect active accounts that support PNG\nconst accountsThatAcceptPNG = allData\n  .slice(1) // skip first item (upload info)\n  .filter(item => item.json.active && item.json.attachment_types?.includes(\"png\"))\n  .map(item => item.json.id);\n\n// Final output\nreturn {\n  json: {\n    accounts: accountsThatAcceptPNG,\n    attachment: uploadToken,\n    publish_at: publishAt,\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "da0d22ef-ef82-4ef7-87eb-84f913e4f17d",
      "name": "Post to SocialBu Connected Accounts",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        6768,
        96
      ],
      "parameters": {
        "url": "https://socialbu.com/api/v1/posts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"accounts\": {{ JSON.stringify($json.accounts) }},\n  \"publish_at\": \"{{ $json.publish_at }}\",\n  \"content\": \"{{ $('Organaize Output').first().json.post_text }}\",\n  \"draft\": true,\n  \"existing_attachments\": [\n    {\n      \"upload_token\": \"{{ $json.attachment }}\"\n    }\n  ]\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{ $('SocialBu Access Token').first().json.authToken }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ad7822d3-1d43-414d-a837-840a1393edfb",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        7296,
        -688
      ],
      "parameters": {
        "width": 832,
        "height": 1104,
        "content": "## Send Updates on Discord\n"
      },
      "typeVersion": 1
    },
    {
      "id": "5c6ea61b-3292-4807-bd91-8fffcf239853",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4640,
        -704
      ],
      "parameters": {
        "width": 2576,
        "height": 1120,
        "content": "## Post to all platforms Using SocialBu\nWe could use n8n custom social media handles but, you have to then manually go to all platforms and get access. Which way too work, also, some platforms will not giuve access if you dont have a proper website and stuff. So its better to use another website\n\nLink to website: [Social Bu](https://socialbu.com/)\nConect and post to: Facebook, Instagram, Youtube, Tiktok. Twitter ( X ), Linkedin, Threads, Pinterest and many more"
      },
      "typeVersion": 1
    },
    {
      "id": "a064034a-b3eb-478e-b098-155533f49a55",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3280,
        -704
      ],
      "parameters": {
        "width": 736,
        "height": 1120,
        "content": "## Generate Descriptions\nWe are using Gemini 2.5 Flash to generate content descriptions\n"
      },
      "typeVersion": 1
    },
    {
      "id": "65310b3a-b0f6-4da4-9cac-01d011f92c1f",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4096,
        -704
      ],
      "parameters": {
        "width": 448,
        "height": 1120,
        "content": "## Generate Content Image Using ContentDrips\nWhy uise content Drips\n- It has maannyyy templates for you to get started.\n- You can select carousal + many types of images. So its really great to use\n- And it has an n8n node, so thanks for that\n\nHere is the node link to install: \nnpm install [n8n-nodes-contentdrips](https://www.npmjs.com/package/n8n-nodes-contentdrips)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8f04b82a-33f1-4ca9-85c5-7d7284d87e29",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1664,
        -704
      ],
      "parameters": {
        "content": "## Information"
      },
      "typeVersion": 1
    },
    {
      "id": "786bfe04-53eb-490f-b087-b6c25722787d",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1664,
        -512
      ],
      "parameters": {
        "color": 3,
        "content": "## Needs Update"
      },
      "typeVersion": 1
    },
    {
      "id": "27e0e96e-5e4c-4d4d-87a5-f24b8d4d5437",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2224,
        -176
      ],
      "parameters": {
        "color": 3,
        "width": 304,
        "height": 320,
        "content": "## Update Channel RSS link"
      },
      "typeVersion": 1
    },
    {
      "id": "d1d74066-c0f8-45b2-9826-0c1feff351c2",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3312,
        -224
      ],
      "parameters": {
        "color": 3,
        "width": 384,
        "height": 368,
        "content": "## Update Gemini Access Token"
      },
      "typeVersion": 1
    },
    {
      "id": "4d2d6e6b-f7a2-431a-9e83-aee8042d137d",
      "name": "Generate Description",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        3376,
        -96
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "models/gemini-2.5-flash",
          "cachedResultName": "models/gemini-2.5-flash"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=You are given information about a YouTube video:\n- Title: \"{{ $json.item.title }}\"\n- Description: \"{{ $json.item.description }}\"\n- Link: \"{{ $json.item.link }}\"\n\nYour task:\n1. Generate a short description (one sentence, around 10 words, not exceeding 15) that summarizes the video.\n2. Generate a short paragraph announcing the new video. It should say \"new video is out,\" briefly explain what it\u2019s about in a casual tone, and include the YouTube link at the end.\n\nOutput format: JSON with two keys:\n{\n  \"short_description\": \"...\",\n  \"post_text\": \"...\"\n}\n\nExamples:\n\nInput:\nTitle: \"Peaceful Mountains and Sea \ud83c\udf0a | 10s Relaxing Nature Clip\"\nDescription: \"Enjoy a calm 10-second clip of the sea gently meeting the mountains.\"\nLink: https://www.youtube.com/watch?v=NupfPpGO3j8\n\nOutput:\n{\n  \"short_description\": \"A peaceful 10-second clip showing calm sea and mountains.\",\n  \"post_text\": \"A new video is out! \ud83c\udf0a This short clip captures the peaceful meeting of mountains and sea, perfect for a quick relaxing break. Watch here: https://www.youtube.com/watch?v=NupfPpGO3j8\"\n}\n\n---\n\nInput:\nTitle: \"Desert video | 10 seconds\"\nDescription: \"A short clip of a moving desert shot taken from Pexels.\"\nLink: https://www.youtube.com/watch?v=6lcOzFx_JXI\n\nOutput:\n{\n  \"short_description\": \"A calming short desert clip with stunning golden sandy views.\",\n  \"post_text\": \"New video is up! \ud83c\udfdc\ufe0f Check out this 10-second desert clip that captures the still beauty of endless sands. Watch it now: https://www.youtube.com/watch?v=6lcOzFx_JXI\"\n}\n\nNow generate the output in the exact JSON format for the provided video info."
            }
          ]
        }
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 1
    },
    {
      "id": "4d17b898-447e-4a72-9aae-ae004c57413a",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4128,
        -336
      ],
      "parameters": {
        "color": 3,
        "width": 384,
        "height": 480,
        "content": "## Update Content Drips Credentials \n- API Key\n- Template ID\n- Branding\n\n[Tutorial ( Follow step 1 only)](https://contentdrips.com/blog/2025/07/automate-content-calendar-with-n8n-and-contentdrips-api/)"
      },
      "typeVersion": 1
    },
    {
      "id": "0b24d43f-0bd9-43b9-946a-1585eb63ff18",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4672,
        -320
      ],
      "parameters": {
        "color": 3,
        "width": 304,
        "height": 448,
        "content": "## Update your Email and Password Here\n- Connect your socials platforms first in Social Bu!"
      },
      "typeVersion": 1
    },
    {
      "id": "4cb5ee3f-2e75-47a3-a5b8-283b2d197eb8",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        7632,
        -464
      ],
      "parameters": {
        "color": 3,
        "width": 304,
        "height": 784,
        "content": "## Update your API Credentials for Discord\n[Tutorial ( Follow OAuth 2 Step only )](https://docs.n8n.io/integrations/builtin/credentials/discord/)"
      },
      "typeVersion": 1
    },
    {
      "id": "425661f1-5b57-4b1b-a7d1-20c9c692e3fe",
      "name": "\ud83d\udd10 Subscription Setup1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1952,
        -1200
      ],
      "parameters": {
        "color": 6,
        "width": 808,
        "height": 436,
        "content": "# About this Workflow\n\n### Repurpose your YouTube Video to multiple Social Medias.\n\n## How it Works\n- You upload video to YouTube\n- This workflow will fetch your latest Video\n- Create An Image using description and Thumbnail\n- Upload it to Facebook, Instagram, Youtube, Tiktok. Twitter ( X ), Linkedin, Threads and many more\n- Finally notify on Discord about updates. Success update, and if any error occured ( It could be API hit limits etc )\n\n### Need Help?\nMessage on Linkedin [Shayan Ali Bakhsh](https://www.linkedin.com/in/shayan-khan20/)\n\nHappy Automation!"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "callerPolicy": "workflowsFromSameOwner",
    "errorWorkflow": "fxWUeIE9Gz6cj2FA",
    "executionOrder": "v1"
  },
  "versionId": "525d63fb-cf85-4ccc-827f-3e4d49b3e3b6",
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Organize Object",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Accounts": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "If new video": {
      "main": [
        [
          {
            "node": "Generate Description",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Stop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Error Trigger": {
      "main": [
        [
          {
            "node": "Error Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Image": {
      "main": [
        [
          {
            "node": "Upload PDF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Upload URL": {
      "main": [
        [
          {
            "node": "Download Image",
            "type": "main",
            "index": 0
          },
          {
            "node": "Check if Image Uploaded",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Image Uploaded": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Stop and Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Organize Items": {
      "main": [
        [
          {
            "node": "If new video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Organize Object": {
      "main": [
        [
          {
            "node": "Post to SocialBu Connected Accounts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Organaize Output": {
      "main": [
        [
          {
            "node": "Content drips Create Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Destroy Access Token": {
      "main": [
        [
          {
            "node": "Success Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Description": {
      "main": [
        [
          {
            "node": "Organaize Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run every 10 minutes": {
      "main": [
        [
          {
            "node": "Fetch Youtube Channel Videos",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Trigger every 5 days": {
      "main": [
        [
          {
            "node": "\ud83d\udce1 Subscribe to YouTube Notifications",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SocialBu Access Token": {
      "main": [
        [
          {
            "node": "Get Accounts",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get Upload URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if Image Uploaded": {
      "main": [
        [
          {
            "node": "Image Uploaded",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Content drips Create Image": {
      "main": [
        [
          {
            "node": "SocialBu Access Token",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Youtube Channel Videos": {
      "main": [
        [
          {
            "node": "Organize Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udd10 Validate Security Token": {
      "main": [
        [
          {
            "node": "\u2705 Send Verification Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83c\udfa3 YouTube Webhook Listener": {
      "main": [
        [
          {
            "node": "\ud83d\udd10 Validate Security Token",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post to SocialBu Connected Accounts": {
      "main": [
        [
          {
            "node": "Destroy Access Token",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "\ud83d\udce1 Subscribe to YouTube Notifications",
            "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 helps you repurpose your YouTube videos across multiple social media platforms with zero manual effort. It’s designed for creators, businesses, and marketers who want to maximize reach without spending hours re-uploading content everywhere. Trigger from YouTube The…

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

[](https://drive.google.com/file/d/1Cl0KwgRgcuBPVdGgL-nqAcheyvfVXttD/view) Click on the image to see the Example output in google drive

HTTP Request, Stop And Error, OpenAI +3
AI & RAG

This workflow is a complete, AI-powered content engine designed to help automation experts build their personal brand on LinkedIn. It transforms a technical n8n workflow (in JSON format) into a polish

Stop And Error, Telegram Trigger, Telegram +4
AI & RAG

This workflow is a complete outbound automation system that discovers local businesses, extracts contact emails, generates personalized cold emails using AI, and runs a multi-step follow-up sequence —

Stop And Error, Google Sheets, HTTP Request +2
AI & RAG

The Problem That it Solves

Google Drive Trigger, OpenAI, Google Drive +5
AI & RAG

The AI-Powered Cold Call Machine is a fully automated workflow designed to generate qualified leads from LinkedIn, evaluate them using AI-based scoring, identify key decision-makers, and generate pers

HTTP Request, Google Sheets, OpenAI +1