{
  "workflow": {
    "id": 6430,
    "name": "Social media sentiment analysis dashboard with custom AI for Twitter, Reddit & LinkedIn",
    "views": 1255,
    "recentViews": 0,
    "totalViews": 1255,
    "createdAt": "2025-07-25T10:56:44.737Z",
    "description": "# Social Media Sentiment Analysis Dashboard with AI and Real-time Monitoring\n\n## 🎯 Target Audience\n- Social media managers and community managers\n- Marketing teams monitoring brand reputation\n- PR professionals tracking public sentiment\n- Customer service teams identifying trending issues\n- Business analysts measuring social media ROI\n- Brand managers protecting brand reputation\n- Product managers gathering user feedback\n\n## 🚀 Problem Statement\nManual social media monitoring is overwhelming and often misses critical sentiment shifts or trending topics. This template solves the challenge of automatically collecting, analyzing, and visualizing social media sentiment data across multiple platforms to provide actionable insights for brand management and customer engagement.\n\n## 🔧 How it Works\n\nThis workflow automatically monitors social media platforms using AI-powered sentiment analysis, processes mentions and conversations, and provides real-time insights through a comprehensive dashboard.\n\n### Key Components\n\n1. **Scheduled Trigger** - Runs the workflow at specified intervals to maintain real-time monitoring\n2. **AI-Powered Sentiment Analysis** - Uses advanced NLP to analyze sentiment, emotions, and topics\n3. **Multi-Platform Integration** - Monitors Twitter, Reddit, and other social platforms\n4. **Real-time Alerting** - Sends notifications for critical sentiment changes or viral content\n5. **Dashboard Integration** - Stores all data in Google Sheets for comprehensive analysis and reporting\n\n## 📊 Google Sheets Column Specifications\n\nThe template creates the following columns in your Google Sheets:\n\n| Column | Data Type | Description | Example |\n|--------|-----------|-------------|---------|\n| **timestamp** | DateTime | When the mention was recorded | \"2024-01-15T10:30:00Z\" |\n| **platform** | String | Social media platform | \"Twitter\" |\n| **username** | String | User who posted the content | \"@john_doe\" |\n| **content** | String | Full text of the post/comment | \"Love the new product features!\" |\n| **sentiment_score** | Number | Sentiment score (-1 to 1) | 0.85 |\n| **sentiment_label** | String | Sentiment classification | \"Positive\" |\n| **emotion** | String | Primary emotion detected | \"Joy\" |\n| **topics** | Array | Key topics identified | [\"product\", \"features\"] |\n| **engagement** | Number | Likes, shares, comments | 1250 |\n| **reach_estimate** | Number | Estimated reach | 50000 |\n| **influence_score** | Number | User influence metric | 0.75 |\n| **alert_priority** | String | Alert priority level | \"High\" |\n\n## 🛠️ Setup Instructions\n\n**Estimated setup time: 20-25 minutes**\n\n### Prerequisites\n- n8n instance with community nodes enabled\n- ScrapeGraphAI API account and credentials\n- Google Sheets account with API access\n- Slack workspace for notifications (optional)\n- Social media API access (Twitter, Reddit, etc.)\n\n### Step-by-Step Configuration\n\n#### 1. Install Community Nodes\n```bash\n# Install required community nodes\nnpm install n8n-nodes-scrapegraphai\nnpm install n8n-nodes-slack\n```\n\n#### 2. Configure ScrapeGraphAI Credentials\n- Navigate to Credentials in your n8n instance\n- Add new ScrapeGraphAI API credentials\n- Enter your API key from ScrapeGraphAI dashboard\n- Test the connection to ensure it's working\n\n#### 3. Set up Google Sheets Connection\n- Add Google Sheets OAuth2 credentials\n- Grant necessary permissions for spreadsheet access\n- Create a new spreadsheet for sentiment analysis data\n- Configure the sheet name (default: \"Sentiment Analysis\")\n\n#### 4. Configure Social Media Monitoring\n- Update the `websiteUrl` parameters in ScrapeGraphAI nodes\n- Add URLs for social media platforms you want to monitor\n- Customize the user prompt to extract specific sentiment data\n- Set up keywords, hashtags, and brand mentions to track\n\n#### 5. Set up Notification Channels\n- Configure Slack webhook or API credentials\n- Set up email service credentials for alerts\n- Define sentiment thresholds for different alert levels\n- Test notification delivery\n\n#### 6. Configure Schedule Trigger\n- Set monitoring frequency (every 15 minutes, hourly, etc.)\n- Choose appropriate time zones for your business hours\n- Consider social media platform rate limits\n\n#### 7. Test and Validate\n- Run the workflow manually to verify all connections\n- Check Google Sheets for proper data formatting\n- Test sentiment analysis with sample content\n\n## 🔄 Workflow Customization Options\n\n### Modify Monitoring Targets\n- Add or remove social media platforms\n- Change keywords, hashtags, or brand mentions\n- Adjust monitoring frequency based on platform activity\n\n### Extend Sentiment Analysis\n- Add more sophisticated emotion detection\n- Implement topic clustering and trend analysis\n- Include influencer identification and scoring\n\n### Customize Alert System\n- Set different thresholds for different sentiment levels\n- Create tiered alert systems (info, warning, critical)\n- Add sentiment trend analysis and predictions\n\n### Output Customization\n- Add data visualization and reporting features\n- Implement sentiment trend charts and graphs\n- Create executive dashboards with key metrics\n- Add competitor sentiment comparison\n\n## 📈 Use Cases\n\n- **Brand Reputation Management**: Monitor and respond to brand mentions\n- **Crisis Management**: Detect and respond to negative sentiment quickly\n- **Customer Feedback Analysis**: Understand customer satisfaction and pain points\n- **Product Launch Monitoring**: Track sentiment around new product releases\n- **Competitor Analysis**: Monitor competitor sentiment and engagement\n- **Influencer Identification**: Find and engage with influential users\n\n## 🚨 Important Notes\n\n- Respect social media platforms' terms of service and rate limits\n- Implement appropriate delays between requests to avoid rate limiting\n- Regularly review and update your monitoring keywords and parameters\n- Monitor API usage to manage costs effectively\n- Keep your credentials secure and rotate them regularly\n- Consider privacy implications and data protection regulations\n\n## 🔧 Troubleshooting\n\n**Common Issues:**\n- ScrapeGraphAI connection errors: Verify API key and account status\n- Google Sheets permission errors: Check OAuth2 scope and permissions\n- Sentiment analysis errors: Review the Code node's JavaScript logic\n- Rate limiting: Adjust monitoring frequency and implement delays\n- Alert delivery failures: Check notification service credentials\n\n**Support Resources:**\n- ScrapeGraphAI documentation and API reference\n- n8n community forums for workflow assistance\n- Google Sheets API documentation for advanced configurations\n- Social media platform API documentation\n- Sentiment analysis best practices and guidelines\n",
    "workflow": {
      "id": "SocialMediaSentimentDashboard2024",
      "meta": {
        "instanceId": "social-media-sentiment-dashboard-instance",
        "templateCredsSetupCompleted": false
      },
      "name": "Social Media Sentiment Dashboard",
      "tags": [
        "social-media",
        "sentiment-analysis",
        "brand-monitoring",
        "crisis-management",
        "dashboard",
        "automation"
      ],
      "nodes": [
        {
          "id": "social-media-trigger",
          "name": "Social Media Monitor Trigger",
          "type": "n8n-nodes-base.scheduleTrigger",
          "position": [
            400,
            800
          ],
          "parameters": {
            "rule": {
              "interval": [
                {
                  "field": "hours",
                  "hoursInterval": 4
                }
              ]
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "manual-sentiment-trigger",
          "name": "Manual Sentiment Check Webhook",
          "type": "n8n-nodes-base.webhook",
          "position": [
            400,
            600
          ],
          "webhookId": "sentiment-monitoring-webhook",
          "parameters": {
            "path": "sentiment-webhook",
            "options": {
              "noResponseBody": false
            },
            "httpMethod": "GET"
          },
          "typeVersion": 1.1
        },
        {
          "id": "twitter-scraper",
          "name": "Twitter Brand Mentions Scraper",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            800,
            500
          ],
          "parameters": {
            "userPrompt": "Extract social media posts and mentions from this Twitter search page. Focus on posts that mention our brand or company. Use this schema for response: { \"request_id\": \"unique_id\", \"status\": \"completed\", \"platform\": \"Twitter\", \"posts\": [{ \"post_id\": \"tweet_id\", \"author\": \"@username\", \"author_followers\": 1500, \"content\": \"Full tweet text here\", \"timestamp\": \"2024-01-15T10:30:00Z\", \"likes\": 25, \"retweets\": 5, \"replies\": 3, \"post_url\": \"https://twitter.com/user/status/123456\", \"mentions\": [\"@YourBrand\", \"@competitor\"], \"hashtags\": [\"#tech\", \"#innovation\"], \"media_urls\": [\"https://image-url.com\"], \"post_type\": \"original\", \"language\": \"en\", \"verified_account\": false }] }",
            "websiteUrl": "https://twitter.com/search?q=%22YourBrand%22%20OR%20%22YourCompany%22&src=typed_query&f=live"
          },
          "credentials": {
            "scrapegraphAIApi": {
              "id": "",
              "name": ""
            }
          },
          "typeVersion": 1
        },
        {
          "id": "reddit-scraper",
          "name": "Reddit Brand Discussion Scraper",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            800,
            700
          ],
          "parameters": {
            "userPrompt": "Extract Reddit posts and comments mentioning our brand. Focus on discussions, reviews, and mentions. Use this schema: { \"request_id\": \"unique_id\", \"status\": \"completed\", \"platform\": \"Reddit\", \"posts\": [{ \"post_id\": \"reddit_post_id\", \"subreddit\": \"r/technology\", \"author\": \"username\", \"title\": \"Post title if applicable\", \"content\": \"Full post or comment text\", \"timestamp\": \"2024-01-15T10:30:00Z\", \"upvotes\": 150, \"downvotes\": 10, \"score\": 140, \"comments_count\": 25, \"post_url\": \"https://reddit.com/r/sub/comments/abc123\", \"post_type\": \"post\", \"flair\": \"Discussion\", \"is_pinned\": false, \"is_locked\": false }] }",
            "websiteUrl": "https://www.reddit.com/search/?q=%22YourBrand%22&type=comment&sort=new"
          },
          "credentials": {
            "scrapegraphAIApi": {
              "id": "",
              "name": ""
            }
          },
          "typeVersion": 1
        },
        {
          "id": "linkedin-scraper",
          "name": "LinkedIn Professional Mentions Scraper",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            800,
            900
          ],
          "parameters": {
            "userPrompt": "Extract LinkedIn posts and professional discussions about our brand. Focus on business content and professional opinions. Use this schema: { \"request_id\": \"unique_id\", \"status\": \"completed\", \"platform\": \"LinkedIn\", \"posts\": [{ \"post_id\": \"linkedin_activity_id\", \"author\": \"Full Name\", \"author_title\": \"CEO at Company\", \"author_company\": \"Company Name\", \"content\": \"Full LinkedIn post text\", \"timestamp\": \"2024-01-15T10:30:00Z\", \"likes\": 45, \"comments\": 8, \"shares\": 12, \"post_url\": \"https://linkedin.com/posts/activity-123456\", \"post_type\": \"article\", \"industry_tags\": [\"Technology\", \"Innovation\"], \"is_promoted\": false }] }",
            "websiteUrl": "https://www.linkedin.com/search/results/content/?keywords=%22YourBrand%22&origin=GLOBAL_SEARCH_HEADER&sid=123"
          },
          "credentials": {
            "scrapegraphAIApi": {
              "id": "",
              "name": ""
            }
          },
          "typeVersion": 1
        },
        {
          "id": "sentiment-analysis-processor",
          "name": "Advanced Sentiment Analysis & Brand Intelligence",
          "type": "n8n-nodes-base.code",
          "notes": "Processes social media data with\nadvanced sentiment analysis and\nbrand intelligence algorithms",
          "position": [
            1400,
            700
          ],
          "parameters": {
            "jsCode": "// Advanced Social Media Sentiment Analysis & Intelligence Processing\nconst inputData = $input.all();\nconst processedPosts = [];\n\n// Configuration for sentiment analysis and brand monitoring\nconst sentimentConfig = {\n  brandKeywords: {\n    'your_brand': ['YourBrand', 'YourCompany', 'YourProduct', '@yourbrand'],\n    'competitors': {\n      'Competitor1': ['Competitor1', 'CompetitorProduct1', '@competitor1'],\n      'Competitor2': ['Competitor2', 'CompetitorProduct2', '@competitor2'],\n      'Competitor3': ['Competitor3', 'CompetitorProduct3', '@competitor3']\n    }\n  },\n  sentimentKeywords: {\n    positive: {\n      strong: ['amazing', 'excellent', 'outstanding', 'fantastic', 'incredible', 'perfect', 'brilliant', 'phenomenal'],\n      moderate: ['good', 'great', 'nice', 'helpful', 'useful', 'recommended', 'satisfied', 'happy', 'pleased'],\n      mild: ['ok', 'fine', 'decent', 'adequate', 'reasonable', 'acceptable']\n    },\n    negative: {\n      strong: ['terrible', 'awful', 'horrible', 'disgusting', 'worst', 'hate', 'disaster', 'nightmare'],\n      moderate: ['bad', 'poor', 'disappointing', 'frustrated', 'annoying', 'waste', 'regret', 'failed'],\n      mild: ['meh', 'not great', 'could be better', 'issues', 'problems', 'concerns']\n    },\n    neutral: ['said', 'mentioned', 'announced', 'reported', 'according', 'stated', 'explained', 'noted']\n  },\n  influencerThresholds: {\n    twitter: { mega: 1000000, macro: 100000, micro: 10000, nano: 1000 },\n    linkedin: { thought_leader: 50000, professional: 10000, specialist: 5000 },\n    reddit: { power_user: 10000, active_user: 1000, regular_user: 100 }\n  }\n};\n\n// Advanced sentiment analysis function\nfunction analyzeSentiment(text, platform) {\n  const cleanText = text.toLowerCase();\n  let sentimentScore = 0;\n  let sentimentStrength = 0;\n  let emotionalIntensity = 0;\n  \n  // Analyze positive sentiment\n  Object.entries(sentimentConfig.sentimentKeywords.positive).forEach(([strength, words]) => {\n    const multiplier = strength === 'strong' ? 3 : strength === 'moderate' ? 2 : 1;\n    words.forEach(word => {\n      if (cleanText.includes(word)) {\n        sentimentScore += multiplier;\n        sentimentStrength += multiplier;\n        emotionalIntensity += multiplier * 0.5;\n      }\n    });\n  });\n  \n  // Analyze negative sentiment\n  Object.entries(sentimentConfig.sentimentKeywords.negative).forEach(([strength, words]) => {\n    const multiplier = strength === 'strong' ? 3 : strength === 'moderate' ? 2 : 1;\n    words.forEach(word => {\n      if (cleanText.includes(word)) {\n        sentimentScore -= multiplier;\n        sentimentStrength += multiplier;\n        emotionalIntensity += multiplier * 0.5;\n      }\n    });\n  });\n  \n  // Check for emotional indicators\n  const emotionalMarkers = {\n    excitement: ['!', '!!!', '🔥', '🚀', '💯', '⭐'],\n    disappointment: ['😞', '😢', '💔', '🤦', '😤'],\n    question: ['?', '??', '🤔'],\n    sarcasm: ['/s', 'sure...', 'yeah right', 'obviously']\n  };\n  \n  let emotionalContext = 'neutral';\n  Object.entries(emotionalMarkers).forEach(([emotion, markers]) => {\n    markers.forEach(marker => {\n      if (text.includes(marker)) {\n        emotionalContext = emotion;\n        emotionalIntensity += 0.5;\n      }\n    });\n  });\n  \n  // Determine overall sentiment\n  let finalSentiment = 'neutral';\n  let confidence = 0;\n  \n  if (sentimentScore > 0) {\n    finalSentiment = sentimentScore >= 3 ? 'very_positive' : 'positive';\n    confidence = Math.min(sentimentStrength / 5, 1);\n  } else if (sentimentScore < 0) {\n    finalSentiment = sentimentScore <= -3 ? 'very_negative' : 'negative';\n    confidence = Math.min(sentimentStrength / 5, 1);\n  } else {\n    confidence = 0.3; // Default neutral confidence\n  }\n  \n  return {\n    sentiment: finalSentiment,\n    score: sentimentScore,\n    confidence: Math.round(confidence * 100),\n    emotional_intensity: Math.round(emotionalIntensity * 100) / 100,\n    emotional_context: emotionalContext,\n    strength: sentimentStrength\n  };\n}\n\n// Brand mention detection function\nfunction detectBrandMentions(text) {\n  const mentions = {\n    your_brand: [],\n    competitors: [],\n    total_mentions: 0\n  };\n  \n  const cleanText = text.toLowerCase();\n  \n  // Check for your brand mentions\n  sentimentConfig.brandKeywords.your_brand.forEach(keyword => {\n    if (cleanText.includes(keyword.toLowerCase())) {\n      mentions.your_brand.push({\n        keyword: keyword,\n        context_snippet: extractContext(text, keyword, 50)\n      });\n      mentions.total_mentions++;\n    }\n  });\n  \n  // Check for competitor mentions\n  Object.entries(sentimentConfig.brandKeywords.competitors).forEach(([competitor, keywords]) => {\n    keywords.forEach(keyword => {\n      if (cleanText.includes(keyword.toLowerCase())) {\n        mentions.competitors.push({\n          competitor: competitor,\n          keyword: keyword,\n          context_snippet: extractContext(text, keyword, 50)\n        });\n        mentions.total_mentions++;\n      }\n    });\n  });\n  \n  return mentions;\n}\n\n// Extract context around mentions\nfunction extractContext(text, keyword, radius) {\n  const index = text.toLowerCase().indexOf(keyword.toLowerCase());\n  if (index === -1) return '';\n  \n  const start = Math.max(0, index - radius);\n  const end = Math.min(text.length, index + keyword.length + radius);\n  return text.substring(start, end).trim();\n}\n\n// Influencer tier classification\nfunction classifyInfluencer(platform, followers, engagement) {\n  const thresholds = sentimentConfig.influencerThresholds[platform.toLowerCase()] || {};\n  \n  if (platform.toLowerCase() === 'twitter') {\n    if (followers >= thresholds.mega) return 'mega_influencer';\n    if (followers >= thresholds.macro) return 'macro_influencer';\n    if (followers >= thresholds.micro) return 'micro_influencer';\n    if (followers >= thresholds.nano) return 'nano_influencer';\n    return 'regular_user';\n  }\n  \n  if (platform.toLowerCase() === 'linkedin') {\n    if (followers >= thresholds.thought_leader) return 'thought_leader';\n    if (followers >= thresholds.professional) return 'professional_influencer';\n    if (followers >= thresholds.specialist) return 'specialist';\n    return 'professional';\n  }\n  \n  if (platform.toLowerCase() === 'reddit') {\n    const karma = followers; // Using followers as karma approximation\n    if (karma >= thresholds.power_user) return 'power_user';\n    if (karma >= thresholds.active_user) return 'active_user';\n    if (karma >= thresholds.regular_user) return 'regular_user';\n    return 'new_user';\n  }\n  \n  return 'unknown';\n}\n\n// Calculate engagement rate\nfunction calculateEngagementRate(post, platform) {\n  let totalEngagement = 0;\n  let followerCount = 1; // Avoid division by zero\n  \n  if (platform.toLowerCase() === 'twitter') {\n    totalEngagement = (post.likes || 0) + (post.retweets || 0) + (post.replies || 0);\n    followerCount = post.author_followers || 1;\n  } else if (platform.toLowerCase() === 'linkedin') {\n    totalEngagement = (post.likes || 0) + (post.comments || 0) + (post.shares || 0);\n    followerCount = 1000; // Default estimate for LinkedIn\n  } else if (platform.toLowerCase() === 'reddit') {\n    totalEngagement = (post.upvotes || 0) + (post.comments_count || 0);\n    followerCount = 100; // Reddit doesn't have followers in the same way\n  }\n  \n  return totalEngagement / followerCount;\n}\n\n// Process priority calculation\nfunction calculatePriority(post, sentiment, mentions, influencerTier, engagementRate) {\n  let priorityScore = 0;\n  \n  // Sentiment impact\n  if (sentiment.sentiment === 'very_negative') priorityScore += 10;\n  else if (sentiment.sentiment === 'negative') priorityScore += 7;\n  else if (sentiment.sentiment === 'very_positive') priorityScore += 5;\n  else if (sentiment.sentiment === 'positive') priorityScore += 3;\n  \n  // Brand mention impact\n  if (mentions.your_brand.length > 0) priorityScore += 8;\n  if (mentions.competitors.length > 0) priorityScore += 4;\n  \n  // Influencer tier impact\n  const influencerScores = {\n    'mega_influencer': 10, 'thought_leader': 10, 'power_user': 8,\n    'macro_influencer': 8, 'professional_influencer': 7, 'active_user': 6,\n    'micro_influencer': 6, 'specialist': 5, 'regular_user': 3,\n    'nano_influencer': 4, 'professional': 4, 'new_user': 1\n  };\n  priorityScore += influencerScores[influencerTier] || 1;\n  \n  // Engagement rate impact\n  if (engagementRate > 0.1) priorityScore += 5;\n  else if (engagementRate > 0.05) priorityScore += 3;\n  else if (engagementRate > 0.01) priorityScore += 1;\n  \n  // Determine priority level\n  if (priorityScore >= 15) return 'Critical';\n  if (priorityScore >= 10) return 'High';\n  if (priorityScore >= 6) return 'Medium';\n  return 'Low';\n}\n\n// Process each input from different social media platforms\ninputData.forEach(input => {\n  if (input.json.result && input.json.result.posts) {\n    const platform = input.json.result.platform || 'Unknown';\n    \n    input.json.result.posts.forEach(post => {\n      const sentimentAnalysis = analyzeSentiment(post.content, platform);\n      const brandMentions = detectBrandMentions(post.content);\n      const engagementRate = calculateEngagementRate(post, platform);\n      \n      let followerCount = 0;\n      if (platform.toLowerCase() === 'twitter') followerCount = post.author_followers || 0;\n      else if (platform.toLowerCase() === 'reddit') followerCount = post.score || 0;\n      else followerCount = 1000; // Default for LinkedIn\n      \n      const influencerTier = classifyInfluencer(platform, followerCount, engagementRate);\n      const priority = calculatePriority(post, sentimentAnalysis, brandMentions, influencerTier, engagementRate);\n      \n      processedPosts.push({\n        json: {\n          // Post Identification\n          post_id: post.post_id || `${platform.toLowerCase()}_${Date.now()}_${Math.random().toString(36).substr(2, 5)}`,\n          platform: platform,\n          post_url: post.post_url,\n          timestamp: post.timestamp,\n          \n          // Author Information\n          author: post.author,\n          author_title: post.author_title || '',\n          author_company: post.author_company || '',\n          author_followers: followerCount,\n          influencer_tier: influencerTier,\n          verified_account: post.verified_account || false,\n          \n          // Content Analysis\n          content: post.content,\n          content_length: post.content.length,\n          language: post.language || 'unknown',\n          post_type: post.post_type || 'post',\n          \n          // Engagement Metrics\n          likes: post.likes || post.upvotes || 0,\n          shares: post.retweets || post.shares || 0,\n          comments: post.replies || post.comments || post.comments_count || 0,\n          engagement_rate: Math.round(engagementRate * 10000) / 100, // Percentage with 2 decimals\n          total_engagement: (post.likes || post.upvotes || 0) + (post.retweets || post.shares || 0) + (post.replies || post.comments || post.comments_count || 0),\n          \n          // Sentiment Analysis Results\n          sentiment: sentimentAnalysis.sentiment,\n          sentiment_score: sentimentAnalysis.score,\n          sentiment_confidence: sentimentAnalysis.confidence,\n          emotional_intensity: sentimentAnalysis.emotional_intensity,\n          emotional_context: sentimentAnalysis.emotional_context,\n          \n          // Brand Intelligence\n          mentions_your_brand: brandMentions.your_brand.length > 0,\n          your_brand_mentions: brandMentions.your_brand,\n          competitor_mentions: brandMentions.competitors,\n          total_brand_mentions: brandMentions.total_mentions,\n          \n          // Priority and Classification\n          priority_level: priority,\n          requires_response: priority === 'Critical' || (priority === 'High' && sentimentAnalysis.sentiment.includes('negative')),\n          crisis_potential: sentimentAnalysis.sentiment === 'very_negative' && brandMentions.your_brand.length > 0 && ['mega_influencer', 'thought_leader', 'power_user'].includes(influencerTier),\n          \n          // Additional Context\n          hashtags: post.hashtags || [],\n          mentions: post.mentions || [],\n          media_urls: post.media_urls || [],\n          subreddit: post.subreddit || '',\n          industry_tags: post.industry_tags || [],\n          \n          // Metadata\n          processed_at: new Date().toISOString(),\n          monitoring_session: `session_${new Date().toISOString().split('T')[0].replace(/-/g, '')}`\n        }\n      });\n    });\n  }\n});\n\nreturn processedPosts;"
          },
          "notesInFlow": true,
          "typeVersion": 2
        },
        {
          "id": "google-sheets-dashboard",
          "name": "Google Sheets Sentiment Dashboard",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            2200,
            700
          ],
          "parameters": {
            "columns": {
              "value": {},
              "schema": [
                {
                  "id": "post_id",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Post ID",
                  "defaultMatch": true,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "platform",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Platform",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "author",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Author",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "content",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Content",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "sentiment",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Sentiment",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "sentiment_confidence",
                  "type": "number",
                  "display": true,
                  "required": false,
                  "displayName": "Confidence %",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "mentions_your_brand",
                  "type": "boolean",
                  "display": true,
                  "required": false,
                  "displayName": "Mentions Brand",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "priority_level",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Priority",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "engagement_rate",
                  "type": "number",
                  "display": true,
                  "required": false,
                  "displayName": "Engagement Rate %",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "influencer_tier",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Influencer Tier",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "crisis_potential",
                  "type": "boolean",
                  "display": true,
                  "required": false,
                  "displayName": "Crisis Potential",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "timestamp",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Timestamp",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "post_url",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Post URL",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                }
              ],
              "mappingMode": "autoMapInputData",
              "matchingColumns": [
                "post_id"
              ]
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "gid=0",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/edit#gid=0",
              "cachedResultName": "Sentiment Data"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/edit#gid=0",
              "cachedResultName": "Social Media Sentiment Dashboard"
            },
            "authentication": "serviceAccount"
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "",
              "name": ""
            }
          },
          "typeVersion": 4.4
        },
        {
          "id": "crisis-alert-filter",
          "name": "Crisis & Priority Alert Filter",
          "type": "n8n-nodes-base.if",
          "position": [
            1400,
            450
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "conditions": [
                {
                  "id": "crisis-alert",
                  "operator": {
                    "type": "boolean",
                    "operation": "true"
                  },
                  "leftValue": "={{ $json.crisis_potential }}",
                  "rightValue": true
                },
                {
                  "id": "critical-priority",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.priority_level }}",
                  "rightValue": "Critical"
                },
                {
                  "id": "negative-brand-mention",
                  "operator": {
                    "type": "boolean",
                    "operation": "true"
                  },
                  "leftValue": "={{ $json.mentions_your_brand && ($json.sentiment === 'negative' || $json.sentiment === 'very_negative') }}",
                  "rightValue": true
                }
              ],
              "combineOperation": "any"
            }
          },
          "typeVersion": 2
        },
        {
          "id": "slack-crisis-alert",
          "name": "Slack Crisis & Priority Alert",
          "type": "n8n-nodes-base.slack",
          "position": [
            1800,
            450
          ],
          "parameters": {
            "text": "🚨 **SOCIAL MEDIA ALERT** 🚨\n\n{% if $json.crisis_potential %}🔴 **CRISIS POTENTIAL DETECTED** 🔴{% else %}⚠️ **HIGH PRIORITY MENTION** ⚠️{% endif %}\n\n**Platform**: {{ $json.platform }}\n**Author**: {{ $json.author }}{% if $json.author_followers %} ({{ $json.author_followers }} followers){% endif %}\n**Influencer Tier**: {{ $json.influencer_tier | replace('_', ' ') | title }}\n\n**Content Preview**:\n_{{ $json.content | truncate(200) }}_\n\n**Sentiment Analysis**:\n{% if $json.sentiment == 'very_negative' %}🔴 VERY NEGATIVE{% elif $json.sentiment == 'negative' %}🟠 NEGATIVE{% elif $json.sentiment == 'positive' %}🟢 POSITIVE{% elif $json.sentiment == 'very_positive' %}💚 VERY POSITIVE{% else %}⚪ NEUTRAL{% endif %} ({{ $json.sentiment_confidence }}% confidence)\n\n**Engagement Metrics**:\n👍 {{ $json.likes }} likes | 🔄 {{ $json.shares }} shares | 💬 {{ $json.comments }} comments\n📊 **Engagement Rate**: {{ $json.engagement_rate }}%\n\n**Brand Intelligence**:\n{% if $json.mentions_your_brand %}🎯 **MENTIONS YOUR BRAND**{% endif %}\n{% if $json.competitor_mentions|length > 0 %}👥 Competitor mentions: {{ $json.competitor_mentions|length }}{% endif %}\n\n**Priority Level**: {{ $json.priority_level }}\n{% if $json.requires_response %}💡 **Response Required**{% endif %}\n\n🔗 [**View Post**]({{ $json.post_url }})\n\n*Detected at {{ $json.processed_at | date('short') }} | Session: {{ $json.monitoring_session }}*",
            "select": "channel",
            "channelId": {
              "__rl": true,
              "mode": "name",
              "value": "C1234567890"
            },
            "otherOptions": {
              "includeLinkPreviews": true
            },
            "authentication": "oAuth2"
          },
          "credentials": {
            "slackOAuth2Api": {
              "id": "",
              "name": ""
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "positive-sentiment-filter",
          "name": "Positive Sentiment Filter",
          "type": "n8n-nodes-base.if",
          "position": [
            1400,
            950
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "conditions": [
                {
                  "id": "positive-sentiment",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.sentiment }}",
                  "rightValue": "positive"
                },
                {
                  "id": "very-positive-sentiment",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.sentiment }}",
                  "rightValue": "very_positive"
                }
              ],
              "combineOperation": "any"
            }
          },
          "typeVersion": 2
        },
        {
          "id": "slack-positive-alert",
          "name": "Slack Positive Mention Alert",
          "type": "n8n-nodes-base.slack",
          "position": [
            1800,
            950
          ],
          "parameters": {
            "text": "🌟 **POSITIVE BRAND MENTION** 🌟\n\n**{{ $json.author }}** on **{{ $json.platform }}** said something great about us!\n\n{% if $json.sentiment == 'very_positive' %}💚 **VERY POSITIVE**{% else %}🟢 **POSITIVE**{% endif %} ({{ $json.sentiment_confidence }}% confidence)\n\n**Content**:\n_{{ $json.content | truncate(300) }}_\n\n**Engagement**: 👍 {{ $json.likes }} | 🔄 {{ $json.shares }} | 💬 {{ $json.comments }}\n**Influencer Tier**: {{ $json.influencer_tier | replace('_', ' ') | title }}\n\n🔗 [View Post]({{ $json.post_url }})\n\n💡 Consider engaging with this positive mention!",
            "select": "channel",
            "channelId": {
              "__rl": true,
              "mode": "name",
              "value": "C0987654321"
            },
            "otherOptions": {
              "includeLinkPreviews": true
            },
            "authentication": "oAuth2"
          },
          "credentials": {
            "slackOAuth2Api": {
              "id": "",
              "name": ""
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "sticky-triggers",
          "name": "Sticky Note - Triggers",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            280,
            350
          ],
          "parameters": {
            "color": 6,
            "width": 350,
            "height": 450,
            "content": "# Step 1: Social Media Monitoring Triggers 📱\n\nDual trigger system for comprehensive social media sentiment monitoring:\n\n## Automated Schedule Trigger\n- **Frequency**: Every 4 hours for real-time monitoring\n- **Purpose**: Continuous brand sentiment tracking\n- **Coverage**: Ensures no important mentions are missed\n\n## Manual Webhook Trigger  \n- **Purpose**: On-demand sentiment analysis\n- **Usage**: Crisis management or immediate checks\n- **Endpoint**: `/sentiment-webhook`\n\n## Benefits\n- Real-time brand monitoring\n- Crisis detection and prevention\n- Competitive intelligence gathering\n- Customer satisfaction tracking"
          },
          "typeVersion": 1
        },
        {
          "id": "sticky-scraping",
          "name": "Sticky Note - Social Scraping",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            680,
            200
          ],
          "parameters": {
            "color": 6,
            "width": 350,
            "height": 450,
            "content": "# Step 2: Multi-Platform Social Scraping 🌐\n\nParallel scraping from major social media platforms:\n\n## Covered Platforms\n- **Twitter**: Real-time mentions and discussions\n- **Reddit**: Community discussions and reviews\n- **LinkedIn**: Professional opinions and B2B mentions\n\n## AI-Powered Extraction\n- Smart content parsing with ScrapeGraphAI\n- Structured data extraction\n- Context-aware content analysis\n- Platform-specific optimization\n\n## Extensible Design\n- Easy to add Instagram, Facebook, TikTok\n- Custom keyword tracking\n- Hashtag and mention monitoring\n- Multi-language support"
          },
          "typeVersion": 1
        },
        {
          "id": "sticky-analysis",
          "name": "Sticky Note - Sentiment Analysis",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1280,
            200
          ],
          "parameters": {
            "color": 6,
            "width": 350,
            "height": 450,
            "content": "# Step 3: Advanced Sentiment Analysis 🧠\n\nSophisticated AI-powered sentiment and brand intelligence:\n\n## Sentiment Detection\n- **Multi-level Analysis**: Very positive to very negative\n- **Confidence Scoring**: Reliability percentage\n- **Emotional Context**: Excitement, disappointment, sarcasm\n- **Cultural Nuance**: Platform-specific language patterns\n\n## Brand Intelligence\n- **Your Brand Tracking**: Direct mentions and variations\n- **Competitor Monitoring**: Comparative brand analysis\n- **Context Extraction**: Relevant conversation snippets\n- **Crisis Detection**: Early warning system\n\n## Influencer Classification\n- **Tier Analysis**: Mega, macro, micro, nano influencers\n- **Engagement Scoring**: Reach and interaction rates\n- **Authority Assessment**: Industry expertise evaluation"
          },
          "typeVersion": 1
        },
        {
          "id": "sticky-dashboard",
          "name": "Sticky Note - Dashboard & Alerts",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1680,
            200
          ],
          "parameters": {
            "color": 6,
            "width": 350,
            "height": 450,
            "content": "# Step 4: Smart Alerts & Dashboard 📊\n\nIntelligent notification system and data visualization:\n\n## Crisis Management\n- **Priority Filtering**: Critical, High, Medium, Low\n- **Crisis Potential**: Early warning for PR issues\n- **Response Triggers**: Automated escalation rules\n- **Real-time Notifications**: Immediate Slack alerts\n\n## Google Sheets Dashboard\n- **Live Data**: Real-time sentiment tracking\n- **Historical Analysis**: Trend identification\n- **Visual Reports**: Charts and pivot tables\n- **Export Ready**: Stakeholder reporting\n\n## Dual Alert Channels\n- **Crisis Channel**: Urgent negative mentions\n- **Positive Channel**: Celebration and engagement opportunities\n- **Rich Formatting**: Actionable information display"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "social-sentiment-v1.0",
      "connections": {
        "Positive Sentiment Filter": {
          "main": [
            [
              {
                "node": "Slack Positive Mention Alert",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Social Media Monitor Trigger": {
          "main": [
            [
              {
                "node": "Twitter Brand Mentions Scraper",
                "type": "main",
                "index": 0
              },
              {
                "node": "Reddit Brand Discussion Scraper",
                "type": "main",
                "index": 0
              },
              {
                "node": "LinkedIn Professional Mentions Scraper",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Crisis & Priority Alert Filter": {
          "main": [
            [
              {
                "node": "Slack Crisis & Priority Alert",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Manual Sentiment Check Webhook": {
          "main": [
            [
              {
                "node": "Twitter Brand Mentions Scraper",
                "type": "main",
                "index": 0
              },
              {
                "node": "Reddit Brand Discussion Scraper",
                "type": "main",
                "index": 0
              },
              {
                "node": "LinkedIn Professional Mentions Scraper",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Twitter Brand Mentions Scraper": {
          "main": [
            [
              {
                "node": "Advanced Sentiment Analysis & Brand Intelligence",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Reddit Brand Discussion Scraper": {
          "main": [
            [
              {
                "node": "Advanced Sentiment Analysis & Brand Intelligence",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "LinkedIn Professional Mentions Scraper": {
          "main": [
            [
              {
                "node": "Advanced Sentiment Analysis & Brand Intelligence",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Advanced Sentiment Analysis & Brand Intelligence": {
          "main": [
            [
              {
                "node": "Google Sheets Sentiment Dashboard",
                "type": "main",
                "index": 0
              },
              {
                "node": "Crisis & Priority Alert Filter",
                "type": "main",
                "index": 0
              },
              {
                "node": "Positive Sentiment Filter",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 15,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 2
        },
        "n8n-nodes-base.code": {
          "count": 1
        },
        "n8n-nodes-base.slack": {
          "count": 2
        },
        "n8n-nodes-base.webhook": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 4
        },
        "n8n-nodes-base.googleSheets": {
          "count": 1
        },
        "n8n-nodes-base.scheduleTrigger": {
          "count": 1
        },
        "n8n-nodes-scrapegraphai.scrapegraphAi": {
          "count": 3
        }
      }
    },
    "status": "published",
    "user": {
      "name": "vinci-king-01",
      "username": "vinci-king-01",
      "bio": "",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/marco-vinciguerra-7ba365242/"
      ],
      "avatar": "https://gravatar.com/avatar/d939eeef03a5fcb5df08bee8196f12ccb248c38209487414e419032004f0c014?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 18,
        "icon": "file:googleSheets.svg",
        "name": "n8n-nodes-base.googleSheets",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Sheet",
              "Spreadsheet",
              "GS"
            ],
            "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-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-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/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/",
                  "icon": "⏲",
                  "label": "Creating triggers for n8n workflows using polling"
                },
                {
                  "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/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using n8n"
                },
                {
                  "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/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "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"
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-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/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\",\"output\"]",
        "defaults": {
          "name": "Google Sheets"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="
        },
        "displayName": "Google Sheets",
        "typeVersion": 5,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "id": 20,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.if",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "Filter",
              "Condition",
              "Logic",
              "Boolean",
              "Branch"
            ],
            "details": "The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/",
                  "icon": "🏭",
                  "label": "Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/",
                  "icon": "🤬",
                  "label": "Create a toxic language detector for Telegram in 4 step"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "If",
          "color": "#408000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "If",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 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": 47,
        "icon": "file:webhook.svg",
        "name": "n8n-nodes-base.webhook",
        "codex": {
          "data": {
            "alias": [
              "HTTP",
              "API",
              "Build",
              "WH"
            ],
            "resources": {
              "generic": [
                {
                  "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/running-n8n-on-ships-an-interview-with-maranics/",
                  "icon": "🛳",
                  "label": "Running n8n on ships: An interview with Maranics"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/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/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "url": "https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/",
                  "icon": "📹",
                  "label": "The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/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/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/",
                  "label": "How to automate every step of an incident response workflow"
                },
                {
                  "url": "https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/",
                  "icon": "🧰",
                  "label": "Learn to Build Powerful API Endpoints Using Webhooks"
                },
                {
                  "url": "https://n8n.io/blog/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-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Webhook"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"
        },
        "displayName": "Webhook",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "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"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 32,
        "name": "Market Research"
      },
      {
        "id": 49,
        "name": "AI Summarization"
      }
    ],
    "image": []
  }
}