AutomationFlowsSocial Media › Repurpose Youtube Videos Into Multi-platform Content with Openai and Anthropic

Repurpose Youtube Videos Into Multi-platform Content with Openai and Anthropic

ByOneclick AI Squad @oneclick-ai on n8n.io

What This Workflow Does: Monitors your YouTube channel for new videos Downloads and processes video transcripts Uses AI to generate multiple content formats Automatically publishes to various platforms Handles rate limiting with strategic wait periods

Cron / scheduled trigger★★★★☆ complexity25 nodesHTTP RequestGoogle Drive
Social Media Trigger: Cron / scheduled Nodes: 25 Complexity: ★★★★☆ Added:

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

This workflow follows the Google Drive → 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": "PcAp2b5IJi9AeF4f",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "YouTube Content Repurposing Engine",
  "tags": [],
  "nodes": [
    {
      "id": "5ed4ae72-04d3-456c-a766-afd602884c9a",
      "name": "Schedule Daily Check",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -144,
        704
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 6
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f6e9b1c3-b62e-41fd-bcb6-0af49e9edd30",
      "name": "Sticky Note - Welcome",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -832,
        -144
      ],
      "parameters": {
        "width": 520,
        "height": 1564,
        "content": "## \ud83c\udfac YouTube Content Repurposing Engine\n### Advanced Multi-Platform Content Distribution System\n\n**What This Workflow Does:**\n- Monitors your YouTube channel for new videos\n- Downloads and processes video transcripts\n- Uses AI to generate multiple content formats\n- Automatically publishes to various platforms\n- Handles rate limiting with strategic wait periods\n\n**Content Outputs:**\n\u2702\ufe0f Short-form clips (60s scripts)\n\ud83d\udcdd Blog posts (SEO optimized)\n\ud83e\uddf5 Twitter/X threads\n\ud83d\udcf1 LinkedIn posts\n\ud83c\udfaf SEO-optimized titles & descriptions\n\n**Key Features:**\n\u23f1\ufe0f Rate limiting with Wait nodes\n\ud83d\udd04 Error handling & retries\n\ud83c\udfa8 AI-powered content adaptation\n\ud83d\udcca Multi-format generation\n\ud83d\ude80 Auto-publishing pipeline\n\n**Requirements:**\n- YouTube Data API key\n- OpenAI/Anthropic API key\n- Platform credentials (Twitter, LinkedIn, WordPress)\n- Google Drive (optional backup)\n\n**Workflow Stages:**\n1\ufe0f\u20e3 Video Discovery & Transcript Extraction\n2\ufe0f\u20e3 AI Content Generation (with rate limiting)\n3\ufe0f\u20e3 Content Formatting & Optimization\n4\ufe0f\u20e3 Multi-Platform Publishing\n\n## \ud83d\udcca Monitoring & Success Tracking\n\n**Metrics Tracked:**\n- Videos processed\n- Content pieces generated\n- Successful publications\n- Failed attempts\n- API costs\n- Processing time\n\n**Logging:**\nAll content saved to Google Drive for:\n- Backup purposes\n- Quality review\n- Performance analysis\n- Future optimization\n\n**Notifications:**\n- Slack alerts on completion\n- Email summary reports\n- Error notifications\n\n**Analytics Integration:**\nTrack performance across:\n- Blog pageviews\n- Twitter engagement\n- LinkedIn impressions\n- SEO rankings\n\n**Optimization Loop:**\nUse analytics to:\n- Refine AI prompts\n- Adjust publishing times\n- Identify top-performing formats\n- Improve content quality\n\n\ud83d\udca1 **Tip:** Adjust wait times based on your API rate limits!"
      },
      "typeVersion": 1
    },
    {
      "id": "417e8439-06fb-4e9c-b247-317633cdda74",
      "name": "Fetch Latest Videos",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        144,
        704
      ],
      "parameters": {
        "url": "https://www.googleapis.com/youtube/v3/search",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "part",
              "value": "snippet"
            },
            {
              "name": "channelId",
              "value": "YOUR_CHANNEL_ID"
            },
            {
              "name": "order",
              "value": "date"
            },
            {
              "name": "maxResults",
              "value": "5"
            },
            {
              "name": "key",
              "value": "YOUR_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "89edd9d9-33c7-4e13-b6c2-dd7bf1d80691",
      "name": "Filter New Videos",
      "type": "n8n-nodes-base.filter",
      "position": [
        432,
        704
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d",
              "operator": {
                "type": "dateTime",
                "operation": "after"
              },
              "leftValue": "={{ $json.snippet.publishedAt }}",
              "rightValue": "={{ $now.minus({ hours: 24 }).toISO() }}"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "906530d7-2d01-43e1-acd7-c2b2f83609fc",
      "name": "Get Transcript",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        704,
        704
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/youtube/v3/captions",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "part",
              "value": "snippet"
            },
            {
              "name": "videoId",
              "value": "={{ $json.id.videoId }}"
            },
            {
              "name": "key",
              "value": "YOUR_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "207f975f-c96d-4ae4-abdf-e974b5d12180",
      "name": "Clean Text",
      "type": "n8n-nodes-base.code",
      "position": [
        992,
        704
      ],
      "parameters": {
        "jsCode": "const transcript = $input.item.json.transcript || '';\n\n// Remove timestamps, clean formatting\nconst cleaned = transcript\n  .replace(/\\[\\d{2}:\\d{2}:\\d{2}\\]/g, '')\n  .replace(/\\s+/g, ' ')\n  .replace(/[\\r\\n]+/g, ' ')\n  .trim();\n\nreturn {\n  json: {\n    videoId: $input.item.json.videoId,\n    title: $input.item.json.title,\n    transcript: cleaned,\n    wordCount: cleaned.split(' ').length,\n    duration: $input.item.json.duration\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "1f93262d-5336-45d7-992f-741db23fde7f",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -176,
        64
      ],
      "parameters": {
        "color": 3,
        "width": 1000,
        "height": 936,
        "content": "## \ud83d\udce1 Stage 1: Video Discovery & Transcript Extraction\n\n**Purpose:**\nIdentify new videos and extract their transcripts for AI processing.\n\n**Process:**\n1. Query YouTube API for latest videos from your channel\n2. Filter for videos published in last 24 hours\n3. Extract video IDs and metadata\n4. Fetch video transcripts (captions/subtitles)\n5. Clean and format transcript data\n\n**Data Flow:**\nSchedule Trigger \u2192 Fetch Videos \u2192 Filter New \u2192 Get Transcripts \u2192 Clean Text\n\n**Important Notes:**\n- YouTube API has quota limits (10,000 units/day)\n- Each search request costs 100 units\n- Transcript fetching requires additional API calls\n- Store processed video IDs to avoid duplicates\n\n**Output:**\nClean transcript text ready for AI processing"
      },
      "typeVersion": 1
    },
    {
      "id": "540a5e43-b06f-4ca7-a578-0d24c849493e",
      "name": "Generate Short Scripts",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1312,
        496
      ],
      "parameters": {
        "url": "https://api.openai.com/v1/chat/completions",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"model\": \"gpt-4\",\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": \"You are a short-form video script writer. Create engaging 60-second scripts from video transcripts.\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"Create 3 different 60-second video scripts from this transcript: {{ $json.transcript }}\"\n    }\n  ],\n  \"temperature\": 0.8\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "openAiApi"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "37c86b19-b4df-4897-837f-6d9d0eb969a6",
      "name": "Generate Blog Post",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1312,
        704
      ],
      "parameters": {
        "url": "https://api.openai.com/v1/chat/completions",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"model\": \"gpt-4-turbo\",\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": \"You are an SEO blog writer. Create comprehensive, SEO-optimized blog posts with proper headings, meta descriptions, and keyword integration.\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"Write a 1500-word SEO-optimized blog post based on: {{ $json.transcript }}. Include: Title, Meta Description, H2/H3 headings, Introduction, Main sections, Conclusion, and 5 SEO keywords.\"\n    }\n  ],\n  \"temperature\": 0.7\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "openAiApi"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "27eb140b-8803-4c21-af20-1a75049df76d",
      "name": "Generate Thread",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1312,
        896
      ],
      "parameters": {
        "url": "https://api.anthropic.com/v1/messages",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"model\": \"claude-sonnet-4-20250514\",\n  \"max_tokens\": 2000,\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"Create an engaging Twitter thread (10-12 tweets) from this content: {{ $json.transcript }}. Make it viral-worthy with hooks, storytelling, and clear structure. Number each tweet.\"\n    }\n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "anthropicApi"
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a0058bfa-f31e-4fa4-9762-6713dfb18152",
      "name": "Wait - Rate Limit",
      "type": "n8n-nodes-base.wait",
      "position": [
        1584,
        704
      ],
      "parameters": {
        "amount": 60
      },
      "typeVersion": 1.1
    },
    {
      "id": "fdf05670-f36f-42d5-a3fa-d936b6061480",
      "name": "Merge1",
      "type": "n8n-nodes-base.merge",
      "position": [
        1872,
        704
      ],
      "parameters": {
        "mode": "combine",
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "ace665cf-ec57-4bdb-8883-77c8da8dd711",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        864,
        0
      ],
      "parameters": {
        "color": 6,
        "width": 920,
        "height": 1080,
        "content": "## \ud83e\udd16 Stage 2: AI Content Generation (with Rate Limiting)\n\n**Purpose:**\nGenerate multiple content formats using AI while respecting API rate limits.\n\n**AI Tasks:**\n1. **Short-form Scripts** - 60-second video scripts for TikTok/Reels/Shorts\n2. **Blog Posts** - 1500-2000 word SEO-optimized articles\n3. **Social Threads** - Twitter/X thread format (8-12 tweets)\n4. **LinkedIn Posts** - Professional format with hooks\n5. **SEO Titles** - 5 variations optimized for search\n\n**Rate Limiting Strategy:**\n- **Wait Node 1:** After blog post generation (60 seconds)\n  - Prevents API throttling\n  - Allows cooling period\n- Processing continues in parallel after wait\n\n**AI Model Selection:**\n- GPT-4 for blog posts (better quality)\n- Claude for threads (better structure)\n- GPT-3.5 for titles (cost-effective)\n\n**Output:**\nStructured content objects ready for formatting"
      },
      "typeVersion": 1
    },
    {
      "id": "27c39c39-631d-434f-bab7-3e961ba879bd",
      "name": "Format Blog",
      "type": "n8n-nodes-base.code",
      "position": [
        2224,
        544
      ],
      "parameters": {
        "jsCode": "const blogContent = $input.item.json.choices?.[0]?.message?.content || '';\n\n// Extract components using regex\nconst titleMatch = blogContent.match(/Title:\\s*(.+?)\\n/);\nconst metaMatch = blogContent.match(/Meta Description:\\s*(.+?)\\n/);\n\n// Format as HTML\nconst htmlContent = blogContent\n  .replace(/^##\\s*(.+)$/gm, '<h2>$1</h2>')\n  .replace(/^###\\s*(.+)$/gm, '<h3>$1</h3>')\n  .replace(/\\n\\n/g, '</p><p>')\n  .replace(/^(.+)$/gm, '<p>$1</p>');\n\nreturn {\n  json: {\n    type: 'blog',\n    title: titleMatch ? titleMatch[1].trim() : 'Untitled',\n    metaDescription: metaMatch ? metaMatch[1].trim() : '',\n    content: htmlContent,\n    wordCount: blogContent.split(' ').length,\n    readTime: Math.ceil(blogContent.split(' ').length / 200) + ' min',\n    publishReady: true\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "1920f944-236f-44d1-8052-c4b93e8ef8ce",
      "name": "Format Thread",
      "type": "n8n-nodes-base.code",
      "position": [
        2224,
        704
      ],
      "parameters": {
        "jsCode": "const threadContent = $input.item.json.content?.[0]?.text || '';\n\n// Split into individual tweets\nconst tweets = threadContent\n  .split(/\\n\\d+\\.\\s+/)\n  .filter(t => t.trim().length > 0)\n  .map((tweet, index, array) => ({\n    position: index + 1,\n    total: array.length,\n    content: tweet.trim().substring(0, 280),\n    threadIndicator: `${index + 1}/${array.length}`,\n    characterCount: tweet.trim().length\n  }));\n\nreturn {\n  json: {\n    type: 'twitter_thread',\n    tweets: tweets,\n    totalTweets: tweets.length,\n    threadComplete: true,\n    estimatedEngagement: tweets.length > 8 ? 'high' : 'medium'\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "6f662683-c509-44eb-9fe1-672068c1ed9a",
      "name": "Format LinkedIn",
      "type": "n8n-nodes-base.code",
      "position": [
        2224,
        864
      ],
      "parameters": {
        "jsCode": "const content = $input.item.json.choices?.[0]?.message?.content || '';\nconst firstLine = content.split('\\n')[0] || 'Key Insights';\n\n// Format for LinkedIn\nconst linkedinPost = `\ud83c\udfaf ${firstLine}\\n\\n${content.substring(0, 2500)}\\n\\n\ud83d\udca1 Key Takeaways:\\n\u2022 Innovation drives growth\\n\u2022 Customer focus wins\\n\u2022 Data informs decisions\\n\\n\ud83d\udc49 What's your take on this?\\n\\n#ContentMarketing #DigitalStrategy #YouTubeGrowth #ContentCreation`;\n\nreturn {\n  json: {\n    type: 'linkedin',\n    content: linkedinPost.substring(0, 3000),\n    characterCount: linkedinPost.length,\n    hashtagCount: (linkedinPost.match(/#/g) || []).length,\n    hasEmojis: true,\n    hasCTA: true\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "5225494d-82ee-44b7-990c-0b7f394847a3",
      "name": "Merge2",
      "type": "n8n-nodes-base.merge",
      "position": [
        2544,
        704
      ],
      "parameters": {
        "mode": "combine",
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "67c64395-7045-406e-8823-5a445b365ed3",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1840,
        -112
      ],
      "parameters": {
        "color": 4,
        "width": 824,
        "height": 1144,
        "content": "## \u2728 Stage 3: Content Formatting & Optimization\n\n**Purpose:**\nStructure AI-generated content for platform-specific requirements.\n\n**Formatting Tasks:**\n\n**1. Blog Post Formatting:**\n- Extract title, meta description, headings\n- Format as HTML/Markdown\n- Add featured image placeholders\n- Insert internal links\n- Add SEO schema markup\n\n**2. Thread Formatting:**\n- Split into individual tweets\n- Add thread numbering (1/12, 2/12...)\n- Ensure character limits (280 chars)\n- Add hashtags strategically\n\n**3. LinkedIn Post:**\n- Professional tone adjustment\n- Add emojis for readability\n- Include CTA and hashtags\n- Format with line breaks\n\n**4. SEO Title Generation:**\n- Create 5 variations\n- Optimize for keywords\n- Keep under 60 characters\n\n**Output:**\nPlatform-ready content objects"
      },
      "typeVersion": 1
    },
    {
      "id": "99dd30fa-206b-4cf4-8cf2-f2b3fc797381",
      "name": "Wait - Publishing",
      "type": "n8n-nodes-base.wait",
      "position": [
        2832,
        704
      ],
      "parameters": {
        "unit": "minutes"
      },
      "typeVersion": 1.1
    },
    {
      "id": "fba01215-4e4e-4124-91dc-142a161d1e3c",
      "name": "WordPress",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3184,
        544
      ],
      "parameters": {
        "url": "https://your-site.com/wp-json/wp/v2/posts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"title\": \"{{ $json.blog?.title || 'New Post' }}\",\n  \"content\": \"{{ $json.blog?.content || '' }}\",\n  \"status\": \"publish\",\n  \"excerpt\": \"{{ $json.blog?.metaDescription || '' }}\",\n  \"categories\": [1, 5],\n  \"tags\": [10, 20]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "httpBasicAuth"
      },
      "credentials": {
        "httpBasicAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "17681197-744a-43aa-9580-0efe192a8ec2",
      "name": "Split Tweets",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        3184,
        704
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "d6a8fdce-195b-4284-8d52-5d912780ba69",
      "name": "Post Tweet",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3424,
        704
      ],
      "parameters": {
        "url": "https://api.twitter.com/2/tweets",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"text\": \"{{ $json.content || 'Tweet content' }}\"\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "twitterOAuth2Api"
      },
      "credentials": {
        "twitterOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8b1c799d-f550-43aa-b4fe-f88f79a9a0c0",
      "name": "LinkedIn",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3184,
        864
      ],
      "parameters": {
        "url": "https://api.linkedin.com/v2/ugcPosts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"author\": \"urn:li:person:YOUR_PERSON_ID\",\n  \"lifecycleState\": \"PUBLISHED\",\n  \"specificContent\": {\n    \"com.linkedin.ugc.ShareContent\": {\n      \"shareCommentary\": {\n        \"text\": \"{{ $json.linkedin?.content || 'LinkedIn post content' }}\"\n      },\n      \"shareMediaCategory\": \"NONE\"\n    }\n  },\n  \"visibility\": {\n    \"com.linkedin.ugc.MemberNetworkVisibility\": \"PUBLIC\"\n  }\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "linkedInOAuth2Api"
      },
      "credentials": {
        "linkedInOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3ee29c8a-1d5b-4be3-9380-8b85ae752148",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2704,
        -224
      ],
      "parameters": {
        "color": 3,
        "width": 1192,
        "height": 1240,
        "content": "## \ud83d\ude80 Stage 4: Multi-Platform Publishing\n\n**Purpose:**\nDistribute formatted content to various platforms automatically.\n\n**Publishing Destinations:**\n\n**\ud83d\udcdd Blog (WordPress/Medium/Ghost):**\n- Publish via REST API\n- Set as draft or published\n- Add featured image\n- Schedule for optimal time\n- Add categories/tags\n\n**\ud83d\udc26 Twitter/X:**\n- Post thread sequentially\n- Add media attachments\n- Monitor rate limits (300 posts/3hrs)\n- Use Twitter API v2\n\n**\ud83d\udcbc LinkedIn:**\n- Post via LinkedIn API\n- Add article link\n- Tag company page\n- Optimal posting time: Tue-Thu 10am\n\n**\ud83d\udcf1 Additional Platforms:**\n- Facebook Pages API\n- Instagram (via Graph API)\n- Medium (via API)\n- Dev.to\n\n**Error Handling:**\n- Retry failed posts (3 attempts)\n- Log all publishing events\n- Send notifications on failure\n\n**Wait Node 2:**\nStaggered publishing (5 min intervals) to avoid spam detection"
      },
      "typeVersion": 1
    },
    {
      "id": "79bf8ac7-dea6-496f-b78b-d20b65a77836",
      "name": "Backup to Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        3664,
        704
      ],
      "parameters": {
        "name": "=content_backup_{{ $now.toFormat('yyyy-MM-dd_HHmmss') }}.json",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "root",
          "cachedResultName": "/ (Root folder)"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "5fd00f22-b42a-4fdb-86e6-14f32b3d8514",
  "connections": {
    "Merge1": {
      "main": [
        [
          {
            "node": "Format Blog",
            "type": "main",
            "index": 0
          },
          {
            "node": "Format Thread",
            "type": "main",
            "index": 0
          },
          {
            "node": "Format LinkedIn",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge2": {
      "main": [
        [
          {
            "node": "Wait - Publishing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "LinkedIn": {
      "main": [
        [
          {
            "node": "Backup to Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "WordPress": {
      "main": [
        [
          {
            "node": "Backup to Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clean Text": {
      "main": [
        [
          {
            "node": "Generate Short Scripts",
            "type": "main",
            "index": 0
          },
          {
            "node": "Generate Blog Post",
            "type": "main",
            "index": 0
          },
          {
            "node": "Generate Thread",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post Tweet": {
      "main": [
        [
          {
            "node": "Backup to Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Blog": {
      "main": [
        [
          {
            "node": "Merge2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Tweets": {
      "main": [
        [
          {
            "node": "Post Tweet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Thread": {
      "main": [
        [
          {
            "node": "Merge2",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Get Transcript": {
      "main": [
        [
          {
            "node": "Clean Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter New Videos": {
      "main": [
        [
          {
            "node": "Get Transcript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait - Publishing": {
      "main": [
        [
          {
            "node": "WordPress",
            "type": "main",
            "index": 0
          },
          {
            "node": "Split Tweets",
            "type": "main",
            "index": 0
          },
          {
            "node": "LinkedIn",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait - Rate Limit": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Generate Blog Post": {
      "main": [
        [
          {
            "node": "Wait - Rate Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Latest Videos": {
      "main": [
        [
          {
            "node": "Filter New Videos",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Daily Check": {
      "main": [
        [
          {
            "node": "Fetch Latest Videos",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Short Scripts": {
      "main": [
        [
          {
            "node": "Merge1",
            "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

What This Workflow Does: Monitors your YouTube channel for new videos Downloads and processes video transcripts Uses AI to generate multiple content formats Automatically publishes to various platforms Handles rate limiting with strategic wait periods

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

MindFrame Psychology - Daily YouTube Shorts (Complete). Uses httpRequest, googleDrive, youtube, telegram. Scheduled trigger; 26 nodes.

HTTP Request, Google Drive, YouTube +1
Social Media

MindFrame Psychology - Daily YouTube Shorts (FIXED). Uses httpRequest, googleDrive, youtube, telegram. Scheduled trigger; 25 nodes.

HTTP Request, Google Drive, YouTube +1
Social Media

How it works

Google Sheets, Google Drive, HTTP Request +1
Social Media

Automate Facebook post scheduling from a Google Sheets content calendar. Runs 4 times daily, reads approved posts scheduled for today, downloads images from Google Drive, schedules via Facebook Graph

Google Sheets, Google Drive, HTTP Request
Social Media

This workflow automatically monitors Reddit subreddits for new image posts and downloads them to Google Drive. It's perfect for content creators, meme collectors, or anyone who wants to automatically

HTTP Request, Google Drive, Reddit +1