This workflow corresponds to n8n.io template #12045 — we link there as the canonical source.
This workflow follows the Google Sheets → HTTP Request 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "5fca276b-9381-4aa3-a733-1139f51b03ea",
"name": "Limit",
"type": "n8n-nodes-base.limit",
"notes": "Adjust this to the limit you'd like.",
"position": [
-208,
32
],
"parameters": {
"keep": "lastItems",
"maxItems": 5
},
"typeVersion": 1
},
{
"id": "90512145-ff33-4d37-81b1-1d9c6e582ea5",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-656,
32
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 8
}
]
}
},
"typeVersion": 1.2
},
{
"id": "5759662f-484b-4454-a43a-28a1cd3da3da",
"name": " Run Apify Scraper",
"type": "n8n-nodes-base.httpRequest",
"notes": "Put in your Apify Actor URL.",
"position": [
-432,
32
],
"parameters": {
"url": "https://api.apify.com/",
"method": "POST",
"options": {
"redirect": {
"redirect": {
"maxRedirects": 35
}
}
},
"jsonBody": "{\n \"resultsLimit\": 5,\n \"username\": [\n \"Neal_Mcleod\",\n \"juliangoldieseo\",\n \"brand.nat\",\n \"JohnHenry\",\n \"hamza_automates\",\n \"100xengineers\",\n \"mattfarmerai\",\n \"nathanhodgson.ai\",\n \"theman\",\n \"shedoesai\",\n \"aitrendz.xyz\",\n \"thevarunmayya\",\n \"rohak_arya\",\n \"digitalsamaritan\"\n ]\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "f104f32e-2595-4a9a-8e68-6bbbc224f105",
"name": " Check Existing Entries",
"type": "n8n-nodes-base.googleSheets",
"position": [
16,
104
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "={{ $json.id }}",
"lookupColumn": "id"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1e1yIubmEXzzUrSCurXdXM2H6ioN2GEb1aOX5UBNNyik/edit#gid=0",
"cachedResultName": "Reels"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "Instagram Reels"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5,
"alwaysOutputData": false
},
{
"id": "11fcc343-c024-45ad-846a-2f866d2f7e28",
"name": " Remove Duplicate Reels",
"type": "n8n-nodes-base.merge",
"position": [
240,
32
],
"parameters": {
"mode": "combine",
"options": {},
"joinMode": "keepNonMatches",
"fieldsToMatchString": "id"
},
"typeVersion": 3
},
{
"id": "30ee1c23-7358-4b25-b666-98b4eccccad8",
"name": " Add New Reels to Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
464,
32
],
"parameters": {
"columns": {
"value": {
"id": "={{ $json.id }}",
"url": "={{ $json.url }}",
"caption": "={{ $json.caption }}",
"hashtags": "={{ $json.hashtags }}",
"username": "={{ $json.ownerUsername }}",
"videoUrl": "={{ $json.videoUrl }}",
"shortCode": "={{ $json.shortCode }}",
"timestamp": "={{ $json.timestamp }}",
"displayUrl": "={{ $json.displayUrl }}",
"likesCount": "={{ $json.likesCount }}",
"firstComment": "={{ $json.firstComment }}",
"commentsCount": "={{ $json.commentsCount }}",
"videoDuration": "={{ $json.videoDuration }}",
"videoPlayCount": "={{ $json.videoPlayCount }}",
"videoViewCount": "={{ $json.videoViewCount }}"
},
"schema": [
{
"id": "timestamp",
"type": "string",
"display": true,
"required": false,
"displayName": "timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "shortCode",
"type": "string",
"display": true,
"required": false,
"displayName": "shortCode",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "caption",
"type": "string",
"display": true,
"required": false,
"displayName": "caption",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "hashtags",
"type": "string",
"display": true,
"required": false,
"displayName": "hashtags",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "url",
"type": "string",
"display": true,
"required": false,
"displayName": "url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "commentsCount",
"type": "string",
"display": true,
"required": false,
"displayName": "commentsCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "firstComment",
"type": "string",
"display": true,
"required": false,
"displayName": "firstComment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "displayUrl",
"type": "string",
"display": true,
"required": false,
"displayName": "displayUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "videoUrl",
"type": "string",
"display": true,
"required": false,
"displayName": "videoUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "likesCount",
"type": "string",
"display": true,
"required": false,
"displayName": "likesCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "videoViewCount",
"type": "string",
"display": true,
"required": false,
"displayName": "videoViewCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "videoPlayCount",
"type": "string",
"display": true,
"required": false,
"displayName": "videoPlayCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "username",
"type": "string",
"display": true,
"required": false,
"displayName": "username",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "videoDuration",
"type": "string",
"display": true,
"required": false,
"displayName": "videoDuration",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "scrapedTranscript",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "scrapedTranscript",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "newTranscript",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "newTranscript",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "inputUrl",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "inputUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "type",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "mentions",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "mentions",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "latestComments",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "latestComments",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "dimensionsHeight",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "dimensionsHeight",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "dimensionsWidth",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "dimensionsWidth",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "images",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "images",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "alt",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "alt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "childPosts",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "childPosts",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ownerFullName",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "ownerFullName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ownerUsername",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "ownerUsername",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ownerId",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "ownerId",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "productType",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "productType",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "isSponsored",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "isSponsored",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "musicInfo",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "musicInfo",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
]
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1e1yIubmEXzzUrSCurXdXM2H6ioN2GEb1aOX5UBNNyik/edit#gid=0",
"cachedResultName": "Reels"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "Instagram Reels"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "26a0148d-6fb8-4390-a684-82d693d01b0d",
"name": " Download Reel Video",
"type": "n8n-nodes-base.httpRequest",
"position": [
688,
32
],
"parameters": {
"url": "={{ $json.videoUrl }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "ed980d8d-1321-4c6e-aa94-22b0b4a7c0e0",
"name": " Transcribe Reel Audio",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
912,
32
],
"parameters": {
"options": {},
"resource": "audio",
"operation": "transcribe"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.6
},
{
"id": "6f3daa91-4b66-40b5-9ae6-c455e0b190b5",
"name": " Filter + Generate Script Ideas",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1136,
32
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "You are a helpful, intelligent admin assistant."
},
{
"content": " run a productivity & tech-focused YouTube channel. I'm looking through news archives to find mentions of tools that I can repurpose into educational and tutorial-style content for my audience.\n\nYour task is to take as input a transcript of a news archive, and then determine if the transcription is primarily about a *tool*, a *technology*, or *AI* (including AI-powered products, platforms, or features).\n\nIf so, you must:\n\n1. Identify all clearly named tools, technologies, platforms, or AI systems mentioned.\n\n2. For each identified tool or technology, write a clear, actionable list of step-by-step instructions on how to start using it easily (ideally for free or at low cost). \n - If exact usage details are not provided in the transcript, infer reasonable, generic steps based on similar tools (e.g., sign-up, onboarding, core features). \n - Focus on steps that a beginner could follow without prior experience.\n\n3. Write one suggestion on how to present this tool or technology in a way that is especially engaging and useful for a productivity/tech audience (e.g., time-saving workflows, automation ideas, comparisons to existing tools, or before/after use cases).\n\nReturn your output in **valid JSON** using this exact format:\n\n{\n \"verdict\": \"true or false\",\n \"tools\": [\"list\", \"of\", \"tools\", \"or\", \"resources\"],\n \"stepByStep\": \"Detailed, practical instructions on how to start using the tool(s), written as if guiding a beginner.\",\n \"suggestion\": \"Comprehensive, in-depth suggestion on how to make this content more interesting and useful to a productivity and tech audience.\",\n \"searchPrompt\": \"A short search prompt we'll use to look up the main service. Write it like '{toolName}, the {typeOfTool}'\"\n}\n\nRules and clarifications:\n\n- If the verdict is \"false\", leave all other fields (`tools`, `stepByStep`, `suggestion`, `searchPrompt`) as empty values (e.g., empty list or empty string, as appropriate).\n- Only answer based on the information in the transcript plus reasonable assumptions about how such tools usually work.\n- Do not include any explanation outside of the JSON. The response must be **only** the JSON object.\n\n"
},
{
"content": "={\"transcript\":\"{{ $json.text }}\"}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.6
},
{
"id": "01e1c1ab-cd1f-4179-a01e-907f19dc3355",
"name": " Research with Perplexity",
"type": "n8n-nodes-base.httpRequest",
"position": [
1488,
32
],
"parameters": {
"url": "https://api.perplexity.ai/chat/completions",
"method": "POST",
"options": {
"redirect": {
"redirect": {
"maxRedirects": 35
}
}
},
"jsonBody": "={\n \"model\": \"sonar-pro\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"Be precise and concise.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Tell me four interesting (peculiar) things about {{ $json.message.content.searchPrompt }}\"\n }\n ]\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "5666dda1-faee-4150-afc0-6ed4fde88120",
"name": " Generate Final Script",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1712,
32
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"options": {
"temperature": 0.9
},
"messages": {
"values": [
{
"role": "system",
"content": "You are a helpful, intelligent writing assistant."
},
{
"content": "I run a productivity & tech-focused YouTube channel.\n\nMy editors would like to make a new video. They've found an interesting tool or technology, compiled a step-by-step guide on how to use it, done some searching on the Internet to find some interesting things about it, wrote a rough draft about it, and we also had our chief editor write concrete suggestions for how to make the content better.\n\nYour task is to take as input all of these things, and then write a new, high quality script for us to feature.\n\nReturn your output in JSON using this format:\n\n{\n \"script\": \"Your script goes here (~100 words).\"\n}\n\nRules:\n\n\t* Use a casual, spartan tone of voice. No frills. Be straightforward, and don't use poetic language.\n\t* The video is for a productivity & tech audience on YouTube (people who like tools, automations, and workflows).\n\t* End the script with a call to action like \"Want {thing}? Just comment {keyword} and I\u2019ll reply with the link.\""
},
{
"role": "assistant",
"content": "={\n \"script\": \"There\u2019s a new AI text-to-speech tool that\u2019s basically on par with ElevenLabs\u2014but it\u2019s free. You get over 400 voices, support for 60 languages, and it\u2019s completely unlimited with no signup required. Here\u2019s how it works: go to the website, paste your script, choose a voice you like, and click generate. You\u2019ll get a clean audio file you can drop straight into your YouTube videos, shorts, tutorials, or even course content. If you want to test it for your own channel, just comment 'speech' and I\u2019ll reply with the link.\"\n}"
},
{
"content": "={\n \"toolNames\":\"{{ $(' Filter + Generate Script Ideas').item.json.message.content.tools.join() }}\",\n \"roughDraftScript\":\"{{ $(' Transcribe Reel Audio').all().first().json.text }}\",\n \"perplexityOutput\": \"{{ $json.choices[0].message.content }}\",\n \"stepByStepGuide\":\"{{ $(' Filter + Generate Script Ideas').item.json.message.content.stepByStep }}\",\n \"suggestionsForImprovement\":\"{{ $(' Filter + Generate Script Ideas').item.json.message.content.suggestion }}\"\n}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.6
},
{
"id": "a110e985-e60b-43d0-8084-8b48d4a9f61f",
"name": " Update Sheet with Script",
"type": "n8n-nodes-base.googleSheets",
"position": [
2064,
32
],
"parameters": {
"columns": {
"value": {
"id": "={{ $(' Add New Reels to Sheet').item.json.id }}",
"newTranscript": "={{ $json.message.content.script }}",
"scrapedTranscript": "={{ $(' Transcribe Reel Audio').item.json.text }}"
},
"schema": [
{
"id": "timestamp",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "shortCode",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "shortCode",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "caption",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "caption",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "hashtags",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "hashtags",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "url",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "commentsCount",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "commentsCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "firstComment",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "firstComment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "displayUrl",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "displayUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "videoUrl",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "videoUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "likesCount",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "likesCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "videoViewCount",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "videoViewCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "videoPlayCount",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "videoPlayCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "username",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "username",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "videoDuration",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "videoDuration",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "scrapedTranscript",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "scrapedTranscript",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "newTranscript",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "newTranscript",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "inputUrl",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "inputUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "type",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "mentions",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "mentions",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "latestComments",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "latestComments",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "dimensionsHeight",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "dimensionsHeight",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "dimensionsWidth",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "dimensionsWidth",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "images",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "images",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "alt",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "alt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "childPosts",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "childPosts",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ownerFullName",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "ownerFullName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ownerUsername",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "ownerUsername",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ownerId",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "ownerId",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "productType",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "productType",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "isSponsored",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "isSponsored",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "musicInfo",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "musicInfo",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
]
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1e1yIubmEXzzUrSCurXdXM2H6ioN2GEb1aOX5UBNNyik/edit#gid=0",
"cachedResultName": "Reels"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "Instagram Reels"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "104fd921-e773-45b6-bfd1-6c76fb5aa3eb",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-656,
-880
],
"parameters": {
"width": 832,
"height": 864,
"content": "# \ud83c\udfa5 InstaReel Script Builder\n\n**Turn viral Reels into your next script automatically!**\n\n### \ud83d\udc64 Who is this for?\nPerfect for content creators, social media managers, and agencies who want to:\n* Overcome writer's block by analyzing what's already working.\n* Scale their content production without hiring a research team.\n* Rapidly repurpose viral trends into unique, original scripts.\n\n### \ud83d\ude80 What does it do?\nThis workflow acts as your personal content researcher and writer. It grabs viral reels, analyzes their structure, researches the topic to add depth, and writes a fresh, ready-to-film script for you\u2014all on autopilot.\n\n### \u2699\ufe0f How it works\n1. **Scrapes** Instagram Reels data using Apify.\n2. **Checks** your Google Sheet to filter out duplicates (so you don't redo work).\n3. **Downloads & Transcribes** the audio from the video.\n4. **Researches** the topic using Perplexity to add current facts and value.\n5. **Generates** a unique script using AI, modeled on the viral hook/structure.\n6. **Updates** your Google Sheet with the final script, ready for you to film.\n\n### \ud83d\udee0\ufe0f Setup & Requirements\n* **Apify Account:** To run the Instagram scraper.\n* **Google Sheet:** A sheet with headers to store inputs (URLs) and outputs (Scripts).\n* **Perplexity API:** Required for the \"Research\" step.\n* **OpenAI (or similar):** For the transcription (Whisper) and script writing (GPT).\n\n### \ud83d\udca1 Tip\nCheck the **Limit** node (currently set to verify flow) to control how many reels you process per run. It's best to start small while testing!\n\nHappy building.\n\n- Neal J. , CTK Industries\nhttps://www.linkedin.com/in/nealjmcleod/"
},
"typeVersion": 1
}
],
"connections": {
"Limit": {
"main": [
[
{
"node": " Check Existing Entries",
"type": "main",
"index": 0
},
{
"node": " Remove Duplicate Reels",
"type": "main",
"index": 1
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": " Run Apify Scraper",
"type": "main",
"index": 0
}
]
]
},
" Run Apify Scraper": {
"main": [
[
{
"node": "Limit",
"type": "main",
"index": 0
}
]
]
},
" Download Reel Video": {
"main": [
[
{
"node": " Transcribe Reel Audio",
"type": "main",
"index": 0
}
]
]
},
" Generate Final Script": {
"main": [
[
{
"node": " Update Sheet with Script",
"type": "main",
"index": 0
}
]
]
},
" Transcribe Reel Audio": {
"main": [
[
{
"node": " Filter + Generate Script Ideas",
"type": "main",
"index": 0
}
]
]
},
" Add New Reels to Sheet": {
"main": [
[
{
"node": " Download Reel Video",
"type": "main",
"index": 0
}
]
]
},
" Check Existing Entries": {
"main": [
[
{
"node": " Remove Duplicate Reels",
"type": "main",
"index": 0
}
]
]
},
" Remove Duplicate Reels": {
"main": [
[
{
"node": " Add New Reels to Sheet",
"type": "main",
"index": 0
}
]
]
},
" Research with Perplexity": {
"main": [
[
{
"node": " Generate Final Script",
"type": "main",
"index": 0
}
]
]
},
" Filter + Generate Script Ideas": {
"main": [
[
{
"node": " Research with Perplexity",
"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.
googleSheetsOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Please guys, stop staring at a blank page. This workflow turns viral Instagram trends into original scripts for your channel automatically.
Source: https://n8n.io/workflows/12045/ — 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.
AI Institutional Stock Valuation Engine with Risk Scoring & Scenario Targets
Overview This is a production-grade, fully automated stock analysis system built entirely in n8n. It combines institutional-level financial analysis, dual AI model consensus, and a self-improving back
This automation is a complete end-to-end system designed to find, qualify, and contact B2B leads — fully automated and powered by AI. Searches for target companies on LinkedIn via Ghost Genius API, us
This comprehensive n8n automation template orchestrates a complete end-to-end workflow for generating engaging short-form Point-of-View (POV) style videos using multiple AI services and automatically
A professional AI equity analysis automation built on n8n that transforms structured financial data and real-time news into disciplined, risk-adjusted price targets and actionable BUY/HOLD/SELL signal