{"workflow":{"id":12509,"name":"Generate YouTube content ideas with Firecrawl, OpenAI and Notion","views":68,"recentViews":0,"totalViews":68,"createdAt":"2026-01-06T06:53:18.048Z","description":"This workflow acts as an autonomous **Chief Solution Officer**, automating the process of deep market research. Instead of simply tracking video views, it scrapes deep into YouTube data—including descriptions and top 20 comments—to identify the real \"Decision Confusion\" and \"Operational Pain Points\" of your target audience.\n\nBy analyzing what competitors are missing and what their audience is actually complaining about, it generates five data-backed, strategic content ideas that focus on high-level business logic rather than generic advice.\n\n**Use cases are many:**\n\n* **Competitor Gap Analysis:** Identify specific topics your niche is ignoring but the audience is begging for.\n* **Content Strategy Automation:** Shift your output from basic tutorials to \"System-Thinking\" content that attracts decision-makers.\n* **Market Voice Extraction:** Capture the literal \"voice of the customer\" from thousands of comments without manual reading.\n\n**Good to know**\n\n* **Strategic Persona:** The AI Agent uses a \"Sage + Ruler\" archetype to ensure professional, objective, and high-value output.\n* **Deep Scraping:** Powered by Firecrawl, it bypasses basic metadata to read actual audience sentiment in the comments section.\n* **Sentence Case:** All outputs and headers follow n8n’s preferred capitalization standards.\n\n**How it works**\n\n1. **Targeting:** You define your niche or search keyword in the initial configuration node.\n2. **Data Extraction:** Firecrawl searches YouTube and scrapes the most relevant video details and comment threads.\n3. **AI Logic:** The OpenAI node analyzes the \"Audience Voice\" to find patterns of frustration and unmet needs.\n4. **Strategizing:** It converts these insights into 5 actionable content briefs with unique strategic angles.\n5. **Storage:** All insights and content ideas are automatically organized and saved into your Notion workspace.\n\n**Setup steps**\n\n1. **Firecrawl:** Get your API Key from firecrawl.dev and add it to the Header Auth in the HTTP nodes.\n2. **OpenAI:** Connect your OpenAI credentials (GPT-4o recommended for best results).\n3. **Notion:** Connect your Notion account and prepare two databases for \"Insights\" and \"Ideas.\"\n4. **Configuration:** Enter your target keyword in the 'Set Niche' node and run the workflow.\n\n**Requirements**\n\n* Firecrawl API Key\n* OpenAI API Key\n* Notion Integration\n","workflow":{"id":"RxDy1M56m2aYClX0","meta":{"instanceId":"1f826faa33d12b7362b0c0d63923a98a82b012f91cdf857f89bde5ad9e49879f","templateCredsSetupCompleted":true},"name":"Generate YouTube Content Ideas with Firecrawl, OpenAI & Notion","tags":[],"nodes":[{"id":"40fb2709-240f-43b0-a33f-f3e60d1848c8","name":"Set Niche","type":"n8n-nodes-base.set","position":[-4416,-532],"parameters":{"options":{},"assignments":{"assignments":[{"id":"be118a09-c919-47ac-968e-b44fdc6e9bec","name":"query","type":"string","value":"<YOUR_NICHE_OR_KEYWORD>"},{"id":"2717ce3d-62b0-4127-9eb0-3e1f42ece9d4","name":"limit","type":"number","value":10}]}},"typeVersion":3.4},{"id":"11c7bbd8-07ea-4d38-b55a-2477a1a8044a","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-2392,-432],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1","cachedResultName":"gpt-4.1"},"options":{},"responsesApiEnabled":false},"credentials":{"openAiApi":{"id":"credential-id","name":"Sumopod AI"}},"typeVersion":1.3},{"id":"7f24a79e-1d36-40c4-878e-5f87cf595b63","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-2264,-432],"parameters":{"jsonSchemaExample":"{\n  \"analysis\": {\n    \"audienceProfile\": {\n      \"goals\": [\"goal 1\", \"goal 2\", \"goal 3\"],\n      \"needs\": [\"need 1\", \"need 2\", \"need 3\"],\n      \"painPoints\": [\"pain 1\", \"pain 2\", \"pain 3\"],\n      \"challenges\": [\"challenge 1\", \"challenge 2\", \"challenge 3\"]\n    },\n    \"keyInsights\": [\n      \"Insight 1 - supported by specific comments\",\n      \"Insight 2 - supported by engagement patterns\",\n      \"Insight 3 - supported by topic gaps\"\n    ],\n    \"topCommentAnalysis\": {\n      \"mostEngagedTheme\": \"Theme from the most-liked comments\",\n      \"topicGaps\": [\"Gap 1\", \"Gap 2\", \"Gap 3\"]\n    }\n  },\n  \"contentIdeas\": [\n    {\n      \"id\": 1,\n      \"title\": \"Content Idea Title\",\n      \"brief\": \"2-3 sentence brief\",\n      \"angle\": \"1-2 sentence unique angle\",\n      \"whyThisTopic\": \"Connection to audience insights\",\n      \"format\": \"Content format - reasoning\",\n      \"keyPoints\": [\"Point 1\", \"Point 2\", \"Point 3\", \"Point 4\", \"Point 5\"],\n      \"engagementPotential\": \"High/Medium/Low - reasoning\"\n    }\n  ],\n  \"strategy\": {\n    \"overallTheme\": \"General theme of the 5 ideas\",\n    \"publishingOrder\": \"Suggested publication order and reasoning\",\n    \"seriesOpportunity\": \"Potential for a series? How to link them together?\"\n  }\n}"},"typeVersion":1.3},{"id":"34698409-62aa-4b7e-b819-160e33c75265","name":"Loop Over Items","type":"n8n-nodes-base.splitInBatches","position":[-3072,-532],"parameters":{"options":{}},"typeVersion":3},{"id":"93c15cec-cacc-442a-be28-d6da346c1f4d","name":"Aggregate","type":"n8n-nodes-base.aggregate","position":[-928,-532],"parameters":{"options":{},"fieldsToAggregate":{"fieldToAggregate":[{"fieldToAggregate":"id"}]}},"typeVersion":1},{"id":"4daadba4-bc4a-4b22-90b9-12f2f3d8444f","name":"ContentIdeas","type":"n8n-nodes-base.set","position":[-1824,-656],"parameters":{"options":{},"assignments":{"assignments":[{"id":"ad12b694-99ba-4426-9f10-288ebce0b1c9","name":"contentIdeas","type":"array","value":"={{ $('Identify Strategic Gaps').item.json.output.contentIdeas }}"}]}},"typeVersion":3.4},{"id":"4ff16f55-7e13-44d1-bec2-11fe3ca1a006","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-5264,-912],"parameters":{"width":496,"height":544,"content":"## How it works\n\nThis workflow automates market research by identifying what your audience actually wants. It starts by searching for top-performing YouTube videos in your niche using Firecrawl. The system then performs a deep scrape of video descriptions and the top 20 comments to capture raw audience feedback. An AI Strategist analyzes this data to identify \"decision confusion\" and \"operational pain points,\" finally generating 5 data-backed content ideas. All insights are automatically structured and saved into Notion for your editorial team.\n\n## Setup steps\n1. **Firecrawl:** Get your API Key from firecrawl.dev and add it to the Header Auth in the HTTP Request nodes.\n2. **OpenAI:** Connect your OpenAI credentials (GPT-4o is recommended for best reasoning).\n3. **Notion:** Connect your Notion account and ensure you have two databases ready for \"Insights\" and \"Ideas.\"\n4. **Configuration:** Enter your target keyword in the 'Set Niche' node.\n5. **Execution:** Run the workflow to populate your Notion workspace with new strategy ideas.\n"},"typeVersion":1},{"id":"e5d3f751-6b5d-4b6e-b1ae-43433a99a9d5","name":"Search YouTube Videos","type":"n8n-nodes-base.httpRequest","position":[-4192,-532],"parameters":{"url":"https://api.firecrawl.dev/v2/scrape","method":"POST","options":{},"sendBody":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"url","value":"=https://www.youtube.com/results?search_query={{ $json.query.split(' ').join('+') }}"}]},"genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"Firecrawl Auth"}},"typeVersion":4.3},{"id":"b7805e06-4470-47df-b7e6-d80517a0894a","name":"Check Search Status","type":"n8n-nodes-base.if","position":[-3968,-532],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"9f7b19eb-6c5e-412e-97d0-2f0481a2c79d","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $json.success }}","rightValue":true},{"id":"e8daf3c8-2fbd-402d-a73a-34578f621c78","operator":{"type":"number","operation":"equals"},"leftValue":"={{ $json.data.metadata.statusCode }}","rightValue":200}]}},"typeVersion":2.3},{"id":"432fd24a-92a7-475d-aa0a-36da792bf266","name":"Parse Video List","type":"n8n-nodes-base.code","position":[-3744,-532],"parameters":{"jsCode":"const videos = [];\nconst inputItem = $input.first().json;\nconst limit = $('Set Niche').first().json.limit; \n\nif (!inputItem || !inputItem.data || !inputItem.data.markdown) {\n    return [{ json: { error: \"Data Not Found.\" } }];\n}\n\nconst markdown = inputItem.data.markdown;\n\nconst cleanString = (str) => {\n    return str.replace(/\\\\/g, '').trim();\n};\n\nconst parseNumericValue = (value) => {\n    if (!value || value === 'N/A') return 0;\n    const cleanedValue = value.toLowerCase().replace(/ subscribers| views/g, '').trim();\n    const multiplier = cleanedValue.slice(-1);\n    let num = parseFloat(cleanedValue);\n    if (isNaN(num)) return 0;\n    \n    if (multiplier === 'k') {\n        num *= 1000;\n    } else if (multiplier === 'm') {\n        num *= 1000000;\n    } else if (multiplier === 'b') {\n        num *= 1+1234567890;\n    }\n    \n    return num;\n};\n\nconst parseTimeAgo = (timeStr) => {\n    if (!timeStr || timeStr === 'N/A') return 999999;\n    \n    const lowerTime = timeStr.toLowerCase();\n    const match = lowerTime.match(/(\\d+)\\s*(second|minute|hour|day|week|month|year)/);\n    \n    if (!match) return 999999;\n    \n    const value = parseInt(match[1]);\n    const unit = match[2];\n    \n    switch(unit) {\n        case 'second': return value / 86400;\n        case 'minute': return value / 1440;\n        case 'hour': return value / 24;\n        case 'day': return value;\n        case 'week': return value * 7;\n        case 'month': return value * 30;\n        case 'year': return value * 365;\n        default: return 999999;\n    }\n};\n\nconst subscriberData = {};\nconst channelSubscriberRegex = /@([^•]+?)•(\\d+\\.?\\d*[KMB]? subscribers)/g;\nlet subMatch;\nwhile ((subMatch = channelSubscriberRegex.exec(markdown)) !== null) {\n    subscriberData[subMatch[1].trim()] = subMatch[2].trim();\n}\n\nconst videoBlockRegex = new RegExp(\n    /### \\[(.*?)\\]\\((https:\\/\\/www\\.youtube\\.com\\/watch\\?v=[^&]+).*?\\)/.source +\n    /[\\s\\S]*?\\[(.*?)\\]\\((https:\\/\\/www\\.youtube\\.com\\/@([^)]+))\\)/.source +\n    /[\\s\\S]*?(\\d+\\.?\\d*[KMB]? views)(.*?)ago/.source,\n    'g'\n);\n\nconst matches = [...markdown.matchAll(videoBlockRegex)];\n\nfor (const match of matches) {\n    const title = cleanString(match[1]);\n    const url = cleanString(match[2]);\n    const channelName = cleanString(match[3]);\n    const channelHandle = cleanString(match[5]); \n    const viewsRaw = cleanString(match[6]);\n    const timeAgo = cleanString(match[7] + 'ago');\n    \n    const channelSubscriberRaw = subscriberData[channelHandle] || 'N/A';\n    \n    const viewsNumeric = parseNumericValue(viewsRaw);\n    const subscriberNumeric = parseNumericValue(channelSubscriberRaw);\n    const daysAgo = parseTimeAgo(timeAgo);\n    \n    videos.push({\n        title: title,\n        url: url,\n        channelName: channelName,\n        channelHandle: `@${channelHandle}`,\n        channelSubscriber: channelSubscriberRaw,\n        views: viewsRaw,\n        uploadedAgo: timeAgo,\n        like: 'N/A', \n        comment: 'N/A',\n        _viewsNumeric: viewsNumeric,\n        _subscriberNumeric: subscriberNumeric,\n        _daysAgo: daysAgo\n    });\n}\n\nvideos.sort((a, b) => {\n    if (a._daysAgo !== b._daysAgo) {\n        return a._daysAgo - b._daysAgo; \n    }\n    if (b._viewsNumeric !== a._viewsNumeric) {\n        return b._viewsNumeric - a._viewsNumeric;\n    }\n    return b._subscriberNumeric - a._subscriberNumeric;\n});\n\nconst topNVideos = videos.slice(0, limit);\n\nconst finalVideos = topNVideos.map(video => {\n    delete video._viewsNumeric;\n    delete video._subscriberNumeric;\n    delete video._daysAgo;\n    return video;\n});\n\nreturn [{ json: { videos: finalVideos } }];"},"typeVersion":2},{"id":"0f8b256a-409e-4649-8ae3-1e9a80334bb9","name":"Scrape Video Details","type":"n8n-nodes-base.httpRequest","position":[-2848,-656],"parameters":{"url":"https://api.firecrawl.dev/v2/scrape","method":"POST","options":{},"sendBody":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"url","value":"={{ $json.url }}"}]},"genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"Firecrawl Auth"}},"typeVersion":4.3},{"id":"e5a772ed-f6cb-486e-8ddb-489d8d459bb2","name":"Extract Audience Comments","type":"n8n-nodes-base.code","position":[-2624,-656],"parameters":{"jsCode":"const output = {};\nconst inputItem = $input.first().json;\n\nif (!inputItem || !inputItem.data || !inputItem.data.markdown) {\n    return [{ json: { error: \"Markdown data not found in input.\" } }];\n}\n\nconst markdown = inputItem.data.markdown;\n\n\n\nlet channelNameMatch = markdown.match(/\\[([^\\]]+)\\]\\(https:\\/\\/www\\.youtube\\.com\\/@[^\\)]+\\)/);\nif (!channelNameMatch) {\n    channelNameMatch = markdown.match(/\\[([^\\]]+)\\]\\(https:\\/\\/www\\.youtube\\.com\\/channel\\/[^\\)]+\\)/);\n}\noutput.channelName = channelNameMatch ? channelNameMatch[1].trim() : 'N/A';\n\n\nlet viewsMatch = markdown.match(/(\\d+(?:,\\d+)*)\\s+views/);\nif (!viewsMatch) {\n    // Fallback: Try to find views in format like \"722K views\"\n    viewsMatch = markdown.match(/(\\d+(?:\\.\\d+)?[KMB])\\s+views/);\n}\noutput.views = viewsMatch ? viewsMatch[1].trim() : 'N/A';\n\n\nlet likesMatch = markdown.match(/(\\d+(?:\\.\\d+)?[KMB]?)\\s*(?:Share|Dislike)/);\nif (!likesMatch) {\n    likesMatch = markdown.match(/^(\\d+(?:\\.\\d+)?[KMB]?)$/m);\n}\noutput.totalLikes = likesMatch ? likesMatch[1].trim() : 'N/A';\n\nlet descriptionMatch = markdown.match(/Show less\\n\\n([\\s\\S]*?)(?:\\n\\nTimestamps:|\\n\\nHow this was made|\\n\\n\\.\\.\\.more)/i);\nif (!descriptionMatch) {\n    \n    descriptionMatch = markdown.match(/\\d+\\s+views[\\s\\S]*?\\n\\n([\\s\\S]*?)(?:\\n\\nTimestamps:|\\n\\nHow this was made)/i);\n}\n\nlet description = 'N/A';\nif (descriptionMatch) {\n    description = descriptionMatch[1]\n        .replace(/\\n\\n/g, ' ')                      \n        .replace(/\\n/g, ' ')                        \n        .replace(/\\[.*?\\]\\(.*?\\)/g, '')           \n        .replace(/!\\[.*?\\]\\(.*?\\)/g, '')          \n        .replace(/\\s+/g, ' ')                       \n        .replace(/Show lessRead more/g, '')         // Remove UI text\n        .replace(/Show less/g, '')\n        .replace(/Read more/g, '')\n        .replace(/\\.\\.\\.more/g, '')\n        .trim();\n    \n    // Limit description to first 500 characters for cleaner output\n    if (description.length > 500) {\n        description = description.substring(0, 500) + '...';\n    }\n}\n\noutput.description = description;\n\n\nlet urlMatch = markdown.match(/https:\\/\\/www\\.youtube\\.com\\/watch\\?v=([a-zA-Z0-9_-]+)/);\nif (urlMatch) {\n    output.url = `https://www.youtube.com/watch?v=${urlMatch[1]}`;\n} else {\n    output.url = 'N/A';\n}\n\n\n\nconst comments = [];\n\n\n\nconst commentRegex = /!\\[\\]\\((https?:\\/\\/[^\\)]+)\\)\\s*\\n\\n([^\\n]*?)(?:\\n\\n(?:Show lessRead more|Read more|Show less)?)?\\n\\nLike\\s*\\n\\n(\\d+(?:\\.\\d+)?[KMB]?)?\\s*\\n\\nDislike/gs;\n\nlet commentMatch;\nlet count = 0;\n\nwhile ((commentMatch = commentRegex.exec(markdown)) !== null) {\n    let commentText = commentMatch[2] || '';\n    let likesRaw = commentMatch[3] || '0';\n    \n    // Clean up comment text\n    commentText = commentText\n        .replace(/\\\\n/g, ' ')                    // Remove backslash escapes\n        .replace(/\\s+/g, ' ')                    // Normalize whitespace\n        .replace(/Show lessRead more/g, '')      // Remove YouTube UI text\n        .replace(/Show less/g, '')\n        .replace(/Read more/g, '')\n        .replace(/\\[.*?\\]/g, '')                 // Remove markdown links\n        .replace(/!\\[.*?\\]\\(.*?\\)/g, '')         // Remove markdown images\n        .replace(/​@\\w+\\s*-\\s*/g, '')            // Remove mentions like @user -\n        .replace(/\\s*❤ by @\\w+/g, '')           // Remove heart reactions\n        .replace(/!\\[.*?\\]\\(.*?\\)/g, '')         // Remove emoji images\n        .trim();\n    \n    // Convert likes from format like \"333\" or \"10K\" to number\n    let likesNumber = 0;\n    if (likesRaw && likesRaw !== '0') {\n        if (likesRaw.includes('K')) {\n            likesNumber = parseInt(likesRaw) * 1000;\n        } else if (likesRaw.includes('M')) {\n            likesNumber = parseInt(likesRaw) * 1000000;\n        } else {\n            likesNumber = parseInt(likesRaw) || 0;\n        }\n    }\n    \n    // Only include comments with meaningful content (at least 5 characters)\n    if (commentText.length >= 5) {\n        comments.push({\n            comment: commentText,\n            likes: likesNumber\n        });\n        count++;\n    }\n}\n\n// Sort by likes in descending order and take top 20\ncomments.sort((a, b) => b.likes - a.likes);\noutput.top20Comments = comments.slice(0, 20);\noutput.totalCommentsExtracted = count;\n\n\nreturn [{ json: output }];\n"},"typeVersion":2},{"id":"b9dc0fce-ba19-4efa-8b0f-0029b28e208c","name":"Identify Strategic Gaps","type":"@n8n/n8n-nodes-langchain.agent","position":[-2400,-656],"parameters":{"text":"make content Idea","options":{"systemMessage":"=**Role:** You are the **Chief Solution Officer & Content Strategist** at an **AI Automation Agency** serving **established small-to-medium businesses (SMEs)**.\n\n**Your Tasks:**\n\n1. Analyze the description, likes, views, and top 20 comments of provided content.\n2. Identify the goals, needs, pain points, and challenges of a **decision-maker level** audience.\n3. Propose 5 content ideas **rooted in systems and business decisions**.\n4. Ensure all ideas are **strategic & actionable**.\n\n---\n\n## 🧬 BRAND ARCHETYPE (MANDATORY)\n\n**Sage (Primary) + Ruler + Creator**\n\n**Principles:**\n\n* Focus on the *why & how the system works*, not the *how to build it*.\n* Demonstrate structure, control, and intellectual maturity.\n* Tone: Calm, objective, non-hype, and non-hard-selling.\n\n---\n\n## 🧱 CONTENT PILLARS\n\nEach idea must fall into one of these categories:\n\n1. Operational Bottleneck & Business Pain\n2. Decision-Making & System Thinking\n3. AI Automation Reality Check\n4. Scalable Workflow & Control System\n5. Case-Based Insight (hype-free)\n\n❌ **Avoid technical tutorials & beginner-level content.**\n\n---\n\n## 🎥 DEMO WORKFLOW (SHOWCASE ONLY)\n\nDemos are recommended only under these conditions:\n\n* They are not a tutorial or step-by-step guide.\n* They focus on logical flow, integration, control, and business impact.\n* The narrative explains *why this structure was chosen*, risks involved, and common mistakes.\n* The demo should trigger curiosity, not provide a \"recipe.\"\n\n---\n\n## INPUT\n\n* **videoTitle:** {{ $('Limit Search Results').item.json.title }}\n* **channelName:** {{ $('Limit Search Results').item.json.channelName }}\n* **description:** {{ $json.description }}\n* **totalLikes:** {{ $json.totalLikes }}\n* **views:** {{ $json.views }}\n* **topComments:** {{ $json.top20Comments.map((item, i) => ' ' + i + ')' + item.comment + ' likes: ' + item.likes) }}\n\n---\n\n## ANALYSIS FRAMEWORK\n\n### 1. COMMENT ANALYSIS\n\nFocus on:\n\n* Decision confusion\n* Operational frustration\n* Skepticism & unrealistic expectations\n* Structural issues (rather than tool-specific issues)\n\n**Categories:**\n\n* Decision Confusion\n* Operational Frustration\n* Skepticism\n* Experience Insight\n* Validation\n\n### 2. AUDIENCE PROFILE\n\n* **Goals:** Reduce operational burden, increase oversight/control.\n* **Needs:** Thinking frameworks & decision validation.\n* **Pain Points:** Owner as the bottleneck, failed automation attempts.\n* **Challenges:** Misplaced priorities, over-optimization of tools.\n\n### 3. CONTENT OPPORTUNITIES\n\nPrioritize topics that:\n\n* Correct popular assumptions.\n* Halt implementation errors.\n* Highlight systemic issues.\n\n---\n\n## STRUCTURE OF THE 5 CONTENT IDEAS\n\nFor each idea, provide:\n\n1. **Title** — Problem & decision-based.\n2. **Brief** — Business impact (2–3 sentences).\n3. **Angle** — Unique perspective from a Chief Solution Officer.\n4. **Why This Topic** — Connection to audience insights/comments.\n5. **Format** — Strategic video / system demo / case breakdown.\n6. **Key Points** — 5 strategic points (non-technical).\n7. **Engagement Potential** — High / Medium / Low + reasoning.\n\n---\n\n## OUTPUT FORMAT (JSON)\n\n{\n  \"analysis\": {\n    \"audienceProfile\": {\n      \"goals\": [\"goal 1\", \"goal 2\", \"goal 3\"],\n      \"needs\": [\"need 1\", \"need 2\", \"need 3\"],\n      \"painPoints\": [\"pain 1\", \"pain 2\", \"pain 3\"],\n      \"challenges\": [\"challenge 1\", \"challenge 2\", \"challenge 3\"]\n    },\n    \"keyInsights\": [\n      \"Insight 1 - supported by specific comments\",\n      \"Insight 2 - supported by engagement patterns\",\n      \"Insight 3 - supported by topic gaps\"\n    ],\n    \"topCommentAnalysis\": {\n      \"mostEngagedTheme\": \"Theme from the most liked comments\",\n      \"topicGaps\": [\"Gap 1\", \"Gap 2\", \"Gap 3\"]\n    }\n  },\n  \"contentIdeas\": [\n    {\n      \"id\": 1,\n      \"title\": \"Content Idea Title\",\n      \"brief\": \"2-3 sentence brief\",\n      \"angle\": \"1-2 sentence unique angle\",\n      \"whyThisTopic\": \"Connection to audience insight\",\n      \"format\": \"Content format - reasoning\",\n      \"keyPoints\": [\"Point 1\", \"Point 2\", \"Point 3\", \"Point 4\", \"Point 5\"],\n      \"engagementPotential\": \"High/Medium/Low - reasoning\"\n    }\n  ],\n  \"strategy\": {\n    \"overallTheme\": \"General theme of the 5 ideas\",\n    \"publishingOrder\": \"Suggested publication order and reasoning\",\n    \"seriesOpportunity\": \"Can this be a series? How to link them?\"\n  }\n}\n\n\n---\n\n## FINAL PRINCIPLES\n\nEvery content idea must have:\n\n* A **Hook** that is relatable to a broad professional audience.\n* A **Mid-section** that corrects the viewer's mindset/approach.\n* A **Closing** that reinforces your authority."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"53826d14-f904-4b5c-acf7-f8e8d3e815bf","name":"Store Competitor Data","type":"n8n-nodes-base.notion","position":[-2048,-656],"parameters":{"title":"={{ $('Split Video Items').item.json.title }}","options":{},"resource":"databasePage","databaseId":{"__rl":true,"mode":"list","value":"2d7bf4c7-dad2-8037-a141-d86dff2712b6","cachedResultUrl":"https://www.notion.so/2d7bf4c7dad28037a141d86dff2712b6","cachedResultName":"Competitor Content Insigth"},"propertiesUi":{"propertyValues":[{"key":"Description|rich_text","textContent":"={{ $('Extract Audience Comments').item.json.description }}"},{"key":"URL|url","urlValue":"={{ $('Extract Audience Comments').item.json.url }}"},{"key":"Likes|rich_text","textContent":"={{ $('Extract Audience Comments').item.json.totalLikes }}"},{"key":"Views|rich_text","textContent":"={{ $('Extract Audience Comments').item.json.views }}"},{"key":"AudienceInsigths|rich_text","textContent":"=Goals: {{ $json.output.analysis.audienceProfile.goals }}\n\nNeeds: {{ $json.output.analysis.audienceProfile.needs }}\n\nPain Points: {{ $json.output.analysis.audienceProfile.painPoints }}\n\nChallenges: {{ $json.output.analysis.audienceProfile.challenges }}\n"}]}},"credentials":{"notionApi":{"id":"credential-id","name":"Notion Iwilwildan"}},"typeVersion":2.2},{"id":"02c19438-38a2-4a6d-b71b-9b50c77d61fc","name":"Store Content Strategy","type":"n8n-nodes-base.notion","position":[-1152,-656],"parameters":{"title":"={{ $json.title }}","options":{},"resource":"databasePage","databaseId":{"__rl":true,"mode":"list","value":"2d7bf4c7-dad2-8027-a02f-fc9c481a529a","cachedResultUrl":"https://www.notion.so/2d7bf4c7dad28027a02ffc9c481a529a","cachedResultName":"Content Idea"},"propertiesUi":{"propertyValues":[{"key":"Angle|rich_text","textContent":"={{ $json.angle }}"},{"key":"Brief|rich_text","textContent":"={{ $json.brief }}"},{"key":"Idea Number|number","numberValue":"={{ $json.id }}"},{"key":"Format|rich_text","textContent":"={{ $json.format }}"},{"key":"Reference|url","urlValue":"={{ $('Store Competitor Data').item.json.url }}"}]}},"credentials":{"notionApi":{"id":"credential-id","name":"Notion Iwilwildan"}},"typeVersion":2.2},{"id":"de7c2258-2e69-43cf-8c3b-778733aab586","name":"Set Video Analysis Limit","type":"n8n-nodes-base.limit","position":[-1376,-656],"parameters":{"maxItems":100},"typeVersion":1},{"id":"e5c45cdf-4d1d-48d9-bb8e-fcb9c5fdde28","name":"Monthly Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-4640,-532],"parameters":{"rule":{"interval":[{"field":"months"}]}},"typeVersion":1.3},{"id":"07687b5f-6b21-4819-8df2-0636a5512674","name":"Limit Search Results","type":"n8n-nodes-base.limit","position":[-3296,-532],"parameters":{"maxItems":"={{ $('Set Niche').item.json.limit }}"},"typeVersion":1},{"id":"a63767de-6d1c-4bd4-917f-540dab421534","name":"Split Video Items","type":"n8n-nodes-base.splitOut","position":[-3520,-532],"parameters":{"options":{},"fieldToSplitOut":"videos"},"typeVersion":1},{"id":"fad0e94c-d6a0-43ca-896a-e24c05c21964","name":"Split Content Ideas","type":"n8n-nodes-base.splitOut","position":[-1600,-656],"parameters":{"options":{},"fieldToSplitOut":"contentIdeas"},"typeVersion":1},{"id":"37b57d42-c4e7-44dc-beb3-af6a00b60902","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-4712,-916],"parameters":{"color":6,"width":1584,"height":544,"content":"## Step 1: Fetch & Filter Videos"},"typeVersion":1},{"id":"da68bc51-954a-4944-ae82-746a88e730bc","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-3120,-916],"parameters":{"width":640,"height":544,"content":"## Step 2: Scrape & Extract Insights"},"typeVersion":1},{"id":"9cd01b0e-750a-46bf-ae9c-3f1422931785","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-2448,-832],"parameters":{"color":3,"width":320,"height":544,"content":"## Step 3: AI Strategy Generation"},"typeVersion":1},{"id":"42a67a0e-afb5-498c-a4aa-ac8fa2d74d69","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-2112,-916],"parameters":{"color":5,"width":1344,"height":544,"content":"## Step 4: Save to Notion"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"bc32fa99-70a3-4060-b21b-3b349e872e21","connections":{"Aggregate":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Set Niche":{"main":[[{"node":"Search YouTube Videos","type":"main","index":0}]]},"ContentIdeas":{"main":[[{"node":"Split Content Ideas","type":"main","index":0}]]},"Loop Over Items":{"main":[[],[{"node":"Scrape Video Details","type":"main","index":0}]]},"Monthly Trigger":{"main":[[{"node":"Set Niche","type":"main","index":0}]]},"Parse Video List":{"main":[[{"node":"Split Video Items","type":"main","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"Identify Strategic Gaps","type":"ai_languageModel","index":0}]]},"Split Video Items":{"main":[[{"node":"Limit Search Results","type":"main","index":0}]]},"Check Search Status":{"main":[[{"node":"Parse Video List","type":"main","index":0}]]},"Split Content Ideas":{"main":[[{"node":"Set Video Analysis Limit","type":"main","index":0}]]},"Limit Search Results":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Scrape Video Details":{"main":[[{"node":"Extract Audience Comments","type":"main","index":0}]]},"Search YouTube Videos":{"main":[[{"node":"Check Search Status","type":"main","index":0}]]},"Store Competitor Data":{"main":[[{"node":"ContentIdeas","type":"main","index":0}]]},"Store Content Strategy":{"main":[[{"node":"Aggregate","type":"main","index":0}]]},"Identify Strategic Gaps":{"main":[[{"node":"Store Competitor Data","type":"main","index":0}]]},"Set Video Analysis Limit":{"main":[[{"node":"Store Content Strategy","type":"main","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"Identify Strategic Gaps","type":"ai_outputParser","index":0}]]},"Extract Audience Comments":{"main":[[{"node":"Identify Strategic Gaps","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":24,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":2},"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.limit":{"count":2},"n8n-nodes-base.notion":{"count":2},"n8n-nodes-base.splitOut":{"count":2},"n8n-nodes-base.aggregate":{"count":1},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.httpRequest":{"count":2},"n8n-nodes-base.splitInBatches":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":1},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Wildan Adli","username":"iwilwildan","bio":"Results-oriented Software Engineer with 3+ years of experience in enterprise development (.NET), now\npivoting to specialize in AI Automation. Proven track record of bridging complex backend engineering with\nmodern low-code solutions. Recently architected an n8n workflow achieving 800+ downloads and delivered\ncommercial AI agents. Expert in optimizing legacy systems, having achieved a 500x performance boost\nin previous enterprise roles.","verified":false,"links":["https://www.threads.com/@iwilwildan"],"avatar":"https://gravatar.com/avatar/98377bea024246125a6ee0a7c77163ebfa776e03708b1580f2574a86b123cf07?r=pg&d=retro&size=200"},"nodes":[{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":487,"icon":"file:notion.svg","name":"n8n-nodes-base.notion","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.notion/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/notion/"}]},"categories":["Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"output\"]","defaults":{"name":"Notion"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjU4Mjc2IDYuOTc2NzlDOC44MjA0NyA3Ljk4MjM4IDkuMjg0NzkgNy45MDU2NiAxMS42MDkxIDcuNzUwNTdMMzMuNTIwNiA2LjQzNDg4QzMzLjk4NTMgNi40MzQ4OCAzMy41OTg5IDUuOTcxMjcgMzMuNDQzOSA1Ljg5NDIzTDI5LjgwNDkgMy4yNjM0OEMyOS4xMDc2IDIuNzIyMTMgMjguMTc4NiAyLjEwMjE3IDI2LjM5ODIgMi4yNTcyNkw1LjE4MTE1IDMuODA0NzZDNC40MDczNiAzLjg4MTQ4IDQuMjUyODIgNC4yNjgzNyA0LjU2MDk2IDQuNTc4NDdMNy41ODI3NiA2Ljk3Njc5Wk04Ljg5ODI5IDEyLjA4MzNWMzUuMTM4MUM4Ljg5ODI5IDM2LjM3NzEgOS41MTc0NiAzNi44NDA3IDEwLjkxMSAzNi43NjRMMzQuOTkxOSAzNS4zNzA2QzM2LjM4NjIgMzUuMjkzOSAzNi41NDE1IDM0LjQ0MTcgMzYuNTQxNSAzMy40MzUyVjEwLjUzNTFDMzYuNTQxNSA5LjUzMDE5IDM2LjE1NDkgOC45ODgyOSAzNS4zMDE0IDkuMDY1NjRMMTAuMTM2NyAxMC41MzUxQzkuMjA3OTkgMTAuNjEzMSA4Ljg5ODIxIDExLjA3NzcgOC44OTgyMSAxMi4wODMzSDguODk4MjlaTTMyLjY3MDggMTMuMzJDMzIuODI1MiAxNC4wMTcgMzIuNjcwOCAxNC43MTMzIDMxLjk3MjUgMTQuNzkxN0wzMC44MTIzIDE1LjAyMjlWMzIuMDQzNEMyOS44MDQ5IDMyLjU4NDggMjguODc1OSAzMi44OTQ0IDI4LjEwMTggMzIuODk0NEMyNi44NjI1IDMyLjg5NDQgMjYuNTUyMSAzMi41MDcyIDI1LjYyMzcgMzEuMzQ3NEwxOC4wMzQzIDE5LjQzMjlWMzAuOTYwNUwyMC40MzU5IDMxLjUwMjRDMjAuNDM1OSAzMS41MDI0IDIwLjQzNTkgMzIuODk0NCAxOC40OTgzIDMyLjg5NDRMMTMuMTU2OCAzMy4yMDQyQzEzLjAwMTYgMzIuODk0NCAxMy4xNTY4IDMyLjEyMTQgMTMuNjk4NiAzMS45NjY1TDE1LjA5MjUgMzEuNTgwMlYxNi4zMzg1TDEzLjE1NzIgMTYuMTgzNEMxMy4wMDE5IDE1LjQ4NjQgMTMuMzg4NSAxNC40ODE0IDE0LjQ3MzMgMTQuNDAzNUwyMC4yMDM1IDE0LjAxNzJMMjguMTAxOCAyNi4wODY4VjE1LjQwOTdMMjYuMDg4MSAxNS4xNzg2QzI1LjkzMzUgMTQuMzI2NSAyNi41NTIxIDEzLjcwNzggMjcuMzI2NSAxMy42MzExTDMyLjY3MDggMTMuMzJaTTMuMzk5NzMgMS43MTU5OEwyNS40Njg4IDAuMDkwNzQ1N0MyOC4xNzkgLTAuMTQxNjg4IDI4Ljg3NjMgMC4wMTQwMjQ1IDMwLjU3OTYgMS4yNTEzNUwzNy42MjQzIDYuMjAyNzZDMzguNzg2NyA3LjA1NDIxIDM5LjE3NDIgNy4yODYwMiAzOS4xNzQyIDguMjE0MTlWMzUuMzcwNkMzOS4xNzQyIDM3LjA3MjYgMzguNTU0MiAzOC4wNzkxIDM2LjM4NjUgMzguMjMzMUwxMC43NTc3IDM5Ljc4MDdDOS4xMzA0OSAzOS44NTgzIDguMzU2MDcgMzkuNjI2NCA3LjUwMzkyIDM4LjU0MjZMMi4zMTYwOCAzMS44MTE3QzEuMzg2NTggMzAuNTcyNiAxIDI5LjY0NTcgMSAyOC41NjEzVjQuNDIyODNDMSAzLjAzMTA1IDEuNjIwMTkgMS44NzAwNSAzLjM5OTczIDEuNzE1OThWMS43MTU5OFoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo="},"displayName":"Notion","typeVersion":2,"nodeCategories":[{"id":4,"name":"Productivity"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1236,"icon":"file:aggregate.svg","name":"n8n-nodes-base.aggregate","codex":{"data":{"alias":["Aggregate","Combine","Flatten","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Aggregate"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjRkY2RDVBIiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMyIDE0OGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE0NmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJINDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNDZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDQ0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wIDk2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTQ2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg0NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGQ9Ik03NCA3NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDExNi4yMTdjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjU2YzAgMjYuOTc4IDEwLjI3MiA1MS41NTcgMjcuMTE5IDcwLjAzOSA1LjA1NSA1LjU0NSA1LjA1NSAxNC4zNzcgMCAxOS45MjItMTYuODQ3IDE4LjQ4Mi0yNy4xMTkgNDMuMDYxLTI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMySDg2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTE2LjIxN2M0NC4xODMgMCA4MC0zNS44MTcgODAtODB2LTU2YzAtMzAuOTI4IDI1LjA3Mi01NiA1Ni01NmE1Ljc4MyA1Ljc4MyAwIDAgMCA1Ljc4My01Ljc4M3YtMzYuNDM0YTUuNzgzIDUuNzgzIDAgMCAwLTUuNzgzLTUuNzgzYy0zMC45MjggMC01Ni0yNS4wNzItNTYtNTZ2LTU2YzAtNDQuMTgzLTM1LjgxNy04MC04MC04MEg4NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zNzYgMjQ0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgzODhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUxMnY1MTJIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4="},"displayName":"Aggregate","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1237,"icon":"file:limit.svg","name":"n8n-nodes-base.limit","codex":{"data":{"alias":["Limit","Remove","Slice","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.limit/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Limit"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjMkZCNjdDIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcGF0aD0idXJsKCNhKSIgY2xpcC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNTEyIDQ1OGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC02OGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDY4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bS0xNDAgMGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC02OGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDY4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bS0xNDAgMGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC02OGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDY4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bS0xNDAgMGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMTUyLTIyMmMtNi42MjcgMC0xMi01LjM3My0xMi0xMlYzMGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDI0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTk0YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6Ii8+PHBhdGggZD0iTTE0OS41NzcgMTQ2Ljk4MmM5LjM5OC05LjM0NiAyNC41OTQtOS4zMDQgMzMuOTQxLjA5NUwyNTYgMjE5Ljk2NGw3Mi40ODItNzIuODg3YzkuMzQ3LTkuMzk5IDI0LjU0My05LjQ0MSAzMy45NDEtLjA5NXM5LjQ0MSAyNC41NDMuMDk1IDMzLjk0MWwtODkuNSA5MGEyNCAyNCAwIDAgMS0zNC4wMzYgMGwtODkuNS05MGMtOS4zNDYtOS4zOTgtOS4zMDQtMjQuNTk0LjA5NS0zMy45NDFNMCAzNTBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0ODhjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEyeiIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoNTEydjUxMkgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg=="},"displayName":"Limit","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1239,"icon":"file:splitOut.svg","name":"n8n-nodes-base.splitOut","codex":{"data":{"alias":["Split","Nested","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitout/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Split Out"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjOUI2REQ1IiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4MCAxNDhjMC02LjYyNy01LjM3My0xMi0xMi0xMkgzMjJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxNDZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDMyMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDE0NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0wIDk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMzIyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTQ2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBkPSJNNDM4IDc2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjU2YzAgMjYuOTc4LTEwLjI3MiA1MS41NTctMjcuMTE5IDcwLjAzOS01LjA1NSA1LjU0NS01LjA1NSAxNC4zNzcgMCAxOS45MjIgMTYuODQ3IDE4LjQ4MiAyNy4xMTkgNDMuMDYxIDI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMySDQyNmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtNDQuMTgzIDAtODAtMzUuODE3LTgwLTgwdi01NmMwLTMwLjkyOC0yNS4wNzItNTYtNTYtNTZhNS43ODMgNS43ODMgMCAwIDEtNS43ODMtNS43ODN2LTM2LjQzNGE1Ljc4MyA1Ljc4MyAwIDAgMSA1Ljc4My01Ljc4M2MzMC45MjggMCA1Ni0yNS4wNzIgNTYtNTZ2LTU2YzAtNDQuMTgzIDM1LjgxNy04MCA4MC04MEg0MjZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMzYgMjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik01MTIgMEgwdjUxMmg1MTJ6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+"},"displayName":"Split Out","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":32,"name":"Market Research"},{"id":49,"name":"AI Summarization"}],"image":[]}}