{
  "name": "Blog to 10 Social Posts — Content Repurposing with Claude",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "new-blog-post",
        "responseMode": "onReceived",
        "responseData": "allEntries",
        "options": {}
      },
      "id": "f7e1a2b3-0001-4abc-9000-000000000001",
      "name": "Webhook - New Blog Post",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1.1,
      "position": [240, 400],
      "webhookId": "new-blog-post"
    },
    {
      "parameters": {
        "url": "={{ $json.body.url }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "text"
            }
          }
        }
      },
      "id": "f7e1a2b3-0001-4abc-9000-000000000002",
      "name": "HTTP Request - Fetch Blog Post",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [460, 400]
    },
    {
      "parameters": {
        "jsCode": "// Extract main content from HTML\nconst html = $input.first().json.data;\n\n// Strip HTML tags but keep text\nlet text = html\n  .replace(/<script[^>]*>[\\s\\S]*?<\\/script>/gi, '')\n  .replace(/<style[^>]*>[\\s\\S]*?<\\/style>/gi, '')\n  .replace(/<nav[^>]*>[\\s\\S]*?<\\/nav>/gi, '')\n  .replace(/<footer[^>]*>[\\s\\S]*?<\\/footer>/gi, '')\n  .replace(/<header[^>]*>[\\s\\S]*?<\\/header>/gi, '')\n  .replace(/<[^>]+>/g, '\\n')\n  .replace(/\\n{3,}/g, '\\n\\n')\n  .trim();\n\n// Get title from the webhook body\nconst title = $('Webhook - New Blog Post').first().json.body.title || 'Untitled Post';\nconst author = $('Webhook - New Blog Post').first().json.body.author || 'Knox';\nconst topic = $('Webhook - New Blog Post').first().json.body.topic || '';\n\n// Truncate to ~6000 chars to stay within token limits\nif (text.length > 6000) {\n  text = text.substring(0, 6000) + '...';\n}\n\nreturn [{\n  json: {\n    title,\n    author,\n    topic,\n    content: text,\n    charCount: text.length,\n    timestamp: new Date().toISOString()\n  }\n}];"
      },
      "id": "f7e1a2b3-0001-4abc-9000-000000000003",
      "name": "Code - Extract Content",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [680, 400]
    },
    {
      "parameters": {
        "model": "claude-sonnet-4-20250514",
        "prompt": "You are a content strategist extracting key information from a blog post.\n\nBlog post title: {{ $json.title }}\nBlog post content:\n---\n{{ $json.content }}\n---\n\nExtract the following and return ONLY valid JSON (no markdown, no backticks):\n{\n  \"main_thesis\": \"The single core argument of this post in one sentence\",\n  \"key_points\": [\"point 1\", \"point 2\", \"point 3\", \"point 4\", \"point 5\"],\n  \"quotable_lines\": [\"quote 1\", \"quote 2\", \"quote 3\"],\n  \"statistics\": [\"any numbers or data points mentioned\"],\n  \"target_audience\": \"who this post is for\",\n  \"emotional_hook\": \"the pain point or desire this post addresses\",\n  \"contrarian_take\": \"what makes this perspective different from mainstream advice\"\n}",
        "options": {
          "maxTokens": 1500,
          "temperature": 0.3
        }
      },
      "id": "f7e1a2b3-0001-4abc-9000-000000000004",
      "name": "Claude - Extract Key Points",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.2,
      "position": [900, 400],
      "credentials": {
        "anthropicApi": {
          "id": "1",
          "name": "Anthropic API"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// Parse Claude's JSON response\nconst response = $input.first().json.response;\nlet extracted;\ntry {\n  // Handle potential markdown wrapping\n  let clean = response.replace(/```json\\n?/g, '').replace(/```\\n?/g, '').trim();\n  extracted = JSON.parse(clean);\n} catch (e) {\n  extracted = {\n    main_thesis: response.substring(0, 200),\n    key_points: [],\n    quotable_lines: [],\n    statistics: [],\n    target_audience: 'builders and creators',\n    emotional_hook: '',\n    contrarian_take: ''\n  };\n}\n\n// Carry forward original data\nconst original = $('Code - Extract Content').first().json;\n\nreturn [{\n  json: {\n    ...original,\n    extracted\n  }\n}];"
      },
      "id": "f7e1a2b3-0001-4abc-9000-000000000005",
      "name": "Code - Parse Extraction",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [1120, 400]
    },
    {
      "parameters": {
        "model": "claude-sonnet-4-20250514",
        "prompt": "You are a LinkedIn ghostwriter for a tech thought leader with 280K+ followers.\n\nOriginal blog post title: {{ $json.title }}\nMain thesis: {{ $json.extracted.main_thesis }}\nKey points: {{ $json.extracted.key_points.join('; ') }}\nQuotable lines: {{ $json.extracted.quotable_lines.join('; ') }}\nTarget audience: {{ $json.extracted.target_audience }}\nEmotional hook: {{ $json.extracted.emotional_hook }}\nContrarian take: {{ $json.extracted.contrarian_take }}\n\nWrite 3 LinkedIn posts (DIFFERENT angles). Each post should be 150-250 words.\n\nFormat rules:\n- Start with a bold hook line (pattern interrupt)\n- Use short paragraphs (1-2 sentences each)\n- Add line breaks between paragraphs for readability\n- End with a question or CTA to drive comments\n- No hashtags in the body — add 3-5 hashtags at the very end\n- Sound human, not corporate. Conversational but authoritative.\n\nPost 1 angle: CONTRARIAN — challenge a common belief\nPost 2 angle: STORY — personal experience or case study\nPost 3 angle: TACTICAL — specific how-to takeaway\n\nReturn ONLY valid JSON (no markdown backticks):\n{\n  \"linkedin_post_1\": { \"hook\": \"first line\", \"body\": \"full post text\", \"hashtags\": [\"#tag1\", \"#tag2\"] },\n  \"linkedin_post_2\": { \"hook\": \"first line\", \"body\": \"full post text\", \"hashtags\": [\"#tag1\", \"#tag2\"] },\n  \"linkedin_post_3\": { \"hook\": \"first line\", \"body\": \"full post text\", \"hashtags\": [\"#tag1\", \"#tag2\"] }\n}",
        "options": {
          "maxTokens": 3000,
          "temperature": 0.7
        }
      },
      "id": "f7e1a2b3-0001-4abc-9000-000000000006",
      "name": "Claude - LinkedIn Posts",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.2,
      "position": [1400, 200],
      "credentials": {
        "anthropicApi": {
          "id": "1",
          "name": "Anthropic API"
        }
      }
    },
    {
      "parameters": {
        "model": "claude-sonnet-4-20250514",
        "prompt": "You are a Twitter/X ghostwriter for a tech creator with a sharp, punchy voice.\n\nOriginal blog post title: {{ $json.title }}\nMain thesis: {{ $json.extracted.main_thesis }}\nKey points: {{ $json.extracted.key_points.join('; ') }}\nQuotable lines: {{ $json.extracted.quotable_lines.join('; ') }}\nContrarian take: {{ $json.extracted.contrarian_take }}\n\nWrite 3 Twitter/X threads. Each thread should have 5-7 tweets.\n\nFormat rules:\n- Tweet 1: Hook. Must stop the scroll. Max 200 characters.\n- Tweets 2-6: One key idea per tweet. Max 280 characters each.\n- Last tweet: CTA (link to full post, follow, etc.)\n- Use thread numbering like 1/ 2/ 3/\n- No emojis in the first tweet. Use them sparingly elsewhere.\n- Write like you talk, not like a press release.\n\nThread 1 angle: HOT TAKE — start with a bold controversial opinion\nThread 2 angle: BREAKDOWN — \"Here's how X works (step by step)\"\nThread 3 angle: LESSONS — \"N things I learned from...\"\n\nReturn ONLY valid JSON (no markdown backticks):\n{\n  \"thread_1\": { \"angle\": \"hot take\", \"tweets\": [\"1/ tweet text\", \"2/ tweet text\", ...] },\n  \"thread_2\": { \"angle\": \"breakdown\", \"tweets\": [\"1/ tweet text\", \"2/ tweet text\", ...] },\n  \"thread_3\": { \"angle\": \"lessons\", \"tweets\": [\"1/ tweet text\", \"2/ tweet text\", ...] }\n}",
        "options": {
          "maxTokens": 3000,
          "temperature": 0.7
        }
      },
      "id": "f7e1a2b3-0001-4abc-9000-000000000007",
      "name": "Claude - Twitter Threads",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.2,
      "position": [1400, 400],
      "credentials": {
        "anthropicApi": {
          "id": "1",
          "name": "Anthropic API"
        }
      }
    },
    {
      "parameters": {
        "model": "claude-sonnet-4-20250514",
        "prompt": "You are an Instagram content strategist creating carousel posts for a tech creator.\n\nOriginal blog post title: {{ $json.title }}\nMain thesis: {{ $json.extracted.main_thesis }}\nKey points: {{ $json.extracted.key_points.join('; ') }}\nStatistics: {{ $json.extracted.statistics.join('; ') }}\nEmotional hook: {{ $json.extracted.emotional_hook }}\n\nWrite 2 Instagram carousel scripts. Each carousel has 8-10 slides.\n\nFormat rules per slide:\n- HEADLINE: Large text (5-8 words max)\n- BODY: Supporting text (15-25 words max)\n- Slide 1: Hook slide — must stop the scroll\n- Slide 2-8: One idea per slide, progressive reveal\n- Second-to-last slide: Summary/recap\n- Last slide: CTA (save, share, follow, link in bio)\n- Include caption text with 5 relevant hashtags\n\nCarousel 1 angle: EDUCATIONAL — teach something specific\nCarousel 2 angle: MYTH-BUSTING — \"Stop doing X, do Y instead\"\n\nReturn ONLY valid JSON (no markdown backticks):\n{\n  \"carousel_1\": {\n    \"angle\": \"educational\",\n    \"slides\": [\n      { \"headline\": \"...\", \"body\": \"...\" }\n    ],\n    \"caption\": \"...\",\n    \"hashtags\": [\"#tag1\", \"#tag2\"]\n  },\n  \"carousel_2\": {\n    \"angle\": \"myth-busting\",\n    \"slides\": [\n      { \"headline\": \"...\", \"body\": \"...\" }\n    ],\n    \"caption\": \"...\",\n    \"hashtags\": [\"#tag1\", \"#tag2\"]\n  }\n}",
        "options": {
          "maxTokens": 3000,
          "temperature": 0.7
        }
      },
      "id": "f7e1a2b3-0001-4abc-9000-000000000008",
      "name": "Claude - Instagram Carousels",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.2,
      "position": [1400, 600],
      "credentials": {
        "anthropicApi": {
          "id": "1",
          "name": "Anthropic API"
        }
      }
    },
    {
      "parameters": {
        "model": "claude-sonnet-4-20250514",
        "prompt": "You are a short-form video scriptwriter for YouTube Shorts / TikTok.\n\nOriginal blog post title: {{ $json.title }}\nMain thesis: {{ $json.extracted.main_thesis }}\nKey points: {{ $json.extracted.key_points.join('; ') }}\nContrarian take: {{ $json.extracted.contrarian_take }}\n\nWrite 1 YouTube Shorts script (max 60 seconds when spoken).\n\nFormat rules:\n- HOOK (0-3 sec): Pattern interrupt. First sentence must be polarizing or surprising.\n- SETUP (3-15 sec): Frame the problem or context.\n- BODY (15-45 sec): 2-3 quick punchy points. Use \"Here's the thing\" or \"Most people don't realize\" transitions.\n- CTA (45-60 sec): \"Follow for more\" or \"Link in bio\" or \"Comment X if you agree\"\n- Include B-roll/visual suggestions in brackets [show screen recording of...]\n- Estimated speaking pace: 150 words per minute, so ~150 words total.\n\nReturn ONLY valid JSON (no markdown backticks):\n{\n  \"youtube_short\": {\n    \"title\": \"suggested title for the short\",\n    \"hook\": \"opening line (0-3 sec)\",\n    \"script\": \"full script with [visual cues] inline\",\n    \"cta\": \"closing call to action\",\n    \"estimated_duration\": \"55 seconds\",\n    \"hashtags\": [\"#shorts\", \"#tag1\", \"#tag2\"]\n  }\n}",
        "options": {
          "maxTokens": 1500,
          "temperature": 0.7
        }
      },
      "id": "f7e1a2b3-0001-4abc-9000-000000000009",
      "name": "Claude - YouTube Short Script",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.2,
      "position": [1400, 800],
      "credentials": {
        "anthropicApi": {
          "id": "1",
          "name": "Anthropic API"
        }
      }
    },
    {
      "parameters": {
        "model": "claude-sonnet-4-20250514",
        "prompt": "You are writing a newsletter intro for a tech creator's weekly email list.\n\nOriginal blog post title: {{ $json.title }}\nMain thesis: {{ $json.extracted.main_thesis }}\nKey points: {{ $json.extracted.key_points.join('; ') }}\nEmotional hook: {{ $json.extracted.emotional_hook }}\n\nWrite 1 newsletter intro paragraph (100-150 words) that:\n- Opens with a personal/relatable observation\n- Teases the blog post content\n- Creates curiosity to click through\n- Ends with a clear CTA: \"Read the full breakdown here\"\n- Tone: like writing to a friend who's also a builder\n- Subject line: catchy, 6-10 words, curiosity or benefit driven\n\nReturn ONLY valid JSON (no markdown backticks):\n{\n  \"newsletter\": {\n    \"subject_line\": \"...\",\n    \"preview_text\": \"...\",\n    \"intro_paragraph\": \"...\",\n    \"cta_text\": \"Read the full breakdown\",\n    \"cta_url\": \"[BLOG_POST_URL]\"\n  }\n}",
        "options": {
          "maxTokens": 800,
          "temperature": 0.7
        }
      },
      "id": "f7e1a2b3-0001-4abc-9000-000000000010",
      "name": "Claude - Newsletter Intro",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.2,
      "position": [1400, 1000],
      "credentials": {
        "anthropicApi": {
          "id": "1",
          "name": "Anthropic API"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// Collect all Claude outputs and format for Google Sheets\nconst linkedin = $('Claude - LinkedIn Posts').first().json;\nconst twitter = $('Claude - Twitter Threads').first().json;\nconst instagram = $('Claude - Instagram Carousels').first().json;\nconst youtube = $('Claude - YouTube Short Script').first().json;\nconst newsletter = $('Claude - Newsletter Intro').first().json;\nconst original = $('Code - Parse Extraction').first().json;\n\n// Helper to safely parse Claude JSON responses\nfunction safeParse(response) {\n  try {\n    let clean = (response.response || response.text || JSON.stringify(response))\n      .replace(/```json\\n?/g, '').replace(/```\\n?/g, '').trim();\n    return JSON.parse(clean);\n  } catch (e) {\n    return { error: 'Failed to parse', raw: String(response).substring(0, 500) };\n  }\n}\n\nconst li = safeParse(linkedin);\nconst tw = safeParse(twitter);\nconst ig = safeParse(instagram);\nconst yt = safeParse(youtube);\nconst nl = safeParse(newsletter);\n\nconst today = new Date().toISOString().split('T')[0];\nconst rows = [];\n\n// LinkedIn posts\nif (li.linkedin_post_1) {\n  rows.push({\n    platform: 'LinkedIn',\n    format: 'Post (Contrarian)',\n    content: li.linkedin_post_1.body,\n    hashtags: (li.linkedin_post_1.hashtags || []).join(' '),\n    scheduled_date: today,\n    status: 'Draft',\n    source_post: original.title\n  });\n}\nif (li.linkedin_post_2) {\n  rows.push({\n    platform: 'LinkedIn',\n    format: 'Post (Story)',\n    content: li.linkedin_post_2.body,\n    hashtags: (li.linkedin_post_2.hashtags || []).join(' '),\n    scheduled_date: today,\n    status: 'Draft',\n    source_post: original.title\n  });\n}\nif (li.linkedin_post_3) {\n  rows.push({\n    platform: 'LinkedIn',\n    format: 'Post (Tactical)',\n    content: li.linkedin_post_3.body,\n    hashtags: (li.linkedin_post_3.hashtags || []).join(' '),\n    scheduled_date: today,\n    status: 'Draft',\n    source_post: original.title\n  });\n}\n\n// Twitter threads\nif (tw.thread_1) {\n  rows.push({\n    platform: 'Twitter/X',\n    format: 'Thread (Hot Take)',\n    content: (tw.thread_1.tweets || []).join('\\n\\n'),\n    hashtags: '',\n    scheduled_date: today,\n    status: 'Draft',\n    source_post: original.title\n  });\n}\nif (tw.thread_2) {\n  rows.push({\n    platform: 'Twitter/X',\n    format: 'Thread (Breakdown)',\n    content: (tw.thread_2.tweets || []).join('\\n\\n'),\n    hashtags: '',\n    scheduled_date: today,\n    status: 'Draft',\n    source_post: original.title\n  });\n}\nif (tw.thread_3) {\n  rows.push({\n    platform: 'Twitter/X',\n    format: 'Thread (Lessons)',\n    content: (tw.thread_3.tweets || []).join('\\n\\n'),\n    hashtags: '',\n    scheduled_date: today,\n    status: 'Draft',\n    source_post: original.title\n  });\n}\n\n// Instagram carousels\nif (ig.carousel_1) {\n  const slides = (ig.carousel_1.slides || []).map((s, i) => `Slide ${i+1}: ${s.headline} — ${s.body}`).join('\\n');\n  rows.push({\n    platform: 'Instagram',\n    format: 'Carousel (Educational)',\n    content: slides + '\\n\\nCaption: ' + (ig.carousel_1.caption || ''),\n    hashtags: (ig.carousel_1.hashtags || []).join(' '),\n    scheduled_date: today,\n    status: 'Draft',\n    source_post: original.title\n  });\n}\nif (ig.carousel_2) {\n  const slides = (ig.carousel_2.slides || []).map((s, i) => `Slide ${i+1}: ${s.headline} — ${s.body}`).join('\\n');\n  rows.push({\n    platform: 'Instagram',\n    format: 'Carousel (Myth-Busting)',\n    content: slides + '\\n\\nCaption: ' + (ig.carousel_2.caption || ''),\n    hashtags: (ig.carousel_2.hashtags || []).join(' '),\n    scheduled_date: today,\n    status: 'Draft',\n    source_post: original.title\n  });\n}\n\n// YouTube Short\nif (yt.youtube_short) {\n  rows.push({\n    platform: 'YouTube Shorts',\n    format: 'Short Script',\n    content: yt.youtube_short.script,\n    hashtags: (yt.youtube_short.hashtags || []).join(' '),\n    scheduled_date: today,\n    status: 'Draft',\n    source_post: original.title\n  });\n}\n\n// Newsletter\nif (nl.newsletter) {\n  rows.push({\n    platform: 'Newsletter',\n    format: 'Email Intro',\n    content: 'Subject: ' + (nl.newsletter.subject_line || '') + '\\n\\n' + (nl.newsletter.intro_paragraph || ''),\n    hashtags: '',\n    scheduled_date: today,\n    status: 'Draft',\n    source_post: original.title\n  });\n}\n\nreturn rows.map(row => ({ json: row }));"
      },
      "id": "f7e1a2b3-0001-4abc-9000-000000000011",
      "name": "Code - Merge All Outputs",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [1700, 600]
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_GOOGLE_SHEET_ID"
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "Content Calendar"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Platform": "={{ $json.platform }}",
            "Format": "={{ $json.format }}",
            "Content": "={{ $json.content }}",
            "Hashtags": "={{ $json.hashtags }}",
            "Scheduled Date": "={{ $json.scheduled_date }}",
            "Status": "={{ $json.status }}",
            "Source Post": "={{ $json.source_post }}"
          }
        },
        "options": {}
      },
      "id": "f7e1a2b3-0001-4abc-9000-000000000012",
      "name": "Google Sheets - Content Calendar",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.2,
      "position": [1920, 600],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "3",
          "name": "Google Sheets OAuth2"
        }
      }
    },
    {
      "parameters": {
        "channel": "#content-pipeline",
        "text": "📝 *New content batch generated!*\n\n*Source:* {{ $('Code - Extract Content').first().json.title }}\n*Pieces created:* {{ $input.all().length }}\n\n• 3 LinkedIn posts\n• 3 Twitter/X threads\n• 2 Instagram carousels\n• 1 YouTube Short script\n• 1 Newsletter intro\n\nAll content added to the Content Calendar sheet. Review and schedule!",
        "otherOptions": {}
      },
      "id": "f7e1a2b3-0001-4abc-9000-000000000013",
      "name": "Slack - Notify Team",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.1,
      "position": [2140, 600],
      "credentials": {
        "slackApi": {
          "id": "2",
          "name": "Slack API"
        }
      }
    }
  ],
  "connections": {
    "Webhook - New Blog Post": {
      "main": [
        [
          {
            "node": "HTTP Request - Fetch Blog Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request - Fetch Blog Post": {
      "main": [
        [
          {
            "node": "Code - Extract Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code - Extract Content": {
      "main": [
        [
          {
            "node": "Claude - Extract Key Points",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude - Extract Key Points": {
      "main": [
        [
          {
            "node": "Code - Parse Extraction",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code - Parse Extraction": {
      "main": [
        [
          {
            "node": "Claude - LinkedIn Posts",
            "type": "main",
            "index": 0
          },
          {
            "node": "Claude - Twitter Threads",
            "type": "main",
            "index": 0
          },
          {
            "node": "Claude - Instagram Carousels",
            "type": "main",
            "index": 0
          },
          {
            "node": "Claude - YouTube Short Script",
            "type": "main",
            "index": 0
          },
          {
            "node": "Claude - Newsletter Intro",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude - LinkedIn Posts": {
      "main": [
        [
          {
            "node": "Code - Merge All Outputs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude - Twitter Threads": {
      "main": [
        [
          {
            "node": "Code - Merge All Outputs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude - Instagram Carousels": {
      "main": [
        [
          {
            "node": "Code - Merge All Outputs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude - YouTube Short Script": {
      "main": [
        [
          {
            "node": "Code - Merge All Outputs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude - Newsletter Intro": {
      "main": [
        [
          {
            "node": "Code - Merge All Outputs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code - Merge All Outputs": {
      "main": [
        [
          {
            "node": "Google Sheets - Content Calendar",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets - Content Calendar": {
      "main": [
        [
          {
            "node": "Slack - Notify Team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "saveManualExecutions": true,
    "callerPolicy": "workflowsFromSameOwner"
  },
  "staticData": null,
  "tags": [
    {
      "name": "Content",
      "id": "1"
    },
    {
      "name": "Social Media",
      "id": "2"
    },
    {
      "name": "Claude AI",
      "id": "3"
    },
    {
      "name": "Repurposing",
      "id": "4"
    }
  ],
  "pinData": {},
  "versionId": "1"
}