{"workflow":{"id":13696,"name":"Monitor brand reputation crises with Twitter/X, Reddit, News API, Slack and Jira","views":92,"recentViews":1,"totalViews":92,"createdAt":"2026-02-25T09:15:16.772Z","description":"This workflow monitors brand mentions across multiple platforms (Twitter/X, Reddit, News) and automatically detects reputation crises based on sentiment analysis and trend detection.\n\n## How it works\n\n1. **Multi-platform monitoring**: Every 10 minutes, scans Twitter/X, Reddit, and news sites for brand mentions\n2. **Data normalization**: Converts all platform data into unified format\n3. **Smart filtering**: Removes duplicates and already-analyzed mentions\n4. **AI sentiment analysis**: Analyzes each mention for:\n   - Sentiment score (positive/negative/neutral)\n   - Amplification factors (engagement, verified accounts, news sources)\n   - Crisis-level phrases and keywords\n5. **Trend detection**: Compares current sentiment to 24-hour baseline:\n   - Detects sharp sentiment drops\n   - Identifies negative mention spikes\n   - Calculates impact surge\n6. **Crisis classification**: Assigns severity (CRITICAL/HIGH/MEDIUM/LOW)\n7. **Automated response**: For crises, triggers immediate alerts:\n   - Executive crisis brief with action plan\n   - Slack alerts to crisis team\n   - Email to leadership and PR team\n   - JIRA ticket creation\n   - Crisis event logging\n\n## Setup steps\n\n1. **Connect platforms**:\n   - Twitter/X: Add OAuth credentials to \"Monitor Twitter/X\" node\n   - Reddit: Add OAuth credentials to \"Monitor Reddit\" node\n   - News API: Get API key from newsapi.org and add to \"Monitor News & Blogs\" node\n\n2. **Configure brand monitoring**:\n   - Update brand name and handles in search queries\n   - Add additional platforms if needed (LinkedIn, Facebook, Instagram)\n\n3. **Set up alerting**:\n   - Slack: Add credentials and update channel names\n   - Email: Add SMTP settings and recipient lists\n   - JIRA: Add credentials and project ID\n\n4. **Adjust sensitivity**:\n   - Modify sentiment keyword dictionaries in \"AI Sentiment Analysis Engine\"\n   - Adjust crisis threshold scores\n   - Customize amplification factors\n\n5. **Test thoroughly**:\n   - Run manual execution with test data\n   - Verify alert routing and content\n   - Test false positive handling\n\n6. **Activate**: Enable for continuous 24/7 monitoring\n\n## Key Features:\n\n- **Multi-platform monitoring** (every 10 minutes): Twitter/X, Reddit, and News sites\n- **Data normalization** that converts different platform formats into unified structure\n- **AI sentiment analysis** engine that evaluates:\n  - Sentiment keywords (critical, severe, moderate, mild negative/positive)\n  - Amplification factors (engagement, verified accounts, follower counts)\n  - Impact scoring based on reach and influence\n- **Baseline trend detection** that tracks 24-hour sentiment history and detects:\n  - Sharp sentiment drops (15+ points = crisis)\n  - Negative mention spikes (30%+ increase)\n  - Impact surges\n- **Automated crisis response workflow**:\n  - Aggregates crisis mentions into executive brief\n  - Generates detailed action plan based on severity\n  - Sends Slack alerts to crisis team\n  - Emails leadership with comprehensive brief\n  - Creates JIRA ticket for tracking\n  - Logs all events for analysis\n- **Two-path routing**: Crisis-level events trigger full response workflow, while routine mentions are logged for trend analysis","workflow":{"id":"hAijyRcR9xXmda5H","meta":{"instanceId":"dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281","templateCredsSetupCompleted":true},"name":"AI Brand Reputation Crisis Detector","tags":[],"nodes":[{"id":"930025e9-0425-48c5-9e61-489fe3c9d024","name":"Every 10 Minutes","type":"n8n-nodes-base.scheduleTrigger","notes":"Runs every 10 minutes for near real-time brand monitoring","position":[96,176],"parameters":{"rule":{"interval":[{"field":"minutes","minutesInterval":10}]}},"notesInFlow":true,"typeVersion":1.2},{"id":"d3467c72-9fac-47df-846e-471ac561367f","name":"Monitor Twitter/X","type":"n8n-nodes-base.twitter","notes":"Searches for brand mentions on Twitter/X","position":[320,-16],"parameters":{"limit":100,"operation":"search","searchText":"={{ $json.brandName || 'YourBrandName' }} OR @{{ $json.brandHandle || 'yourbrand' }}","additionalFields":{}},"credentials":{"twitterOAuth2Api":{"id":"credential-id","name":"X account - test"}},"notesInFlow":true,"typeVersion":2},{"id":"1057b564-c8d2-4367-a0fe-9f7de0b14174","name":"Monitor Reddit","type":"n8n-nodes-base.reddit","notes":"Searches for brand mentions on Reddit","position":[320,176],"parameters":{"limit":50,"keyword":"=","operation":"search","subreddit":"all","additionalFields":{}},"credentials":{"redditOAuth2Api":{"id":"credential-id","name":"Reddit test"}},"notesInFlow":true,"typeVersion":1},{"id":"60a65ed8-05b5-46a2-9944-3495d36fc8e1","name":"Monitor News & Blogs","type":"n8n-nodes-base.httpRequest","notes":"Searches news articles and blog posts via News API","position":[320,368],"parameters":{"url":"=https://newsapi.org/v2/everything?q={{ $json.brandName || 'YourBrandName' }}&sortBy=publishedAt&pageSize=50&apiKey=YOUR_NEWS_API_KEY","options":{}},"notesInFlow":true,"typeVersion":4.2},{"id":"97af41ff-80a7-406f-b483-e6b784bec436","name":"Normalize Data Format","type":"n8n-nodes-base.code","notes":"Converts all platform data to unified format","position":[544,176],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Normalize data from different platforms to unified format\nconst item = $input.item.json;\nlet normalized = {};\n\n// Detect platform and normalize\nif (item.tweet_id || item.id_str || item.text) {\n  // Twitter/X format\n  normalized = {\n    platform: 'twitter',\n    id: item.id_str || item.id,\n    text: item.text || item.full_text || '',\n    author: item.user?.screen_name || 'unknown',\n    authorFollowers: item.user?.followers_count || 0,\n    timestamp: item.created_at,\n    url: `https://twitter.com/${item.user?.screen_name}/status/${item.id_str}`,\n    engagement: (item.retweet_count || 0) + (item.favorite_count || 0),\n    isVerified: item.user?.verified || false\n  };\n} else if (item.subreddit || item.permalink) {\n  // Reddit format\n  normalized = {\n    platform: 'reddit',\n    id: item.id,\n    text: `${item.title || ''} ${item.selftext || ''}`,\n    author: item.author || 'unknown',\n    authorFollowers: 0,\n    timestamp: new Date(item.created_utc * 1000).toISOString(),\n    url: `https://reddit.com${item.permalink}`,\n    engagement: (item.score || 0) + (item.num_comments || 0),\n    subreddit: item.subreddit,\n    isVerified: false\n  };\n} else if (item.title && item.source) {\n  // News API format\n  normalized = {\n    platform: 'news',\n    id: item.url,\n    text: `${item.title || ''} ${item.description || ''}`,\n    author: item.author || item.source?.name || 'unknown',\n    authorFollowers: 0,\n    timestamp: item.publishedAt,\n    url: item.url,\n    engagement: 0,\n    source: item.source?.name,\n    isVerified: true // News sources are considered verified\n  };\n} else {\n  // Unknown format - try to extract what we can\n  normalized = {\n    platform: 'unknown',\n    id: item.id || Date.now().toString(),\n    text: item.text || item.content || JSON.stringify(item),\n    author: item.author || 'unknown',\n    authorFollowers: 0,\n    timestamp: item.timestamp || new Date().toISOString(),\n    url: item.url || '',\n    engagement: 0,\n    isVerified: false\n  };\n}\n\nnormalized.rawData = item;\n\nreturn { json: normalized };"},"notesInFlow":true,"typeVersion":2},{"id":"9931cce1-ef16-4334-bad5-55d5c445b0ff","name":"Remove Duplicates","type":"n8n-nodes-base.filter","notes":"Filters out already-analyzed mentions","position":[768,176],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"5e6f7g8h-9i0j-1k2l-3m4n-o5p6q7r8s9t0","operator":{"type":"string","operation":"isNotEmpty"},"leftValue":"={{ $json.text }}"},{"id":"6f7g8h9i-0j1k-2l3m-4n5o-p6q7r8s9t0u1","operator":{"type":"string","operation":"isNotEmpty"},"leftValue":"={{ $json.id }}"}]}},"notesInFlow":true,"typeVersion":2},{"id":"973eef39-a26c-48bc-8b16-c015021b3330","name":"Merge Platform Data","type":"n8n-nodes-base.merge","notes":"Combines mentions from all platforms","position":[992,176],"parameters":{},"notesInFlow":true,"typeVersion":3},{"id":"8562740d-60d9-44f3-80e0-81b41d134761","name":"Track Analyzed Mentions","type":"n8n-nodes-base.code","notes":"Prevents duplicate analysis using workflow static data","position":[1216,176],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Check if we've already analyzed this mention\nconst mentionId = $input.item.json.id;\nconst platform = $input.item.json.platform;\n\n// Create a unique key for this mention\nconst uniqueKey = `${platform}_${mentionId}`;\n\n// Use workflow static data to store analyzed mentions\nconst analyzedMentions = $getWorkflowStaticData('global').analyzedMentions || {};\n\nif (analyzedMentions[uniqueKey]) {\n  // Already analyzed this mention\n  return { json: { skip: true, reason: 'Already analyzed' } };\n}\n\n// Mark as analyzed\nanalyzedMentions[uniqueKey] = {\n  timestamp: new Date().toISOString(),\n  analyzed: true\n};\n\n// Clean up old entries (older than 7 days)\nconst sevenDaysAgo = Date.now() - (7 * 24 * 60 * 60 * 1000);\nfor (const key in analyzedMentions) {\n  const entryTime = new Date(analyzedMentions[key].timestamp).getTime();\n  if (entryTime < sevenDaysAgo) {\n    delete analyzedMentions[key];\n  }\n}\n\n// Save back to static data\n$getWorkflowStaticData('global').analyzedMentions = analyzedMentions;\n\nreturn { \n  json: { \n    skip: false, \n    ...($input.item.json),\n    uniqueKey,\n    analysisTimestamp: new Date().toISOString()\n  } \n};"},"notesInFlow":true,"typeVersion":2},{"id":"cdbd74a0-8619-46ec-a858-f00721acb823","name":"API Rate Limiter","type":"n8n-nodes-base.wait","notes":"Prevents API rate limit issues","position":[1440,176],"webhookId":"679cfg4h-eg05-651e-ce84-gf3f91f80658","parameters":{"amount":1},"notesInFlow":true,"typeVersion":1.1},{"id":"1b32e48c-8425-4ada-b243-327572294b70","name":"Only New Mentions","type":"n8n-nodes-base.filter","notes":"Filters to unanalyzed mentions only","position":[1664,176],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"9i0j1k2l-3m4n-5o6p-7q8r-s9t0u1v2w3x4","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $json.skip }}","rightValue":"false"}]}},"notesInFlow":true,"typeVersion":2},{"id":"ef03f71b-7083-4e23-b0ba-7e306c3578aa","name":"AI Sentiment Analysis Engine","type":"n8n-nodes-base.code","notes":"Analyzes sentiment and detects negative trends","position":[1888,176],"parameters":{"mode":"runOnceForEachItem","jsCode":"// AI-powered sentiment analysis engine\nconst mention = $input.item.json;\nconst text = (mention.text || '').toLowerCase();\n\n// Sentiment keyword dictionaries\nconst negativePhrases = {\n  critical: ['scam', 'fraud', 'lawsuit', 'illegal', 'criminal', 'investigate', 'sue', 'boycott', 'terrible', 'worst', 'horrible', 'awful', 'disaster', 'catastrophe', 'dangerous', 'unsafe', 'toxic', 'predatory'],\n  severe: ['disappointed', 'unacceptable', 'disgraceful', 'shameful', 'pathetic', 'failure', 'failed', 'broken', 'useless', 'waste', 'regret', 'never again', 'avoid', 'warning', 'beware', 'don\\'t buy'],\n  moderate: ['bad', 'poor', 'not good', 'mediocre', 'subpar', 'lacking', 'issues', 'problems', 'concerns', 'unhappy', 'dissatisfied', 'frustrated', 'annoyed'],\n  mild: ['okay', 'fine', 'average', 'could be better', 'meh', 'not impressed']\n};\n\nconst positivePhrases = {\n  strong: ['amazing', 'excellent', 'outstanding', 'phenomenal', 'incredible', 'fantastic', 'brilliant', 'perfect', 'love it', 'best ever', 'highly recommend', 'game changer'],\n  moderate: ['good', 'great', 'nice', 'happy', 'satisfied', 'pleased', 'enjoy', 'like', 'recommend', 'quality'],\n  mild: ['decent', 'acceptable', 'fine', 'works', 'not bad']\n};\n\n// Calculate sentiment scores\nlet sentimentScore = 0;\nlet sentimentLevel = 'NEUTRAL';\nlet detectedPhrases = [];\n\n// Check negative phrases\nfor (const [level, phrases] of Object.entries(negativePhrases)) {\n  for (const phrase of phrases) {\n    if (text.includes(phrase)) {\n      const weight = level === 'critical' ? -10 : level === 'severe' ? -7 : level === 'moderate' ? -4 : -2;\n      sentimentScore += weight;\n      detectedPhrases.push({ phrase, sentiment: 'negative', level });\n    }\n  }\n}\n\n// Check positive phrases\nfor (const [level, phrases] of Object.entries(positivePhrases)) {\n  for (const phrase of phrases) {\n    if (text.includes(phrase)) {\n      const weight = level === 'strong' ? 8 : level === 'moderate' ? 5 : 2;\n      sentimentScore += weight;\n      detectedPhrases.push({ phrase, sentiment: 'positive', level });\n    }\n  }\n}\n\n// Amplification factors\nlet amplificationScore = 0;\n\n// High engagement amplifies impact\nif (mention.engagement > 1000) amplificationScore += 30;\nelse if (mention.engagement > 500) amplificationScore += 20;\nelse if (mention.engagement > 100) amplificationScore += 10;\nelse if (mention.engagement > 10) amplificationScore += 5;\n\n// Verified/influential accounts amplify impact\nif (mention.isVerified) amplificationScore += 15;\nif (mention.authorFollowers > 100000) amplificationScore += 25;\nelse if (mention.authorFollowers > 10000) amplificationScore += 15;\nelse if (mention.authorFollowers > 1000) amplificationScore += 5;\n\n// News platforms have high credibility\nif (mention.platform === 'news') amplificationScore += 40;\n\n// Determine sentiment level\nif (sentimentScore <= -20) {\n  sentimentLevel = 'VERY_NEGATIVE';\n} else if (sentimentScore <= -10) {\n  sentimentLevel = 'NEGATIVE';\n} else if (sentimentScore <= -3) {\n  sentimentLevel = 'SLIGHTLY_NEGATIVE';\n} else if (sentimentScore >= 15) {\n  sentimentLevel = 'VERY_POSITIVE';\n} else if (sentimentScore >= 8) {\n  sentimentLevel = 'POSITIVE';\n} else if (sentimentScore >= 3) {\n  sentimentLevel = 'SLIGHTLY_POSITIVE';\n} else {\n  sentimentLevel = 'NEUTRAL';\n}\n\n// Calculate total impact score (sentiment + amplification)\nconst impactScore = Math.abs(sentimentScore) + amplificationScore;\n\n// Determine if this is crisis-worthy\nlet crisisLevel = 'NONE';\nlet requiresCrisisResponse = false;\n\nif (sentimentScore <= -15 && impactScore >= 50) {\n  crisisLevel = 'CRITICAL';\n  requiresCrisisResponse = true;\n} else if (sentimentScore <= -10 && impactScore >= 35) {\n  crisisLevel = 'HIGH';\n  requiresCrisisResponse = true;\n} else if (sentimentScore <= -5 && impactScore >= 20) {\n  crisisLevel = 'MEDIUM';\n  requiresCrisisResponse = true;\n} else if (sentimentScore <= -3 && impactScore >= 10) {\n  crisisLevel = 'LOW';\n  requiresCrisisResponse = false;\n}\n\nreturn {\n  json: {\n    ...mention,\n    sentimentScore,\n    sentimentLevel,\n    amplificationScore,\n    impactScore,\n    detectedPhrases,\n    crisisLevel,\n    requiresCrisisResponse,\n    analysisComplete: true\n  }\n};"},"notesInFlow":true,"typeVersion":2},{"id":"2984eae8-2455-48d5-9c81-f439007d7b1c","name":"Calculate Trend Baseline","type":"n8n-nodes-base.code","notes":"Compares current sentiment to historical baseline","position":[2112,176],"parameters":{"jsCode":"// Calculate sentiment trends and detect sharp drops\nconst mentions = $input.all().map(item => item.json);\n\n// Get historical sentiment data\nconst historicalData = $getWorkflowStaticData('global').sentimentHistory || [];\n\n// Calculate current batch metrics\nconst negativeMentions = mentions.filter(m => m.sentimentScore < 0);\nconst positiveMentions = mentions.filter(m => m.sentimentScore > 0);\nconst neutralMentions = mentions.filter(m => m.sentimentScore === 0);\n\nconst avgSentiment = mentions.reduce((sum, m) => sum + m.sentimentScore, 0) / mentions.length || 0;\nconst avgImpact = mentions.reduce((sum, m) => sum + m.impactScore, 0) / mentions.length || 0;\nconst negativeRatio = negativeMentions.length / mentions.length || 0;\n\nconst currentMetrics = {\n  timestamp: new Date().toISOString(),\n  totalMentions: mentions.length,\n  avgSentiment,\n  avgImpact,\n  negativeRatio,\n  negativeMentions: negativeMentions.length,\n  positiveMentions: positiveMentions.length,\n  neutralMentions: neutralMentions.length\n};\n\n// Add to historical data\nhistoricalData.push(currentMetrics);\n\n// Keep only last 72 hours of data (assuming 10-min intervals = 6 per hour)\nconst maxDataPoints = 72 * 6; // 432 data points\nif (historicalData.length > maxDataPoints) {\n  historicalData.shift();\n}\n\n// Calculate baseline (average of last 24 hours)\nconst last24Hours = historicalData.slice(-144); // 24 hours * 6 intervals\nconst baseline = {\n  avgSentiment: last24Hours.reduce((sum, d) => sum + d.avgSentiment, 0) / last24Hours.length || 0,\n  avgImpact: last24Hours.reduce((sum, d) => sum + d.avgImpact, 0) / last24Hours.length || 0,\n  negativeRatio: last24Hours.reduce((sum, d) => sum + d.negativeRatio, 0) / last24Hours.length || 0\n};\n\n// Detect sharp drops\nconst sentimentDrop = baseline.avgSentiment - currentMetrics.avgSentiment;\nconst impactIncrease = currentMetrics.avgImpact - baseline.avgImpact;\nconst negativeRatioIncrease = currentMetrics.negativeRatio - baseline.negativeRatio;\n\nlet trendAlert = 'NORMAL';\nlet trendSeverity = 0;\nlet trendIndicators = [];\n\n// Critical trend: massive sentiment drop\nif (sentimentDrop > 15) {\n  trendSeverity = 100;\n  trendAlert = 'CRISIS';\n  trendIndicators.push(`🔴 Sentiment dropped by ${sentimentDrop.toFixed(1)} points`);\n}\n// High alert: significant sentiment drop\nelse if (sentimentDrop > 10) {\n  trendSeverity = 75;\n  trendAlert = 'HIGH_ALERT';\n  trendIndicators.push(`🟠 Sentiment dropped by ${sentimentDrop.toFixed(1)} points`);\n}\n// Medium alert: moderate sentiment drop\nelse if (sentimentDrop > 5) {\n  trendSeverity = 50;\n  trendAlert = 'MEDIUM_ALERT';\n  trendIndicators.push(`🟡 Sentiment dropped by ${sentimentDrop.toFixed(1)} points`);\n}\n\n// Check negative ratio spike\nif (negativeRatioIncrease > 0.3) {\n  trendSeverity = Math.max(trendSeverity, 75);\n  trendAlert = trendAlert === 'NORMAL' ? 'HIGH_ALERT' : trendAlert;\n  trendIndicators.push(`🟠 Negative mentions spiked by ${(negativeRatioIncrease * 100).toFixed(1)}%`);\n} else if (negativeRatioIncrease > 0.15) {\n  trendSeverity = Math.max(trendSeverity, 50);\n  trendAlert = trendAlert === 'NORMAL' ? 'MEDIUM_ALERT' : trendAlert;\n  trendIndicators.push(`🟡 Negative mentions increased by ${(negativeRatioIncrease * 100).toFixed(1)}%`);\n}\n\n// Check impact surge\nif (impactIncrease > 20) {\n  trendSeverity = Math.max(trendSeverity, 65);\n  trendIndicators.push(`⚡ Impact score surged by ${impactIncrease.toFixed(1)} points`);\n}\n\n// Save updated historical data\n$getWorkflowStaticData('global').sentimentHistory = historicalData;\n\n// Return enriched mentions with trend context\nreturn mentions.map(mention => ({\n  json: {\n    ...mention,\n    trendMetrics: currentMetrics,\n    baseline,\n    trendAlert,\n    trendSeverity,\n    trendIndicators,\n    sentimentDrop,\n    negativeRatioIncrease\n  }\n}));"},"notesInFlow":true,"typeVersion":2},{"id":"34f454c5-a87a-4144-b4af-daee4f3af656","name":"Filter Crisis Triggers","type":"n8n-nodes-base.switch","notes":"Routes based on crisis severity","position":[2336,176],"parameters":{"rules":{"values":[{"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"","rightValue":""}]}}]},"options":{}},"notesInFlow":true,"typeVersion":3.1},{"id":"0b730149-0ecf-49d9-991d-20350abae57b","name":"Aggregate Crisis Data","type":"n8n-nodes-base.code","notes":"Combines multiple crisis mentions into single alert","position":[2560,176],"parameters":{"jsCode":"// Aggregate all crisis-level mentions\nconst crisisMentions = $input.all().map(item => item.json);\n\n// Sort by impact score\ncrisisMentions.sort((a, b) => b.impactScore - a.impactScore);\n\n// Calculate aggregate metrics\nconst topMentions = crisisMentions.slice(0, 5); // Top 5 most impactful\nconst platforms = [...new Set(crisisMentions.map(m => m.platform))];\nconst totalEngagement = crisisMentions.reduce((sum, m) => sum + m.engagement, 0);\nconst avgSentiment = crisisMentions.reduce((sum, m) => sum + m.sentimentScore, 0) / crisisMentions.length;\nconst avgImpact = crisisMentions.reduce((sum, m) => sum + m.impactScore, 0) / crisisMentions.length;\n\n// Determine overall crisis severity\nlet overallSeverity = 'MEDIUM';\nif (avgImpact >= 60 || crisisMentions.length >= 10) {\n  overallSeverity = 'CRITICAL';\n} else if (avgImpact >= 40 || crisisMentions.length >= 5) {\n  overallSeverity = 'HIGH';\n}\n\n// Extract common themes\nconst allPhrases = crisisMentions.flatMap(m => m.detectedPhrases || []);\nconst phraseFrequency = {};\nallPhrases.forEach(p => {\n  const key = p.phrase;\n  phraseFrequency[key] = (phraseFrequency[key] || 0) + 1;\n});\n\nconst topThemes = Object.entries(phraseFrequency)\n  .sort((a, b) => b[1] - a[1])\n  .slice(0, 5)\n  .map(([phrase, count]) => ({ phrase, count }));\n\nconst crisisData = {\n  crisisId: `CRISIS-${Date.now()}`,\n  timestamp: new Date().toISOString(),\n  severity: overallSeverity,\n  totalMentions: crisisMentions.length,\n  platforms,\n  totalEngagement,\n  avgSentiment: avgSentiment.toFixed(2),\n  avgImpact: avgImpact.toFixed(2),\n  topMentions: topMentions.map(m => ({\n    platform: m.platform,\n    text: m.text.substring(0, 150) + '...',\n    author: m.author,\n    url: m.url,\n    sentiment: m.sentimentLevel,\n    impact: m.impactScore\n  })),\n  topThemes,\n  trendIndicators: crisisMentions[0]?.trendIndicators || [],\n  sentimentDrop: crisisMentions[0]?.sentimentDrop || 0,\n  allMentions: crisisMentions\n};\n\nreturn [{ json: crisisData }];"},"notesInFlow":true,"typeVersion":2},{"id":"ae7de7b6-8e00-45b5-a9be-8404f836981a","name":"Generate Crisis Brief","type":"n8n-nodes-base.code","notes":"Creates executive crisis brief and response plan","position":[2784,176],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Generate comprehensive crisis brief\nconst crisis = $input.item.json;\nconst timestamp = new Date(crisis.timestamp).toLocaleString();\n\nconst brief = `🚨 BRAND REPUTATION CRISIS ALERT 🚨\n\nCrisis ID: ${crisis.crisisId}\nSeverity: ${crisis.severity}\nDetected: ${timestamp}\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n📊 CRISIS METRICS\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n• Total Mentions: ${crisis.totalMentions}\n• Affected Platforms: ${crisis.platforms.join(', ')}\n• Total Engagement: ${crisis.totalEngagement.toLocaleString()}\n• Avg Sentiment Score: ${crisis.avgSentiment} (baseline comparison)\n• Avg Impact Score: ${crisis.avgImpact}\n${crisis.sentimentDrop > 0 ? `• Sentiment Drop: -${crisis.sentimentDrop.toFixed(1)} points` : ''}\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n⚠️ KEY ISSUES DETECTED\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n${crisis.topThemes.map((theme, i) => `${i + 1}. \"${theme.phrase}\" - mentioned ${theme.count}x`).join('\\n')}\n\n${crisis.trendIndicators.length > 0 ? `━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n📈 TREND ALERTS\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n${crisis.trendIndicators.map((ind, i) => `${i + 1}. ${ind}`).join('\\n')}\n` : ''}\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n🔥 TOP IMPACTFUL MENTIONS\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n${crisis.topMentions.map((m, i) => `${i + 1}. [${m.platform.toUpperCase()}] @${m.author} (Impact: ${m.impact})\n   \"${m.text}\"\n   🔗 ${m.url}\n`).join('\\n')}\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n🎯 RECOMMENDED IMMEDIATE ACTIONS\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n${crisis.severity === 'CRITICAL' ? `\n⚡ CRITICAL RESPONSE REQUIRED:\n\n1. 🚨 Convene crisis management team IMMEDIATELY\n2. 📢 Prepare holding statement within 1 hour\n3. 🔍 Investigate root cause with urgency\n4. 📱 Monitor all social channels continuously\n5. 🤝 Reach out to top influencers/affected parties\n6. 📧 Notify executive leadership and PR team\n7. 🛡️ Activate social media response protocols\n8. 📊 Set up real-time sentiment monitoring dashboard\n` : crisis.severity === 'HIGH' ? `\n⚠️ HIGH PRIORITY RESPONSE:\n\n1. 🔔 Alert crisis management team\n2. 🔍 Investigate issue and gather facts\n3. 📝 Draft response statement (4-6 hour window)\n4. 📱 Increase social monitoring frequency\n5. 👥 Identify and engage with key voices\n6. 📧 Brief PR and customer service teams\n7. 📊 Track sentiment evolution hourly\n` : `\n📋 STANDARD RESPONSE:\n\n1. 📊 Continue monitoring situation\n2. 🔍 Investigate mentioned issues\n3. 📝 Prepare response if trend continues\n4. 👥 Engage with concerned customers\n5. 📧 Brief relevant teams\n`}\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n📋 CRISIS RESPONSE CHECKLIST\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n☐ Situation assessment completed\n☐ Crisis team assembled\n☐ Root cause identified\n☐ Response strategy approved\n☐ Statement drafted and reviewed\n☐ Stakeholders notified\n☐ Response published\n☐ Monitoring intensified\n☐ Follow-up plan created\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nGenerated by AI Brand Reputation Crisis Detector\nThis is an automated alert - human review required`;\n\nconst slackMessage = {\n  channel: '#crisis-management',\n  text: `🚨 *${crisis.severity} BRAND REPUTATION CRISIS DETECTED* 🚨`,\n  attachments: [\n    {\n      color: crisis.severity === 'CRITICAL' ? 'danger' : 'warning',\n      title: `Crisis ID: ${crisis.crisisId}`,\n      text: `${crisis.totalMentions} negative mentions detected across ${crisis.platforms.join(', ')}`,\n      fields: [\n        {\n          title: 'Severity',\n          value: crisis.severity,\n          short: true\n        },\n        {\n          title: 'Total Engagement',\n          value: crisis.totalEngagement.toLocaleString(),\n          short: true\n        },\n        {\n          title: 'Avg Sentiment',\n          value: crisis.avgSentiment,\n          short: true\n        },\n        {\n          title: 'Avg Impact',\n          value: crisis.avgImpact,\n          short: true\n        }\n      ],\n      actions: [\n        {\n          type: 'button',\n          text: '🚨 Activate Crisis Response',\n          url: 'https://your-crisis-dashboard.com'\n        },\n        {\n          type: 'button',\n          text: '📊 View Dashboard',\n          url: 'https://your-analytics-dashboard.com'\n        }\n      ]\n    }\n  ]\n};\n\nreturn {\n  json: {\n    ...crisis,\n    brief,\n    slackMessage,\n    emailSubject: `🚨 ${crisis.severity} BRAND CRISIS - Immediate Action Required`,\n    emailBody: brief\n  }\n};"},"notesInFlow":true,"typeVersion":2},{"id":"cd1985eb-468f-4701-94d1-20acaf59ae0c","name":"Alert Crisis Team - Slack","type":"n8n-nodes-base.slack","notes":"Immediately notifies crisis management team","position":[3008,176],"webhookId":"5ab7a0ce-f808-4c81-ac44-6ee9217b401c","parameters":{"resource":"channel","channelId":{"__rl":true,"mode":"list","value":""}},"credentials":{"slackApi":{"id":"credential-id","name":"Slack account - test "}},"notesInFlow":true,"typeVersion":2.1},{"id":"39c90e61-31f6-4243-ac61-b28170501145","name":"Alert Crisis Team - Email","type":"n8n-nodes-base.emailSend","notes":"Sends detailed crisis brief to leadership","position":[3232,176],"webhookId":"e41d7c39-6d5c-4f30-9fe4-89c621913418","parameters":{"options":{"ccEmail":"user@example.com, user@example.com"},"subject":"={{ $json.emailSubject }}","toEmail":"user@example.com, user@example.com, user@example.com","fromEmail":"user@example.com"},"credentials":{"smtp":{"id":"credential-id","name":"SMTP -test"}},"notesInFlow":true,"typeVersion":2.1},{"id":"de278e52-4482-4df8-a007-b1ecf4f9174a","name":"Create JIRA Crisis Ticket","type":"n8n-nodes-base.jira","notes":"Creates high-priority ticket for crisis tracking","position":[3456,176],"parameters":{"project":{"__rl":true,"mode":"id","value":"=","__regex":"^([0-9]{2,})"},"summary":"={{ $json.emailSubject }}","issueType":"Bug","additionalFields":{"labels":"crisis,reputation,urgent","priority":"Highest"}},"credentials":{"jiraSoftwareCloudApi":{"id":"credential-id","name":"Jira SW Cloud  - test"}},"notesInFlow":true,"typeVersion":1},{"id":"91ccc0aa-461c-4c87-acd8-a01a69d621ef","name":"Log Crisis Event","type":"n8n-nodes-base.code","notes":"Records crisis in database for analysis","position":[3680,176],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Log crisis event to workflow storage\nconst crisis = $input.item.json;\n\nconst crisisEvent = {\n  crisisId: crisis.crisisId,\n  timestamp: crisis.timestamp,\n  severity: crisis.severity,\n  totalMentions: crisis.totalMentions,\n  platforms: crisis.platforms,\n  totalEngagement: crisis.totalEngagement,\n  avgSentiment: parseFloat(crisis.avgSentiment),\n  avgImpact: parseFloat(crisis.avgImpact),\n  topThemes: crisis.topThemes,\n  responseInitiated: true,\n  resolved: false\n};\n\nconsole.log('🚨 CRISIS EVENT LOGGED:');\nconsole.log(JSON.stringify(crisisEvent, null, 2));\n\n// Store in workflow static data\nconst crisisLog = $getWorkflowStaticData('global').crisisLog || [];\ncrisisLog.push(crisisEvent);\n\n// Keep only last 50 crises\nif (crisisLog.length > 50) {\n  crisisLog.shift();\n}\n\n$getWorkflowStaticData('global').crisisLog = crisisLog;\n\nreturn {\n  json: {\n    success: true,\n    crisisEvent,\n    totalCrisesLogged: crisisLog.length,\n    message: `Crisis ${crisisEvent.crisisId} logged and response initiated`\n  }\n};"},"notesInFlow":true,"typeVersion":2},{"id":"e2fc634b-0864-4cee-8d61-d9834b5a8067","name":"Log Routine Monitoring","type":"n8n-nodes-base.code","notes":"Records non-crisis mentions for trend analysis","position":[3904,176],"parameters":{"jsCode":"// Log routine monitoring data\nconst mentions = $input.all().map(item => item.json);\n\nconst summary = {\n  timestamp: new Date().toISOString(),\n  totalMentions: mentions.length,\n  avgSentiment: mentions.reduce((sum, m) => sum + m.sentimentScore, 0) / mentions.length || 0,\n  positive: mentions.filter(m => m.sentimentScore > 0).length,\n  neutral: mentions.filter(m => m.sentimentScore === 0).length,\n  negative: mentions.filter(m => m.sentimentScore < 0).length,\n  platforms: [...new Set(mentions.map(m => m.platform))]\n};\n\nconsole.log('📊 ROUTINE MONITORING:');\nconsole.log(JSON.stringify(summary, null, 2));\n\n// Store summary\nconst monitoringLog = $getWorkflowStaticData('global').monitoringLog || [];\nmonitoringLog.push(summary);\n\n// Keep only last 1000 summaries\nif (monitoringLog.length > 1000) {\n  monitoringLog.shift();\n}\n\n$getWorkflowStaticData('global').monitoringLog = monitoringLog;\n\nreturn [{\n  json: {\n    success: true,\n    summary,\n    message: 'Routine monitoring logged'\n  }\n}];"},"notesInFlow":true,"typeVersion":2},{"id":"dbf1757c-4212-48c0-80bb-04924c30aae8","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-720,-496],"parameters":{"width":636,"height":1288,"content":"## AI Brand Reputation Crisis Detector\n\nThis workflow monitors brand mentions across multiple platforms (Twitter/X, Reddit, News) and automatically detects reputation crises based on sentiment analysis and trend detection.\n\n## How it works\n\n1. **Multi-platform monitoring**: Every 10 minutes, scans Twitter/X, Reddit, and news sites for brand mentions\n2. **Data normalization**: Converts all platform data into unified format\n3. **Smart filtering**: Removes duplicates and already-analyzed mentions\n4. **AI sentiment analysis**: Analyzes each mention for:\n   - Sentiment score (positive/negative/neutral)\n   - Amplification factors (engagement, verified accounts, news sources)\n   - Crisis-level phrases and keywords\n5. **Trend detection**: Compares current sentiment to 24-hour baseline:\n   - Detects sharp sentiment drops\n   - Identifies negative mention spikes\n   - Calculates impact surge\n6. **Crisis classification**: Assigns severity (CRITICAL/HIGH/MEDIUM/LOW)\n7. **Automated response**: For crises, triggers immediate alerts:\n   - Executive crisis brief with action plan\n   - Slack alerts to crisis team\n   - Email to leadership and PR team\n   - JIRA ticket creation\n   - Crisis event logging\n\n## Setup steps\n\n1. **Connect platforms**:\n   - Twitter/X: Add OAuth credentials to \"Monitor Twitter/X\" node\n   - Reddit: Add OAuth credentials to \"Monitor Reddit\" node\n   - News API: Get API key from newsapi.org and add to \"Monitor News & Blogs\" node\n\n2. **Configure brand monitoring**:\n   - Update brand name and handles in search queries\n   - Add additional platforms if needed (LinkedIn, Facebook, Instagram)\n\n3. **Set up alerting**:\n   - Slack: Add credentials and update channel names\n   - Email: Add SMTP settings and recipient lists\n   - JIRA: Add credentials and project ID\n\n4. **Adjust sensitivity**:\n   - Modify sentiment keyword dictionaries in \"AI Sentiment Analysis Engine\"\n   - Adjust crisis threshold scores\n   - Customize amplification factors\n\n5. **Test thoroughly**:\n   - Run manual execution with test data\n   - Verify alert routing and content\n   - Test false positive handling\n\n6. **Activate**: Enable for continuous 24/7 monitoring\n\n"},"typeVersion":1},{"id":"7e3ee568-5e52-49e2-b819-8ffc42eadda3","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[48,-128],"parameters":{"color":6,"width":640,"height":672,"content":"## 📡 Multi-Platform Monitoring"},"typeVersion":1},{"id":"6f9bfe0e-9664-47b7-b30b-9eeed4c84492","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[720,16],"parameters":{"color":4,"width":1088,"height":320,"content":"## 🔄 Data Normalization & Deduplication"},"typeVersion":1},{"id":"730e6388-d6a5-452f-8342-72de4d325953","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[1816,0],"parameters":{"color":6,"width":688,"height":336,"content":"## 🤖 AI Sentiment Analysis & Trend Detection"},"typeVersion":1},{"id":"b614b8ce-f893-4a30-a739-a9c18798d793","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[2520,-32],"parameters":{"color":4,"width":1296,"height":368,"content":"## 🚨 Crisis Response Activation"},"typeVersion":1},{"id":"11931922-1856-4481-8160-c2eda2d92e28","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[3840,-16],"parameters":{"color":6,"width":304,"height":352,"content":"## 📊 Routine Logging"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"675eb895-dfbd-4574-82d3-529d8220d1c9","connections":{"Monitor Reddit":{"main":[[{"node":"Normalize Data Format","type":"main","index":0}]]},"API Rate Limiter":{"main":[[{"node":"Only New Mentions","type":"main","index":0}]]},"Every 10 Minutes":{"main":[[{"node":"Monitor Twitter/X","type":"main","index":0},{"node":"Monitor Reddit","type":"main","index":0},{"node":"Monitor News & Blogs","type":"main","index":0}]]},"Log Crisis Event":{"main":[[{"node":"Log Routine Monitoring","type":"main","index":0}]]},"Monitor Twitter/X":{"main":[[{"node":"Normalize Data Format","type":"main","index":0}]]},"Only New Mentions":{"main":[[{"node":"AI Sentiment Analysis Engine","type":"main","index":0}]]},"Remove Duplicates":{"main":[[{"node":"Merge Platform Data","type":"main","index":0}]]},"Merge Platform Data":{"main":[[{"node":"Track Analyzed Mentions","type":"main","index":0}]]},"Monitor News & Blogs":{"main":[[{"node":"Normalize Data Format","type":"main","index":0}]]},"Aggregate Crisis Data":{"main":[[{"node":"Generate Crisis Brief","type":"main","index":0}]]},"Generate Crisis Brief":{"main":[[{"node":"Alert Crisis Team - Slack","type":"main","index":0}]]},"Normalize Data Format":{"main":[[{"node":"Remove Duplicates","type":"main","index":0}]]},"Filter Crisis Triggers":{"main":[[{"node":"Aggregate Crisis Data","type":"main","index":0}]]},"Track Analyzed Mentions":{"main":[[{"node":"API Rate Limiter","type":"main","index":0}]]},"Calculate Trend Baseline":{"main":[[{"node":"Filter Crisis Triggers","type":"main","index":0}]]},"Alert Crisis Team - Email":{"main":[[{"node":"Create JIRA Crisis Ticket","type":"main","index":0}]]},"Alert Crisis Team - Slack":{"main":[[{"node":"Alert Crisis Team - Email","type":"main","index":0}]]},"Create JIRA Crisis Ticket":{"main":[[{"node":"Log Crisis Event","type":"main","index":0}]]},"AI Sentiment Analysis Engine":{"main":[[{"node":"Calculate Trend Baseline","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":26,"nodeTypes":{"n8n-nodes-base.code":{"count":8},"n8n-nodes-base.jira":{"count":1},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.filter":{"count":2},"n8n-nodes-base.reddit":{"count":1},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.twitter":{"count":1},"n8n-nodes-base.emailSend":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.httpRequest":{"count":1},"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":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":77,"icon":"file:jira.svg","name":"n8n-nodes-base.jira","codex":{"data":{"resources":{"generic":[{"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/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.jira/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/jira/"}]},"categories":["Development","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"output\"]","defaults":{"name":"Jira Software"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjguMjUgNzEuMjUiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMuMTI1IiB5PSIzLjEyNSIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjkxLjklIiB4Mj0iMjguNDklIiB5MT0iNDAuMjIlIiB5Mj0iODEuNjMlIj48c3RvcCBvZmZzZXQ9IjE4JSIgc3RvcC1jb2xvcj0iIzAwNTJjYyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzI2ODRmZiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJjIiB4MT0iOC43JSIgeDI9IjcyLjI2JSIgeTE9IjU5LjE3JSIgeTI9IjE3Ljk5JSI+PHN0b3Agb2Zmc2V0PSIxOCUiIHN0b3AtY29sb3I9IiMwMDUyY2MiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMyNjg0ZmYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48c3ltYm9sIGlkPSJhIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgZmlsbC1ydWxlPSJub256ZXJvIiBzdHJva2U9Im5vbmUiPjxwYXRoIGZpbGw9IiMyNjg0ZmYiIGQ9Ik02MS4xNjEgMzAuMjExIDMwLjk1IDAgLjc0IDMwLjIxMWEyLjU0IDIuNTQgMCAwIDAgMCAzLjU4MWwzMC4yMTEgMzAuMjEgMzAuMjExLTMwLjIxYTIuNTQgMi41NCAwIDAgMCAwLTMuNTgxek0zMC45NSA0MS40NmwtOS40NjItOS40NjIgOS40NjItOS40NjIgOS40NjIgOS40NjJ6Ii8+PHBhdGggZmlsbD0idXJsKCNiKSIgZD0iTTMwLjk1IDIyLjU5OUMyNC43NTUgMTYuNDA1IDI0LjcyNCA2LjM3IDMwLjg4MS4xMzhMMTAuMTE0IDIwLjc3NGwxMS4yNjggMTEuMjY4eiIvPjxwYXRoIGZpbGw9InVybCgjYykiIGQ9Ik00MC40MzcgMzEuOTczIDMwLjk1IDQxLjQ2YTE1LjkzIDE1LjkzIDAgMCAxIDAgMjIuNTM2bDIwLjc0OS0yMC43NDl6Ii8+PC9nPjwvc3ltYm9sPjwvc3ZnPg=="},"displayName":"Jira Software","typeVersion":1,"nodeCategories":[{"id":4,"name":"Productivity"},{"id":5,"name":"Development"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"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/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/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/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":325,"icon":"file:x.svg","name":"n8n-nodes-base.twitter","codex":{"data":{"alias":["Tweet","Twitter","X","X API"],"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/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.twitter/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/twitter/"}]},"categories":["Marketing"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"output\"]","defaults":{"name":"X"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIzLjMxNzEgMTYuOTM3M0wzNy45MDI2IDBIMzQuNDQ2M0wyMS43ODE3IDE0LjcwNjRMMTEuNjY2NiAwSDBMMTUuMjk2MSAyMi4yMzg3TDAgNDBIMy40NTY0OEwxNi44MzA2IDI0LjQ2OTZMMjcuNTEyOSA0MEgzOS4xNzk1TDIzLjMxNjMgMTYuOTM3M0gyMy4zMTcxWk0xOC41ODMgMjIuNDM0NkwxNy4wMzMyIDIwLjIyMDFMNC43MDE5IDIuNTk5MzZIMTAuMDEwOEwxOS45NjIzIDE2LjgxOTlMMjEuNTEyMiAxOS4wMzQ0TDM0LjQ0NzkgMzcuNTE4OUgyOS4xMzlMMTguNTgzIDIyLjQzNTRWMjIuNDM0NloiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo="},"displayName":"X (Formerly Twitter)","typeVersion":2,"nodeCategories":[{"id":27,"name":"Marketing"}]},{"id":445,"icon":"file:reddit.svg","name":"n8n-nodes-base.reddit","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.reddit/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/reddit/"}]},"categories":["Communication"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"transform\"]","defaults":{"name":"Reddit"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNTEzIDUxNCI+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iLjUiIHk9Ii41Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlPSJub25lIj48cGF0aCBmaWxsPSIjZmY0NTAwIiBkPSJNMCA3Ni44QzAgMzQuMjUzIDM0LjI1MyAwIDc2LjggMGgzNTguNEM0NzcuNzQ3IDAgNTEyIDM0LjI1MyA1MTIgNzYuOHYzNTguNGMwIDQyLjU0Ny0zNC4yNTMgNzYuOC03Ni44IDc2LjhINzYuOEMzNC4yNTMgNTEyIDAgNDc3Ljc0NyAwIDQzNS4yeiIvPjxwYXRoIGQ9Ik03OSAzMDVjMC02OC4xNDIgNzguOTQyLTEyMyAxNzctMTIzczE3NyA1NC44NTggMTc3IDEyMy03OC45NDIgMTIzLTE3NyAxMjNTNzkgMzczLjE0MiA3OSAzMDUiLz48ZyBmaWxsPSIjZmY0NTAwIj48cGF0aCBkPSJNMTk5IDM0N2MzNSAyOSA3OSAyOSAxMTQgMGwxMiAxMWMtNDIgMzUtOTYgMzUtMTM4IDB6Ii8+PHVzZSB4bGluazpocmVmPSIjYiIvPjx1c2UgeGxpbms6aHJlZj0iI2IiIHg9Ii0xMTgiLz48L2c+PC9nPjxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYiIgeD0iNzUiIHk9Ii0xNjAiIHN0cm9rZS13aWR0aD0iMjUiLz48cGF0aCBzdHJva2Utd2lkdGg9IjIyIiBkPSJNODcgMjgyYy00NS0yMi01LTkyIDQwLTUwbTI5OCA1MGM0NS0yMiA1LTkyLTQwLTUwbS0xMjctNDUgMjQtODMgODAgMTYiLz48L2c+PC9zeW1ib2w+PGRlZnM+PHBhdGggaWQ9ImIiIGQ9Ik0yODcgMjg1YTI3Ljk0IDI3Ljk0IDAgMSAxIDU2IDAgMjcuOTQgMjcuOTQgMCAxIDEtNTYgMCIvPjwvZGVmcz48L3N2Zz4="},"displayName":"Reddit","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"}]},{"id":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"resources":{"generic":[{"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/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.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"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":49,"name":"AI Summarization"}],"image":[]}}