This workflow corresponds to n8n.io template #6729 — 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": "vEqNzGpjObt1OHgo",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Reel Content Strategist: From URL to Viral Hook with AI + Sheets",
"tags": [],
"nodes": [
{
"id": "905e3d38-679f-4a4a-974b-55946ee90e6b",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
-2080,
64
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "b5a8bb22-9b52-4231-a74f-901e4ecee891",
"name": "Wait2",
"type": "n8n-nodes-base.wait",
"position": [
-2224,
544
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "4596408d-30c8-47e6-9023-a9ddbca446f2",
"name": "Send a text message",
"type": "n8n-nodes-base.telegram",
"position": [
-976,
640
],
"parameters": {
"text": "=Reel Processed Successfully!\nUploader: {{ $('Apify::Scrape Reel Metadata').item.json.metadata.uploader }}\nTitle: {{ $('Apify::Scrape Reel Metadata').item.json.metadata.title }}\n{{ $json.niche_and_category }}\n\nDescription:{{ $('Apify::Scrape Reel Metadata').item.json.metadata.description }}\n\nAll the details have been securely appended to the Google Sheet for your reference.\n\nhttps://docs.google.com/spreadsheets/d/1UOAzmnYS8Wm8ngkgfap88u6D5koi0t1Eavm9q-ftgho/edit?gid=0#gid=0\n\nIf you have more reels to analyze, just send them my way!",
"chatId": "123456789",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "63dadfa8-41ca-487b-ac9b-8c59e9ebaeb5",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-1328,
656
],
"parameters": {
"jsonSchemaExample": "{\n \"niche\": \"Investing and Business Growth\",\n \"core_message\": \"Learning key skills like pattern recognition can lead to massive success in investing and business.\",\n \"ideas\": [\n {\n \"title\": \"The Secret Skills to Invest Like a Pro!\",\n \"script\": \"Ever felt like investing is a mystery you can't crack? What if I told you that there are secret skills that can make you an investing pro?... [etc]\"\n },\n {\n \"title\": \"Unlocking the Holy Grail of Investing: A Billionaire's Guide\",\n \"script\": \"Close your eyes and imagine having the investing secrets of a billionaire at your fingertips... [etc]\"\n },\n {\n \"title\": \"Pattern Recognition: The Key to Unstoppable Success in Investing\",\n \"script\": \"Have you ever wondered what separates successful investors from the rest?... [etc]\"\n }\n ]\n}\n"
},
"typeVersion": 1.2
},
{
"id": "42c0ea86-8a7b-41ff-bbb2-c0d554200621",
"name": "Telegram Trigger",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-2384,
-496
],
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "161ed626-3f97-413a-839d-99fba224e116",
"name": "Mistral Cloud Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatMistralCloud",
"position": [
-1488,
688
],
"parameters": {
"model": "mistral-large-pixtral-2411",
"options": {}
},
"credentials": {
"mistralCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "6b28f94a-4e48-410b-9360-d4717d7b2829",
"name": "Extract::Instagram Reel URL",
"type": "n8n-nodes-base.code",
"position": [
-2192,
-496
],
"parameters": {
"jsCode": "const item = items[0].json;\n\n// Combine and stringify possible text-containing fields\nlet input = item.text || item.message || item.caption || item.input || item.user_input || \"\";\n\n// Convert non-string inputs (like objects) to a string\nif (typeof input !== \"string\") {\n try {\n input = JSON.stringify(input);\n } catch (err) {\n input = \"\";\n }\n}\n\n// Regex to extract Instagram Reel URL\nconst match = input.match(/(?:https?:\\/\\/)?(?:www\\.)?instagram\\.com\\/reel\\/[a-zA-Z0-9_-]+/i);\n\nlet cleanedUrl = null;\n\nif (match && match[0]) {\n const baseUrl = match[0].startsWith(\"http\") ? match[0] : `https://${match[0]}`;\n cleanedUrl = baseUrl.split(\"?\")[0].replace(/\\/$/, \"\");\n}\n\nreturn [\n {\n json: {\n original_input: input,\n reel_url: cleanedUrl\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "524e0f6e-b481-4e71-86ff-e0e7676bceea",
"name": "Validate::URL Extracted",
"type": "n8n-nodes-base.if",
"position": [
-2000,
-496
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "392238d8-29a9-4711-a23b-3fcb76d8f3a6",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.reel_url }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "be94ea5c-1587-4b5c-a7af-e85f6af205e6",
"name": "Respond::Invalid URL",
"type": "n8n-nodes-base.telegram",
"position": [
-1808,
-416
],
"parameters": {
"text": "Couldn't find any reel's URL. Please try again",
"chatId": "123456789",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "17f5b2c5-e4be-4f99-85b7-9c33dd4afd43",
"name": "Apify::Scrape Reel Metadata",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1488,
-512
],
"parameters": {
"url": "https://api.apify.com/v2/acts/red.cars~universal-content-extractor/run-sync-get-dataset-items",
"method": "POST",
"options": {},
"jsonBody": "={\n \"urls\": [\"{{ $('Extract::Instagram Reel URL').item.json.reel_url }}\"],\n \"quality\": \"best\",\n \"format\": \"mp4\",\n \"audioOnly\": false,\n \"removeWatermark\": false,\n \"maxItems\": 100\n}\n",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer <YOUR_API_KEY>"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "facfc5dd-2bcb-4b39-bdf0-e9fbcfdb0735",
"name": "Validate::Reel Downloadable",
"type": "n8n-nodes-base.if",
"position": [
-1264,
-512
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "4b65fab6-dbd4-4def-872e-3a7d787dbaa5",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.success.toString() }}",
"rightValue": "true"
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "ff31144d-56b9-454b-a75e-49f820feef27",
"name": "Respond::Reel Download Failed1",
"type": "n8n-nodes-base.telegram",
"position": [
-1040,
-496
],
"parameters": {
"text": "This video is private or not available. For private content, try providing authentication cookies in the input or try with different video.",
"chatId": "123456789",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "002b64cf-c653-4f96-88c5-95178f151a35",
"name": "Download::Reel File",
"type": "n8n-nodes-base.httpRequest",
"position": [
-2400,
64
],
"parameters": {
"url": "={{ $json.downloadUrl }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "939b1be9-ed42-4ee8-ac96-01093b852603",
"name": "FreeConvert::Import Reel",
"type": "n8n-nodes-base.httpRequest",
"position": [
-2224,
64
],
"parameters": {
"url": "https://api.freeconvert.com/v1/process/jobs",
"method": "POST",
"options": {},
"jsonBody": "={{\n{\n\"tasks\": {\n\"import\": {\n\"operation\": \"import/url\",\n\"url\": $json.downloadUrl\n}\n}\n}\n}}",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2
},
{
"id": "05f55b76-a1ef-4248-86b9-a2e7ca6655b6",
"name": "Check::Import Status",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1952,
64
],
"parameters": {
"url": "=https://api.freeconvert.com/v1/process/jobs/{{ $json[\"id\"] }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "a4c03ad5-49a9-462b-af20-4fa5e96949d9",
"name": "Validate::Import Successful",
"type": "n8n-nodes-base.if",
"position": [
-1808,
64
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "5cac220a-408e-488e-811f-b13f238a64f8",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "completed"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "545a91df-9f9e-42cb-be6b-16eb3034c87a",
"name": "FreeConvert::Submit MP3 Conversion",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1568,
48
],
"parameters": {
"url": "https://api.freeconvert.com/v1/process/jobs",
"method": "POST",
"options": {},
"jsonBody": "={\n \"tasks\": {\n \"import-my-file\": {\n \"operation\": \"import/url\",\n \"url\": \"{{ $json.tasks[0].result.url }}\"\n },\n \"convert-my-file\": {\n \"operation\": \"convert\",\n \"input\": \"import-my-file\",\n \"input_format\": \"mp4\",\n \"output_format\": \"mp3\",\n \"options\": {\n \"audio_codec\": \"auto\",\n \"audio_filter_volume\": 100,\n \"audio_filter_fade_in\": true,\n \"audio_filter_fade_out\": false,\n \"audio_filter_reverse\": false\n }\n }\n }\n} ",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2
},
{
"id": "3f559d47-8767-4ef5-ae4e-f20d7cbd7ecb",
"name": "Wait1",
"type": "n8n-nodes-base.wait",
"position": [
-1424,
48
],
"parameters": {
"amount": 10
},
"typeVersion": 1.1
},
{
"id": "625586fa-5bf3-4ba5-aa97-6bdfa1bd1ba5",
"name": "Check::Conversion Status",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1296,
48
],
"parameters": {
"url": "=https://api.freeconvert.com/v1/process/jobs/{{ $json.id }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "7ce4c865-df6a-4f76-b942-da545da26fce",
"name": "Validate::Conversion Complete",
"type": "n8n-nodes-base.if",
"position": [
-1168,
48
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "70e4be95-0274-457e-a082-71ece0319dc9",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "completed"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "2f083b7f-e16c-4027-a265-175c97455fca",
"name": "Download::MP3 File",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1024,
32
],
"parameters": {
"url": "={{ $json.tasks[1].result.url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "cc2817f6-88db-4a0b-a57d-d2c7e42b17f5",
"name": "AssemblyAI::Submit Transcription",
"type": "n8n-nodes-base.httpRequest",
"position": [
-2384,
544
],
"parameters": {
"url": "https://api.assemblyai.com/v2/transcript",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "audio_url",
"value": "={{ $json.tasks[1].result.url }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "authorization",
"value": "<YOUR_API_KEY>"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "a44681f4-b333-4cd6-8ed6-6ee8455aa4e1",
"name": "Check::Transcript Status",
"type": "n8n-nodes-base.httpRequest",
"position": [
-2080,
544
],
"parameters": {
"url": "=https://api.assemblyai.com/v2/transcript/{{ $json.id }}",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "<YOUR_API_KEY>"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "b9ead96f-74c2-4265-ae8a-792f96f51685",
"name": "Validate::Transcript Present",
"type": "n8n-nodes-base.switch",
"position": [
-1936,
544
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "true",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "d81ca0f8-f30b-4672-a8f8-c725f0fc1889",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "completed"
}
]
},
"renameOutput": true
},
{
"outputKey": "false",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "7ce19b2d-3eff-41df-9409-a0d5e0c8c388",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "completed"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "eb2df6cb-2d9b-4a2d-ab4c-330b419a776d",
"name": "Validate::Speech Detected",
"type": "n8n-nodes-base.if",
"position": [
-1808,
480
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "d59771bd-92c1-4aa3-af5a-2db1c964754d",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.text }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "41c7eb0e-dbe1-44c8-ad78-21a2dfdbad13",
"name": "Respond::No Speech Found",
"type": "n8n-nodes-base.telegram",
"position": [
-1776,
640
],
"parameters": {
"text": "The Agent couldn't detect any speech in the reel. Please try again with different reel's url",
"chatId": "123456789",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "0f3f94a7-da2e-4526-adb5-f917eadc44a3",
"name": "AI::Generate Hook Ideas & Scripts",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1568,
512
],
"parameters": {
"text": "={{ $json.text }}",
"options": {
"systemMessage": "=You are a content strategist for viral short-form videos on platforms like Instagram Reels, TikTok, and YouTube Shorts. Below is a transcript from a video/audio clip:\n\n{{ $json.text }}\n\nYour job:\n1. Identify the niche or theme this audio belongs to.\n2. Summarize the core message in 1 line.\n3. Generate 3 compelling short-form video titles or hooks (for attention-grabbing thumbnails or captions).\n4. For each of those 3 hooks, write a short video script (30\u201360 seconds), formatted for talking head videos or voiceovers.\n\nTone: Bold, clear, emotional. Scripts must feel natural and powerful \u2014 not robotic.\n\nFormat your response like this:\n\n---\n**Niche**: [Identified niche]\n\n**Core Message**: [1-line insight]\n\n**Idea 1**: [Hook Title]\n**Script 1**:\n[Video Script]\n\n**Idea 2**: [Hook Title]\n**Script 2**:\n[Video Script]\n\n**Idea 3**: [Hook Title]\n**Script 3**:\n[Video Script]"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.8
},
{
"id": "4ef2c047-f657-4dce-8480-98d83aaa0afa",
"name": "Validate::AI Output Fields",
"type": "n8n-nodes-base.if",
"position": [
-1248,
512
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "5e4cd63e-f426-47f1-8f6e-0b30dcdc5534",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.output.niche }}",
"rightValue": ""
},
{
"id": "3e79a262-48e6-4674-aed8-9ca98676067a",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.output.core_message }}",
"rightValue": ""
},
{
"id": "48413128-7c48-4478-abd8-1694b0224309",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.output.ideas[0].title }}",
"rightValue": ""
},
{
"id": "9dd3c385-2a8e-4760-a3a8-e942aeaec139",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.output.ideas[0].script }}",
"rightValue": ""
},
{
"id": "31a63116-5463-4767-b3a3-8b6702f9c383",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.output.ideas[1].title }}",
"rightValue": "="
},
{
"id": "79c709a8-3ebd-46ce-929e-360b55b1444e",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.output.ideas[1].script }}",
"rightValue": ""
},
{
"id": "b7ee88b3-b4f1-4ee7-adcc-ce7d718c4e0d",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.output.ideas[2].title }}",
"rightValue": ""
},
{
"id": "a066b804-cdab-45d9-94c3-86758297c6ef",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.output.ideas[2].script }}",
"rightValue": ""
},
{
"id": "ec2ddc55-173c-4adc-a188-0bd81f2838d1",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "1a6394ea-0c67-4c83-9bc7-4f437a9de32a",
"name": "Storage::Log to Google Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
-1104,
496
],
"parameters": {
"columns": {
"value": {
"Title": "={{ $('Apify::Scrape Reel Metadata').item.json.metadata.title }}",
"idea_1": "={{ $('AI::Generate Hook Ideas & Scripts').item.json.output.ideas[0].title }}",
"idea_2": "={{ $('AI::Generate Hook Ideas & Scripts').item.json.output.ideas[1].title }}",
"idea_3": "={{ $('AI::Generate Hook Ideas & Scripts').item.json.output.ideas[2].title }}",
"reel_url": "={{ $('Extract::Instagram Reel URL').item.json.reel_url }}",
"script_1": "={{ $('AI::Generate Hook Ideas & Scripts').item.json.output.ideas[0].script }}",
"script_2": "={{ $('AI::Generate Hook Ideas & Scripts').item.json.output.ideas[1].script }}",
"script_3": "={{ $('AI::Generate Hook Ideas & Scripts').item.json.output.ideas[2].script }}",
"uploader": "={{ $('Apify::Scrape Reel Metadata').item.json.metadata.uploader }}",
"file_name": "={{ $('Apify::Scrape Reel Metadata').item.json.filename }}",
"description": "={{ $('Apify::Scrape Reel Metadata').item.json.metadata.description }}",
"core_message": "={{ $('AI::Generate Hook Ideas & Scripts').item.json.output.core_message }}",
"transcripted_text": "={{ $('Check::Transcript Status').item.json.text }}",
"audio_download_url": "={{ $('Check::Transcript Status').item.json.audio_url }}",
"niche_and_category": "={{ $('AI::Generate Hook Ideas & Scripts').item.json.output.niche }}",
"video_download_url": "={{ $('Download::Reel File').item.json.downloadUrl }}"
},
"schema": [
{
"id": "Title",
"type": "string",
"display": true,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "reel_url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "reel_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "video_download_url",
"type": "string",
"display": true,
"required": false,
"displayName": "video_download_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "audio_download_url",
"type": "string",
"display": true,
"required": false,
"displayName": "audio_download_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "file_name",
"type": "string",
"display": true,
"required": false,
"displayName": "file_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "uploader",
"type": "string",
"display": true,
"required": false,
"displayName": "uploader",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "description",
"type": "string",
"display": true,
"required": false,
"displayName": "description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "transcripted_text",
"type": "string",
"display": true,
"required": false,
"displayName": "transcripted_text",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "core_message",
"type": "string",
"display": true,
"required": false,
"displayName": "core_message",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "idea_1",
"type": "string",
"display": true,
"required": false,
"displayName": "idea_1",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "script_1",
"type": "string",
"display": true,
"required": false,
"displayName": "script_1",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "idea_2",
"type": "string",
"display": true,
"required": false,
"displayName": "idea_2",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "script_2",
"type": "string",
"display": true,
"required": false,
"displayName": "script_2",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "idea_3",
"type": "string",
"display": true,
"required": false,
"displayName": "idea_3",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "script_3",
"type": "string",
"display": true,
"required": false,
"displayName": "script_3",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "niche_and_category",
"type": "string",
"display": true,
"required": false,
"displayName": "niche_and_category",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"reel_url"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/YOUR_AWS_SECRET_KEY_HERE-ftgho/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1UOAzmnYS8Wm8ngkgfap88u6D5koi0t1Eavm9q-ftgho",
"cachedResultUrl": "https://docs.google.com/spreadsheets/YOUR_AWS_SECRET_KEY_HERE-ftgho/edit?usp=drivesdk",
"cachedResultName": "reel transcription report"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "2e0f9827-9b16-47f0-b186-4f63fd8fbec4",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2432,
-752
],
"parameters": {
"width": 784,
"height": 496,
"content": "## \ud83d\udd39 TELEGRAM INPUT & URL EXTRACTION\n\n**Trigger::Telegram Message** :\tMain entry point for incoming user messages\n**Extract::Instagram Reel URL** :Parses the Telegram message to find a valid reel URL\n**Validate::URL Extracted Checks** : if a valid reel URL was found\n**Respond::Invalid URL** : Sends error message if no valid reel URL "
},
"typeVersion": 1
},
{
"id": "aa31e38b-a7d2-4a73-9c8f-662621a2bdfa",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1632,
-752
],
"parameters": {
"color": 3,
"width": 784,
"height": 496,
"content": "## \ud83d\udd39 REEL DOWNLOAD & VALIDATION\n\n**Apify::Scrape Reel Metadata**\t: Uses Apify to fetch metadata + download URL\n**Validate::Reel Downloadable**\t: Confirms that Apify was able to fetch the reel\n**Respond::Reel Download Failed** : Informs user of an inaccessible or private reel\n"
},
"typeVersion": 1
},
{
"id": "460a3d80-d641-43c5-b4e6-cecf115b7b56",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2432,
-224
],
"parameters": {
"color": 5,
"width": 784,
"height": 496,
"content": "## \ud83d\udd39FILE PROCESSING \u2014 PHASE 1 (Import)\n\n**Download::Reel File** : Downloads video file via Apify\u2019s download link\n**FreeConvert::Import Reel** : Submits reel to FreeConvert for import\n**Wait::Import Init (5s)** : Waits to give FreeConvert time to import file\n**Check::Import Status** : Verifies import completion \n**Validate::Import Successful** : Sends error message if no valid reel URL"
},
"typeVersion": 1
},
{
"id": "f18fa6a5-f142-41a3-9975-6629d661fe62",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1632,
-224
],
"parameters": {
"color": 4,
"width": 784,
"height": 496,
"content": "## \ud83d\udd39 FILE PROCESSING \u2014 PHASE 2 (Convert to Audio)\n\n**FreeConvert::Submit MP3 Conversion** : Requests conversion from video to audio\n**Wait::Convert Init (5s)** : Waits for conversion to process\n**Check::Conversion Status** : Polls conversion job to see if done\n**Validate::Conversion Complete** : Verifies that audio conversion succeeded\n**Download::MP3 File** : Downloads final .mp3 from FreeConvert"
},
"typeVersion": 1
},
{
"id": "b1ad6552-6b6b-4cd4-8c68-fdf2320fc754",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2432,
304
],
"parameters": {
"color": 6,
"width": 784,
"height": 496,
"content": "## \ud83d\udd39 TRANSCRIPTION & VERIFICATION\n\n**AssemblyAI::Submit Transcription** : Uploads audio file for transcription\n**Wait::Transcription (5s)** : Buffer wait for transcript to process\n**Check::Transcript Status** : Polls for transcript completion\n**Validate::Transcript Present** : Checks if transcription is available (i.e. contains actual speech)\n**Respond::Transcript Missing** : Sends error if no transcription was returned"
},
"typeVersion": 1
},
{
"id": "6b032e6a-b4de-4a53-8a9f-cf01bfefed18",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1632,
304
],
"parameters": {
"color": 2,
"width": 784,
"height": 496,
"content": "## \ud83d\udd39 AI ANALYSIS, STRATEGY GENERATION & DATA STORAGE\n\n**AI::Generate Hook Ideas & Scripts** : Core AI agent for analyzing content & generating hooks\n**Validate::AI Output Fields** : Verifies if all required fields were returned by AI agent\n**Retry::Fix Missing AI Fields** : Logic to reprocess or patch missing fields if validation fails\n**Storage::Log to Google Sheet** : Appends all metadata + scripts to spreadsheet\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "7f0c3d0b-c8ce-4569-8587-dab20031e14c",
"connections": {
"Wait": {
"main": [
[
{
"node": "Check::Import Status",
"type": "main",
"index": 0
}
]
]
},
"Wait1": {
"main": [
[
{
"node": "Check::Conversion Status",
"type": "main",
"index": 0
}
]
]
},
"Wait2": {
"main": [
[
{
"node": "Check::Transcript Status",
"type": "main",
"index": 0
}
]
]
},
"Telegram Trigger": {
"main": [
[
{
"node": "Extract::Instagram Reel URL",
"type": "main",
"index": 0
}
]
]
},
"Download::MP3 File": {
"main": [
[
{
"node": "AssemblyAI::Submit Transcription",
"type": "main",
"index": 0
}
]
]
},
"Download::Reel File": {
"main": [
[
{
"node": "FreeConvert::Import Reel",
"type": "main",
"index": 0
}
]
]
},
"Check::Import Status": {
"main": [
[
{
"node": "Validate::Import Successful",
"type": "main",
"index": 0
}
]
]
},
"Validate::URL Extracted": {
"main": [
[
{
"node": "Apify::Scrape Reel Metadata",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond::Invalid URL",
"type": "main",
"index": 0
}
]
]
},
"Check::Conversion Status": {
"main": [
[
{
"node": "Validate::Conversion Complete",
"type": "main",
"index": 0
}
]
]
},
"Check::Transcript Status": {
"main": [
[
{
"node": "Validate::Transcript Present",
"type": "main",
"index": 0
}
]
]
},
"FreeConvert::Import Reel": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Mistral Cloud Chat Model": {
"ai_languageModel": [
[
{
"node": "AI::Generate Hook Ideas & Scripts",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI::Generate Hook Ideas & Scripts",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Validate::Speech Detected": {
"main": [
[
{
"node": "AI::Generate Hook Ideas & Scripts",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond::No Speech Found",
"type": "main",
"index": 0
}
]
]
},
"Validate::AI Output Fields": {
"main": [
[
{
"node": "Storage::Log to Google Sheet",
"type": "main",
"index": 0
}
],
[
{
"node": "AI::Generate Hook Ideas & Scripts",
"type": "main",
"index": 0
}
]
]
},
"Apify::Scrape Reel Metadata": {
"main": [
[
{
"node": "Validate::Reel Downloadable",
"type": "main",
"index": 0
}
]
]
},
"Extract::Instagram Reel URL": {
"main": [
[
{
"node": "Validate::URL Extracted",
"type": "main",
"index": 0
}
]
]
},
"Validate::Import Successful": {
"main": [
[
{
"node": "FreeConvert::Submit MP3 Conversion",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Validate::Reel Downloadable": {
"main": [
[
{
"node": "Download::Reel File",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond::Reel Download Failed1",
"type": "main",
"index": 0
}
]
]
},
"Storage::Log to Google Sheet": {
"main": [
[
{
"node": "Send a text message",
"type": "main",
"index": 0
}
]
]
},
"Validate::Transcript Present": {
"main": [
[
{
"node": "Validate::Speech Detected",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait2",
"type": "main",
"index": 0
}
]
]
},
"Validate::Conversion Complete": {
"main": [
[
{
"node": "Download::MP3 File",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait1",
"type": "main",
"index": 0
}
]
]
},
"AssemblyAI::Submit Transcription": {
"main": [
[
{
"node": "Wait2",
"type": "main",
"index": 0
}
]
]
},
"AI::Generate Hook Ideas & Scripts": {
"main": [
[
{
"node": "Validate::AI Output Fields",
"type": "main",
"index": 0
}
]
]
},
"FreeConvert::Submit MP3 Conversion": {
"main": [
[
{
"node": "Wait1",
"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.
googleSheetsOAuth2ApimistralCloudApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
📍Overview This no-code workflow is built for creators, agencies, and operators who want to automate the repurposing of Instagram Reels. It runs end-to-end and outputs structured insights and content-ready scripts—without touching a single tool manually.
Source: https://n8n.io/workflows/6729/ — 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.
Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.
This template is designed for marketers, content creators, and e-commerce brands who want to automate the creation of professional ad videos at scale. It’s ideal for teams looking to generate consiste
This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.
LinkedIn URL → Scrape → Match → Screen → Decide, all automated
This workflow turns a single Telegram prompt into a fully generated, visually consistent, one-minute video using Veo 3. It’s built for creators, agencies, and brands that want fast, scalable short-for