{"workflow":{"id":13707,"name":"Discover viral content opportunities from Twitter, Reddit and Google Trends with Claude AI","views":118,"recentViews":1,"totalViews":118,"createdAt":"2026-02-25T13:45:05.004Z","description":"Automatically discovers trending topics in your niche and generates ready-to-use content ideas with AI.\n\n## 🎯 How It Works\n\n### 1. **Multi-Source Trend Monitoring**\n   - Twitter/X trending topics and hashtags\n   - Reddit hot posts from niche subreddits\n   - Google Trends daily search trends\n   - Runs every 2 hours for fresh opportunities\n\n### 2. **Smart Filtering & Scoring**\n   - Filters by your niche keywords\n   - Removes duplicates across sources\n   - Calculates viral potential score (0-100)\n   - Ranks by engagement, recency, and relevance\n   - Prevents suggesting already-covered topics\n\n### 3. **AI Content Generation**\n   - Uses Claude AI to analyze each trend\n   - Generates 5 unique content ideas per trend\n   - Provides hooks, key points, and platform recommendations\n   - Explains why each idea has viral potential\n\n### 4. **Comprehensive Delivery**\n   - Beautiful HTML email digest with all opportunities\n   - Slack summary for quick review\n   - Database logging for tracking\n   - Research links for deeper investigation\n\n## ⚙️ Configuration Guide\n\n### Step 1: Configure Your Niche\nEdit the **\"Load Niche Config\"** node:\n\n```javascript\nniche: 'AI & Technology',  // Your industry\nkeywords: [                 // Topics to track\n  'artificial intelligence',\n  'machine learning',\n  'AI tools',\n  // Add your keywords\n],\nsubreddits: 'artificial+machinelearning',  // Relevant subreddits\nthresholds: {\n  minTwitterLikes: 1000,    // Minimum engagement\n  minRedditUpvotes: 500,\n  minComments: 50\n}\n```\n\n### Step 2: Connect Data Sources\n\n**Twitter/X API:**\n- Sign up for Twitter Developer Account\n- Get API credentials (OAuth 2.0)\n- Add credentials to \"Fetch Twitter/X Trends\" node\n\n**Reddit API:**\n- Create Reddit app: https://www.reddit.com/prefs/apps\n- Get OAuth credentials\n- Add credentials to \"Fetch Reddit Hot Topics\" node\n\n**Google Trends:**\n- No authentication needed (public API)\n- Already configured in workflow\n\n### Step 3: Configure AI Integration\n\n**Anthropic Claude API:**\n- Get API key from: https://console.anthropic.com/\n- Add credentials to \"AI - Generate Content Ideas\" node\n- Alternative: Use OpenAI GPT-4 by modifying the node\n\n### Step 4: Setup Notifications\n\n**Email:**\n- Configure SMTP in \"Send Email Digest\" node\n- Update recipient email address\n- Customize HTML template if desired\n\n**Slack:**\n- Create incoming webhook: https://api.slack.com/messaging/webhooks\n- Add webhook URL to \"Send Slack Summary\" node\n- Customize channel name\n\n### Step 5: Database (Optional)\n- Create PostgreSQL database with schema below\n- Add credentials to \"Log to Content Database\" node\n- Skip if you don't need database tracking\n\n### Database Schema\n```sql\nCREATE TABLE content.viral_opportunities (\n  id SERIAL PRIMARY KEY,\n  opportunity_id VARCHAR(255) UNIQUE,\n  detected_at TIMESTAMP,\n  topic TEXT,\n  source VARCHAR(50),\n  source_url TEXT,\n  engagement BIGINT,\n  viral_score INTEGER,\n  opportunity_level VARCHAR(20),\n  niche VARCHAR(100),\n  content_ideas JSONB,\n  research_links JSONB,\n  urgency TEXT,\n  status VARCHAR(50),\n  created_at TIMESTAMP DEFAULT NOW()\n);\n```\n\n## 🎨 Customization Options\n\n### Adjust Scan Frequency\nEdit \"Every 2 Hours\" trigger:\n- More frequent: Every 1 hour\n- Less frequent: Every 4-6 hours\n- Consider API rate limits\n\n### Tune Viral Score Algorithm\nEdit \"Calculate Viral Potential Score\" node:\n- Adjust engagement weight (currently 40%)\n- Change recency importance (currently 30%)\n- Modify threshold in \"Filter High Potential Only\" (currently 40)\n\n### Customize Content Ideas\nModify the AI prompt in \"AI - Generate Content Ideas\":\n- Change number of ideas (currently 5)\n- Add specific format requirements\n- Include brand voice guidelines\n- Target specific platforms\n\n## 📊 Expected Results\n\nTypical scan finds:\n- **5-15 opportunities** per scan (2 hours)\n- **3-5 HIGH priority** (score 75+)\n- **25+ content ideas** generated\n- **Email sent** with full digest\n- **Slack alert** for quick review\n\n## 💡 Pro Tips\n\n1. **Timing Matters**: Create content within 24-48 hours of detection\n2. **High Priority First**: Focus on opportunities scoring 75+\n3. **Platform Match**: Choose platforms where your audience is active\n4. **Add Your Voice**: Use AI ideas as starting points, not final copy\n5. **Track Performance**: Note which opportunity types perform best\n6. **Refine Keywords**: Regularly update your niche keywords based on results\n7. **Mix Formats**: Try different content formats for same trend\n\n## 🚨 Important Notes\n\n⚠️ **API Rate Limits:**\n- Twitter: Monitor rate limits closely\n- Reddit: 60 requests per minute\n- Claude AI: Tier-based limits\n- Consider caching results\n\n💰 **Cost Considerations:**\n- Twitter API: May require paid tier\n- Reddit API: Free for reasonable use\n- Claude AI: ~$0.50-1.00 per scan\n- Total: ~$15-30/month estimated\n\n🎯 **Best Practices:**\n- Start with 1-2 sources, add more later\n- Test with broader keywords initially\n- Review first few reports to tune scoring\n- Don't create content for every opportunity\n- Quality over quantity\n\n## 🔄 What Happens Next?\n\n1. Workflow runs every 2 hours\n2. Scans Twitter, Reddit, Google Trends\n3. Filters by your keywords\n4. Scores viral potential\n5. Generates AI content ideas\n6. Sends digest to email + Slack\n7. Logs to database\n8. Marks topics as suggested\n9. Repeat!\n","workflow":{"id":"NgPUu4IA2QDZRRVT","meta":{"instanceId":"dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281","templateCredsSetupCompleted":true},"name":"Smart Viral Content Opportunity Spotter","tags":[],"nodes":[{"id":"3a3acceb-dd95-47a3-a71a-b6560d364690","name":"Every 2 Hours - Trend Scanner","type":"n8n-nodes-base.scheduleTrigger","notes":"Runs every 2 hours to capture fresh trending topics","position":[800,512],"parameters":{"rule":{"interval":[{"field":"hours","hoursInterval":2}]}},"notesInFlow":true,"typeVersion":1.2},{"id":"3a1f497e-7af6-4876-812a-11ca06a4f56e","name":"Fetch Twitter/X Trends","type":"n8n-nodes-base.httpRequest","notes":"Gets trending topics and hashtags from Twitter API","position":[1024,320],"parameters":{"url":"https://api.twitter.com/2/trends/place","options":{"response":{"response":{"responseFormat":"json"}}},"sendQuery":true,"authentication":"predefinedCredentialType","queryParameters":{"parameters":[{"name":"id","value":"1"}]},"nodeCredentialType":"twitterOAuth2Api"},"credentials":{"twitterOAuth2Api":{"id":"credential-id","name":"X account - test"}},"notesInFlow":true,"typeVersion":4.2},{"id":"03636a38-7087-4f03-a381-603343601e9c","name":"Fetch Reddit Hot Topics","type":"n8n-nodes-base.httpRequest","notes":"Retrieves trending posts from relevant subreddits","position":[1024,512],"parameters":{"url":"https://oauth.reddit.com/r/{{$node[\"Load Niche Config\"].json.subreddits}}/hot","options":{},"sendQuery":true,"authentication":"predefinedCredentialType","queryParameters":{"parameters":[{"name":"limit","value":"25"},{"name":"t","value":"day"}]},"nodeCredentialType":"redditOAuth2Api"},"credentials":{"redditOAuth2Api":{"id":"credential-id","name":"Reddit test"}},"notesInFlow":true,"typeVersion":4.2},{"id":"65318f86-fefb-4d1f-92e2-1cfda5e1947d","name":"Fetch Google Trends","type":"n8n-nodes-base.httpRequest","notes":"Gets trending searches from Google Trends API","position":[1024,704],"parameters":{"url":"https://trends.google.com/trends/api/dailytrends","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"geo","value":"US"},{"name":"hl","value":"en-US"}]}},"notesInFlow":true,"typeVersion":4.2},{"id":"79d27f62-ed94-4a9d-a2eb-f441f328a7f1","name":"Load Niche Config","type":"n8n-nodes-base.code","notes":"Defines your niche keywords, subreddits, and tracking parameters","position":[4832,416],"parameters":{"jsCode":"// Configure your niche settings here\nconst nicheConfig = {\n  // Your niche/industry\n  niche: 'AI & Technology',\n  \n  // Primary keywords to track\n  keywords: [\n    'artificial intelligence',\n    'machine learning',\n    'AI tools',\n    'chatgpt',\n    'claude',\n    'automation',\n    'generative ai',\n    'deep learning',\n    'neural networks',\n    'ai ethics'\n  ],\n  \n  // Related subreddits (comma-separated for multi-reddit)\n  subreddits: 'artificial+machinelearning+technology+Futurology',\n  \n  // Twitter accounts to monitor (optional)\n  twitterAccounts: [\n    'OpenAI',\n    'AnthropicAI',\n    'GoogleAI',\n    'DeepMind'\n  ],\n  \n  // Minimum engagement thresholds\n  thresholds: {\n    minTwitterLikes: 1000,\n    minRedditUpvotes: 500,\n    minComments: 50\n  },\n  \n  // Content formats to suggest\n  contentFormats: [\n    'Thread',\n    'Carousel Post',\n    'Video Script',\n    'Long-form Article',\n    'Infographic Outline',\n    'Short-form Video'\n  ],\n  \n  // Target platforms\n  platforms: ['Twitter', 'LinkedIn', 'Instagram', 'TikTok', 'YouTube'],\n  \n  // Time window (hours)\n  timeWindow: 48\n};\n\nreturn [{ json: nicheConfig }];"},"notesInFlow":true,"typeVersion":2},{"id":"8528d5bc-b800-466a-980b-70d59c518c49","name":"Parse Twitter Data","type":"n8n-nodes-base.code","notes":"Normalizes Twitter trend data into standard format","position":[1248,320],"parameters":{"jsCode":"// Parse Twitter API response\nconst response = $input.first().json;\nconst trends = response.data || [];\n\nconst parsed = trends.map(trend => ({\n  source: 'Twitter',\n  topic: trend.name || trend.query || '',\n  description: trend.tweet_volume ? `${trend.tweet_volume} tweets` : 'Trending',\n  url: trend.url || `https://twitter.com/search?q=${encodeURIComponent(trend.name)}`,\n  engagement: trend.tweet_volume || 0,\n  timestamp: new Date().toISOString(),\n  raw: trend\n}));\n\nreturn parsed.map(item => ({ json: item }));"},"notesInFlow":true,"typeVersion":2},{"id":"30cce528-0118-4a0b-8f78-806562d4b88e","name":"Parse Reddit Data","type":"n8n-nodes-base.code","notes":"Normalizes Reddit post data into standard format","position":[1248,512],"parameters":{"jsCode":"// Parse Reddit API response\nconst response = $input.first().json;\nconst posts = response.data?.children || [];\n\nconst parsed = posts.map(post => {\n  const data = post.data;\n  return {\n    source: 'Reddit',\n    topic: data.title,\n    description: data.selftext?.substring(0, 200) || '',\n    url: `https://reddit.com${data.permalink}`,\n    engagement: data.ups + data.num_comments,\n    upvotes: data.ups,\n    comments: data.num_comments,\n    subreddit: data.subreddit,\n    timestamp: new Date(data.created_utc * 1000).toISOString(),\n    raw: data\n  };\n});\n\nreturn parsed.map(item => ({ json: item }));"},"notesInFlow":true,"typeVersion":2},{"id":"f8fe24fa-9e91-4bd4-9d4d-a048f43d7fb7","name":"Parse Google Trends","type":"n8n-nodes-base.code","notes":"Normalizes Google Trends data into standard format","position":[1248,704],"parameters":{"jsCode":"// Parse Google Trends response (remove leading characters)\nlet response = $input.first().json.toString();\nif (response.startsWith(')]}\\',\\n')) {\n  response = response.substring(6);\n}\n\ntry {\n  const data = JSON.parse(response);\n  const trends = data.default?.trendingSearchesDays?.[0]?.trendingSearches || [];\n  \n  const parsed = trends.map(trend => {\n    const articles = trend.articles || [];\n    const totalTraffic = parseInt(trend.formattedTraffic?.replace(/[^0-9]/g, '') || '0');\n    \n    return {\n      source: 'Google Trends',\n      topic: trend.title?.query || '',\n      description: articles[0]?.title || '',\n      url: articles[0]?.url || `https://trends.google.com/trends/trendingsearches/daily?geo=US`,\n      engagement: totalTraffic,\n      traffic: trend.formattedTraffic || 'N/A',\n      timestamp: new Date().toISOString(),\n      raw: trend\n    };\n  });\n  \n  return parsed.map(item => ({ json: item }));\n  \n} catch (error) {\n  console.error('Failed to parse Google Trends:', error);\n  return [];\n}"},"notesInFlow":true,"typeVersion":2},{"id":"f0f79024-acfe-47d5-89d1-73355a2db52f","name":"Merge All Trend Sources","type":"n8n-nodes-base.merge","notes":"Combines data from Twitter, Reddit, and Google Trends","position":[1472,416],"parameters":{},"notesInFlow":true,"typeVersion":3},{"id":"2a9d4fa8-704b-4176-a44f-d98a3d20a135","name":"Filter by Niche Keywords","type":"n8n-nodes-base.code","notes":"Matches trends against your niche keywords for relevance","position":[1696,416],"parameters":{"jsCode":"// Filter trends by niche relevance\nconst items = $input.all();\nconst config = $node['Load Niche Config'].json;\nconst keywords = config.keywords.map(k => k.toLowerCase());\n\nconst relevantTrends = items.filter(item => {\n  const text = `${item.json.topic} ${item.json.description}`.toLowerCase();\n  \n  // Check if any keyword matches\n  return keywords.some(keyword => text.includes(keyword));\n}).map(item => ({\n  json: {\n    ...item.json,\n    relevanceScore: 0 // Will be calculated in next node\n  }\n}));\n\nreturn relevantTrends;"},"notesInFlow":true,"typeVersion":2},{"id":"aefdb520-4fe3-44f2-9272-d65b6703dcd6","name":"Remove Duplicate Topics","type":"n8n-nodes-base.code","notes":"Deduplicates similar trends from different sources","position":[1920,416],"parameters":{"jsCode":"// Remove duplicate or very similar topics\nconst items = $input.all();\nconst seen = new Map();\n\nfunction similarity(str1, str2) {\n  const s1 = str1.toLowerCase().split(' ');\n  const s2 = str2.toLowerCase().split(' ');\n  const intersection = s1.filter(word => s2.includes(word));\n  return intersection.length / Math.max(s1.length, s2.length);\n}\n\nconst unique = [];\n\nfor (const item of items) {\n  const topic = item.json.topic;\n  let isDuplicate = false;\n  \n  for (const [seenTopic, seenItem] of seen.entries()) {\n    if (similarity(topic, seenTopic) > 0.7) {\n      // Keep the one with higher engagement\n      if (item.json.engagement > seenItem.json.engagement) {\n        seen.delete(seenTopic);\n        seen.set(topic, item);\n      }\n      isDuplicate = true;\n      break;\n    }\n  }\n  \n  if (!isDuplicate) {\n    seen.set(topic, item);\n  }\n}\n\nreturn Array.from(seen.values()).map(item => ({ json: item.json }));"},"notesInFlow":true,"typeVersion":2},{"id":"3f532e9e-b713-4f5c-a97c-4f92d6e7a92e","name":"Calculate Viral Potential Score","type":"n8n-nodes-base.code","notes":"Scores each trend based on engagement, recency, and growth","position":[2144,416],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Calculate viral potential score (0-100)\nconst trend = $input.item.json;\nconst config = $node['Load Niche Config'].json;\n\nlet score = 0;\n\n// Engagement score (0-40 points)\nlet engagementScore = 0;\nif (trend.source === 'Twitter') {\n  engagementScore = Math.min(40, (trend.engagement / 10000) * 40);\n} else if (trend.source === 'Reddit') {\n  engagementScore = Math.min(40, (trend.engagement / 1000) * 40);\n} else if (trend.source === 'Google Trends') {\n  engagementScore = Math.min(40, (trend.engagement / 100000) * 40);\n}\nscore += engagementScore;\n\n// Recency score (0-30 points)\nconst hoursSincePost = (Date.now() - new Date(trend.timestamp).getTime()) / (1000 * 60 * 60);\nconst recencyScore = Math.max(0, 30 - (hoursSincePost / config.timeWindow) * 30);\nscore += recencyScore;\n\n// Source credibility (0-15 points)\nconst sourceScore = {\n  'Google Trends': 15,\n  'Twitter': 12,\n  'Reddit': 10\n}[trend.source] || 5;\nscore += sourceScore;\n\n// Keyword relevance (0-15 points)\nconst text = `${trend.topic} ${trend.description}`.toLowerCase();\nconst matchCount = config.keywords.filter(k => text.includes(k.toLowerCase())).length;\nconst relevanceScore = Math.min(15, matchCount * 5);\nscore += relevanceScore;\n\n// Determine opportunity level\nlet opportunityLevel = 'LOW';\nif (score >= 75) opportunityLevel = 'HIGH';\nelse if (score >= 50) opportunityLevel = 'MEDIUM';\n\nreturn {\n  json: {\n    ...trend,\n    viralScore: Math.round(score),\n    opportunityLevel,\n    scoreBreakdown: {\n      engagement: Math.round(engagementScore),\n      recency: Math.round(recencyScore),\n      source: sourceScore,\n      relevance: Math.round(relevanceScore)\n    }\n  }\n};"},"notesInFlow":true,"typeVersion":2},{"id":"5fc00882-9c04-42f9-b3d9-6fd1e1a2fd01","name":"Filter High Potential Only","type":"n8n-nodes-base.filter","notes":"Only keeps trends with viral score above 40","position":[2368,416],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"score-threshold","operator":{"type":"number","operation":"largerEqual"},"leftValue":"={{ $json.viralScore }}","rightValue":40}]}},"notesInFlow":true,"typeVersion":2},{"id":"7e266831-96a7-48d0-b556-068b479f278b","name":"Sort by Viral Score","type":"n8n-nodes-base.code","notes":"Ranks opportunities by score (highest first)","position":[2592,416],"parameters":{"jsCode":"// Sort trends by viral score descending\nconst items = $input.all();\nconst sorted = items.sort((a, b) => b.json.viralScore - a.json.viralScore);\n\n// Take top 10\nreturn sorted.slice(0, 10);"},"notesInFlow":true,"typeVersion":2},{"id":"2a029ebb-ba06-45c9-8c55-4b14e9257217","name":"Check Already Covered","type":"n8n-nodes-base.code","notes":"Prevents suggesting topics you've already created content about","position":[2816,416],"parameters":{"jsCode":"// Check against previously covered topics\nconst items = $input.all();\nconst staticData = $getWorkflowStaticData('global');\n\n// Initialize covered topics tracker\nif (!staticData.coveredTopics) {\n  staticData.coveredTopics = {};\n}\n\n// Clean up old entries (older than 30 days)\nconst thirtyDaysAgo = Date.now() - (30 * 24 * 60 * 60 * 1000);\nfor (const key in staticData.coveredTopics) {\n  if (staticData.coveredTopics[key].timestamp < thirtyDaysAgo) {\n    delete staticData.coveredTopics[key];\n  }\n}\n\n// Filter out already covered topics\nconst newOpportunities = items.filter(item => {\n  const topicKey = item.json.topic.toLowerCase().replace(/[^a-z0-9]/g, '');\n  return !staticData.coveredTopics[topicKey];\n}).map(item => ({\n  json: {\n    ...item.json,\n    isNew: true\n  }\n}));\n\nreturn newOpportunities;"},"notesInFlow":true,"typeVersion":2},{"id":"935c1484-dd12-4015-bad5-5896deeee4ad","name":"AI - Generate Content Ideas","type":"n8n-nodes-base.httpRequest","notes":"Uses Claude AI to generate creative content ideas for each trend","position":[3040,416],"parameters":{"url":"https://api.anthropic.com/v1/messages","method":"POST","options":{},"sendBody":true,"sendHeaders":true,"authentication":"predefinedCredentialType","bodyParameters":{"parameters":[{"name":"model","value":"claude-sonnet-4-20250514"},{"name":"max_tokens","value":"2000"},{"name":"messages","value":"={{ [{role: 'user', content: `You are a viral content strategist. Analyze this trending topic and generate 5 unique, high-engagement content ideas.\n\nTrending Topic: ${$json.topic}\nSource: ${$json.source}\nEngagement: ${$json.engagement}\nContext: ${$json.description}\nNiche: ${$node['Load Niche Config'].json.niche}\n\nFor each idea, provide:\n1. Content Format (Thread, Carousel, Video, Article, etc.)\n2. Hook/Title (attention-grabbing)\n3. Key Points (3-5 bullet points)\n4. Platform Recommendation\n5. Viral Potential Reason\n\nMake ideas actionable, specific, and optimized for virality. Return as JSON array with keys: format, hook, keyPoints (array), platform, viralReason.`}] }}"}]},"headerParameters":{"parameters":[{"name":"x-api-key","value":"={{ $credentials.apiKey }}"},{"name":"anthropic-version","value":"2023-06-01"}]},"nodeCredentialType":"anthropicApi"},"credentials":{"anthropicApi":{"id":"credential-id","name":"Anthropic account - test"}},"notesInFlow":true,"typeVersion":4.2},{"id":"347f0ef9-3842-4cac-b493-42145afdc67b","name":"Parse AI Content Ideas","type":"n8n-nodes-base.code","notes":"Extracts and structures AI-generated content ideas","position":[3264,416],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Parse Claude AI response\nconst response = $input.item.json;\nconst trend = $node['Check Already Covered'].all().find(i => i.json.topic === $json.topic).json;\n\ntry {\n  const aiContent = response.content?.[0]?.text || '';\n  \n  // Try to extract JSON from response\n  let ideas = [];\n  const jsonMatch = aiContent.match(/\\[\\s*\\{[\\s\\S]*\\}\\s*\\]/);\n  \n  if (jsonMatch) {\n    ideas = JSON.parse(jsonMatch[0]);\n  } else {\n    // Fallback: create structured response from text\n    ideas = [{\n      format: 'Mixed Content',\n      hook: `${trend.topic} - Viral Opportunity`,\n      keyPoints: [aiContent.substring(0, 200)],\n      platform: 'Multi-platform',\n      viralReason: 'High engagement trend'\n    }];\n  }\n  \n  return {\n    json: {\n      ...trend,\n      contentIdeas: ideas,\n      aiGenerated: true,\n      generatedAt: new Date().toISOString()\n    }\n  };\n  \n} catch (error) {\n  console.error('Failed to parse AI response:', error);\n  return {\n    json: {\n      ...trend,\n      contentIdeas: [],\n      aiGenerated: false,\n      error: error.message\n    }\n  };\n}"},"notesInFlow":true,"typeVersion":2},{"id":"842024ea-fd0b-4298-b565-6f412a861771","name":"Add Research Links","type":"n8n-nodes-base.code","notes":"Adds relevant research and reference links for each opportunity","position":[3488,416],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Add research resources\nconst opportunity = $input.item.json;\n\nconst researchLinks = [\n  {\n    type: 'Google Search',\n    url: `https://www.google.com/search?q=${encodeURIComponent(opportunity.topic)}`,\n    purpose: 'General research and fact-checking'\n  },\n  {\n    type: 'Twitter Search',\n    url: `https://twitter.com/search?q=${encodeURIComponent(opportunity.topic)}&f=live`,\n    purpose: 'Real-time conversations and reactions'\n  },\n  {\n    type: 'YouTube',\n    url: `https://www.youtube.com/results?search_query=${encodeURIComponent(opportunity.topic)}`,\n    purpose: 'Video content inspiration'\n  },\n  {\n    type: 'Reddit',\n    url: `https://www.reddit.com/search/?q=${encodeURIComponent(opportunity.topic)}&sort=hot`,\n    purpose: 'Community discussions and insights'\n  }\n];\n\nreturn {\n  json: {\n    ...opportunity,\n    researchLinks,\n    originalSourceUrl: opportunity.url\n  }\n};"},"notesInFlow":true,"typeVersion":2},{"id":"091c53de-1c97-46f7-97db-4be61d9ebddd","name":"Create Opportunity Report","type":"n8n-nodes-base.code","notes":"Generates comprehensive report for each content opportunity","position":[3712,416],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Generate detailed opportunity report\nconst opp = $input.item.json;\nconst config = $node['Load Niche Config'].json;\n\nconst report = {\n  // Summary\n  opportunityId: `OPP-${Date.now()}-${Math.random().toString(36).substr(2, 6).toUpperCase()}`,\n  detectedAt: new Date().toISOString(),\n  \n  // Trend Details\n  trend: {\n    topic: opp.topic,\n    source: opp.source,\n    description: opp.description,\n    sourceUrl: opp.url,\n    engagement: opp.engagement,\n    timestamp: opp.timestamp\n  },\n  \n  // Scoring\n  analysis: {\n    viralScore: opp.viralScore,\n    opportunityLevel: opp.opportunityLevel,\n    scoreBreakdown: opp.scoreBreakdown,\n    niche: config.niche\n  },\n  \n  // Content Ideas\n  contentSuggestions: opp.contentIdeas.map((idea, idx) => ({\n    ideaNumber: idx + 1,\n    format: idea.format,\n    hook: idea.hook,\n    keyPoints: idea.keyPoints,\n    platform: idea.platform,\n    viralReason: idea.viralReason,\n    estimatedCreationTime: '2-4 hours'\n  })),\n  \n  // Research Resources\n  resources: opp.researchLinks,\n  \n  // Action Items\n  nextSteps: [\n    '1. Review all content ideas and select the best fit',\n    '2. Conduct additional research using provided links',\n    '3. Create content outline based on selected idea',\n    '4. Develop and publish content within 24-48 hours',\n    '5. Track performance and engagement metrics'\n  ],\n  \n  // Timing\n  urgency: opp.viralScore >= 75 ? 'HIGH - Create within 24 hours' : \n           opp.viralScore >= 50 ? 'MEDIUM - Create within 48 hours' : \n           'LOW - Create when ready',\n  \n  // Metadata\n  metadata: {\n    aiGenerated: opp.aiGenerated,\n    generatedAt: opp.generatedAt,\n    workflowVersion: 'v1.0'\n  }\n};\n\nreturn { json: report };"},"notesInFlow":true,"typeVersion":2},{"id":"7d064533-3081-4cd9-90a9-b82719cc17e2","name":"Aggregate All Opportunities","type":"n8n-nodes-base.code","notes":"Combines all opportunities into a single digest","position":[3936,416],"parameters":{"jsCode":"// Create aggregated report\nconst opportunities = $input.all().map(i => i.json);\n\nconst digest = {\n  scanDate: new Date().toISOString(),\n  totalOpportunities: opportunities.length,\n  \n  summary: {\n    high: opportunities.filter(o => o.analysis.opportunityLevel === 'HIGH').length,\n    medium: opportunities.filter(o => o.analysis.opportunityLevel === 'MEDIUM').length,\n    low: opportunities.filter(o => o.analysis.opportunityLevel === 'LOW').length\n  },\n  \n  topOpportunities: opportunities.slice(0, 5).map(o => ({\n    topic: o.trend.topic,\n    score: o.analysis.viralScore,\n    level: o.analysis.opportunityLevel,\n    source: o.trend.source,\n    bestIdea: o.contentSuggestions[0]?.hook || 'See full report'\n  })),\n  \n  opportunities: opportunities,\n  \n  stats: {\n    averageScore: Math.round(opportunities.reduce((sum, o) => sum + o.analysis.viralScore, 0) / opportunities.length),\n    sources: {\n      twitter: opportunities.filter(o => o.trend.source === 'Twitter').length,\n      reddit: opportunities.filter(o => o.trend.source === 'Reddit').length,\n      googleTrends: opportunities.filter(o => o.trend.source === 'Google Trends').length\n    },\n    totalContentIdeas: opportunities.reduce((sum, o) => sum + o.contentSuggestions.length, 0)\n  }\n};\n\nreturn [{ json: digest }];"},"notesInFlow":true,"typeVersion":2},{"id":"10104634-bdac-43c9-85ee-de8f3f999171","name":"Send Email Digest","type":"n8n-nodes-base.emailSend","notes":"Sends comprehensive email with all content opportunities","position":[4160,320],"webhookId":"ce402e57-309b-48cb-8edf-e7e0fa064804","parameters":{"options":{},"subject":"=🚀 {{ $json.totalOpportunities }} New Viral Content Opportunities Detected","toEmail":"user@example.com","fromEmail":"user@example.com"},"credentials":{"smtp":{"id":"credential-id","name":"SMTP -test"}},"notesInFlow":true,"typeVersion":2.1},{"id":"aff49db2-c405-4cb3-8bb5-940daabb2ab8","name":"Send Slack Summary","type":"n8n-nodes-base.slack","notes":"Posts quick summary to Slack channel","position":[4160,512],"webhookId":"b003f0f9-02b5-4df3-9b0e-e05f47f1cc0d","parameters":{"resource":"channel","channelId":{"__rl":true,"mode":"list","value":""}},"credentials":{"slackApi":{"id":"credential-id","name":"Slack account - test "}},"notesInFlow":true,"typeVersion":2.1},{"id":"2d9c82ad-9fea-4ef9-82c3-90a06b2f51c6","name":"Log to Content Database","type":"n8n-nodes-base.postgres","notes":"Stores opportunities in database for tracking and analytics","position":[4384,416],"parameters":{"table":"viral_opportunities","schema":"content","columns":{"value":{},"schema":[],"mappingMode":"autoMapInputData","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{}},"credentials":{"postgres":{"id":"credential-id","name":"Postgres-test"}},"notesInFlow":true,"typeVersion":2.4},{"id":"6ef0386d-b622-4e27-ab11-0a7bb86185cd","name":"Mark Topic as Suggested","type":"n8n-nodes-base.code","notes":"Updates workflow memory to track suggested topics","position":[4608,416],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Mark topic as suggested to prevent future duplicates\nconst opportunity = $input.item.json;\nconst staticData = $getWorkflowStaticData('global');\n\nif (!staticData.coveredTopics) {\n  staticData.coveredTopics = {};\n}\n\nconst topicKey = opportunity.trend.topic.toLowerCase().replace(/[^a-z0-9]/g, '');\nstaticData.coveredTopics[topicKey] = {\n  opportunityId: opportunity.opportunityId,\n  topic: opportunity.trend.topic,\n  suggestedAt: opportunity.detectedAt,\n  timestamp: Date.now()\n};\n\nconsole.log(`✅ Marked as suggested: ${opportunity.trend.topic}`);\n\nreturn { json: opportunity };"},"notesInFlow":true,"typeVersion":2},{"id":"f451f6db-e55f-4e6d-a198-28b1677f1784","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[0,-240],"parameters":{"width":720,"height":1264,"content":"Automatically discovers trending topics in your niche and generates ready-to-use content ideas with AI.\n\n## 🎯 How It Works\n\n### 1. **Multi-Source Trend Monitoring**\n   - Twitter/X trending topics and hashtags\n   - Reddit hot posts from niche subreddits\n   - Google Trends daily search trends\n   - Runs every 2 hours for fresh opportunities\n\n### 2. **Smart Filtering & Scoring**\n   - Filters by your niche keywords\n   - Removes duplicates across sources\n   - Calculates viral potential score (0-100)\n   - Ranks by engagement, recency, and relevance\n   - Prevents suggesting already-covered topics\n\n### 3. **AI Content Generation**\n   - Uses Claude AI to analyze each trend\n   - Generates 5 unique content ideas per trend\n   - Provides hooks, key points, and platform recommendations\n   - Explains why each idea has viral potential\n\n### 4. **Comprehensive Delivery**\n   - Beautiful HTML email digest with all opportunities\n   - Slack summary for quick review\n   - Database logging for tracking\n   - Research links for deeper investigation\n\n\n## 🎨 Customization Options\n\n### Adjust Scan Frequency\nEdit \"Every 2 Hours\" trigger:\n- More frequent: Every 1 hour\n- Less frequent: Every 4-6 hours\n- Consider API rate limits\n\n### Tune Viral Score Algorithm\nEdit \"Calculate Viral Potential Score\" node:\n- Adjust engagement weight (currently 40%)\n- Change recency importance (currently 30%)\n- Modify threshold in \"Filter High Potential Only\" (currently 40)\n\n### Customize Content Ideas\nModify the AI prompt in \"AI - Generate Content Ideas\":\n- Change number of ideas (currently 5)\n- Add specific format requirements\n- Include brand voice guidelines\n- Target specific platforms\n\n"},"typeVersion":1},{"id":"4a320c45-d7f3-46e1-a647-5bb4ea1627cd","name":"Sticky Note - Collection","type":"n8n-nodes-base.stickyNote","position":[736,176],"parameters":{"color":6,"width":640,"height":688,"content":"## 📡 TREND COLLECTION\nFetch from multiple sources, parse, and normalize data"},"typeVersion":1},{"id":"f809d301-6b66-4e15-b8c9-15c104eb5263","name":"Sticky Note - Analysis","type":"n8n-nodes-base.stickyNote","position":[1440,256],"parameters":{"color":4,"width":1056,"height":336,"content":"## 🔍 FILTERING & SCORING\nKeyword filtering, deduplication, viral potential scoring, ranking"},"typeVersion":1},{"id":"842ffdfa-ea0a-4d66-bb90-6804892fb698","name":"Sticky Note - AI","type":"n8n-nodes-base.stickyNote","position":[2552,240],"parameters":{"color":5,"width":1088,"height":368,"content":"## 🤖 AI CONTENT GENERATION\nCheck history, generate ideas with AI, enrich with research"},"typeVersion":1},{"id":"8053a523-abbc-4101-9812-17253970237f","name":"Sticky Note - Delivery","type":"n8n-nodes-base.stickyNote","position":[3680,224],"parameters":{"width":1328,"height":448,"content":"## 📨 REPORTING & DELIVERY\nCreate reports, send digest, notify team, log to database"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"b0ea2038-51da-44a7-8151-adf6dd960eaa","connections":{"Parse Reddit Data":{"main":[[{"node":"Merge All Trend Sources","type":"main","index":1}]]},"Send Email Digest":{"main":[[{"node":"Log to Content Database","type":"main","index":0}]]},"Add Research Links":{"main":[[{"node":"Create Opportunity Report","type":"main","index":0}]]},"Parse Twitter Data":{"main":[[{"node":"Merge All Trend Sources","type":"main","index":0}]]},"Send Slack Summary":{"main":[[{"node":"Log to Content Database","type":"main","index":0}]]},"Fetch Google Trends":{"main":[[{"node":"Parse Google Trends","type":"main","index":0}]]},"Parse Google Trends":{"main":[[{"node":"Merge All Trend Sources","type":"main","index":0}]]},"Sort by Viral Score":{"main":[[{"node":"Check Already Covered","type":"main","index":0}]]},"Check Already Covered":{"main":[[{"node":"AI - Generate Content Ideas","type":"main","index":0}]]},"Fetch Twitter/X Trends":{"main":[[{"node":"Parse Twitter Data","type":"main","index":0}]]},"Parse AI Content Ideas":{"main":[[{"node":"Add Research Links","type":"main","index":0}]]},"Fetch Reddit Hot Topics":{"main":[[{"node":"Parse Reddit Data","type":"main","index":0}]]},"Log to Content Database":{"main":[[{"node":"Mark Topic as Suggested","type":"main","index":0}]]},"Mark Topic as Suggested":{"main":[[{"node":"Load Niche Config","type":"main","index":0}]]},"Merge All Trend Sources":{"main":[[{"node":"Filter by Niche Keywords","type":"main","index":0}]]},"Remove Duplicate Topics":{"main":[[{"node":"Calculate Viral Potential Score","type":"main","index":0}]]},"Filter by Niche Keywords":{"main":[[{"node":"Remove Duplicate Topics","type":"main","index":0}]]},"Create Opportunity Report":{"main":[[{"node":"Aggregate All Opportunities","type":"main","index":0}]]},"Filter High Potential Only":{"main":[[{"node":"Sort by Viral Score","type":"main","index":0}]]},"AI - Generate Content Ideas":{"main":[[{"node":"Parse AI Content Ideas","type":"main","index":0}]]},"Aggregate All Opportunities":{"main":[[{"node":"Send Email Digest","type":"main","index":0},{"node":"Send Slack Summary","type":"main","index":0}]]},"Every 2 Hours - Trend Scanner":{"main":[[{"node":"Fetch Twitter/X Trends","type":"main","index":0},{"node":"Fetch Reddit Hot Topics","type":"main","index":0},{"node":"Fetch Google Trends","type":"main","index":0}]]},"Calculate Viral Potential Score":{"main":[[{"node":"Filter High Potential Only","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":29,"nodeTypes":{"n8n-nodes-base.code":{"count":14},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.filter":{"count":1},"n8n-nodes-base.postgres":{"count":1},"n8n-nodes-base.emailSend":{"count":1},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.httpRequest":{"count":4},"n8n-nodes-base.scheduleTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Oneclick AI Squad","username":"oneclick-ai","bio":"The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations  from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.","verified":true,"links":["https://www.oneclickitsolution.com/"],"avatar":"https://gravatar.com/avatar/848fca91367142f65f9e5c55d64e5c9952b160d7b060d103b52aa343c6bc7b3d?r=pg&d=retro&size=200"},"nodes":[{"id":11,"icon":"fa:envelope","name":"n8n-nodes-base.emailSend","codex":{"data":{"alias":["SMTP","email","human","form","wait","hitl","approval"],"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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sendemail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/sendemail/"}]},"categories":["Communication","HITL","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Send Email","color":"#00bb88"},"iconData":{"icon":"envelope","type":"icon"},"displayName":"Send Email","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":9,"name":"Core Nodes"},{"id":28,"name":"HITL"}]},{"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":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"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/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.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":30,"icon":"file:postgres.svg","name":"n8n-nodes-base.postgres","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-i-chose-n8n-over-zapier-in-2020/","icon":"😍","label":"Why I chose n8n over Zapier in 2020"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with 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/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-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.postgres/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/postgres/"}]},"categories":["Development","Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Postgres"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNzkgODEiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTc3LjM5MSA0Ny45MjJjLS40NjYtMS40MTItMS42ODgtMi4zOTYtMy4yNjgtMi42MzItLjc0NS0uMTExLTEuNTk4LS4wNjQtMi42MDguMTQ0LTEuNzYuMzYzLTMuMDY1LjUwMS00LjAxOC41MjggMy41OTYtNi4wNzIgNi41MjEtMTIuOTk3IDguMjA0LTE5LjUxNSAyLjcyMi0xMC41NCAxLjI2OC0xNS4zNDEtLjQzMi0xNy41MTNDNzAuNzcgMy4xODUgNjQuMjA2LjA5NyA1Ni4yODcuMDAyYy00LjIyNC0uMDUyLTcuOTMzLjc4Mi05Ljg2NyAxLjM4MmEzNyAzNyAwIDAgMC01Ljc3LS41MjhjLTMuODA5LS4wNjEtNy4xNzQuNzctMTAuMDUgMi40NzZhNDYgNDYgMCAwIDAtNy4wOTgtMS43ODJDMTYuNTYxLjQxMSAxMC45NjggMS4yOTkgNi44NzYgNC4xOSAxLjkyMiA3LjY4OS0uMzc1IDEzLjc3LjA1IDIyLjI2MmMuMTM1IDIuNjk2IDEuNjQzIDEwLjkgNC4wMTggMTguNjggMS4zNjUgNC40NzIgMi44MiA4LjE4NSA0LjMyNiAxMS4wMzggMi4xMzUgNC4wNDYgNC40MTkgNi40MjggNi45ODQgNy4yODQgMS40MzguNDc5IDQuMDQ5LjgxNCA2Ljc5Ny0xLjQ3M2E2IDYgMCAwIDAgMS40MjkgMS4yM2MuNzgzLjQ5NCAxLjc0Ljg5NyAyLjY5NiAxLjEzNiAzLjQ0Ni44NjIgNi42NzQuNjQ2IDkuNDI3LS41NjFsLjA0MSAxLjM2Mi4wNiAxLjg5OWMuMTYzIDQuMDY0LjQ0IDcuMjIzIDEuMjU5IDkuNDM0LjA0NS4xMjIuMTA1LjMwNy4xNjkuNTAzLjQwOSAxLjI1MSAxLjA5MiAzLjM0NiAyLjgzIDQuOTg3IDEuOCAxLjY5OSAzLjk3OCAyLjIyIDUuOTcyIDIuMjIgMSAwIDEuOTU1LS4xMzEgMi43OTItLjMxMSAyLjk4NC0uNjM5IDYuMzczLTEuNjE0IDguODI0LTUuMTA0IDIuMzE4LTMuMyAzLjQ0NC04LjI3IDMuNjQ4LTE2LjEwMWwuMDc0LS42MzQuMDQ4LS40MTQuNTQ2LjA0OC4xNDEuMDFjMy4wMzkuMTM4IDYuNzU1LS41MDYgOS4wMzctMS41NjYgMS44MDMtLjgzNyA3LjU4Mi0zLjg4OCA2LjIyMS04LjAwNyIvPjxwYXRoIGZpbGw9IiMzMzY3OTEiIGQ9Ik03Mi4xOTUgNDguNzIzYy05LjAzNiAxLjg2NC05LjY1Ny0xLjE5NS05LjY1Ny0xLjE5NSA5LjU0MS0xNC4xNTcgMTMuNTI5LTMyLjEyNyAxMC4wODctMzYuNTI1QzYzLjIzNS0uOTk0IDQ2Ljk4MSA0LjY4IDQ2LjcxIDQuODI3bC0uMDg3LjAxNmMtMS43ODUtLjM3MS0zLjc4My0uNTkxLTYuMDI5LS42MjgtNC4wODktLjA2Ny03LjE5IDEuMDcyLTkuNTQ0IDIuODU3IDAgMC0yOC45OTUtMTEuOTQ1LTI3LjY0NyAxNS4wMjMuMjg3IDUuNzM3IDguMjIzIDQzLjQxIDE3LjY4OSAzMi4wMzEgMy40Ni00LjE2MSA2LjgwMy03LjY3OSA2LjgwMy03LjY3OSAxLjY2IDEuMTAzIDMuNjQ4IDEuNjY2IDUuNzMyIDEuNDYzbC4xNjItLjEzN2E2LjMgNi4zIDAgMCAwIC4wNjUgMS42MmMtMi40MzkgMi43MjUtMS43MjIgMy4yMDMtNi41OTcgNC4yMDYtNC45MzMgMS4wMTctMi4wMzUgMi44MjYtLjE0MyAzLjI5OSAyLjI5NC41NzQgNy42IDEuMzg2IDExLjE4NS0zLjYzM2wtLjE0My41NzNjLjk1Ni43NjUgMS42MjYgNC45NzggMS41MTQgOC43OTdzLS4xODggNi40NDEuNTY1IDguNDg5IDEuNTAzIDYuNjU2IDcuOTEyIDUuMjgyYzUuMzU1LTEuMTQ4IDguMTMtNC4xMjEgOC41MTYtOS4wODEuMjc0LTMuNTI2Ljg5NC0zLjAwNS45MzMtNi4xNThsLjQ5Ny0xLjQ5M2MuNTczLTQuNzguMDkxLTYuMzIyIDMuMzktNS42MDVsLjgwMi4wN2MyLjQyOC4xMSA1LjYwNi0uMzkxIDcuNDcxLTEuMjU3IDQuMDE2LTEuODY0IDYuMzk4LTQuOTc2IDIuNDM4LTQuMTU4Ii8+PHBhdGggZD0iTTMyLjc0NyAyNC42NmMtLjgxNC0uMTEzLTEuNTUyLS4wMDgtMS45MjUuMjc0YS43LjcgMCAwIDAtLjI5Mi40N2MtLjA0Ny4zMzYuMTg4LjcwNy4zMzMuODk4LjQwOS41NDIgMS4wMDYuOTE1IDEuNTk4Ljk5N2EyIDIgMCAwIDAgLjI1Ni4wMThjLjk4NiAwIDEuODgzLS43NjggMS45NjItMS4zMzUuMDk5LS43MS0uOTMyLTEuMTgzLTEuOTMxLTEuMzIybTI2Ljk3NS4wMjJjLS4wNzgtLjU1Ni0xLjA2OC0uNzE1LTIuMDA3LS41ODRzLTEuODQ4LjU1NC0xLjc3MiAxLjExMmMuMDYxLjQzNC44NDQgMS4xNzQgMS43NzEgMS4xNzRxLjExNyAwIC4yMzctLjAxNmMuNjE5LS4wODYgMS4wNzMtLjQ3OSAxLjI4OC0uNzA1LjMyOS0uMzQ1LjUxOC0uNzMuNDg0LS45OG0xNS40NzcgMjMuODI4Yy0uMzQ1LTEuMDQyLTEuNDUzLTEuMzc3LTMuMjk2LS45OTctNS40NzEgMS4xMjktNy40My4zNDctOC4wNzMtLjEyNyA0LjI1Mi02LjQ3OCA3Ljc1LTE0LjMwOCA5LjYzNy0yMS42MTQuODk0LTMuNDYxIDEuMzg4LTYuNjc1IDEuNDI4LTkuMjk0LjA0NS0yLjg3Ni0uNDQ1LTQuOTg4LTEuNDU1LTYuMjc5LTQuMDcyLTUuMjAzLTEwLjA0OC03Ljk5NC0xNy4yODMtOC4wNy00Ljk3My0uMDU2LTkuMTc1IDEuMjE3LTkuOTkgMS41NzVhMjUgMjUgMCAwIDAtNS42MjItLjcyMmMtMy43MzQtLjA2LTYuOTYxLjgzNC05LjYzMyAyLjY1NWE0MyA0MyAwIDAgMC03LjgyOC0yLjA1MmMtNi4zNDItMS4wMjEtMTEuMzgxLS4yNDgtMTQuOTc4IDIuMy00LjI5MSAzLjA0LTYuMjcyIDguNDc1LTUuODg4IDE2LjE1Mi4xMjkgMi41ODMgMS42MDEgMTAuNTI5IDMuOTIzIDE4LjEzOSAzLjA1NyAxMC4wMTYgNi4zOCAxNS42ODYgOS44NzcgMTYuODUyYTQuNCA0LjQgMCAwIDAgMS40MDIuMjMyYzEuMjc2IDAgMi44MzktLjU3NSA0LjQ2Ni0yLjUzMWExNjEgMTYxIDAgMCAxIDYuMTU2LTYuOTY2IDkuOSA5LjkgMCAwIDAgNC40MjkgMS4xOTFsLjAxLjEyMWMtLjMxLjM2OC0uNTY0LjY5LS43ODEuOTY1LTEuMDcgMS4zNTgtMS4yOTMgMS42NDEtNC43MzggMi4zNTEtLjk4LjIwMi0zLjU4Mi43MzgtMy42MiAyLjU2My0uMDQxIDEuOTkzIDMuMDc2IDIuODMgMy40MzEgMi45MTkgMS4yMzguMzEgMi40My40NjMgMy41NjguNDYzIDIuNzY2IDAgNS4yLS45MDkgNy4xNDUtMi42NjgtLjA2IDcuMTA2LjIzNiAxNC4xMDcgMS4wODkgMTYuMjQxLjY5OSAxLjc0NiAyLjQwNiA2LjAxNCA3Ljc5OCA2LjAxNC43OTEgMCAxLjY2Mi0uMDkyIDIuNjItLjI5NyA1LjYyNy0xLjIwNyA4LjA3MS0zLjY5NCA5LjAxNi05LjE3Ny41MDYtMi45MyAxLjM3NC05LjkyOCAxLjc4Mi0xMy42ODIuODYyLjI2OSAxLjk3MS4zOTIgMy4xNy4zOTIgMi41MDEgMCA1LjM4Ny0uNTMxIDcuMTk3LTEuMzcyIDIuMDMzLS45NDQgNS43MDItMy4yNjEgNS4wMzctNS4yNzR6TTYxLjggMjMuMTQ3Yy0uMDE5IDEuMTA4LS4xNzEgMi4xMTQtLjMzMyAzLjE2NC0uMTc0IDEuMTI5LS4zNTQgMi4yOTctLjM5OSAzLjcxNS0uMDQ1IDEuMzc5LjEyOCAyLjgxNC4yOTQgNC4yLjMzNyAyLjgwMS42ODIgNS42ODUtLjY1NSA4LjUzMWExMSAxMSAwIDAgMS0uNTkyLTEuMjE4Yy0uMTY2LS40MDMtLjUyNy0xLjA1LTEuMDI3LTEuOTQ2LTEuOTQ0LTMuNDg3LTYuNDk3LTExLjY1Mi00LjE2Ny0xNC45ODQuNjk0LS45OTIgMi40NTYtMi4wMTEgNi44NzktMS40NjN6TTU2LjQzOSA0LjM3NGM2LjQ4Mi4xNDMgMTEuNjA5IDIuNTY4IDE1LjI0IDcuMjA3IDIuNzg0IDMuNTU4LS4yODIgMTkuNzQ5LTkuMTU4IDMzLjcxNmwtLjI2OS0uMzM5LS4xMTItLjE0YzIuMjk0LTMuNzg4IDEuODQ1LTcuNTM2IDEuNDQ2LTEwLjg1OS0uMTY0LTEuMzY0LS4zMTktMi42NTItLjI4LTMuODYxLjA0MS0xLjI4My4yMS0yLjM4Mi4zNzQtMy40NDYuMjAyLTEuMzExLjQwNy0yLjY2Ny4zNS00LjI2NWExLjggMS44IDAgMCAwIC4wMzctLjYwMWMtLjE0NC0xLjUzMy0xLjg5NC02LjEyLTUuNDYyLTEwLjI3My0xLjk1MS0yLjI3MS00Ljc5Ny00LjgxMy04LjY4Mi02LjUyN2EyOS4zIDI5LjMgMCAwIDEgNi41MTUtLjYxMnpNMjAuMTY3IDUzLjI5OGMtMS43OTMgMi4xNTUtMy4wMzEgMS43NDItMy40MzggMS42MDctMi42NTMtLjg4NS01LjczLTYuNDkxLTguNDQ0LTE1LjM4Mi0yLjM0OC03LjY5My0zLjcyLTE1LjQyOC0zLjgyOS0xNy41OTctLjM0My02Ljg2IDEuMzItMTEuNjQxIDQuOTQzLTE0LjIxIDUuODk2LTQuMTgxIDE1LjU4OS0xLjY3OSAxOS40ODQtLjQwOWwtLjE3LjE2M2MtNi4zOTEgNi40NTUtNi4yNCAxNy40ODMtNi4yMjQgMTguMTU3YTIyIDIyIDAgMCAwIC4wNTEgMS4xMzVjLjExIDEuODU1LjMxNSA1LjMwNy0uMjMyIDkuMjE3LS41MDggMy42MzMuNjEyIDcuMTg5IDMuMDcyIDkuNzU2cS4zODMuMzk4Ljc5NS43NWExNjQgMTY0IDAgMCAwLTYuMDA4IDYuODE0em02LjgzLTkuMTEzYy0xLjk4My0yLjA2OS0yLjg4NC00Ljk0Ny0yLjQ3MS03Ljg5Ni41NzctNC4xMy4zNjQtNy43MjcuMjUtOS42NTlsLS4wMzktLjY5NGMuOTM0LS44MjggNS4yNjEtMy4xNDYgOC4zNDYtMi40MzkgMS40MDguMzIzIDIuMjY2IDEuMjgxIDIuNjIzIDIuOTMxIDEuODQ2IDguNTM5LjI0NCAxMi4wOTgtMS4wNDMgMTQuOTU3LS4yNjUuNTg5LS41MTYgMS4xNDYtLjczIDEuNzIybC0uMTY2LjQ0NWMtLjQyIDEuMTI2LS44MTEgMi4xNzMtMS4wNTMgMy4xNjctMi4xMDgtLjAwNi00LjE1OS0uOTA3LTUuNzE4LTIuNTM0em0uMzI0IDExLjUxNmE1IDUgMCAwIDEtMS40OTQtLjY0MmMuMjcxLS4xMjguNzU0LS4zMDEgMS41OTEtLjQ3NCA0LjA1Mi0uODM0IDQuNjc4LTEuNDIzIDYuMDQ1LTMuMTU4LjMxMy0uMzk4LjY2OS0uODQ5IDEuMTYtMS4zOTguNzMzLS44MjEgMS4wNjgtLjY4MiAxLjY3Ni0uNDMuNDkzLjIwNC45NzIuODIxIDEuMTY3IDEuNTAxLjA5Mi4zMjEuMTk1LjkzLS4xNDMgMS40MDQtMi44NTUgMy45OTctNy4wMTUgMy45NDYtMTAuMDAzIDMuMTk4em0yMS4yMDcgMTkuNzM1Yy00Ljk1NyAxLjA2Mi02LjcxMy0xLjQ2Ny03Ljg2OS00LjM1OS0uNzQ3LTEuODY3LTEuMTEzLTEwLjI4NS0uODUzLTE5LjU4MmExLjEgMS4xIDAgMCAwLS4wNDgtLjM1NiA1IDUgMCAwIDAtLjEzOS0uNjU3Yy0uMzg3LTEuMzUzLTEuMzMxLTIuNDg0LTIuNDYyLTIuOTUzLS40NS0uMTg2LTEuMjc1LS41MjgtMi4yNjctLjI3NC4yMTItLjg3MS41NzgtMS44NTUuOTc2LTIuOTIxbC4xNjctLjQ0OGMuMTg4LS41MDUuNDIzLTEuMDI5LjY3My0xLjU4MyAxLjM0Ny0yLjk5MiAzLjE5Mi03LjA5MSAxLjE5LTE2LjM1LS43NS0zLjQ2OC0zLjI1NC01LjE2MS03LjA1LTQuNzY4LTIuMjc2LjIzNS00LjM1OCAxLjE1NC01LjM5NiAxLjY4cS0uMzM0LjE2OS0uNjE4LjMyOWMuMjktMy40OTQgMS4zODUtMTAuMDI0IDUuNDgxLTE0LjE1NiAyLjU3OS0yLjYwMSA2LjAxNC0zLjg4NiAxMC4xOTktMy44MTcgOC4yNDYuMTM1IDEzLjUzNCA0LjM2NyAxNi41MTggNy44OTMgMi41NzEgMy4wMzkgMy45NjQgNi4xIDQuNTIgNy43NTEtNC4xNzktLjQyNS03LjAyMi40LTguNDYzIDIuNDYtMy4xMzUgNC40ODEgMS43MTUgMTMuMTc4IDQuMDQ2IDE3LjM1OC40MjcuNzY2Ljc5NiAxLjQyOC45MTIgMS43MDkuNzU5IDEuODM5IDEuNzQyIDMuMDY3IDIuNDU5IDMuOTY0LjIyLjI3NS40MzMuNTQxLjU5Ni43NzQtMS4yNjYuMzY1LTMuNTM5IDEuMjA4LTMuMzMyIDUuNDIyLS4xNjcgMi4xMTUtMS4zNTYgMTIuMDE2LTEuOTU5IDE1LjUxNC0uNzk3IDQuNjIxLTIuNDk3IDYuMzQzLTcuMjc5IDcuMzY4em0yMC42OTMtMjMuNjhjLTEuMjk0LjYwMS0zLjQ2IDEuMDUyLTUuNTE4IDEuMTQ4LTIuMjczLjEwNy0zLjQzLS4yNTUtMy43MDItLjQ3Ny0uMTI4LTIuNjI2Ljg1LTIuOTAxIDEuODg0LTMuMTkxLjE2My0uMDQ2LjMyMS0uMDkuNDc0LS4xNDRhNCA0IDAgMCAwIC4zMTMuMjNjMS44MjcgMS4yMDYgNS4wODUgMS4zMzYgOS42ODUuMzg2bC4wNS0uMDFjLS42Mi41OC0xLjY4MiAxLjM1OS0zLjE4NyAyLjA1OHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Postgres","typeVersion":3,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":5,"name":"Development"}]},{"id":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"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/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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"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":844,"icon":"fa:filter","name":"n8n-nodes-base.filter","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The Filter node can be used to filter items based on a condition. If the condition is met, the item will be passed on to the next node. If the condition is not met, the item will be omitted. Conditions can be combined together by AND(meet all conditions), or OR(meet at least one condition).","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Filter","color":"#229eff"},"iconData":{"icon":"filter","type":"icon"},"displayName":"Filter","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":32,"name":"Market Research"},{"id":51,"name":"Multimodal AI"}],"image":[]}}