This workflow corresponds to n8n.io template #7479 — we link there as the canonical source.
This workflow follows the Chat Trigger → 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": "O6pQd3qfUMhHS7ci",
"name": "Turn YouTube Comments into Content Ideas using n8n & OpenAI",
"tags": [],
"nodes": [
{
"id": "948c7a16-512a-474b-9ca6-efa0ee91b3b4",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-1600,
112
],
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "4393bab1-2d0e-4c31-a399-e810a5108489",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-352,
112
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "d5aeda35-32bf-4036-a4aa-21f11eb68da4",
"name": "Transforming a researched YouTube video topic into a compelling video concept",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
224,
-16
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are a helpful content creator assistant. \nTopic: {{ $json.choices[0].message.content.topic }}\nResearch: {{ $json.choices[0].message.content.research_overview }}"
},
{
"role": "system",
"content": "=Overview\n\nYou are an AI agent tasked with transforming a researched YouTube video topic into a compelling video concept. Your responsibilities include crafting a high-engagement hook and structuring a clear outline based on provided research.\n\nContext\n\nYou will receive a video topic and a 300\u2013500 word research overview generated by a previous agent.\n\nYour role is to turn this into a viewer-grabbing hook and a logically sequenced outline for a potential YouTube video.\n\nThe channel could cover any niche (technology, business, lifestyle, education, etc.).\n\nThe target audience is people interested in the niche who want actionable insights, practical tips, or strategies.\n\nThe tone should be curiosity-driven, engaging, and structured while remaining actionable.\n\nYou are not responsible for scripting, only ideation and structuring.\n\nInstructions\n\nRead the topic and research_overview.\n\nGenerate a one-sentence hook designed to immediately capture interest.\n\nThe hook should raise curiosity, pose a bold question, or present a powerful benefit or surprise.\n\nIt should resonate with viewers interested in the topic or niche.\n\nCreate a clear outline (3\u20136 bullet points) that logically sequences the video\u2019s content.\n\nThe outline should align with the research and the channel\u2019s focus.\n\nBegin with a compelling context or insight, develop through practical or strategic steps, and end with a takeaway or next step.\n\nOutput your results in JSON format with two keys: hook and outline.\n\nTools\n\nNone (uses only provided data)\n\nExamples\n\nInput:\n\n{\n \"topic\": \"How to Optimize Your Morning Routine for Maximum Productivity\",\n \"research_overview\": \"Research shows that starting your day with specific routines like exercise, planning, and focused work blocks can dramatically increase daily output and reduce stress...\"\n}\n\n\nOutput:\n\n{\n \"hook\": \"What if you could double your productivity before lunch with just a few simple morning tweaks?\",\n \"outline\": [\n \"Why most morning routines fail to boost productivity\",\n \"Key habits that top performers use every day\",\n \"Step-by-step structure for an optimized morning\",\n \"Tips for maintaining energy and focus throughout the day\",\n \"Common mistakes to avoid when creating your routine\",\n \"How to adjust and personalize your routine for lasting results\"\n ]\n}\n\nSOP (Standard Operating Procedure)\n\nIngest the topic and research_overview.\n\nIdentify the most outcome-driven, intriguing, or curiosity-provoking angle.\n\nWrite a hook that grabs viewer attention within 5\u201310 seconds.\n\nBreak the research down into 3\u20136 clear, logically ordered outline points that deliver actionable or insightful value.\n\nOutput in strict JSON format with the keys: hook and outline.\n\nFinal Notes\n\nAvoid fluff or generic intros\u2014each outline point should provide substance or actionable advice.\n\nThe hook should clearly communicate the value or intrigue of the video.\n\nMaintain viewer retention by front-loading curiosity and delivering value with each section."
}
]
},
"simplify": false,
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "7d33bf3b-1f8b-4ff2-85d0-497e6451747b",
"name": "Extracting content topics from YouTube comments",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-128,
-16
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are a helpful research assistant. \n\nYouTube comment to analyze: {{ $json.text }}"
},
{
"role": "system",
"content": "=# Overview \nYou are an AI agent specialized in extracting content-worthy topics from YouTube comments and conducting real-time research to support video ideation.\n\n## Objectives: \nBegin by analyzing the YouTube comment to identify a relevant, engaging, and curiosity-driven topic. Once the topic is extracted, use the Tavily tool to perform real-time research based on that topic.\n\nBased on your findings, return a structured JSON object that includes:\n- A clear and compelling video topic derived from the comment \n- A 300\u2013500 word research overview that: \n - Expands on the topic with current, factual information \n - Includes recent trends, statistics, and real-world examples (citing sources like \u201caccording to [source]\u201d) \n - Maintains an educational, unbiased, and informative tone \n - Highlights why the topic is timely, interesting, or useful for a broad audience \n\n## Output Instructions: \n- Your ONLY output should be a JSON object with the keys: `topic` and `research_overview`. \n- Do not include any setup text, notes, or formatting outside of the JSON object. \n- Ensure the research overview is between 300\u2013500 words and tightly aligned with the topic. \n\n## Example Workflow: \n1) Receive a YouTube comment (e.g., \u201cEveryone\u2019s ditching Ozempic for berberine. Is that stuff legit?\u201d) \n2) Extract the core topic implied by the comment (e.g., \u201cBerberine vs Ozempic for weight loss\u201d) \n3) Use Tavily to search for up-to-date and credible information about the topic \n4) Write a 300\u2013500 word summary that outlines background, recent developments, and key takeaways \n5) Return the result in this exact format: \n```json\n{\n \"topic\": \"Berberine vs Ozempic: Why This Natural Supplement is Gaining Popularity in Weight Loss Conversations\",\n \"research_overview\": \"Berberine, a compound found in several plants, has recently gained traction as a potential natural alternative to Ozempic, a GLP-1 receptor agonist. As of 2025, TikTok and Reddit communities have seen a surge...\"\n}"
}
]
},
"simplify": false,
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "9fb474be-be58-4ebb-83e9-91277548f646",
"name": "Analyzing YouTube comments",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-1152,
112
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are a helpful, intelligent content writing assistant. \n\nPlease review the following comment.\n\nComment: {{ $json.text }}"
},
{
"role": "system",
"content": "=Overview\n\nYou are an AI agent responsible for analyzing YouTube comments and determining whether they contain a relevant idea or inspiration for new content on a YouTube channel.\n\nContext\n\nThe channel focuses on a specific niche (business, tech, lifestyle, education, etc.).\n\nThe goal is to identify comments that could lead to tutorials, explanations, walkthroughs, tips, or deeper dives into topics relevant to the channel.\n\nComments may relate to questions, suggestions, feedback, or curiosity about the channel\u2019s content or area of expertise.\n\nInstructions\n\nRead the YouTube comment provided via input.\n\nEvaluate whether the comment contains one or more of the following types of content opportunities:\n\nA direct or implied suggestion for a tutorial, guide, or walkthrough related to the niche.\n\nA question about how to do something, solve a problem, or use a tool/service in the niche.\n\nFeedback or confusion that highlights areas where further explanation would help the audience.\n\nCuriosity about applying techniques, tools, or strategies within the niche.\n\nRequests or suggestions related to topics the channel regularly covers.\n\nOutput only:\n\n\"Yes\" \u2192 if there is a viable content idea.\n\n\"No\" \u2192 if the comment does not suggest a topic that could be turned into a video.\n\nTools\n\nInput: {{ $json.text }}\n\nExamples\n\nInput: \"Can you show how to optimize Instagram posts for more engagement?\"\nOutput: Yes\n\nInput: \"How did you start your podcast and grow it so fast? Would love that story.\"\nOutput: Yes\n\nInput: \"Still confused about setting up Google Analytics for my website.\"\nOutput: Yes\n\nInput: \"Love your energy! \ud83d\udd25\"\nOutput: No\n\nInput: \"Subscribed because this is interesting!\"\nOutput: No\n\nInput: \"Which camera is better for travel vlogs?\"\nOutput: Yes\n\nSOP (Standard Operating Procedure)\n\nParse the YouTube comment from {{ $json.text }}.\n\nReview the content against the relevance checklist under Instructions.\n\nAssess whether the comment aligns with the channel\u2019s core topics and areas of expertise.\n\nOutput \"Yes\" or \"No\" based on the presence or absence of a content opportunity.\n\nFinal Notes\n\nEmphasize relevance to the channel\u2019s niche and audience.\n\nAvoid tagging generic compliments or off-topic comments as relevant.\n\nWhen in doubt, favor inclusion if there\u2019s a clear path from the comment to a teachable, engaging, or high-leverage video topic."
}
]
},
"simplify": false,
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "6ede4c28-46ec-4447-9dae-6691a8388534",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2560,
-320
],
"parameters": {
"width": 720,
"height": 2224,
"content": "## Try It Out!\n### This n8n template demonstrates how to turn **YouTube comments into researched content ideas with hooks and outlines**. \n\nUse cases are many: repurpose YouTube discussions into new videos, blog posts, or social media content, while keeping all your ideas stored and enriched in Google Sheets. \n\n### How it works\n* Paste a YouTube URL into the chat trigger. \n* Apify scrapes the video\u2019s comments. \n* OpenAI filters comments to find which ones are viable content ideas. \n* Google Sheets stores raw comments (avoiding duplicates). \n* For each \u201cYes\u201d comment, Tavily researches the topic and generates a research overview. \n* OpenAI then transforms that into a **hook + outline**. \n* The same Google Sheets row is updated with the new data. \n\n### How to use\n* Activate the workflow. \n* Paste a YouTube URL into the chat input. \n* Watch it run: scrape \u2192 filter \u2192 save \u2192 research \u2192 generate hook/outline \u2192 update Sheets. \n\n### Requirements\n* n8n instance (self-hosted or Cloud) \n* Google Sheets with edit access \n* API keys: \n * Apify (for scraping YouTube comments) \n * OpenAI (for analysis + generation) \n * Tavily (for web research) \n\n### Need Help?\nJoin the [Discord](https://discord.com/invite/XPKeKXeB7d) or ask in the [Forum](https://community.n8n.io/)! \n\nHappy Building! \n"
},
"typeVersion": 1
},
{
"id": "b0106c97-aa5e-4206-8c98-e015d5832ef9",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-864,
-192
],
"parameters": {
"color": 7,
"width": 224,
"height": 464,
"content": "## 4. Filter \u201cYes\u201d Comments\n \n\nThis node checks the AI output. \nOnly comments marked **\u201cYes\u201d** continue through the workflow. \nComments marked **\u201cNo\u201d** stop here.\n"
},
"typeVersion": 1
},
{
"id": "10efbc19-01ef-4632-b72d-3d3c0e414ff0",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
176,
-256
],
"parameters": {
"color": 7,
"width": 336,
"height": 400,
"content": "## 8. Generate Hook & Outline (OpenAI)\n \nThis node transforms the researched topic into a compelling **hook** and detailed **outline**. \nThe result is production-ready material for your next piece of content.\n"
},
"typeVersion": 1
},
{
"id": "0580011e-aeeb-49db-b4c5-9ada9a39e8cb",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
384,
-224
],
"parameters": {
"color": 7,
"width": 480,
"height": 496,
"content": "## 9. Update Google Sheets with Enriched Data\n[Read more about the Google Sheets node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets)\n\nFinally, the workflow updates the same Google Sheets row with: \n* `topic` \n* `research` \n* `hook` \n* `outline` \n\nThis way, each comment and its enriched output stay neatly in one row.\n"
},
"typeVersion": 1
},
{
"id": "998a0c93-5d05-4fa0-950d-193d83248b6e",
"name": "Sticky Note14",
"type": "n8n-nodes-base.stickyNote",
"position": [
-208,
-416
],
"parameters": {
"color": 7,
"width": 384,
"height": 560,
"content": "## 7. Research Topics with Tavily + OpenAI\n \nFor each saved comment, OpenAI works together with **Tavily** to generate: \n* A concise **topic** \n* A 300\u2013500 word **research overview** \n\nThis ensures your content ideas are backed by real, up-to-date information.\n"
},
"typeVersion": 1
},
{
"id": "7a77ad8f-22b1-4d3a-89ef-eea00921c27f",
"name": "Sticky Note17",
"type": "n8n-nodes-base.stickyNote",
"position": [
-640,
-192
],
"parameters": {
"color": 7,
"width": 208,
"height": 464,
"content": "## 5. Save Raw Comments to Google Sheets\n[Read more about the Google Sheets node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets)\n\nAll valid comments are appended to your Google Sheet. \n* Prevents duplicates using `id` as the key. \n* Stores comment text, author, likes, replies, and the Yes/No flag.\n"
},
"typeVersion": 1
},
{
"id": "800ebe8b-33c3-49d3-8605-c36fae675daf",
"name": "Sticky Note18",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1216,
-192
],
"parameters": {
"color": 7,
"width": 352,
"height": 464,
"content": "## 3. Analyze Comments with OpenAI\n \nThis node uses **GPT-4.1-mini** to evaluate whether a YouTube comment is a viable content idea. \nIt outputs only **\u201cYes\u201d or \u201cNo\u201d**, keeping the logic simple and consistent.\n"
},
"typeVersion": 1
},
{
"id": "f6438464-1df0-4deb-9cf5-73da646d03dc",
"name": "Sticky Note19",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1456,
-192
],
"parameters": {
"color": 7,
"height": 464,
"content": " ## 2. Scrape YouTube Comments (Apify)\n[Read more about the HTTP Request node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest)\n\nThis node calls **Apify\u2019s YouTube Comments Scraper** API. \nIt collects raw comment data (`id`, `text`, `author`, `likes`, `replies`, etc.) from the video and passes them to the next step.\n"
},
"typeVersion": 1
},
{
"id": "440653cc-4574-49fa-9781-a392ef965588",
"name": "Sticky Note20",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1728,
-192
],
"parameters": {
"color": 7,
"width": 336,
"height": 464,
"content": "## 1. Chat Trigger \u2013 Paste YouTube URL\n \nThis node starts the workflow when you paste a YouTube video URL into the chat input. \nThe URL is passed downstream as `{{ $json.chatInput }}` for scraping.\n"
},
"typeVersion": 1
},
{
"id": "a231b718-5639-4a76-96ee-c8efcd36115a",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-400,
-192
],
"parameters": {
"color": 7,
"width": 192,
"height": 464,
"content": "## 6. Split in Batches (Loop)\n[Read more about the Split in Batches node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches)\n\nThis node processes comments **one by one** to ensure each gets researched and enriched individually before updating Sheets.\n"
},
"typeVersion": 1
},
{
"id": "264aeb47-bb17-40a0-933f-d242e2876a9a",
"name": "Fetch YouTube Comments (Apify)",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1376,
112
],
"parameters": {
"url": "https://api.apify.com/v2/acts/mExYO4A2k9976zMfA/run-sync-get-dataset-items",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"jsonBody": "={\n \"customMapFunction\": \"(object) => { return {...object} }\",\n \"maxItems\": 100,\n \"sort\": \"top\",\n \"startUrls\": [\n \"{{ $json.chatInput }}\"\n ]\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer <token>"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "20b50e9c-e214-48b6-8b6e-8e7feb15aa23",
"name": "Comment Idea Filter",
"type": "n8n-nodes-base.filter",
"position": [
-800,
112
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b8035c7a-4a27-48b6-8632-93120cdf4b32",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.choices[0].message.content.output }}",
"rightValue": "Yes"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "d29bedca-fec0-4f02-88e0-753923f184f4",
"name": "Research Context (Tavily)",
"type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
"position": [
-64,
208
],
"parameters": {
"url": "https://api.tavily.com/search",
"method": "POST",
"jsonBody": "{\n \"query\": \"{searchTerm}\",\n \"topic\": \"general\",\n \"search_depth\": \"advanced\",\n \"chunks_per_source\": 3,\n \"max_results\": 1,\n \"time_range\": null,\n \"days\": 7,\n \"include_answer\": true,\n \"include_raw_content\": false,\n \"include_images\": false,\n \"include_image_descriptions\": false,\n \"include_domains\": [],\n \"exclude_domains\": []\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"toolDescription": "Use this tool to search the web. ",
"parametersHeaders": {
"values": [
{
"name": "Authorization",
"value": "Bearer <token>",
"valueProvider": "fieldValue"
},
{
"name": "Content-Type",
"value": "application/json",
"valueProvider": "fieldValue"
}
]
},
"placeholderDefinitions": {
"values": [
{
"name": "searchTerm",
"description": "what the user is searching for information on. "
}
]
}
},
"typeVersion": 1.1
},
{
"id": "eb17c7b2-d418-4d7d-aa09-0345d8fda02f",
"name": "Store Raw Comments",
"type": "n8n-nodes-base.googleSheets",
"position": [
-576,
112
],
"parameters": {
"columns": {
"value": {
"id": "={{ $('Fetch YouTube Comments (Apify)').item.json.id }}",
"text": "={{ $('Fetch YouTube Comments (Apify)').item.json.text }}",
"type": "={{ $('Fetch YouTube Comments (Apify)').item.json.type }}",
"author": "={{ $('Fetch YouTube Comments (Apify)').item.json.author.name }}",
"likeCount": "={{ $('Fetch YouTube Comments (Apify)').item.json.likeCount }}",
"replyCount": "={{ $('Fetch YouTube Comments (Apify)').item.json.replyCount }}",
"contentIdea": "={{ $json.choices[0].message.content.output }}",
"publishedTime": "={{ $('Fetch YouTube Comments (Apify)').item.json.publishedTime }}"
},
"schema": [
{
"id": "type",
"type": "string",
"display": true,
"required": false,
"displayName": "type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "text",
"type": "string",
"display": true,
"required": false,
"displayName": "text",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "likeCount",
"type": "string",
"display": true,
"required": false,
"displayName": "likeCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "replyCount",
"type": "string",
"display": true,
"required": false,
"displayName": "replyCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "publishedTime",
"type": "string",
"display": true,
"required": false,
"displayName": "publishedTime",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "author",
"type": "string",
"display": true,
"required": false,
"displayName": "author",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "contentIdea",
"type": "string",
"display": true,
"required": false,
"displayName": "contentIdea",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 647212516,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JoTrVYK7eEbh1Nx30B4s7u0urye_Sce5Zw2KFKolHlM/edit#gid=647212516",
"cachedResultName": "dataset_youtube-comments-scraper_2025-05-04_22-04-27-288"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1JoTrVYK7eEbh1Nx30B4s7u0urye_Sce5Zw2KFKolHlM",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JoTrVYK7eEbh1Nx30B4s7u0urye_Sce5Zw2KFKolHlM/edit?usp=drivesdk",
"cachedResultName": "YouTube Comments"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "c68b3924-fb3e-45d9-9d0c-bff76cc50521",
"name": "Update Idea with Enriched Data",
"type": "n8n-nodes-base.googleSheets",
"position": [
576,
112
],
"parameters": {
"columns": {
"value": {
"id": "={{ $('Loop Over Items').item.json.id }}",
"hook": "={{ $json.choices[0].message.content.hook }}",
"topic": "={{ $('Extracting content topics from YouTube comments').item.json.choices[0].message.content.topic }}",
"outline": "={{ $json.choices[0].message.content.outline }}",
"research": "={{ $('Extracting content topics from YouTube comments').item.json.choices[0].message.content.research_overview }}"
},
"schema": [
{
"id": "type",
"type": "string",
"display": true,
"required": false,
"displayName": "type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "text",
"type": "string",
"display": true,
"required": false,
"displayName": "text",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "likeCount",
"type": "string",
"display": true,
"required": false,
"displayName": "likeCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "replyCount",
"type": "string",
"display": true,
"required": false,
"displayName": "replyCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "publishedTime",
"type": "string",
"display": true,
"required": false,
"displayName": "publishedTime",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "author",
"type": "string",
"display": true,
"required": false,
"displayName": "author",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "contentIdea",
"type": "string",
"display": true,
"required": false,
"displayName": "contentIdea",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "topic",
"type": "string",
"display": true,
"required": false,
"displayName": "topic",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "research",
"type": "string",
"display": true,
"required": false,
"displayName": "research",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "hook",
"type": "string",
"display": true,
"required": false,
"displayName": "hook",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "outline",
"type": "string",
"display": true,
"required": false,
"displayName": "outline",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 647212516,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JoTrVYK7eEbh1Nx30B4s7u0urye_Sce5Zw2KFKolHlM/edit#gid=647212516",
"cachedResultName": "dataset_youtube-comments-scraper_2025-05-04_22-04-27-288"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1JoTrVYK7eEbh1Nx30B4s7u0urye_Sce5Zw2KFKolHlM",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JoTrVYK7eEbh1Nx30B4s7u0urye_Sce5Zw2KFKolHlM/edit?usp=drivesdk",
"cachedResultName": "YouTube Comments"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "32ef026e-0ecf-41d2-b9d8-ca92ad6f80fc",
"connections": {
"Loop Over Items": {
"main": [
[],
[
{
"node": "Extracting content topics from YouTube comments",
"type": "main",
"index": 0
}
]
]
},
"Store Raw Comments": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Comment Idea Filter": {
"main": [
[
{
"node": "Store Raw Comments",
"type": "main",
"index": 0
}
]
]
},
"Research Context (Tavily)": {
"ai_tool": [
[
{
"node": "Extracting content topics from YouTube comments",
"type": "ai_tool",
"index": 0
}
]
]
},
"Analyzing YouTube comments": {
"main": [
[
{
"node": "Comment Idea Filter",
"type": "main",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "Fetch YouTube Comments (Apify)",
"type": "main",
"index": 0
}
]
]
},
"Fetch YouTube Comments (Apify)": {
"main": [
[
{
"node": "Analyzing YouTube comments",
"type": "main",
"index": 0
}
]
]
},
"Update Idea with Enriched Data": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Extracting content topics from YouTube comments": {
"main": [
[
{
"node": "Transforming a researched YouTube video topic into a compelling video concept",
"type": "main",
"index": 0
}
]
]
},
"Transforming a researched YouTube video topic into a compelling video concept": {
"main": [
[
{
"node": "Update Idea with Enriched Data",
"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
This n8n template demonstrates how to turn raw YouTube comments into research-backed content ideas complete with hooks and outlines.
Source: https://n8n.io/workflows/7479/ — 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.
🚨 LinkedIn search is BROKEN.
User Input: The user pastes a job description or ideal candidate specifications into the workflow. Boolean Search String Generation: OpenAI processes the input and generates a precise LinkedIn Boolean
🎬 Veo3 Instagram Reel Generator – AI-Powered Ad Creation in Minutes
The Best Linkedin Posting System. Uses httpRequest, lmChatOpenAi, agent, chatTrigger. Chat trigger; 49 nodes.
This workflow allows users to ask portfolio-related questions in a simple format (). It validates the input, fetches client data and holdings from Google Sheets, retrieves live market prices via API,