{
  "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
          }
        ]
      ]
    }
  }
}