{
  "id": "kPBvBnjidCFr5v69",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Youtube to Instagram_Facebook",
  "tags": [],
  "nodes": [
    {
      "id": "workflow-overview-social",
      "name": "Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1300,
        -320
      ],
      "parameters": {
        "color": 2,
        "width": 350,
        "height": 380,
        "content": "# \ud83d\udcf1 YouTube \uc18c\uc15c \ubbf8\ub514\uc5b4 \uc790\ub3d9\ud654\n\n**\ubaa9\uc801:** YouTube \ube44\ub514\uc624\ub97c Facebook \ubc0f Instagram\uc5d0 \uc790\ub3d9 \uac8c\uc2dc\n\n**\uc77c\uc815:** \uc0c8 \ube44\ub514\uc624\ub97c \ub9e4 \uc2dc\uac04 \ud655\uc778\n\n**\ud544\uc694\ud55c \uc124\uc815:**\n1. YouTube \ucc44\ub110 RSS \ud53c\ub4dc\n2. OpenAI API \ud0a4 (GPT-4o-mini)\n3. \uad8c\ud55c\uc774 \uc788\ub294 Meta \uc571\n4. \uc7a5\uae30 \uc720\ud6a8 \uc561\uc138\uc2a4 \ud1a0\ud070\n\n## \uc6cc\ud06c\ud50c\ub85c \ub2e8\uacc4:\n1. **\ubaa8\ub2c8\ud130\ub9c1** - \uc0c8 \ube44\ub514\uc624\ub97c \uc704\ud55c RSS \ud53c\ub4dc\n2. **\uc0dd\uc131** - AI\uac00 \uc18c\uc15c \ucea1\uc158 \uc0dd\uc131\n3. **\uac8c\uc2dc** - FB \ubc0f Instagram\uc5d0 \uac8c\uc2dc\n\n\ud83d\udca1 \ubaa8\ub4e0 `<Access_Token>` \ubc0f `<Facebook_PageID>` \ud50c\ub808\uc774\uc2a4\ud640\ub354\ub97c \uc5c5\ub370\uc774\ud2b8"
      },
      "typeVersion": 1
    },
    {
      "id": "rss-trigger-note",
      "name": "RSS Trigger Info",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1040,
        -320
      ],
      "parameters": {
        "color": 3,
        "width": 280,
        "height": 220,
        "content": "## \ud83c\udfa5 YouTube RSS \ud2b8\ub9ac\uac70\n\n**\uadc0\ud558\uc758 YouTube \ucc44\ub110\uc744 \ubaa8\ub2c8\ud130\ub9c1\ud569\ub2c8\ub2e4:**\n- \uc0c8\ub85c\uc6b4 \uc5c5\ub85c\ub4dc\ub97c \ub9e4\uc2dc\uac04 \ud655\uc778\ud569\ub2c8\ub2e4\n- YouTube RSS \ud53c\ub4dc \ud615\uc2dd\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4\n\n**\ucc44\ub110 ID\ub97c \ucc3e\ub294 \ubc29\ubc95:**\n1. YouTube \ucc44\ub110\ub85c \uc774\ub3d9\ud558\uc138\uc694\n2. \ud398\uc774\uc9c0 \uc18c\uc2a4\ub97c \ubcf4\uc138\uc694\n3. \"channelId\"\ub97c \uac80\uc0c9\ud558\uc138\uc694\n\n\u26a0\ufe0f RSS URL\uc758 channel_id\ub97c \uad50\uccb4\ud558\uc138\uc694"
      },
      "typeVersion": 1
    },
    {
      "id": "ai-caption-note",
      "name": "AI Caption Generation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -740,
        -320
      ],
      "parameters": {
        "color": 5,
        "width": 280,
        "height": 200,
        "content": "## \ud83e\udd16 AI \ucea1\uc158 \uc0dd\uc131\n\n**OpenAI GPT-4o-mini:**\n- \ub9e4\ub825\uc801\uc778 \uc18c\uc15c \ubbf8\ub514\uc5b4 \ucea1\uc158\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4\n- \uc774\ubaa8\uc9c0\ub97c \uc790\ub3d9\uc73c\ub85c \ud3ec\ud568\ud569\ub2c8\ub2e4\n- \ud589\ub3d9 \uc720\ub3c4 \ubb38\uad6c\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4\n\n**\ud504\ub86c\ud504\ud2b8\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \ucee4\uc2a4\ud130\ub9c8\uc774\uc988\ud558\uc138\uc694:**\n- \ube0c\ub79c\ub4dc \uc74c\uc131\uc744 \ub9de\ucda5\ub2c8\ub2e4\n- \ud2b9\uc815 \ud574\uc2dc\ud0dc\uadf8\ub97c \ud3ec\ud568\ud569\ub2c8\ub2e4\n- \ud0c0\uac9f \uc624\ub514\uc5b8\uc2a4\ub97c \ub300\uc0c1\uc73c\ub85c \ud569\ub2c8\ub2e4"
      },
      "typeVersion": 1
    },
    {
      "id": "facebook-post-note",
      "name": "Facebook Publishing",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -390,
        -440
      ],
      "parameters": {
        "color": 4,
        "width": 250,
        "height": 180,
        "content": "## \ud83d\udcd8 \ud398\uc774\uc2a4\ubd81 \uac8c\uc2dc\n\n**\ud398\uc774\uc2a4\ubd81 \ud398\uc774\uc9c0\uc5d0 \uc9c1\uc811 \uac8c\uc2dc**\n\n\u26a0\ufe0f **\ud544\uc218 \uc5c5\ub370\uc774\ud2b8:**\n- `<Facebook_PageID>`\ub97c \ub300\uccb4\ud558\uc138\uc694\n- `<Access_Token>`\ub97c \ub300\uccb4\ud558\uc138\uc694\n\n**\ub178\ud2b8:** Facebook\uc774 \uc2e4\ud328\ud558\ub354\ub77c\ub3c4 \uc6cc\ud06c\ud50c\ub85c\ub97c \uacc4\uc18d\ud558\uae30 \uc704\ud574 \uc624\ub958 \ucc98\ub9ac\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4"
      },
      "typeVersion": 1
    },
    {
      "id": "instagram-flow-note",
      "name": "Instagram Publishing Flow",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -120,
        -180
      ],
      "parameters": {
        "color": 6,
        "width": 300,
        "height": 220,
        "content": "## \ud83d\udcf8 \uc778\uc2a4\ud0c0\uadf8\ub7a8 \uac8c\uc2dc \ud750\ub984\n\n**3\ub2e8\uacc4 \ud504\ub85c\uc138\uc2a4:**\n1. \ube44\uc988\ub2c8\uc2a4 \uacc4\uc815 ID \uac00\uc838\uc624\uae30\n2. \uc378\ub124\uc77c\uc774 \ud3ec\ud568\ub41c \ubbf8\ub514\uc5b4 \ucee8\ud14c\uc774\ub108 \uc0dd\uc131\n3. \uac8c\uc2dc\ubb3c \uac8c\uc2dc\n\n**\uc790\ub3d9 \uc378\ub124\uc77c:**\nYouTube \ube44\ub514\uc624 \uc378\ub124\uc77c\uc744 Instagram \uc774\ubbf8\uc9c0\ub85c \uac00\uc838\uc634\n\n\u26a0\ufe0f Instagram \ube44\uc988\ub2c8\uc2a4 \uacc4\uc815\uc774 Facebook \ud398\uc774\uc9c0\uc5d0 \uc5f0\uacb0\ub418\uc5b4 \uc788\uc5b4\uc57c \ud568"
      },
      "typeVersion": 1
    },
    {
      "id": "api-requirements-note",
      "name": "API Requirements",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -440,
        280
      ],
      "parameters": {
        "color": 1,
        "width": 250,
        "height": 200,
        "content": "\u26a0\ufe0f **Meta API \uc694\uad6c\uc0ac\ud56d**\n\n**\ud544\uc694\ud55c \uad8c\ud55c:**\n- pages_manage_posts\n- pages_read_engagement\n- pages_show_list\n- instagram_content_publish\n- instagram_basic\n\n**\ud1a0\ud070 \uc720\ud615:** \uc7a5\uae30 \uc561\uc138\uc2a4 \ud1a0\ud070\n**API \ubc84\uc804:** v22.0"
      },
      "typeVersion": 1
    },
    {
      "id": "cda123c2-21a3-421d-918e-5a6973002aa3",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "notes": "Formats post caption using video metadata. Customize prompt for your brand voice and hashtags",
      "position": [
        -740,
        -80
      ],
      "parameters": {
        "text": "=Write a short, engaging social media post about this new YouTube video:\n\nTitle: {{ $json.title }}\nURL: {{ $json.link }}\n\nInclude emojis and a call to action.",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "d215f6c3-f9d7-4103-8c26-419f468cf74b",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "notes": "Uses GPT-4o-mini to generate the caption text",
      "position": [
        -740,
        160
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "fbf6f102-1f8d-4e22-a850-1f5f163b94d5",
      "name": "Post on Facebook",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Publishes the caption using Facebook Graph API. Replace <Facebook_PageID> and <Access_Token>",
      "onError": "continueErrorOutput",
      "position": [
        -340,
        -240
      ],
      "parameters": {
        "url": "=https://graph.facebook.com/v22.0/<Facebook_PageID>/feed\n",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "message",
              "value": "={{ $json.output }}"
            },
            {
              "name": "access_token",
              "value": "<Access_Token>"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "000891de-e3e2-4de8-8742-ad45a2a958db",
      "name": "Publish Post On Instagram",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Publishes post to Instagram feed using the media container ID",
      "position": [
        180,
        60
      ],
      "parameters": {
        "url": "=https://graph.facebook.com/v22.0/{{ $('Get IG Business Account ID').item.json.instagram_business_account.id }}/media_publish\n",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {
              "name": "creation_id",
              "value": "={{ $json.id }}"
            },
            {
              "name": "access_token",
              "value": "<Access_Token>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "2e65dd2e-7f9e-4abd-b6c7-e811b3a86349",
      "name": "Get IG Business Account ID",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Retrieves Instagram Business account ID linked to Facebook Page",
      "onError": "continueErrorOutput",
      "position": [
        -340,
        80
      ],
      "parameters": {
        "url": "https://graph.facebook.com/v22.0/<Facebook_PageID>",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "fields",
              "value": "instagram_business_account"
            },
            {
              "name": "access_token",
              "value": "<Access_Token>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c2d089b9-754c-49fe-aa4d-976072340a0e",
      "name": "Create Media Container",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Uploads YouTube thumbnail as Instagram image with AI-generated caption",
      "position": [
        -80,
        60
      ],
      "parameters": {
        "url": "=https://graph.facebook.com/v22.0/{{ $json.instagram_business_account.id }}/media",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {
              "name": "image_url",
              "value": "=https://img.youtube.com/vi/{{ $('Pull Youtube Video From Channel').item.json.link.split(\"=\")[1] }}/maxresdefault.jpg"
            },
            {
              "name": "caption",
              "value": "={{ $('AI Agent').item.json.output }}"
            },
            {
              "name": "access_token",
              "value": "<Access_Token>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "29656ae1-d60e-4f4d-9326-17801ddcbb65",
      "name": "Pull Youtube Video From Channel",
      "type": "n8n-nodes-base.rssFeedReadTrigger",
      "notes": "Monitors new uploads from your YouTube channel. Replace channel_id in RSS URL",
      "position": [
        -1000,
        -80
      ],
      "parameters": {
        "feedUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UC2Tf8MGUzFX-GPkuBEBSKMg",
        "pollTimes": {
          "item": [
            {
              "mode": "everyHour"
            }
          ]
        }
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "a459b777-6ecf-46d2-9543-061a888393a6",
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Get IG Business Account ID",
            "type": "main",
            "index": 0
          },
          {
            "node": "Post on Facebook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post on Facebook": {
      "main": [
        []
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Create Media Container": {
      "main": [
        [
          {
            "node": "Publish Post On Instagram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Publish Post On Instagram": {
      "main": [
        []
      ]
    },
    "Get IG Business Account ID": {
      "main": [
        [
          {
            "node": "Create Media Container",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pull Youtube Video From Channel": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}