{"workflow":{"id":13375,"name":"Audit browser and proxy fingerprint/IP integrity with GPT-4o, Sheets and Slack","views":13,"recentViews":0,"totalViews":13,"createdAt":"2026-02-13T14:09:48.904Z","description":"# Audit browser & Proxies fingerprint and IP integrity to Slack reports\n\n## Introduction\n\nThis workflow performs a comprehensive security audit on your web scraping infrastructure to detect potential IP leaks or bot detection flags. It iterates through a list of fingerprinting services and guarded websites using BrowserAct, uses AI to analyze the diagnostic data for anomalies (like mismatched User-Agents or leaked WebRTC IPs), and logs the results to Google Sheets before delivering a final \"Go/No-Go\" report to Slack.\n\n## Target Audience\n\nWeb scraping developers, DevOps engineers, and security analysts who need to verify that their automation infrastructure is not being flagged as a bot.\n\n## How it works\n\n1. **Initialization:** The workflow starts by clearing a designated Google Sheet to prepare for a fresh audit.\n2. **Target Definition:** A **Set** node defines a list of diagnostic URLs (e.g., BrowserScan, IPQualityScore) and specific guarded websites (e.g., Footlocker) to test.\n3. **Looping:** A **Split In Batches** node iterates through each URL one by one.\n4. **Data Extraction:** The **BrowserAct** node visits each URL.  It executes the \"Bot Detection Check\" template to extract raw fingerprint data, headers, and access logs.\n5. **Forensic Analysis:** An **AI Agent** (using OpenRouter/GPT-4o) acts as a security analyst. It parses the raw scraping output to identify specific red flags, such as \"WebDriver\" leaks, IP blacklisting, or CAPTCHA blocks.\n6. **Logging:** The individual analysis for each site is appended to a **Google Sheet**.\n7. **Aggregation:** Once all sites are checked, the workflow fetches all rows from the Google Sheet.\n8. **Final Verdict:** A second **AI Agent** reviews the aggregate data to generate a master report, calculating a success rate and identifying consistency issues across different checks.\n9. **Notification:** The final formatted report is sent to a **Slack** channel.\n\n## How to set up\n\n1. **Configure Credentials:** Connect your **BrowserAct**, **OpenRouter**, **Google Sheets**, and **Slack** accounts in n8n.\n2. **Prepare BrowserAct:** Ensure you have the **Bot Detection Check** template saved and active in your BrowserAct library.\n3. **Setup Google Sheet:** Create a new Google Sheet. (See headers below).\n4. **Define Targets:** Open the **Define Target URLs** node and populate the array with the detection services you wish to test.\n5. **Configure Guarded Sites:** Open the **Add guarded test step** node if you wish to change the specific e-commerce or protected site being tested (default is Footlocker).\n6. **Select Slack Channel:** Update the **Send Report** node to point to your desired Slack channel.\n\n## Google Sheet Headers\n\nTo use this workflow, create a Google Sheet with the following header in the first row:\n\n* `Result`\n\n## Requirements\n\n* **BrowserAct Account:** Required to perform the browser-based checks. You must have the **Bot Detection Check** template.\n* **OpenRouter Account:** Required for the GPT-4o model to perform the forensic analysis.\n* **Google Sheets:** Used as a temporary database to store logs during the loop.\n* **Slack Account:** Used to receive the final audit report.\n\n## How to customize the workflow\n\n1. **Add Email Alerts:** Add a **Gmail** or **SendGrid** node after the final AI Agent to email the report to stakeholders if the \"Scorecard\" falls below a certain threshold.\n2. **Deepen the Analysis:** Modify the System Prompt in the **Analyze the site results** node to check for specific custom headers or headers required by your target websites.\n3. **Rotate Proxies:** If the report returns a \"Fail,\" you could extend the workflow to trigger a proxy rotation API (like Bright Data or IPRoyal) automatically.\n\n## Need Help?\n\n* [How to Find Your BrowserAct API Key & Workflow ID](https://www.youtube.com/watch?v=pDjoZWEsZlE)\n* [How to Connect n8n to BrowserAct](https://www.youtube.com/watch?v=RoYMdJaRdcQ)\n* [How to Use & Customize BrowserAct Templates](https://www.youtube.com/watch?v=CPZHFUASncY)\n\n---\n### Workflow Guidance and Showcase Video\n\n* #### [How to Test Your Proxies for n8n: AI-Powered Fingerprint & Bot Check](https://youtu.be/64cKXeY52NQ)\n\n","workflow":{"id":"N9457WJd3lloMiYa","meta":{"instanceId":"6fcb279fd6b00187153abdc6d8b627acfd9fe31f84b387f64b56a0996e8ea182","templateCredsSetupCompleted":true},"name":"Audit browser fingerprint and IP integrity to Slack reports","tags":[],"nodes":[{"id":"c7c2d0e6-15bf-4c12-b948-3fff1b811557","name":"Define Target URLs","type":"n8n-nodes-base.set","notes":"Define your 10 target sites here.","position":[240,512],"parameters":{"options":{},"assignments":{"assignments":[{"id":"url_list","name":"urls","type":"array","value":"=[\n\"https://www.browserscan.net/bot-detection\",\n\"https://www.ipqualityscore.com/free-ip-lookup-proxy-vpn-test\",\n\"https://www.ip-score.com/\"\n]"}]}},"typeVersion":3.4},{"id":"6a10f043-366b-48b9-b569-5217f8173480","name":"Loop Over URLs","type":"n8n-nodes-base.splitInBatches","position":[816,512],"parameters":{"options":{"reset":false}},"typeVersion":3},{"id":"fa5dc98c-e13f-414b-81c2-6a1dc42c4935","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[464,512],"parameters":{"options":{},"fieldToSplitOut":"urls"},"typeVersion":1},{"id":"2f9fc698-9542-411b-8efc-8be4aa98980c","name":"OpenRouter Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[1216,704],"parameters":{"model":"openai/gpt-4o","options":{}},"credentials":{"openRouterApi":{"id":"x6ohV3n8b2Kjebtm","name":"OpenRouter account"}},"typeVersion":1},{"id":"6707e5c4-2722-4eea-b12c-3c536e669b07","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1344,720],"parameters":{"autoFix":true,"jsonSchemaExample":"{\n  \"text\": \"# 🛡️ SECURITY DIAGNOSTIC REPORT\\n\\n[Your detailed markdown report here...]\"\n}"},"typeVersion":1.3},{"id":"c8a3cc28-08fb-4aa3-bce1-52d698a45ae5","name":"OpenRouter Chat Model1","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[2784,608],"parameters":{"model":"openai/gpt-4o","options":{}},"credentials":{"openRouterApi":{"id":"x6ohV3n8b2Kjebtm","name":"OpenRouter account"}},"typeVersion":1},{"id":"f7f86ab6-50b8-4f97-8b93-4fef8e4b16d3","name":"Structured Output Parser1","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[2928,608],"parameters":{"autoFix":true,"jsonSchemaExample":"{\n  \"text\": \"🛡️ SECURITY DIAGNOSTIC REPORT\\n\\n1. EXECUTIVE SUMMARY\\n- Status: PASS\\n- Verdict: The browser environment appears stealthy. WebDriver is hidden and no automation flags were detected.\\n\\n2. DETECTED LEAKS\\n- None detected. Plugin length is 5, which is consistent with a human user.\\n\\n3. NETWORK IDENTITY\\n- Visible IP: Not present in logs\\n- Location: Unknown\\n\\n4. FINGERPRINT DETAILS\\n- Browser Engine: Chrome 139.0.0.0\\n- User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)...\\n- WebGL Vendor: Google Inc. (Intel)\\n\\n5. RAW EVIDENCE\\n- \\\"WebDriver (New) | missing (passed)\\\"\\n- \\\"Canvas Hash: 1165917394\\\"\"\n}"},"typeVersion":1.3},{"id":"f6601732-864e-449f-bc46-8b7f0f50574a","name":"Aggregate","type":"n8n-nodes-base.aggregate","position":[2656,384],"parameters":{"options":{},"aggregate":"aggregateAllItemData"},"typeVersion":1},{"id":"5bb81487-96bc-46bb-b8e1-218ab402fb35","name":"Structured Output Parser2","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1648,400],"parameters":{"autoFix":true,"jsonSchemaExample":"{\n  \"text\": \"🛡️ SECURITY DIAGNOSTIC REPORT\\n\\n1. EXECUTIVE SUMMARY\\n- Status: PASS\\n- Verdict: The browser environment appears stealthy. WebDriver is hidden and no automation flags were detected.\\n\\n2. DETECTED LEAKS\\n- None detected. Plugin length is 5, which is consistent with a human user.\\n\\n3. NETWORK IDENTITY\\n- Visible IP: Not present in logs\\n- Location: Unknown\\n\\n4. FINGERPRINT DETAILS\\n- Browser Engine: Chrome 139.0.0.0\\n- User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)...\\n- WebGL Vendor: Google Inc. (Intel)\\n\\n5. RAW EVIDENCE\\n- \\\"WebDriver (New) | missing (passed)\\\"\\n- \\\"Canvas Hash: 1165917394\\\"\"\n}"},"typeVersion":1.3},{"id":"e9bf86eb-0b46-4792-8b3f-189f41512359","name":"Clear Database","type":"n8n-nodes-base.googleSheets","position":[16,512],"parameters":{"operation":"clear","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HFoUBjTGTvbS2Na_QCdde0Htg_b_tIDFUa0g7EhS4uU/edit#gid=0","cachedResultName":"DataBase"},"documentId":{"__rl":true,"mode":"list","value":"1HFoUBjTGTvbS2Na_QCdde0Htg_b_tIDFUa0g7EhS4uU","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HFoUBjTGTvbS2Na_QCdde0Htg_b_tIDFUa0g7EhS4uU/edit?usp=drivesdk","cachedResultName":"IP, Fingerprint Integrity and Bot Detection Check"},"keepFirstRow":true},"credentials":{"googleSheetsOAuth2Api":{"id":"BSirjWRAwIzOFp7c","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"ff3dc30e-d67a-4ea0-b4db-47280322e53f","name":"Execute manually","type":"n8n-nodes-base.manualTrigger","position":[-208,512],"parameters":{},"typeVersion":1},{"id":"da9c8394-7e20-4b94-a6e9-0d0cbfa15c1b","name":"Analyze the site results and generate a report","type":"@n8n/n8n-nodes-langchain.agent","position":[1280,528],"parameters":{"text":"=Input : {{ $json.output.string }}","options":{"systemMessage":"**ROLE**\nYou are an Elite Security & Bot Detection Analyst. You specialize in digital forensics, browser fingerprinting, and anti-bot evasion analysis.\n\n**INPUT DATA**\nYou will receive raw text output from a web scraping attempt. This data varies significantly and may include:\n- Detailed JSON/HTML fingerprint reports (e.g., from creepjs, ipqualityscore).\n- Raw HTTP headers or DNS records.\n- WAF Block pages (Cloudflare, Akamai, Datadome).\n- Simple \"Success\" or \"Access Denied\" messages.\n\n**OBJECTIVE**\nPerform a ruthless, line-by-line forensic analysis of the provided text to determine if the scraping attempt was **Identified (Bot)**, **Suspicious**, or **Clean (Human)**. You must correlate distinct data points to find inconsistencies.\n\n**ANALYSIS PROTOCOL (Analyze Closely)**\n1.  **Classify the Artifact:** Immediately identify if the input is a *Block Page*, a *Fingerprint Leak*, or a *Successful Load*.\n2.  **Network Forensics:**\n    * Analyze IP/ISP: Is it a residential ISP or a Data Center (AWS/GCP/DigitalOcean)?\n    * Geo-Correlation: Does the Timezone match the IP Location?\n3.  **Browser Integrity (The \"Red Flags\"):**\n    * **Automation Leaks:** Scan for traces of `webdriver`, `selenium`, `puppeteer`, `cdc_` variables, or `HeadlessChrome`.\n    * **OS/UA Mismatch:** Does the `User-Agent` (e.g., Windows NT 10) match the `navigator.platform` (e.g., Linux x86_64)?\n    * **Hardware Concurrency:** Are the CPU cores/Memory consistent with the claimed device type?\n4.  **Challenge Response:** If a CAPTCHA or Ray ID is present, analyze the specific rejection code (e.g., \"Error 1020\", \"403 Forbidden\").\n\n**OUTPUT SCHEMA**\nYou must return a **single, valid JSON object**.\n* The object must contain exactly one key: `\"text\"`.\n* The value of `\"text\"` must be a markdown-formatted string containing your forensic report.\n\n**JSON STRUCTURE:**\n{\n  \"text\": \"# 🛡️ SECURITY DIAGNOSTIC REPORT\\n\\n[Your detailed markdown report here...]\"\n}"},"promptType":"define","hasOutputParser":true},"typeVersion":3},{"id":"cc199207-0036-4457-b073-9967ba41af81","name":"Update Database","type":"n8n-nodes-base.googleSheets","position":[1728,656],"parameters":{"columns":{"value":{"Result":"={{ $json.output.text }}"},"schema":[{"id":"Result","type":"string","display":true,"removed":false,"required":false,"displayName":"Result","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["Result"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HFoUBjTGTvbS2Na_QCdde0Htg_b_tIDFUa0g7EhS4uU/edit#gid=0","cachedResultName":"DataBase"},"documentId":{"__rl":true,"mode":"list","value":"1HFoUBjTGTvbS2Na_QCdde0Htg_b_tIDFUa0g7EhS4uU","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HFoUBjTGTvbS2Na_QCdde0Htg_b_tIDFUa0g7EhS4uU/edit?usp=drivesdk","cachedResultName":"IP, Fingerprint Integrity and Bot Detection Check"}},"credentials":{"googleSheetsOAuth2Api":{"id":"BSirjWRAwIzOFp7c","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"b8e1a5ae-8b23-4f78-82fb-96afc89c972f","name":"Add guarded test step","type":"n8n-nodes-base.set","notes":"Define your 10 target sites here.","position":[1056,352],"parameters":{"options":{},"assignments":{"assignments":[{"id":"92d773de-ce86-4e15-8fb6-7a7fb3a2fbe9","name":"Heavy_Guarded_Site","type":"string","value":"https://www.footlocker.co.uk/"}]}},"typeVersion":3.4},{"id":"a1e67f53-d612-44e2-9b00-dc05c270dc5b","name":"Check the site accessibility","type":"n8n-nodes-browseract.browserAct","position":[1264,352],"parameters":{"type":"WORKFLOW","workflowId":"76240546993093673","workflowConfig":{"value":{"input-Ip_Bot_check_Link":"={{ $json.urls }}"},"schema":[{"id":"input-Ip_Bot_check_Link","type":"string","display":true,"removed":false,"required":false,"description":"If left blank, the default value defined in BrowserAct will be used.","displayName":"Ip_Bot_check_Link","defaultMatch":true}],"mappingMode":"defineBelow","matchingColumns":["input-Ip_Bot_check_Link"],"attemptToConvertTypes":false,"convertFieldsToString":false},"open_incognito_mode":false},"credentials":{"browserActApi":{"id":"G1U5ih38TKU5wcI5","name":"BrowserAct account"}},"typeVersion":1},{"id":"ba7c0a0a-67a8-4e75-acd3-d0a4b8c40f1a","name":"Analyze the site results","type":"@n8n/n8n-nodes-langchain.agent","position":[1568,224],"parameters":{"text":"=Input : {{ $json.output.string }}","options":{"systemMessage":"**ROLE**\nYou are a Senior Scraping Integrity & Security Analyst.\nYou will receive raw text output from an automated web scraper. This data is unpredictable: it could be the target website's content (success), a block page (Cloudflare/Datadome), a raw error log, or a browser fingerprinting report.\n\n**YOUR DUAL OBJECTIVE:**\n1.  **Verify Load Success:** Determine if the *intended* content actually loaded or if the request failed/was blocked.\n2.  **Security Forensics:** Analyze the text for signs of bot detection, IP leaks, or \"Access Denied\" triggers.\n\n**ANALYSIS PROTOCOL (Step-by-Step):**\n\n**STEP 1: LOAD VALIDATION (Did the site load?)**\n* **Success Indicators:** Look for \"meaningful content\" typical of a website (e.g., navigation menus, product prices, article text, footers, \"Copyright\").\n* **Failure Indicators:** Look for empty bodies, HTTP error codes (403, 404, 503), or generic placeholder text.\n* **Block Indicators:** Look for specific anti-bot keywords: \"Pardon our interruption\", \"Verify you are human\", \"One more step\", \"Access Denied\", \"Ray ID\", \"Cloudflare\", \"Datadome\".\n\n**STEP 2: FORENSIC DEEP DIVE**\n* If technical data is present (headers/fingerprint JSON):\n    * **Automation Leaks:** Scan for `WebDriver: true`, `Headless`, `Selenium`, `Puppeteer`.\n    * **Network:** Identify if the IP belongs to a datacenter (AWS/GCP) or looks like a residential user.\n    * **Consistency:** Does the User-Agent string match the platform (e.g., is it a Mac UA on a Linux server)?\n\n**OUTPUT FORMAT**\nYou must return a **single valid JSON object**.\nThe object must contain exactly one key named `\"text\"`.\nThe value of `\"text\"` must be a markdown-formatted report string.\n\n**JSON STRUCTURE:**\n\n{\n  \"text\": \"...\"\n}"},"promptType":"define","hasOutputParser":true},"typeVersion":3},{"id":"23b74342-b73a-49d5-8cb6-daae36531e95","name":"Update Database1","type":"n8n-nodes-base.googleSheets","position":[2208,384],"parameters":{"columns":{"value":{"Result":"={{ $json.output.text }}"},"schema":[{"id":"Result","type":"string","display":true,"removed":false,"required":false,"displayName":"Result","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["Result"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HFoUBjTGTvbS2Na_QCdde0Htg_b_tIDFUa0g7EhS4uU/edit#gid=0","cachedResultName":"DataBase"},"documentId":{"__rl":true,"mode":"list","value":"1HFoUBjTGTvbS2Na_QCdde0Htg_b_tIDFUa0g7EhS4uU","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HFoUBjTGTvbS2Na_QCdde0Htg_b_tIDFUa0g7EhS4uU/edit?usp=drivesdk","cachedResultName":"IP, Fingerprint Integrity and Bot Detection Check"}},"credentials":{"googleSheetsOAuth2Api":{"id":"BSirjWRAwIzOFp7c","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"06f0c1b2-d52f-43dc-b7ff-dad349f3901e","name":"Fetch stored data","type":"n8n-nodes-base.googleSheets","position":[2432,384],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HFoUBjTGTvbS2Na_QCdde0Htg_b_tIDFUa0g7EhS4uU/edit#gid=0","cachedResultName":"DataBase"},"documentId":{"__rl":true,"mode":"list","value":"1HFoUBjTGTvbS2Na_QCdde0Htg_b_tIDFUa0g7EhS4uU","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HFoUBjTGTvbS2Na_QCdde0Htg_b_tIDFUa0g7EhS4uU/edit?usp=drivesdk","cachedResultName":"IP, Fingerprint Integrity and Bot Detection Check"}},"credentials":{"googleSheetsOAuth2Api":{"id":"BSirjWRAwIzOFp7c","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"1d1de15a-8619-45f8-8adb-ca4398e3c6c8","name":"Process final data","type":"@n8n/n8n-nodes-langchain.agent","position":[2848,384],"parameters":{"text":"=Input : {{ JSON.stringify($json.data, null, 2) }}","options":{"systemMessage":"You are the Lead Automation Security Auditor.\nYou will receive a list of individual diagnostic reports from multiple test sites (e.g., SannySoft, Cloudflare, Recaptcha).\n\n**YOUR GOAL:**\nAnalyze the aggregate data to find patterns of failure and issue a final \"Go/No-Go\" decision for the scraping infrastructure.\n\n**ANALYSIS LOGIC:**\n1. **Calculate Success Rate:** How many sites returned \"Status: PASS\"?\n2. **Identify Weak Links:** If one site failed (e.g., Cloudflare), but others passed, identify exactly why (e.g., \"Failed at CAPTCHA\" vs \"Failed at IP Reputation\").\n3. **Check Consistency:** Did the \"IP Address\" or \"Fingerprint\" stay the same across all reports? (It should be consistent).\n\n**OUTPUT FORMAT:**\nYou must return a **single valid JSON object**.\nThe object must contain exactly one key named `\"text\"`.\nThe value of `\"text\"` must be a formatted summary string (using \\n for newlines).\n\n**Master Report Structure (inside the \"text\" value):**\n1. 🏁 FINAL MISSION VERDICT (GO / NO-GO)\n2. 📊 SCORECARD (e.g., \"4/5 Sites Passed\")\n3. 🚨 CRITICAL FAILURES (Summarize specific blocks: \"Cloudflare detected automation\", \"IP Blacklisted on SannySoft\")\n4. 🔗 CONSISTENCY CHECK (Did IP/Fingerprint vary suspiciously between sites?)\n5. 🛠️ RECOMMENDATION (Actionable advice: \"Rotate Proxy\", \"Update User-Agent\", or \"Ready to Deploy\")\n\n**Constraint:** Do not output markdown code blocks. Output only the raw JSON string."},"promptType":"define","hasOutputParser":true},"typeVersion":3},{"id":"05a08287-9701-4d12-afe4-5344a8b3d14d","name":"Send Report","type":"n8n-nodes-base.slack","position":[3232,384],"webhookId":"8dc2bff2-40c6-41db-ac77-240567ae88b1","parameters":{"text":"={{ $json.output.text }}","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C09KLV9DJSX","cachedResultName":"all-browseract-workflow-test"},"otherOptions":{}},"credentials":{"slackApi":{"id":"y5CGeG09MENm5J7q","name":"Slack account 2"}},"typeVersion":2.4},{"id":"be5b083d-919d-4e8b-8b9a-777aa52d4a5f","name":"Documentation","type":"n8n-nodes-base.stickyNote","position":[-608,-48],"parameters":{"width":380,"height":520,"content":"## ⚡ Workflow Overview & Setup\n\n**Summary:** This automation continuously monitors the integrity of your IP address and browser fingerprint. It visits multiple detection sites using BrowserAct, analyzes the results with AI to find leaks (like WebRTC or DNS), and generates a consolidated security report in Slack.\n\n### Requirements\n* **Credentials:** BrowserAct, OpenRouter, Google Sheets, Slack.\n* **Mandatory:** BrowserAct API (Template: **IP, Fingerprint Integrity and Bot Detection Check**)\n\n### How to Use\n1.  **Credentials:** Set up API keys for all services.\n2.  **BrowserAct Template:** Ensure the **IP, Fingerprint Integrity and Bot Detection Check** template is active.\n3.  **Google Sheet:** Create a sheet to store the raw diagnostic logs.\n4.  **Configuration:** Update the **Define Target URLs** node with the list of detection sites you want to test (e.g., Pixelscan, IPQualityScore).\n\n### Need Help?\n[How to Find Your BrowserAct API Key & Workflow ID](https://docs.browseract.com)\n[How to Connect n8n to BrowserAct](https://docs.browseract.com)\n[How to Use & Customize BrowserAct Templates](https://docs.browseract.com)"},"typeVersion":1},{"id":"2d7959d8-f4ee-48c6-97a5-9b5992473462","name":"Step 1 Explanation","type":"n8n-nodes-base.stickyNote","position":[-192,368],"parameters":{"color":7,"width":812,"height":108,"content":"### 🕵️ Step 1: Multi-Site Testing\n\nThe workflow iterates through a list of target URLs. It uses BrowserAct to visit each site, attempting to bypass anti-bot measures and capture the raw diagnostic output (IP score, fingerprint hash, etc.)."},"typeVersion":1},{"id":"c29c61ca-306c-44ba-a188-a3de23af13ec","name":"Step 2 Explanation","type":"n8n-nodes-base.stickyNote","position":[768,912],"parameters":{"color":7,"width":1116,"height":108,"content":"### 🛡️ Step 2: Forensic Analysis\n\nFor each site visited, an AI \"Security Analyst\" parses the raw text. It looks for red flags like mismatched User-Agents, leaked real IPs, or known bot signatures (e.g., \"Selenium detected\")."},"typeVersion":1},{"id":"493cb450-641e-4e9e-8224-66ab75c80e16","name":"Step 3 Explanation","type":"n8n-nodes-base.stickyNote","position":[2192,240],"parameters":{"color":7,"width":1196,"height":112,"content":"### 📊 Step 3: Aggregation & Reporting\n\nAll individual site reports are stored in a Google Sheet. Once the full list is processed, a final AI agent reviews the aggregate data to determine an overall \"Pass/Fail\" score and sends a summary report to Slack."},"typeVersion":1},{"id":"bf2ccb22-ae96-43a7-8cac-87519e784048","name":"OpenRouter","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[1536,416],"parameters":{"model":"openai/gpt-4o","options":{}},"credentials":{"openRouterApi":{"id":"x6ohV3n8b2Kjebtm","name":"OpenRouter account"}},"typeVersion":1},{"id":"96078420-19ef-4cc4-a9fd-6c5ee5b3f35e","name":"Extract the agent checking sites","type":"n8n-nodes-browseract.browserAct","position":[1056,528],"parameters":{"type":"WORKFLOW","workflowId":"76240546993093673","workflowConfig":{"value":{"input-Ip_Bot_check_Link":"={{ $json.urls }}"},"schema":[{"id":"input-Ip_Bot_check_Link","type":"string","display":true,"removed":false,"required":false,"description":"If left blank, the default value defined in BrowserAct will be used.","displayName":"Ip_Bot_check_Link","defaultMatch":true}],"mappingMode":"defineBelow","matchingColumns":["input-Ip_Bot_check_Link"],"attemptToConvertTypes":false,"convertFieldsToString":false},"open_incognito_mode":false},"credentials":{"browserActApi":{"id":"G1U5ih38TKU5wcI5","name":"BrowserAct account"}},"typeVersion":1},{"id":"94f85f86-0248-4d9f-a392-5f148b6a0d61","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-176,-64],"parameters":{"color":6,"width":656,"height":384,"content":"@[youtube](64cKXeY52NQ)"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"61dcf342-ae32-47a6-a825-ba5b60623f27","connections":{"Aggregate":{"main":[[{"node":"Process final data","type":"main","index":0}]]},"Split Out":{"main":[[{"node":"Loop Over URLs","type":"main","index":0}]]},"OpenRouter":{"ai_languageModel":[[{"node":"Analyze the site results","type":"ai_languageModel","index":0},{"node":"Structured Output Parser2","type":"ai_languageModel","index":0}]]},"Clear Database":{"main":[[{"node":"Define Target URLs","type":"main","index":0}]]},"Loop Over URLs":{"main":[[{"node":"Add guarded test step","type":"main","index":0}],[{"node":"Extract the agent checking sites","type":"main","index":0}]]},"Update Database":{"main":[[{"node":"Loop Over URLs","type":"main","index":0}]]},"Execute manually":{"main":[[{"node":"Clear Database","type":"main","index":0}]]},"Update Database1":{"main":[[{"node":"Fetch stored data","type":"main","index":0}]]},"Fetch stored data":{"main":[[{"node":"Aggregate","type":"main","index":0}]]},"Define Target URLs":{"main":[[{"node":"Split Out","type":"main","index":0}]]},"Process final data":{"main":[[{"node":"Send Report","type":"main","index":0}]]},"Add guarded test step":{"main":[[{"node":"Check the site accessibility","type":"main","index":0}]]},"OpenRouter Chat Model":{"ai_languageModel":[[{"node":"Analyze the site results and generate a report","type":"ai_languageModel","index":0},{"node":"Structured Output Parser","type":"ai_languageModel","index":0}]]},"OpenRouter Chat Model1":{"ai_languageModel":[[{"node":"Process final data","type":"ai_languageModel","index":0},{"node":"Structured Output Parser1","type":"ai_languageModel","index":0}]]},"Analyze the site results":{"main":[[{"node":"Update Database1","type":"main","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"Analyze the site results and generate a report","type":"ai_outputParser","index":0}]]},"Structured Output Parser1":{"ai_outputParser":[[{"node":"Process final data","type":"ai_outputParser","index":0}]]},"Structured Output Parser2":{"ai_outputParser":[[{"node":"Analyze the site results","type":"ai_outputParser","index":0}]]},"Check the site accessibility":{"main":[[{"node":"Analyze the site results","type":"main","index":0}]]},"Extract the agent checking sites":{"main":[[{"node":"Analyze the site results and generate a report","type":"main","index":0}]]},"Analyze the site results and generate a report":{"main":[[{"node":"Update Database","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":27,"nodeTypes":{"n8n-nodes-base.set":{"count":2},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.splitOut":{"count":1},"n8n-nodes-base.aggregate":{"count":1},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.googleSheets":{"count":4},"n8n-nodes-base.manualTrigger":{"count":1},"n8n-nodes-base.splitInBatches":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":3},"n8n-nodes-browseract.browserAct":{"count":2},"@n8n/n8n-nodes-langchain.lmChatOpenRouter":{"count":3},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":3}}},"status":"published","readyToDemo":null,"user":{"name":"Madame AI Team | Kai","username":"madame-ai","bio":"I’m a PhD in Physics turned AI enthusiast, passionate about uncovering how AI is transforming content creation, business, and daily life.","verified":true,"links":["https://www.youtube.com/@AI.madame.english"],"avatar":"https://gravatar.com/avatar/44c0d2b4b78d8dda7685aea70ef92b2c2339ca9478738c6ed8049cc70e3af32d?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":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual 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":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1236,"icon":"file:aggregate.svg","name":"n8n-nodes-base.aggregate","codex":{"data":{"alias":["Aggregate","Combine","Flatten","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Aggregate"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjRkY2RDVBIiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMyIDE0OGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE0NmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJINDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNDZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDQ0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wIDk2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTQ2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg0NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGQ9Ik03NCA3NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDExNi4yMTdjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjU2YzAgMjYuOTc4IDEwLjI3MiA1MS41NTcgMjcuMTE5IDcwLjAzOSA1LjA1NSA1LjU0NSA1LjA1NSAxNC4zNzcgMCAxOS45MjItMTYuODQ3IDE4LjQ4Mi0yNy4xMTkgNDMuMDYxLTI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMySDg2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTE2LjIxN2M0NC4xODMgMCA4MC0zNS44MTcgODAtODB2LTU2YzAtMzAuOTI4IDI1LjA3Mi01NiA1Ni01NmE1Ljc4MyA1Ljc4MyAwIDAgMCA1Ljc4My01Ljc4M3YtMzYuNDM0YTUuNzgzIDUuNzgzIDAgMCAwLTUuNzgzLTUuNzgzYy0zMC45MjggMC01Ni0yNS4wNzItNTYtNTZ2LTU2YzAtNDQuMTgzLTM1LjgxNy04MC04MC04MEg4NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zNzYgMjQ0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgzODhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUxMnY1MTJIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4="},"displayName":"Aggregate","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1239,"icon":"file:splitOut.svg","name":"n8n-nodes-base.splitOut","codex":{"data":{"alias":["Split","Nested","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitout/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Split Out"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjOUI2REQ1IiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4MCAxNDhjMC02LjYyNy01LjM3My0xMi0xMi0xMkgzMjJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxNDZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDMyMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDE0NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0wIDk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMzIyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTQ2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBkPSJNNDM4IDc2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjU2YzAgMjYuOTc4LTEwLjI3MiA1MS41NTctMjcuMTE5IDcwLjAzOS01LjA1NSA1LjU0NS01LjA1NSAxNC4zNzcgMCAxOS45MjIgMTYuODQ3IDE4LjQ4MiAyNy4xMTkgNDMuMDYxIDI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMySDQyNmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtNDQuMTgzIDAtODAtMzUuODE3LTgwLTgwdi01NmMwLTMwLjkyOC0yNS4wNzItNTYtNTYtNTZhNS43ODMgNS43ODMgMCAwIDEtNS43ODMtNS43ODN2LTM2LjQzNGE1Ljc4MyA1Ljc4MyAwIDAgMSA1Ljc4My01Ljc4M2MzMC45MjggMCA1Ni0yNS4wNzIgNTYtNTZ2LTU2YzAtNDQuMTgzIDM1LjgxNy04MCA4MC04MEg0MjZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMzYgMjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik01MTIgMEgwdjUxMmg1MTJ6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+"},"displayName":"Split Out","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1281,"icon":"file:openrouter.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenrouter/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenRouter Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjOTRBM0I4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDI0IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjx0aXRsZT5PcGVuUm91dGVyPC90aXRsZT48cGF0aCBkPSJNMTYuODA0IDEuOTU3bDcuMjIgNC4xMDV2LjA4N0wxNi43MyAxMC4yMWwuMDE3LTIuMTE3LS44MjEtLjAzYy0xLjA1OS0uMDI4LTEuNjExLjAwMi0yLjI2OC4xMS0xLjA2NC4xNzUtMi4wMzguNTc3LTMuMTQ3IDEuMzUyTDguMzQ1IDExLjAzYy0uMjg0LjE5NS0uNDk1LjMzNi0uNjguNDU1bC0uNTE1LjMyMi0uMzk3LjIzNC4zODUuMjMuNTMuMzM4Yy40NzYuMzE0IDEuMTcuNzk2IDIuNzAxIDEuODY2IDEuMTEuNzc1IDIuMDgzIDEuMTc3IDMuMTQ3IDEuMzUybC4zLjA0NWMuNjk0LjA5MSAxLjM3NS4wOTQgMi44MjUuMDMzbC4wMjItMi4xNTkgNy4yMiA0LjEwNXYuMDg3TDE2LjU4OSAyMmwuMDE0LTEuODYyLS42MzUuMDIyYy0xLjM4Ni4wNDItMi4xMzcuMDAyLTMuMTM4LS4xNjItMS42OTQtLjI4LTMuMjYtLjkyNi00Ljg4MS0yLjA1OWwtMi4xNTgtMS41YTIxLjk5NyAyMS45OTcgMCAwMC0uNzU1LS40OThsLS40NjctLjI4YTU1LjkyNyA1NS45MjcgMCAwMC0uNzYtLjQzQzIuOTA4IDE0LjczLjU2MyAxNC4xMTYgMCAxNC4xMTZWOS44ODhsLjE0LjAwNGMuNTY0LS4wMDcgMi45MS0uNjIyIDMuODA5LTEuMTI0bDEuMDE2LS41OC40MzgtLjI3NGMuNDI4LS4yOCAxLjA3Mi0uNzI2IDIuNjg2LTEuODUzIDEuNjIxLTEuMTMzIDMuMTg2LTEuNzggNC44ODEtMi4wNTkgMS4xNTItLjE5IDEuOTc0LS4yMTMgMy44MTQtLjEzOGwuMDItMS45MDd6Ij48L3BhdGg+PC9zdmc+Cg=="},"displayName":"OpenRouter Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":29,"name":"SecOps"},{"id":49,"name":"AI Summarization"}],"image":[]}}