{"workflow":{"id":13322,"name":"Detect and route gameplay security anomalies with GPT-4o, Slack and Sheets","views":38,"recentViews":0,"totalViews":38,"createdAt":"2026-02-12T04:38:53.621Z","description":"## How It Works\nThis workflow automates cybersecurity incident detection and response for security operations centers (SOCs) managing constant threat landscapes. Designed for security analysts, IT operations teams, and CISOs, it solves the challenge of manually triaging security alerts, validating threats, and coordinating response actions across multiple systems and stakeholders. The system schedules continuous security monitoring, generates simulated anomaly data for testing, validates behaviors through AI agents (Behavior Validator confirms threat patterns, Governance Agent assesses severity), routes incidents by criticality (low/critical), and orchestrates responses: critical threats trigger automated human reviews, escalation workflows, and Slack alerts; low-priority items receive automated remediation with Google Sheets logging. By combining AI-powered threat analysis with intelligent routing and multi-channel response coordination, organizations reduce incident response time by 80%, minimize false positives, ensure consistent threat handling, and enable security teams to focus on strategic defense rather than alert fatigue.\n\n## Setup Steps\n1. Connect **Schedule Trigger** for continuous monitoring \n2. Configure **SIEM/security data sources** \n3. Add **OpenAI API keys** to Behavior Validator and Governance Agent nodes\n4. Define **severity thresholds** and threat patterns in agent prompts\n5. Link **Slack webhooks** for critical incident alerts and escalation channels\n6. Connect **Google Sheets** API for incident logging and compliance tracking\n\n## Prerequisites\nSIEM or security monitoring platform access, OpenAI API account\n## Use Cases\nIntrusion detection response, malware outbreak containment\n## Customization\nModify AI prompts for organization-specific threat models, adjust severity scoring algorithms\n## Benefits\nReduces incident response time by 80%, minimizes false positive alert fatigue","workflow":{"id":"8z7iQlO80TxhLHkK7l17N","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"AI-powered cybersecurity incident detection & response system","tags":[],"nodes":[{"id":"99faa284-7663-4909-a697-9c15c1321a54","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-16,144],"parameters":{"rule":{"interval":[{"field":"minutes","minutesInterval":15}]}},"typeVersion":1.3},{"id":"e32e8ce7-aaf2-45b0-bb33-6b89a46e7975","name":"Workflow Configuration","type":"n8n-nodes-base.set","position":[208,144],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"criticalSeverityThreshold","type":"number","value":80},{"id":"id-2","name":"highSeverityThreshold","type":"number","value":60},{"id":"id-3","name":"mediumSeverityThreshold","type":"number","value":40},{"id":"id-4","name":"slackChannelId","type":"string","value":"<__PLACEHOLDER_VALUE__Slack Channel ID for notifications__>"},{"id":"id-5","name":"escalationEmail","type":"string","value":"<__PLACEHOLDER_VALUE__Email address for critical escalations__>"},{"id":"id-6","name":"googleSheetsDocumentId","type":"string","value":"<__PLACEHOLDER_VALUE__Google Sheets Document ID for logging__>"},{"id":"id-7","name":"humanReviewWaitMinutes","type":"number","value":30}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"1916f024-1ea1-4cfa-8a7a-42096b27793c","name":"Generate Gameplay Anomaly Data","type":"n8n-nodes-base.code","position":[432,144],"parameters":{"jsCode":"// Generate realistic gameplay anomaly data\nconst anomalyTypes = ['speed_hack', 'aim_bot', 'wall_hack', 'resource_exploit', 'suspicious_pattern'];\nconst playerNames = ['Player_Alpha', 'Player_Beta', 'Player_Gamma', 'Player_Delta', 'Player_Epsilon'];\n\n// Generate 5 anomaly records\nconst anomalies = [];\n\nfor (let i = 0; i < 5; i++) {\n  const anomalyType = anomalyTypes[Math.floor(Math.random() * anomalyTypes.length)];\n  const playerId = `PID_${Math.floor(Math.random() * 10000)}`;\n  const playerName = playerNames[Math.floor(Math.random() * playerNames.length)];\n  \n  // Generate severity score based on anomaly type\n  let severityScore;\n  if (anomalyType === 'aim_bot' || anomalyType === 'speed_hack') {\n    severityScore = Math.floor(Math.random() * 30) + 70; // 70-100 (high)\n  } else if (anomalyType === 'wall_hack') {\n    severityScore = Math.floor(Math.random() * 20) + 60; // 60-80 (medium-high)\n  } else if (anomalyType === 'resource_exploit') {\n    severityScore = Math.floor(Math.random() * 30) + 50; // 50-80 (medium)\n  } else {\n    severityScore = Math.floor(Math.random() * 40) + 30; // 30-70 (low-medium)\n  }\n  \n  const anomaly = {\n    player_id: playerId,\n    player_name: playerName,\n    anomaly_type: anomalyType,\n    severity_score: severityScore,\n    timestamp: new Date(Date.now() - Math.floor(Math.random() * 3600000)).toISOString(),\n    game_session: {\n      session_id: `SESSION_${Math.floor(Math.random() * 100000)}`,\n      duration_minutes: Math.floor(Math.random() * 120) + 10,\n      map: ['Desert_Storm', 'Urban_Warfare', 'Forest_Ops', 'Arctic_Base'][Math.floor(Math.random() * 4)],\n      game_mode: ['Team_Deathmatch', 'Capture_Flag', 'Battle_Royale', 'Domination'][Math.floor(Math.random() * 4)]\n    },\n    player_statistics: {\n      kills: Math.floor(Math.random() * 50) + (anomalyType === 'aim_bot' ? 30 : 0),\n      deaths: Math.floor(Math.random() * 20) + 1,\n      accuracy_percentage: anomalyType === 'aim_bot' ? Math.floor(Math.random() * 10) + 90 : Math.floor(Math.random() * 40) + 30,\n      headshot_percentage: anomalyType === 'aim_bot' ? Math.floor(Math.random() * 20) + 70 : Math.floor(Math.random() * 30) + 10,\n      distance_traveled: Math.floor(Math.random() * 10000) + (anomalyType === 'speed_hack' ? 15000 : 1000),\n      resources_collected: Math.floor(Math.random() * 500) + (anomalyType === 'resource_exploit' ? 2000 : 0)\n    },\n    behavioral_metrics: {\n      movement_speed_avg: anomalyType === 'speed_hack' ? Math.floor(Math.random() * 50) + 150 : Math.floor(Math.random() * 30) + 80,\n      reaction_time_ms: anomalyType === 'aim_bot' ? Math.floor(Math.random() * 30) + 10 : Math.floor(Math.random() * 100) + 150,\n      wall_penetration_shots: anomalyType === 'wall_hack' ? Math.floor(Math.random() * 20) + 15 : Math.floor(Math.random() * 3),\n      suspicious_actions_count: Math.floor(Math.random() * 10) + (severityScore > 70 ? 15 : 0),\n      pattern_deviation_score: Math.floor(Math.random() * 100),\n      previous_violations: Math.floor(Math.random() * 5)\n    },\n    detection_confidence: Math.floor(Math.random() * 20) + 80,\n    server_region: ['US-East', 'US-West', 'EU-Central', 'Asia-Pacific'][Math.floor(Math.random() * 4)]\n  };\n  \n  anomalies.push(anomaly);\n}\n\nreturn anomalies.map(anomaly => ({ json: anomaly }));"},"typeVersion":2},{"id":"a8e9c726-113d-4a8b-8ce8-7ebc75467455","name":"OpenAI Model - Behavior Validation","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[672,368],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.2},"builtInTools":{}},"credentials":{"openAiApi":{"id":"credential-id","name":"OpenAi account"}},"typeVersion":1.3},{"id":"df569ad9-9d25-4ff2-9cb9-ddf0918db633","name":"Structured Output Parser - Behavior Validation","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[800,368],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"anomalyConfirmed\": {\n      \"type\": \"boolean\",\n      \"description\": \"Whether the anomaly is confirmed\"\n    },\n    \"severityScore\": {\n      \"type\": \"number\",\n      \"minimum\": 0,\n      \"maximum\": 100,\n      \"description\": \"Severity score from 0 to 100\"\n    },\n    \"anomalyType\": {\n      \"type\": \"string\",\n      \"description\": \"Type of anomaly detected\"\n    },\n    \"riskLevel\": {\n      \"type\": \"string\",\n      \"enum\": [\"low\", \"medium\", \"high\", \"critical\"],\n      \"description\": \"Risk level classification\"\n    },\n    \"evidenceStrength\": {\n      \"type\": \"string\",\n      \"enum\": [\"weak\", \"moderate\", \"strong\", \"conclusive\"],\n      \"description\": \"Strength of evidence for the anomaly\"\n    },\n    \"playerBehaviorProfile\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"accountAge\": {\n          \"type\": \"string\",\n          \"description\": \"Age of the player account\"\n        },\n        \"previousViolations\": {\n          \"type\": \"number\",\n          \"description\": \"Number of previous violations\"\n        },\n        \"playPattern\": {\n          \"type\": \"string\",\n          \"description\": \"Player's play pattern\"\n        },\n        \"skillProgression\": {\n          \"type\": \"string\",\n          \"description\": \"Player's skill progression\"\n        }\n      },\n      \"required\": [\"accountAge\", \"previousViolations\", \"playPattern\", \"skillProgression\"]\n    },\n    \"detectionConfidence\": {\n      \"type\": \"number\",\n      \"minimum\": 0,\n      \"maximum\": 100,\n      \"description\": \"Confidence level of detection from 0 to 100\"\n    },\n    \"reasoning\": {\n      \"type\": \"string\",\n      \"description\": \"Reasoning behind the detection\"\n    },\n    \"recommendedAction\": {\n      \"type\": \"string\",\n      \"description\": \"Recommended action to take\"\n    },\n    \"requiresHumanReview\": {\n      \"type\": \"boolean\",\n      \"description\": \"Whether human review is required\"\n    }\n  },\n  \"required\": [\"anomalyConfirmed\", \"severityScore\", \"anomalyType\", \"riskLevel\", \"evidenceStrength\", \"playerBehaviorProfile\", \"detectionConfidence\", \"reasoning\", \"recommendedAction\", \"requiresHumanReview\"]\n}"},"typeVersion":1.3},{"id":"d57780e2-3de5-4fd6-aee9-50a0a6705f48","name":"Behavior Validation Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[656,144],"parameters":{"text":"=Analyze this gameplay anomaly data: {{ JSON.stringify($json) }}","options":{"systemMessage":"You are an expert Behavior Validation Agent specializing in gameplay anomaly detection and anti-cheat analysis.\n\nYour task is to:\n1. Analyze structured gameplay anomaly data including player statistics, behavioral metrics, and session data\n2. Validate whether the anomaly is genuine or a false positive\n3. Assess the severity and risk level of confirmed anomalies\n4. Evaluate evidence strength based on multiple data points\n5. Build a comprehensive player behavior profile considering account history and play patterns\n6. Calculate detection confidence based on data quality and pattern consistency\n7. Determine if human review is required for edge cases or high-impact decisions\n8. Recommend appropriate actions based on severity and confidence levels\n\nConsider:\n- Statistical deviation from normal player behavior\n- Consistency of anomalous patterns across multiple sessions\n- Player account age and history\n- Skill progression curves and learning patterns\n- Technical indicators (input timing, reaction speeds, accuracy patterns)\n- Context of gameplay situation\n- Potential for false positives in legitimate high-skill play\n\nReturn structured analysis with all required fields including detailed reasoning."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"84ee3d15-d21a-4eb9-aaa6-e7ee25deb454","name":"Route by Severity","type":"n8n-nodes-base.switch","position":[1024,308],"parameters":{"rules":{"values":[{"outputKey":"High/Critical Severity","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.severityScore }}","rightValue":60}]},"renameOutput":true},{"outputKey":"Medium Severity","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.severityScore }}","rightValue":40},{"operator":{"type":"number","operation":"lt"},"leftValue":"={{ $json.severityScore }}","rightValue":60}]},"renameOutput":true},{"outputKey":"Low Severity","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"number","operation":"lt"},"leftValue":"={{ $json.severityScore }}","rightValue":40}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra","renameFallbackOutput":"Unclassified"}},"typeVersion":3.4},{"id":"65366f95-f6b5-4611-ac6f-aa164437e1ac","name":"OpenAI Model - Governance","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1248,260],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.3},"builtInTools":{}},"credentials":{"openAiApi":{"id":"credential-id","name":"OpenAi account"}},"typeVersion":1.3},{"id":"59adf837-81ec-4b1a-8fd0-a28a5b5d5740","name":"Structured Output Parser - Governance","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1376,260],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"actionType\": {\n      \"type\": \"string\",\n      \"enum\": [\"human_review\", \"auto_action\", \"escalate\"],\n      \"description\": \"Type of action to take\"\n    },\n    \"enforcementAction\": {\n      \"type\": \"string\",\n      \"enum\": [\"warning\", \"temporary_ban\", \"permanent_ban\", \"account_flag\", \"no_action\"],\n      \"description\": \"Specific enforcement action to apply\"\n    },\n    \"banDurationHours\": {\n      \"type\": \"number\",\n      \"description\": \"Duration of ban in hours (if applicable)\"\n    },\n    \"notificationRequired\": {\n      \"type\": \"boolean\",\n      \"description\": \"Whether notification is required\"\n    },\n    \"escalationLevel\": {\n      \"type\": \"string\",\n      \"enum\": [\"none\", \"team_lead\", \"management\", \"legal\"],\n      \"description\": \"Level of escalation needed\"\n    },\n    \"requiresDocumentation\": {\n      \"type\": \"boolean\",\n      \"description\": \"Whether documentation is required\"\n    },\n    \"appealEligible\": {\n      \"type\": \"boolean\",\n      \"description\": \"Whether the user can appeal this action\"\n    },\n    \"reasoning\": {\n      \"type\": \"string\",\n      \"description\": \"Detailed reasoning for the decision\"\n    },\n    \"riskAssessment\": {\n      \"type\": \"string\",\n      \"description\": \"Risk assessment analysis\"\n    },\n    \"complianceNotes\": {\n      \"type\": \"string\",\n      \"description\": \"Compliance and regulatory notes\"\n    }\n  },\n  \"required\": [\"actionType\", \"enforcementAction\", \"notificationRequired\", \"escalationLevel\", \"requiresDocumentation\", \"appealEligible\", \"reasoning\", \"riskAssessment\", \"complianceNotes\"]\n}"},"typeVersion":1.3},{"id":"f472fdca-fd3d-4e8e-b75e-179b94b6538a","name":"Slack Tool","type":"n8n-nodes-base.slackTool","position":[1504,260],"webhookId":"0635145c-8c05-4465-95a9-fb87f6399ff1","parameters":{"text":"={{ $fromAI('message', 'Message content to send', 'string') }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{ $fromAI('channel', 'Slack channel ID for notifications', 'string') }}"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"credential-id","name":"Slack account"}},"typeVersion":2.4},{"id":"51b0d7c2-a22b-4a6e-b31f-1a592d7eebc6","name":"Google Sheets Tool","type":"n8n-nodes-base.googleSheetsTool","position":[1632,260],"parameters":{"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"={{ $fromAI('sheetName', 'Sheet name to append data', 'string') }}"},"documentId":{"__rl":true,"mode":"id","value":"={{ $fromAI('documentId', 'Google Sheets document ID', 'string') }}"}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"c1160312-d3d7-479a-bd6a-42c51949ca2e","name":"Historical Pattern Analysis Tool","type":"@n8n/n8n-nodes-langchain.toolCode","position":[1760,260],"parameters":{"jsCode":"// Analyze historical player behavior patterns\nconst currentPlayerData = JSON.parse(query);\n\n// Simulate historical violation lookup (in production, this would query a database)\nconst historicalViolations = {\n  player_id: currentPlayerData.player_id || 'unknown',\n  previous_violations: Math.floor(Math.random() * 5),\n  last_violation_date: new Date(Date.now() - Math.random() * 90 * 24 * 60 * 60 * 1000).toISOString(),\n  violation_types: ['speed_hack', 'resource_manipulation', 'unauthorized_access'],\n  average_severity: Math.random() * 10\n};\n\n// Calculate recidivism risk\nconst recidivismScore = historicalViolations.previous_violations > 2 ? 'HIGH' : \n                        historicalViolations.previous_violations > 0 ? 'MEDIUM' : 'LOW';\n\n// Identify behavioral trends\nconst trends = {\n  escalating_severity: historicalViolations.average_severity > 7,\n  repeat_offender: historicalViolations.previous_violations > 1,\n  recent_activity: new Date(historicalViolations.last_violation_date) > new Date(Date.now() - 30 * 24 * 60 * 60 * 1000)\n};\n\n// Pattern matching analysis\nconst patternAnalysis = {\n  player_id: currentPlayerData.player_id || 'unknown',\n  recidivism_risk: recidivismScore,\n  previous_violations: historicalViolations.previous_violations,\n  last_violation: historicalViolations.last_violation_date,\n  behavioral_trends: trends,\n  recommendation: recidivismScore === 'HIGH' ? 'Immediate escalation recommended' : \n                  recidivismScore === 'MEDIUM' ? 'Enhanced monitoring required' : \n                  'Standard processing'\n};\n\nreturn JSON.stringify(patternAnalysis, null, 2);","description":"Analyzes historical player behavior patterns and compares with current anomaly data to identify trends and recidivism"},"typeVersion":1.3},{"id":"4b121fc8-f4e9-47cb-81aa-b5cc5a8cd124","name":"Governance Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[1432,36],"parameters":{"text":"=Review this validated anomaly and determine enforcement action: {{ JSON.stringify($json) }}","options":{"systemMessage":"You are a Governance Agent responsible for coordinating enforcement reviews and escalation decisions for gameplay violations.\n\nYour task is to:\n1. Review validated anomaly data from the Behavior Validation Agent\n2. Determine appropriate enforcement actions based on severity, evidence strength, and player history\n3. Decide whether cases require human review, can be auto-actioned, or need escalation\n4. Use available tools to check historical patterns, notify teams via Slack, and log decisions to Google Sheets\n5. Assess compliance requirements and documentation needs\n6. Evaluate appeal eligibility based on evidence quality and circumstances\n7. Provide detailed reasoning for all enforcement decisions\n\nDecision Framework:\n- Human Review: Edge cases, first-time high-severity violations, weak evidence, or cases requiring judgment\n- Auto-Action: Clear violations with strong evidence, repeat offenders with established patterns, low-risk decisions\n- Escalate: Critical violations, legal implications, high-profile accounts, or systemic abuse patterns\n\nEnforcement Actions:\n- Warning: First-time minor violations, educational opportunity\n- Temporary Ban: Moderate violations, cooling-off period (specify duration)\n- Permanent Ban: Severe violations, repeat offenders, irredeemable behavior\n- Account Flag: Monitoring required, suspicious but inconclusive\n- No Action: False positive, insufficient evidence\n\nUse your tools strategically:\n- Historical Pattern Analysis Tool: Check player violation history and behavioral trends\n- Slack Tool: Notify relevant teams about decisions requiring coordination\n- Google Sheets Tool: Log enforcement decisions for audit trail\n\nReturn structured decisions with complete reasoning and compliance notes."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"acbd944c-04a3-4d65-b1d4-6ebaebabe006","name":"Route by Action Type","type":"n8n-nodes-base.switch","position":[2016,240],"parameters":{"rules":{"values":[{"outputKey":"Human Review","conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.actionType }}","rightValue":"human_review"}]},"renameOutput":true},{"outputKey":"Auto-Action","conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.actionType }}","rightValue":"auto_action"}]},"renameOutput":true},{"outputKey":"Escalate","conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.actionType }}","rightValue":"escalate"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra","renameFallbackOutput":"Default"}},"typeVersion":3.4},{"id":"0cda0716-14eb-4726-af9f-600f1c8e4dad","name":"Wait for Human Review","type":"n8n-nodes-base.wait","position":[2464,128],"webhookId":"ff3857c3-b614-4730-b1f5-175084035ca2","parameters":{"unit":"minutes","amount":"={{ $('Workflow Configuration').first().json.humanReviewWaitMinutes }}"},"typeVersion":1.1},{"id":"9bc27284-ce3f-4a8f-ad7e-229af141a868","name":"Prepare Human Review Data","type":"n8n-nodes-base.set","position":[2240,128],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"reviewStatus","type":"string","value":"pending_human_review"},{"id":"id-2","name":"reviewRequestedAt","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-3","name":"reviewType","type":"string","value":"governance_decision"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"c2ed4750-dfd7-47c5-a44b-b56979eb379e","name":"Send to Slack - Human Review","type":"n8n-nodes-base.slack","position":[2688,128],"webhookId":"7f748fdf-7943-4f4c-b7b7-de883363890c","parameters":{"text":"=🔍 HUMAN REVIEW REQUIRED\n\nPlayer ID: {{ $json.playerId }}\nAnomaly Type: {{ $json.anomalyType }}\nSeverity Score: {{ $json.severityScore }}/100\nRisk Level: {{ $json.riskLevel }}\nEvidence Strength: {{ $json.evidenceStrength }}\n\nRecommended Action: {{ $json.enforcementAction }}\nReasoning: {{ $json.reasoning }}\n\nReview Status: {{ $json.reviewStatus }}\nRequested At: {{ $json.reviewRequestedAt }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{ $('Workflow Configuration').first().json.slackChannelId }}"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"credential-id","name":"Slack account"}},"typeVersion":2.4},{"id":"d7623eb3-86fd-4f14-97fa-a900756c6331","name":"Prepare Auto-Action Data","type":"n8n-nodes-base.set","position":[2464,320],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"actionStatus","type":"string","value":"auto_executed"},{"id":"id-2","name":"executedAt","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-3","name":"actionType","type":"string","value":"automated_enforcement"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"61593cc2-152c-439e-bde1-c63dc2f018cd","name":"Send to Slack - Auto-Action","type":"n8n-nodes-base.slack","position":[2688,320],"webhookId":"f425d00b-0da0-4f20-ba25-e45acd82e84b","parameters":{"text":"=⚡ AUTO-ACTION EXECUTED\n\nPlayer ID: {{ $json.playerId }}\nAnomaly Type: {{ $json.anomalyType }}\nSeverity Score: {{ $json.severityScore }}/100\nRisk Level: {{ $json.riskLevel }}\n\nEnforcement Action: {{ $json.enforcementAction }}\nBan Duration: {{ $json.banDurationHours }} hours\nAppeal Eligible: {{ $json.appealEligible }}\n\nReasoning: {{ $json.reasoning }}\n\nAction Status: {{ $json.actionStatus }}\nExecuted At: {{ $json.executedAt }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{ $('Workflow Configuration').first().json.slackChannelId }}"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"credential-id","name":"Slack account"}},"typeVersion":2.4},{"id":"de3dfb2e-c63d-45d0-abea-f22db8332386","name":"Prepare Escalation Data","type":"n8n-nodes-base.set","position":[2240,512],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"escalationStatus","type":"string","value":"escalated"},{"id":"id-2","name":"escalatedAt","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-3","name":"escalationType","type":"string","value":"critical_violation"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"90c80d2e-5154-4954-8bef-bf421d9eedd0","name":"Send Escalation Email","type":"n8n-nodes-base.emailSend","position":[2464,512],"webhookId":"2c5c2b61-14d6-424a-9952-9710b40605bb","parameters":{"html":"=<h2>Critical Gameplay Violation Escalation</h2><p><strong>Player ID:</strong> {{ $json.playerId }}</p><p><strong>Anomaly Type:</strong> {{ $json.anomalyType }}</p><p><strong>Severity Score:</strong> {{ $json.severityScore }}/100</p><p><strong>Risk Level:</strong> {{ $json.riskLevel }}</p><p><strong>Evidence Strength:</strong> {{ $json.evidenceStrength }}</p><hr><p><strong>Recommended Enforcement:</strong> {{ $json.enforcementAction }}</p><p><strong>Ban Duration:</strong> {{ $json.banDurationHours }} hours</p><p><strong>Escalation Level:</strong> {{ $json.escalationLevel }}</p><hr><p><strong>Reasoning:</strong></p><p>{{ $json.reasoning }}</p><p><strong>Risk Assessment:</strong></p><p>{{ $json.riskAssessment }}</p><p><strong>Compliance Notes:</strong></p><p>{{ $json.complianceNotes }}</p><hr><p><strong>Escalation Status:</strong> {{ $json.escalationStatus }}</p><p><strong>Escalated At:</strong> {{ $json.escalatedAt }}</p><p>This case requires immediate management review and decision.</p>","options":{},"subject":"=CRITICAL: Gameplay Violation Escalation - Player {{ $json.playerId }}","toEmail":"={{ $('Workflow Configuration').first().json.escalationEmail }}","fromEmail":"user@example.com"},"typeVersion":2.1},{"id":"420d621c-6dee-4ad8-9a55-01af73efabd3","name":"Send to Slack - Escalation","type":"n8n-nodes-base.slack","position":[2688,512],"webhookId":"f7d15eb6-3c6a-4cbf-a1af-bb0691855ea4","parameters":{"text":"=🚨 CRITICAL ESCALATION\n\nPlayer ID: {{ $json.playerId }}\nAnomaly Type: {{ $json.anomalyType }}\nSeverity Score: {{ $json.severityScore }}/100\nRisk Level: {{ $json.riskLevel }}\n\nEnforcement Action: {{ $json.enforcementAction }}\nEscalation Level: {{ $json.escalationLevel }}\n\nReasoning: {{ $json.reasoning }}\n\nEscalation email sent to management.\nEscalated At: {{ $json.escalatedAt }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{ $('Workflow Configuration').first().json.slackChannelId }}"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"credential-id","name":"Slack account"}},"typeVersion":2.4},{"id":"09b48124-614b-4c41-a2e6-9aaa4fdf8e99","name":"Merge All Actions","type":"n8n-nodes-base.merge","position":[2912,256],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition","numberInputs":3},"typeVersion":3.2},{"id":"e092e206-11fc-4077-bb22-77ae2ef93290","name":"Log to Google Sheets","type":"n8n-nodes-base.googleSheets","position":[3136,272],"parameters":{"columns":{"value":{},"schema":[],"mappingMode":"autoMapInputData","matchingColumns":["playerId"]},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"name","value":"Enforcement Actions"},"documentId":{"__rl":true,"mode":"id","value":"={{ $('Workflow Configuration').first().json.googleSheetsDocumentId }}"}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"e1418718-db57-4880-8917-cd5829d7a52b","name":"Prepare Low Severity Data","type":"n8n-nodes-base.set","position":[1496,436],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"actionStatus","type":"string","value":"logged_low_severity"},{"id":"id-2","name":"loggedAt","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-3","name":"requiresAction","type":"boolean","value":false}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"9ecec52b-1012-4cdc-aa96-a1dc7ce3cbe5","name":"Log Low Severity to Sheets","type":"n8n-nodes-base.googleSheets","position":[2016,560],"parameters":{"columns":{"value":{"playerId":"={{ $json.playerId }}"},"schema":[],"mappingMode":"autoMapInputData","matchingColumns":["playerId"]},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"name","value":"Low Severity Anomalies"},"documentId":{"__rl":true,"mode":"id","value":"={{ $('Workflow Configuration').first().json.googleSheetsDocumentId }}"}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"774e2c7f-46cc-4c85-beae-4264d7caafde","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1408,-448],"parameters":{"color":6,"width":608,"height":320,"content":"## Prerequisites\nSIEM or security monitoring platform access, OpenAI API account\n## Use Cases\nIntrusion detection response, malware outbreak containment\n## Customization\nModify AI prompts for organization-specific threat models, adjust severity scoring algorithms\n## Benefits\nReduces incident response time by 80%, minimizes false positive alert fatigue"},"typeVersion":1},{"id":"01927c55-79ed-441a-ab0c-32d66d2754df","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[736,-368],"parameters":{"width":630,"height":224,"content":"## Setup Steps\n1. Connect **Schedule Trigger** for continuous monitoring \n2. Configure **SIEM/security data sources** \n3. Add **OpenAI API keys** to Behavior Validator and Governance Agent nodes\n4. Define **severity thresholds** and threat patterns in agent prompts\n5. Link **Slack webhooks** for critical incident alerts and escalation channels\n6. Connect **Google Sheets** API for incident logging and compliance tracking\n"},"typeVersion":1},{"id":"d9e0384a-d120-4ab1-91fa-fc622952f552","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[0,-416],"parameters":{"width":704,"height":304,"content":"## How It Works\nThis workflow automates cybersecurity incident detection and response for security operations centers (SOCs) managing constant threat landscapes. Designed for security analysts, IT operations teams, and CISOs, it solves the challenge of manually triaging security alerts, validating threats, and coordinating response actions across multiple systems and stakeholders. The system schedules continuous security monitoring, generates simulated anomaly data for testing, validates behaviors through AI agents (Behavior Validator confirms threat patterns, Governance Agent assesses severity), routes incidents by criticality (low/critical), and orchestrates responses: critical threats trigger automated human reviews, escalation workflows, and Slack alerts; low-priority items receive automated remediation with Google Sheets logging. By combining AI-powered threat analysis with intelligent routing and multi-channel response coordination, organizations reduce incident response time by 80%, minimize false positives, ensure consistent threat handling, and enable security teams to focus on strategic defense rather than alert fatigue.\n"},"typeVersion":1},{"id":"5c8afa41-3fc4-4426-af79-f55604da2c16","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1952,-96],"parameters":{"color":7,"width":1344,"height":1008,"content":"## Coordinated Response\n**What**: Executes action plans via Slack alerts, Google Sheets logging, automated remediation scripts  \n**Why**: Multi-channel orchestration ensures stakeholder notification, audit compliance, and rapid threat neutralization"},"typeVersion":1},{"id":"842b07fd-4f8e-4679-a96f-720494ef0dcd","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[992,-80],"parameters":{"color":7,"width":944,"height":960,"content":"## Intelligent Routing\n**What**: Routes incidents by severity—critical triggers human review/escalation, low enables auto-remediation  \n**Why**: Priority-based workflows ensure urgent threats receive expert attention while minor issues resolve automatically"},"typeVersion":1},{"id":"817fe50d-abc2-46bb-a312-be9e6ce2e1ab","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-48,-64],"parameters":{"color":7,"width":992,"height":720,"content":"\n## Continuous Monitoring & AI Threat Validation\n**What**: Behavior Validator confirms suspicious patterns; Governance Agent assesses incident severity  \n**Why**: Dual-layer analysis reduces false positives while accurately identifying critical threats requiring immediate action\n"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"9d870190-a1f4-45f3-9b92-8f81f3f184a1","connections":{"Slack Tool":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"Governance Agent":{"main":[[{"node":"Route by Action Type","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"Merge All Actions":{"main":[[{"node":"Log to Google Sheets","type":"main","index":0}]]},"Route by Severity":{"main":[[{"node":"Governance Agent","type":"main","index":0}],[{"node":"Governance Agent","type":"main","index":0}],[{"node":"Prepare Low Severity Data","type":"main","index":0}]]},"Google Sheets Tool":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"Route by Action Type":{"main":[[{"node":"Prepare Human Review Data","type":"main","index":0}],[{"node":"Prepare Auto-Action Data","type":"main","index":0}],[{"node":"Prepare Escalation Data","type":"main","index":0}]]},"Send Escalation Email":{"main":[[{"node":"Send to Slack - Escalation","type":"main","index":0}]]},"Wait for Human Review":{"main":[[{"node":"Send to Slack - Human Review","type":"main","index":0}]]},"Workflow Configuration":{"main":[[{"node":"Generate Gameplay Anomaly Data","type":"main","index":0}]]},"Prepare Escalation Data":{"main":[[{"node":"Send Escalation Email","type":"main","index":0}]]},"Prepare Auto-Action Data":{"main":[[{"node":"Send to Slack - Auto-Action","type":"main","index":0}]]},"Behavior Validation Agent":{"main":[[{"node":"Route by Severity","type":"main","index":0}]]},"OpenAI Model - Governance":{"ai_languageModel":[[{"node":"Governance Agent","type":"ai_languageModel","index":0}]]},"Prepare Human Review Data":{"main":[[{"node":"Wait for Human Review","type":"main","index":0}]]},"Prepare Low Severity Data":{"main":[[{"node":"Log Low Severity to Sheets","type":"main","index":0}]]},"Send to Slack - Escalation":{"main":[[{"node":"Merge All Actions","type":"main","index":2}]]},"Send to Slack - Auto-Action":{"main":[[{"node":"Merge All Actions","type":"main","index":1}]]},"Send to Slack - Human Review":{"main":[[{"node":"Merge All Actions","type":"main","index":0}]]},"Generate Gameplay Anomaly Data":{"main":[[{"node":"Behavior Validation Agent","type":"main","index":0}]]},"Historical Pattern Analysis Tool":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"OpenAI Model - Behavior Validation":{"ai_languageModel":[[{"node":"Behavior Validation Agent","type":"ai_languageModel","index":0}]]},"Structured Output Parser - Governance":{"ai_outputParser":[[{"node":"Governance Agent","type":"ai_outputParser","index":0}]]},"Structured Output Parser - Behavior Validation":{"ai_outputParser":[[{"node":"Behavior Validation Agent","type":"ai_outputParser","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":32,"nodeTypes":{"n8n-nodes-base.set":{"count":5},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.slack":{"count":3},"n8n-nodes-base.switch":{"count":2},"n8n-nodes-base.emailSend":{"count":1},"n8n-nodes-base.slackTool":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.googleSheets":{"count":2},"@n8n/n8n-nodes-langchain.agent":{"count":2},"n8n-nodes-base.scheduleTrigger":{"count":1},"n8n-nodes-base.googleSheetsTool":{"count":1},"@n8n/n8n-nodes-langchain.toolCode":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":2},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":2}}},"status":"published","readyToDemo":null,"user":{"name":"Cheng Siong Chin","username":"cschin","bio":"Dr. Cheng Siong CHIN is an n8n workflow creator specializing in AI-powered automation, agent orchestration, and intelligent system integrations. He designs and builds end-to-end workflows that combine LLMs, APIs, and data pipelines to streamline complex processes and deliver production-ready automation solutions. Contact me to discuss custom AI workflows and agent architectures.\n","verified":true,"links":["https://gravatar.com/mysticluminary9fa255f7f5"],"avatar":"https://gravatar.com/avatar/54544f98e839bb9dd9a764ad1e6823eeddb6db5138d201e42f291a7b0a73303f?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":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":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":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":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":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":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":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1197,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.toolCode","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"Code Tool"},"iconData":{"icon":"code","type":"icon"},"displayName":"Code Tool","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":29,"name":"SecOps"},{"id":49,"name":"AI Summarization"}],"image":[]}}