This workflow corresponds to n8n.io template #12353 — we link there as the canonical source.
This workflow follows the Agent → Google Sheets 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 →
{
"id": "qsETwlfuONZXSfK1",
"name": "Intelligent Instagram to YouTube upload with Google Sheets tracking",
"tags": [],
"nodes": [
{
"id": "57325e83-89fd-44ce-bc39-fe1b5c8fb279",
"name": "Workflow Configuration",
"type": "n8n-nodes-base.set",
"position": [
768,
-448
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-2",
"name": "youtubeTitle",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__YouTube video title__>"
},
{
"id": "id-3",
"name": "youtubeDescription",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__YouTube video description__>"
},
{
"id": "id-4",
"name": "googleSheetId",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Google Sheet ID for tracking__>"
},
{
"id": "id-5",
"name": "instagramMediaId",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Instagram Media ID__>"
},
{
"id": "id-6",
"name": "instagramAccessToken",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Instagram Access Token__>"
},
{
"id": "id-7",
"name": "whatsappPhoneNumber",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__WhatsApp recipient phone number__>"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "e3b5d2a5-6831-4c8c-9c24-30c525d4c87c",
"name": "Prepare YouTube Upload Data",
"type": "n8n-nodes-base.set",
"position": [
1440,
-448
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "videoTitle",
"type": "string",
"value": "={{ $json.caption || $('Workflow Configuration').first().json.youtubeTitle }}"
},
{
"id": "id-2",
"name": "videoDescription",
"type": "string",
"value": "={{ $json.caption || $('Workflow Configuration').first().json.youtubeDescription }}"
},
{
"id": "id-3",
"name": "mediaUrl",
"type": "string",
"value": "={{ $json.media_url }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "a8f8a576-de83-4f67-b6f3-6cf0524c0653",
"name": "Upload to YouTube",
"type": "n8n-nodes-base.youTube",
"position": [
2016,
-448
],
"parameters": {
"title": "={{ $json.optimizedTitle }}",
"options": {
"description": "={{ $json.optimizedDescription }}",
"privacyStatus": "private"
},
"resource": "video",
"operation": "upload"
},
"typeVersion": 1
},
{
"id": "54bd4545-259c-49cd-a023-d08797c9b6b3",
"name": "Log to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
2592,
-448
],
"parameters": {
"columns": {
"value": {},
"schema": [],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"videoId"
]
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.googleSheetId }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "1875202f-ed83-40b5-b343-ea42c5f4b661",
"name": "Generate Video Metadata",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1664,
-448
],
"parameters": {
"text": "=Generate optimized metadata for this video. Original title: {{ $json.videoTitle }}. Original description: {{ $json.videoDescription }}",
"options": {
"systemMessage": "You are a YouTube SEO expert specializing in video metadata optimization.\n\nYour task is to:\n1. Analyze the provided video title and description\n2. Generate an SEO-optimized title (max 100 characters)\n3. Create an engaging, keyword-rich description (max 5000 characters)\n4. Suggest 10-15 relevant tags\n5. Return the results in the specified JSON format\n\nFocus on:\n- Searchability and discoverability\n- Engaging language that drives clicks\n- Relevant keywords without keyword stuffing\n- Clear value proposition"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "4991e7b1-2723-4b23-aa26-b8a2ceee2c94",
"name": "Anthropic Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
1680,
-224
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-5-20250929",
"cachedResultName": "Claude Sonnet 4.5"
},
"options": {}
},
"credentials": {
"anthropicApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "6ca8b2b1-96e0-4cfd-92b3-cd492e7989a4",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1808,
-224
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"optimizedTitle\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"optimizedDescription\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"tags\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t}\n\t}\n}"
},
"typeVersion": 1.3
},
{
"id": "318eaa14-36e5-4c5b-b4c0-13c07f9c697a",
"name": "Analyze Video Performance",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2240,
-448
],
"parameters": {
"text": "=Analyze the uploaded video performance data. Video ID: {{ $json.id }}. Title: {{ $json.title }}",
"options": {
"systemMessage": "You are a YouTube analytics expert specializing in video performance analysis.\n\nYour task is to:\n1. Review the video upload data\n2. Generate initial performance predictions\n3. Identify potential optimization opportunities\n4. Create tracking metrics for future analysis\n5. Return structured analysis in JSON format\n\nProvide insights on:\n- Expected engagement patterns\n- Recommended posting schedule\n- Audience targeting suggestions\n- Content improvement recommendations"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "d76bbd9d-e6b8-427c-bd44-ebb7caa00553",
"name": "Anthropic Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
2256,
-224
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-5-20250929",
"cachedResultName": "Claude Sonnet 4.5"
},
"options": {}
},
"credentials": {
"anthropicApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "14eab6c6-3de7-448b-b056-3b8990428d1f",
"name": "Structured Output Parser1",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
2384,
-224
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"performanceScore\": {\n\t\t\t\"type\": \"number\"\n\t\t},\n\t\t\"recommendations\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t},\n\t\t\"targetAudience\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"bestPostingTime\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
},
"typeVersion": 1.3
},
{
"id": "fcb80b56-f984-42ae-89dd-db8c0acf8dea",
"name": "Get Instagram Media",
"type": "n8n-nodes-base.httpRequest",
"position": [
992,
-448
],
"parameters": {
"url": "=https://graph.instagram.com/{{ $('Workflow Configuration').first().json.instagramMediaId }}?fields=media_url,media_type,caption&access_token={{ $('Workflow Configuration').first().json.instagramAccessToken }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"typeVersion": 4.3
},
{
"id": "a3889a9b-d42a-4815-b912-28d2c1867e4b",
"name": "Send WhatsApp Notification",
"type": "n8n-nodes-base.whatsApp",
"position": [
2816,
-448
],
"parameters": {
"textBody": "=Video uploaded successfully to YouTube!\n\nTitle: {{ $json.optimizedTitle }}\nVideo ID: {{ $json.videoId }}\nPerformance Score: {{ $json.performanceScore }}\n\nRecommendations:\n{{ $json.recommendations.join('\\n- ') }}",
"operation": "send",
"additionalFields": {},
"recipientPhoneNumber": "={{ $('Workflow Configuration').first().json.whatsappPhoneNumber }}"
},
"credentials": {
"whatsAppApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "8956ca27-b57f-4607-b9e1-001d8c0833df",
"name": "Download Instagram Video",
"type": "n8n-nodes-base.httpRequest",
"position": [
1216,
-448
],
"parameters": {
"url": "={{ $json.media_url }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.3
},
{
"id": "97eec93d-d483-4b36-9b87-10b8976e78d9",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
1872,
-960
],
"parameters": {
"color": 5,
"width": 544,
"height": 304,
"content": "## Prerequisites\nInstagram Business/Creator account with API access\n## Use Cases\nSocial media agencies managing multiple client accounts\n## Customization\nModify AI prompts for brand-specific tone, adjust scheduling frequency\n## Benefits\nSaves 2-3 hours daily on manual uploads, ensures consistent posting schedules"
},
"typeVersion": 1
},
{
"id": "a0fa1811-3af5-4140-a31b-03bea2d99893",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1376,
-880
],
"parameters": {
"width": 432,
"height": 192,
"content": "## Setup Steps\n1. Configure Instagram credentials \n2. Add Anthropic API key for Claude model in AI nodes\n3. Connect YouTube account and configure upload settings\n4. Link Google Sheets with target spreadsheet ID for logging\n5. Add WhatsApp Business API credentials\n"
},
"typeVersion": 1
},
{
"id": "e3248947-378e-4ade-895c-5cb703e2df57",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
480,
-912
],
"parameters": {
"width": 848,
"height": 240,
"content": "## How It Works\nThis workflow automates cross-platform content distribution from Instagram to YouTube with intelligent AI enhancement. Designed for content creators, social media managers, and digital marketers who need to maximize their content reach across platforms efficiently. The template solves the challenge of manual video repurposing by automating the entire process from content retrieval to optimized publishing. It retrieves Instagram videos on schedule, generates engaging metadata using dual AI models (Anthropic Claude for creative titles/descriptions), uploads to YouTube, logs performance metrics to Google Sheets, and sends WhatsApp notifications upon completion. The workflow intelligently routes tasks between AI providers: Claude's language capabilities create compelling and platform-optimized content. This dual-model approach delivers superior results compared to single-AI solutions, combining creativity with precision for maximum engagement."
},
"typeVersion": 1
},
{
"id": "c271a2a2-b8f0-4b68-9a01-1d9445ccbbde",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1936,
-640
],
"parameters": {
"color": 7,
"width": 1104,
"height": 576,
"content": "## Publishing, tracking, and notification\n**What:**\nThe workflow uploads processed videos to YouTube\n**Why:**\nAutomated publishing ensures consistent posting schedules."
},
"typeVersion": 1
},
{
"id": "823d1892-865d-4895-83c0-e7ba6d63b45f",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
480,
-640
],
"parameters": {
"color": 7,
"width": 1440,
"height": 576,
"content": "## Content ingestion and preparation\n\n**What:**\nA schedule trigger initiates the workflow at preset intervals, fetches Instagram media \n**Why:**\nAutomation removes manual content transfer effort. "
},
"typeVersion": 1
},
{
"id": "029e3f03-852b-4647-8823-cb41a7cb12b8",
"name": "Initiates the workflow at preset interval",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
544,
-448
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.3
}
],
"active": false,
"settings": {
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "77fdb06f-a51b-4ace-8365-1db757bedb27",
"connections": {
"Upload to YouTube": {
"main": [
[
{
"node": "Analyze Video Performance",
"type": "main",
"index": 0
}
]
]
},
"Get Instagram Media": {
"main": [
[
{
"node": "Download Instagram Video",
"type": "main",
"index": 0
}
]
]
},
"Anthropic Chat Model": {
"ai_languageModel": [
[
{
"node": "Generate Video Metadata",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Log to Google Sheets": {
"main": [
[
{
"node": "Send WhatsApp Notification",
"type": "main",
"index": 0
}
]
]
},
"Anthropic Chat Model1": {
"ai_languageModel": [
[
{
"node": "Analyze Video Performance",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Workflow Configuration": {
"main": [
[
{
"node": "Get Instagram Media",
"type": "main",
"index": 0
}
]
]
},
"Generate Video Metadata": {
"main": [
[
{
"node": "Upload to YouTube",
"type": "main",
"index": 0
}
]
]
},
"Download Instagram Video": {
"main": [
[
{
"node": "Prepare YouTube Upload Data",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Generate Video Metadata",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Analyze Video Performance": {
"main": [
[
{
"node": "Log to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser1": {
"ai_outputParser": [
[
{
"node": "Analyze Video Performance",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Prepare YouTube Upload Data": {
"main": [
[
{
"node": "Generate Video Metadata",
"type": "main",
"index": 0
}
]
]
},
"Initiates the workflow at preset interval": {
"main": [
[
{
"node": "Workflow Configuration",
"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.
anthropicApigoogleSheetsOAuth2ApiwhatsAppApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates cross-platform content distribution from Instagram to YouTube with intelligent AI enhancement. Designed for content creators, social media managers, and digital marketers who need to maximize their content reach across platforms efficiently. The template…
Source: https://n8n.io/workflows/12353/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This n8n automation workflow automates the creation, scripting, production, and posting of YouTube videos. It leverages AI (OpenAI), image generation (PIAPI), video rendering (Shotstack), and platform
📺 Full walkthrough video: https://youtu.be/03mZE9tvELU
Faceless YouTube Generator. Uses httpRequest, limit, googleDrive, googleSheets. Webhook trigger; 49 nodes.
ASMR. Uses googleSheets, outputParserStructured, httpRequest, lmChatOpenAi. Scheduled trigger; 35 nodes.
Turn your affiliate links or product catalog into a 24/7 AI video marketing machine. This n8n workflow auto-creates human-presenter promo videos using AI and publishes them directly to YouTube with SE