AutomationFlowsSocial Media › Repurpose Youtube Shorts From Telegram to Facebook, Instagram and Tiktok…

Repurpose Youtube Shorts From Telegram to Facebook, Instagram and Tiktok…

Original n8n title: Repurpose Youtube Shorts From Telegram to Facebook, Instagram and Tiktok with Apify and Openai

ByDr. Firas @drfiras on n8n.io

This workflow listens for a YouTube Short link sent to a Telegram bot, downloads the video metadata and MP4 URL via Apify, generates a repost caption with OpenAI, uploads the video to Blotato, publishes it as a Facebook Reel, Instagram Reel, and TikTok post, then confirms back…

Event trigger★★★★☆ complexityAI-powered16 nodesTelegram Trigger@Blotato/N8N Nodes BlotatoAgentOpenAI ChatTelegramHTTP Request
Social Media Trigger: Event Nodes: 16 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Agent → Blotaton8N Nodes Blotato 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": "CJlMWRzsQx5stlwt",
  "meta": {
    "builderVariant": "mcp",
    "aiBuilderAssisted": true
  },
  "name": "Repurpose YouTube Shorts to Facebook, Instagram and TikTok from Telegram",
  "tags": [],
  "nodes": [
    {
      "id": "bd67e738-ad01-43b8-96fd-391edb4d72b7",
      "name": "Receive Short link on Telegram",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        32,
        112
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "b2efd915-ddce-42b1-b720-c01789b1975b",
      "name": "Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        272,
        112
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a1",
              "name": "video_url",
              "type": "string",
              "value": "={{ $('Receive Short link on Telegram').item.json.message.text.trim() }}"
            },
            {
              "id": "a2",
              "name": "chat_id",
              "type": "string",
              "value": "={{ $('Receive Short link on Telegram').item.json.message.chat.id }}"
            },
            {
              "id": "a3",
              "name": "ai_model",
              "type": "string",
              "value": "gpt-5-mini"
            },
            {
              "id": "a4",
              "name": "video_quality",
              "type": "string",
              "value": "720"
            },
            {
              "id": "a5",
              "name": "caption_instructions",
              "type": "string",
              "value": "You are a social media copywriter. Write ONE short, punchy caption to repost a vertical short video (Reel/Short) on Facebook, Instagram and TikTok. Base it on the provided video title. Rules: write in the same language as the title; start with a strong hook line; keep it under 60 words; add 3 to 5 relevant hashtags at the very end; use at most 2 emojis; output ONLY the caption text with no surrounding quotes, no labels and no markdown."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "16dd8ecd-a748-4138-b29d-3316c3f9318c",
      "name": "Upload video to Blotato",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        1200,
        112
      ],
      "parameters": {
        "mediaUrl": "={{ (($('Download Short via Apify').item.json.formats || []).filter(f => f.ext === 'mp4' && f.has_audio && (f.height||0) <= Number($('Configuration').item.json.video_quality)).sort((a,b) => (b.height||0)-(a.height||0))[0] || ($('Download Short via Apify').item.json.formats || []).filter(f => f.ext === 'mp4' && f.has_audio).sort((a,b) => (b.height||0)-(a.height||0))[0] || {}).url }}",
        "resource": "media"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "1e14bede-1bd0-4595-bc9f-3af372d642a3",
      "name": "Generate social caption",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1344,
        112
      ],
      "parameters": {
        "text": "=Video title: {{ $('Download Short via Apify').item.json.title }}",
        "options": {
          "systemMessage": "={{ $('Configuration').item.json.caption_instructions }}"
        },
        "promptType": "define"
      },
      "typeVersion": 3.1
    },
    {
      "id": "dcb32b58-110e-4631-9428-3705cfba9f4c",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1200,
        368
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Configuration').item.json.ai_model }}"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "d465746b-82a4-4002-b2f2-d779ec001f8d",
      "name": "Publish to Facebook via Blotato",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "onError": "continueRegularOutput",
      "maxTries": 2,
      "position": [
        1744,
        112
      ],
      "parameters": {
        "options": {
          "facebookMediaType": "reel"
        },
        "platform": "facebook",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1759",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1759",
          "cachedResultName": "Firass Ben"
        },
        "facebookPageId": {
          "__rl": true,
          "mode": "list",
          "value": "101603614680195",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1759/subaccounts/101603614680195",
          "cachedResultName": "Dr. Firas"
        },
        "postContentText": "={{ $(\"Generate social caption\").item.json.output }}",
        "postContentMediaUrls": "={{ $(\"Upload video to Blotato\").item.json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 2
    },
    {
      "id": "276ace44-6da6-4497-8c39-929ee9e018f7",
      "name": "Publish to Instagram via Blotato",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "onError": "continueRegularOutput",
      "maxTries": 2,
      "position": [
        1968,
        112
      ],
      "parameters": {
        "options": {
          "instagramMediaType": "reel"
        },
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1687",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1687",
          "cachedResultName": "acces.a.vie"
        },
        "postContentText": "={{ $(\"Generate social caption\").item.json.output }}",
        "postContentMediaUrls": "={{ $(\"Upload video to Blotato\").item.json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 2
    },
    {
      "id": "6246f409-cb0a-41eb-9a3a-f3f294c36888",
      "name": "Publish to TikTok via Blotato",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "onError": "continueRegularOutput",
      "maxTries": 2,
      "position": [
        2160,
        112
      ],
      "parameters": {
        "options": {},
        "platform": "tiktok",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "30526",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/30526",
          "cachedResultName": "eliteshicos"
        },
        "postContentText": "={{ $(\"Generate social caption\").item.json.output }}",
        "postContentMediaUrls": "={{ $(\"Upload video to Blotato\").item.json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 2
    },
    {
      "id": "2ea9e5ae-bd15-4a24-958e-d8a104dc3bb0",
      "name": "Send confirmation on Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2672,
        112
      ],
      "parameters": {
        "text": "=Published to Facebook, Instagram and TikTok.\n\nCaption used:\n{{ $(\"Generate social caption\").item.json.output }}",
        "chatId": "={{ $('Configuration').item.json.chat_id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "205399a5-5700-4504-ad45-fc215d7c9331",
      "name": "Sticky Note aaab7327",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -624,
        -144
      ],
      "parameters": {
        "color": 3,
        "width": 560,
        "height": 1588,
        "content": "# Repurpose YouTube Shorts to Facebook, Instagram and TikTok from Telegram\n\n# \ud83d\udce5  [Open full documentation on Notion](https://automatisation.notion.site/Repurpose-YouTube-Shorts-to-Facebook-Instagram-and-TikTok-from-Telegram-3883d6550fd98102b8fdce55f36e0a95)\n\nSend a YouTube Short link to your Telegram bot and this workflow fetches the video via Apify, writes a fresh caption with AI, and publishes it natively to Facebook, Instagram and TikTok via [Blotato](https://blotato.com/?ref=firas) \u2014 no manual download and re-upload.\n\n## How it works\n1. You send a YouTube Short URL to your Telegram bot.\n2. The Configuration node centralizes every adjustable setting (link, AI model, quality, caption rules).\n3. An HTTP Request calls an Apify actor that resolves a direct MP4 URL for the Short.\n4. The MP4 URL is sent to [Blotato](https://blotato.com/?ref=firas), which re-hosts it and returns a stable media URL.\n5. An OpenAI agent writes a fresh, platform-ready caption from the video title.\n6. Blotato publishes the video to Facebook (Reel), Instagram (Reel) and TikTok.\n7. You receive a Telegram confirmation.\n\n## Setup\n1. Create a Telegram bot with BotFather, copy the token, and add it to a Telegram credential.\n2. Add your OpenAI API key in the OpenAI Chat Model credential.\n3. Create an Apify account, copy your API token, and create an n8n Header Auth credential named \"Apify API\" (Name: Authorization, Value: Bearer YOUR_APIFY_TOKEN). Select it on the Download Short via Apify node.\n4. Connect your Facebook, Instagram and TikTok accounts inside Blotato, then select each account (and the Facebook Page) in the dropdowns of the three publish nodes.\n5. Open Configuration and adjust the AI model, video quality and caption rules if needed.\n6. Activate the workflow and send a Short link to the bot.\n\n## Requirements\n- n8n self-hosted, or n8n Cloud with Verified Community Nodes enabled (for the Blotato node).\n- A Telegram bot token.\n- An OpenAI API key.\n- An Apify account (the YouTube downloader actor costs a fraction of a cent per video).\n- A [Blotato](https://blotato.com/?ref=firas) account with Facebook, Instagram and TikTok connected.\n- The Blotato community node installed (@blotato/n8n-nodes-blotato).\n\n## Customization\n- All adjustable settings live in the Configuration node (AI model, video quality, caption rules).\n- Add or remove Blotato publish nodes for other platforms (YouTube, LinkedIn, X, Threads, Pinterest).\n- Use the video description instead of the title as the caption source.\n- Set TikTok privacy or mark content as AI-generated per node.\n\n## Note\nCommunity-node workflow: install the Blotato node first, and attach a screenshot of the canvas when submitting to the catalogue (community nodes do not render in the preview)."
      },
      "typeVersion": 1
    },
    {
      "id": "5f9f491d-daec-486d-8cfe-4bdbf45e63fd",
      "name": "Sticky Note 3bff5b09",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        -128
      ],
      "parameters": {
        "color": 7,
        "width": 540,
        "height": 408,
        "content": "## 1. Receive the link + Configuration\nSend a YouTube Short URL to your bot. The Configuration node holds the link and every adjustable setting (AI model, quality, caption rules)."
      },
      "typeVersion": 1
    },
    {
      "id": "cd13ef87-5a32-4ce4-bc74-b84614f80af1",
      "name": "Sticky Note 46ac24f4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        544,
        -128
      ],
      "parameters": {
        "color": 7,
        "width": 520,
        "height": 408,
        "content": "## 2. Fetch the Short via Apify\nAn HTTP Request calls an Apify actor that resolves a direct MP4 URL for the Short \u2014 no server-side download needed (works on n8n Cloud)."
      },
      "typeVersion": 1
    },
    {
      "id": "900c300d-9088-4dd0-b146-d9bc85665aa5",
      "name": "Sticky Note 5204c67e",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1104,
        -128
      ],
      "parameters": {
        "color": 7,
        "width": 500,
        "height": 420,
        "content": "## 3. Caption + re-host on Blotato\nBlotato re-hosts the MP4 from the Apify URL (stable link), and an OpenAI agent writes a fresh caption from the video title."
      },
      "typeVersion": 1
    },
    {
      "id": "b7736c2d-6523-4ab7-a2a3-ee39b234dc63",
      "name": "Sticky Note ecb0751f",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1648,
        -128
      ],
      "parameters": {
        "color": 7,
        "width": 740,
        "height": 424,
        "content": "## 4. Publish everywhere\nBlotato publishes to Facebook, Instagram and TikTok. Each node fails soft so one error does not block the others."
      },
      "typeVersion": 1
    },
    {
      "id": "f42d72b9-e37f-4f43-a8e0-eb486641da70",
      "name": "Sticky Note adc9ea6c",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2416,
        -128
      ],
      "parameters": {
        "color": 7,
        "width": 520,
        "height": 424,
        "content": "## 5. Confirm on Telegram\nA Telegram message confirms publishing and returns the caption that was used."
      },
      "typeVersion": 1
    },
    {
      "id": "5e7c18e4-7092-4b41-9267-dddf07fc49f0",
      "name": "Download Short via Apify",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        720,
        112
      ],
      "parameters": {
        "url": "https://api.apify.com/v2/acts/convertfleetdotonline~youtube-downloader/run-sync-get-dataset-items",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ JSON.stringify({ videoUrls: [$('Configuration').item.json.video_url], proxyConfiguration: { useApifyProxy: true } }) }}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.4
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": true,
    "executionOrder": "v1"
  },
  "versionId": "7d25b634-803d-4ea5-9373-484962d44ee7",
  "nodeGroups": [],
  "connections": {
    "Configuration": {
      "main": [
        [
          {
            "node": "Download Short via Apify",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Generate social caption",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Generate social caption": {
      "main": [
        [
          {
            "node": "Publish to Facebook via Blotato",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload video to Blotato": {
      "main": [
        [
          {
            "node": "Generate social caption",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Short via Apify": {
      "main": [
        [
          {
            "node": "Upload video to Blotato",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Publish to TikTok via Blotato": {
      "main": [
        [
          {
            "node": "Send confirmation on Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Receive Short link on Telegram": {
      "main": [
        [
          {
            "node": "Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Publish to Facebook via Blotato": {
      "main": [
        [
          {
            "node": "Publish to Instagram via Blotato",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Publish to Instagram via Blotato": {
      "main": [
        [
          {
            "node": "Publish to TikTok via Blotato",
            "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 listens for a YouTube Short link sent to a Telegram bot, downloads the video metadata and MP4 URL via Apify, generates a repost caption with OpenAI, uploads the video to Blotato, publishes it as a Facebook Reel, Instagram Reel, and TikTok post, then confirms back…

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

More Social Media workflows → · Browse all categories →

Related workflows

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

Social Media

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI +8
Social Media

💥 HeyGen II - CLONE ME - From Idea to Post: GPT-5 Video Automation for YouTube, TikTok & Instagram - vide. Uses @blotato/n8n-nodes-blotato, googleSheets, openAi, lmChatOpenAi. Event-driven trigger; 41

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI +8
Social Media

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI +8
Social Media

💥 HeyGen - From Idea to Post: GPT-5 Video Automation for YouTube, TikTok & Instagram - vide. Uses @blotato/n8n-nodes-blotato, googleSheets, openAi, agent. Event-driven trigger; 41 nodes.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI +8
Social Media

💥 HeyGen II - CLONE ME - From Idea to Post: GPT-5 Video Automation for YouTube, TikTok & Instagram - vide. Uses @blotato/n8n-nodes-blotato, googleSheets, openAi, lmChatOpenAi. Event-driven trigger; 41

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI +8