N
n8n Store
Workflow Market
Turn YouTube Comments into Content Ideas using n8n & OpenAI

Turn YouTube Comments into Content Ideas using n8n & OpenAI

by muhammad-bello0 views

描述

分类

🤖 AI & Machine Learning

使用的节点

n8n-nodes-base.filtern8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNote
价格免费
浏览量0
最后更新11/28/2025
workflow.json
{
  "id": "O6pQd3qfUMhHS7ci",
  "meta": {
    "instanceId": "95b1fc540e57f3232c3b0b966fa595c70dc032e459d328517ec3e03eb51cc3b6"
  },
  "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
      ],
      "webhookId": "a3b75c51-c5a8-44cc-b116-8ac9ac5b67bd",
      "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–500 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–6 bullet points) that logically sequences the video’s content.\n\nThe outline should align with the research and the channel’s 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–10 seconds.\n\nBreak the research down into 3–6 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—each 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": {
          "id": "DFpaJVvawCZEzGk6",
          "name": "n8n free OpenAI API credits"
        }
      },
      "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–500 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 “according to [source]”)  \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–500 words and tightly aligned with the topic.  \n\n## Example Workflow:  \n1) Receive a YouTube comment (e.g., “Everyone’s ditching Ozempic for berberine. Is that stuff legit?”)  \n2) Extract the core topic implied by the comment (e.g., “Berberine vs Ozempic for weight loss”)  \n3) Use Tavily to search for up-to-date and credible information about the topic  \n4) Write a 300–500 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": {
          "id": "DFpaJVvawCZEzGk6",
          "name": "n8n free OpenAI API credits"
        }
      },
      "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’s 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\" → if there is a viable content idea.\n\n\"No\" → 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! 🔥\"\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’s 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’s niche and audience.\n\nAvoid tagging generic compliments or off-topic comments as relevant.\n\nWhen in doubt, favor inclusion if there’s a clear path from the comment to a teachable, engaging, or high-leverage video topic."
            }
          ]
        },
        "simplify": false,
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "DFpaJVvawCZEzGk6",
          "name": "n8n free OpenAI API credits"
        }
      },
      "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’s comments.  \n* OpenAI filters comments to find which ones are viable content ideas.  \n* Google Sheets stores raw comments (avoiding duplicates).  \n* For each “Yes” 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 → filter → save → research → generate hook/outline → 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 “Yes” Comments\n \n\nThis node checks the AI output.  \nOnly comments marked **“Yes”** continue through the workflow.  \nComments marked **“No”** 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–500 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 **“Yes” or “No”**, 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’s 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 – 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": {
          "id": "jcASc7IndRLnzZ1A",
          "name": "Google Sheets account"
        }
      },
      "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": {
          "id": "jcASc7IndRLnzZ1A",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    }
  ],
  "active": false,
  "pinData": {},
  "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
          }
        ]
      ]
    }
  }
}

相关工作流