{
  "workflow": {
    "id": 10829,
    "name": "Generate SEO content briefs with GPT-4o, DataForSEO keyword research & SERP analysis",
    "views": 336,
    "recentViews": 1,
    "totalViews": 336,
    "createdAt": "2025-11-14T12:20:02.108Z",
    "description": "## 📊 Description\nGenerate high-quality, SEO-optimized content briefs automatically using AI, real-time keyword research, SERP intelligence, and historical content context. This workflow standardizes user inputs, fetches search metrics, analyzes competitors, and produces structured SEO briefs with quality scoring and version control. It also stores all versions in Google Sheets and generates HTML previews for easy review and publishing. 🤖📄📈\n\n## What This Template Does\n- Normalizes user input from the chat trigger into structured fields (intent, topic, parameters). ✏️\n- Fetches real-time keyword metrics such as search volume, CPC, and difficulty from DataForSEO. 🔍\n- Retrieves SERP insights through SerpAPI for top competitors, headings, and content gaps. 🌐\n- Loads historical brief versions from Google Sheets for continuity and versioning. 📚\n- Uses an advanced GPT-4o-mini agent to generate a complete SEO brief with title, metadata, keywords, outline, entities, and internal links. 🤖\n- Calculates detailed SEO, differentiation, and completeness quality scores. 📊\n- Validates briefs against quality thresholds (outline length, keywords, word count, overall score). ⚡\n- Stores approved briefs in Google Sheets with version control and timestamping. 🗂️\n- Generates an HTML preview with styled formatting for team review or CMS use. 🖥️\n- Sends Slack alerts when a brief does not meet quality standards. 🚨\n\n## Key Benefits\n✅ Fully automated SEO content brief generation\n ✅ Uses real-time keyword + SERP + competitor intelligence\n ✅ Ensures quality through automated scoring and validation\n ✅ Built-in version control for content operations teams\n ✅ Beautiful HTML preview ready for editors or clients\n ✅ Reduces research time from hours to minutes\n ✅ Ideal for content agencies, SEO teams, and AI-powered workflows\n\n## Features\n- Chat-triggered brief generation\n- Real-time DataForSEO keyword metrics\n- SERP analysis tool integration\n- GPT-4o-mini structured AI agent\n- Google Sheets integration for storing & retrieving versions\n- Automated quality scoring (SEO, gaps, completeness)\n- HTML preview builder with rich formatting\n- Slack alerting for low-quality briefs\n- Semantic entities, content gaps, competitor insights\n\n## Requirements\n- OpenAI API (GPT-4o-mini or compatible model)\n- DataForSEO access credentials (Basic Auth)\n- SerpAPI key for SERP extraction\n- Google Sheets OAuth2 integration\n- Optional: Slack webhook for quality alerts\n\n## Target Audience\n- SEO teams generating large amounts of content briefs\n- Content agencies scaling production with automation\n- Marketing teams building data-driven content strategies\n- SaaS teams wanting automated keyword-based briefs\n- Anyone needing structured, high-quality content briefs from chat\n\n## Step-by-Step Setup Instructions\n1. Connect your OpenAI API credential and confirm GPT-4o-mini availability. 🔌\n2. Add DataForSEO HTTP Basic Auth for keyword metrics. 📊\n3. Connect SerpAPI for SERP analysis tools. 🌐\n4. Add Google Sheets OAuth2 and link your content_versions sheet. 📄\n5. Optional: Add a Slack webhook URL for quality alerts. 🔔\n6. Test by sending a topic via the chat trigger.\n7. Review the generated SEO brief and HTML preview.\n8. Enable the workflow for continued use in your content pipeline. 🚀\n",
    "workflow": {
      "id": "nMN0reA9rvuZwAjK",
      "meta": {
        "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
        "templateCredsSetupCompleted": true
      },
      "name": "Generate SEO Content Briefs from Chat Input Using AI, DataForSEO, SERP Analysis & Google Sheets",
      "tags": [],
      "nodes": [
        {
          "id": "cc7d2183-d9b9-4a7c-8806-fdcb0b7600e9",
          "name": "Overview Sticky",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1632,
            -720
          ],
          "parameters": {
            "width": 420,
            "height": 464,
            "content": "## 📝 AI-Powered SEO Content Brief Generator\n\n### How it works\nThis workflow generates comprehensive, data-driven SEO content briefs using real-time keyword research, competitor analysis, and SERP intelligence. An AI agent analyzes search volume, keyword difficulty, content gaps, and competitor strategies to create briefs with quality scoring, versioning, and HTML previews. All briefs are automatically stored in Google Sheets with version control.\n\n### Setup steps\n1. **Connect credentials**: OpenAI API, DataForSEO, SerpAPI, Google Sheets OAuth2\n2. **Configure Google Sheet**: Create sheets named `content_versions` with columns: content_id, version_no, version_id, topic, meta_title, meta_desc, outline, keywords, tone, word_count, cta_ideas, context_used, timestamp\n3. **Set Slack webhook** (optional): Replace webhook URL in \"Send Quality Alert\" node for low-quality brief notifications\n4. **Test the workflow**: Send a topic via chat trigger and review the generated brief\n\n*Note: This workflow uses GPT-4o-mini for cost-effective brief generation with consistent quality.*"
          },
          "typeVersion": 1
        },
        {
          "id": "911f0520-7d91-4799-ba5c-ee1982c1b70f",
          "name": "Input Section",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1632,
            -240
          ],
          "parameters": {
            "color": 2,
            "width": 512,
            "height": 412,
            "content": "## 🎯 Input Normalization\n\nStandardizes incoming chat messages into a consistent format (intent, topic, content, parameters) for downstream processing."
          },
          "typeVersion": 1
        },
        {
          "id": "795c77cc-e0fc-4f17-b337-3b257372bfea",
          "name": "Keyword Research Section",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1104,
            -240
          ],
          "parameters": {
            "color": 2,
            "height": 412,
            "content": "## 🔍 Keyword Research\n\nFetches real-time search volume, keyword difficulty, and CPC data from DataForSEO to inform brief recommendations."
          },
          "typeVersion": 1
        },
        {
          "id": "b19ec937-6190-49e7-bc89-0da3f764030e",
          "name": "AI Agent Section",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -848,
            -224
          ],
          "parameters": {
            "color": 2,
            "width": 720,
            "height": 676,
            "content": "## 🤖 AI Brief Generation\n\nThe AI agent combines keyword data, SERP analysis, competitor intelligence, and historical content from Google Sheets to generate comprehensive briefs with structured JSON output."
          },
          "typeVersion": 1
        },
        {
          "id": "fede1c25-bc4f-4df5-9062-5c3c3858181d",
          "name": "Quality & Storage Section",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -112,
            -256
          ],
          "parameters": {
            "color": 2,
            "width": 908,
            "height": 708,
            "content": "## ✅ Quality Control & Storage\n\nCalculates quality scores across SEO, differentiation, and completeness dimensions. Validates briefs against minimum thresholds, generates HTML previews, and stores approved briefs in Google Sheets with version control."
          },
          "typeVersion": 1
        },
        {
          "id": "f148b18c-1712-4c4b-8c6e-1e5d08e770b6",
          "name": "Credentials Info",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            816,
            128
          ],
          "parameters": {
            "color": 3,
            "width": 320,
            "height": 312,
            "content": "## 🔐 Required Credentials\n\n- **OpenAI API**: For GPT-4o-mini brief generation\n- **DataForSEO**: Basic auth for keyword metrics\n- **SerpAPI**: For real-time SERP analysis\n- **Google Sheets OAuth2**: For context retrieval and brief storage\n- **Slack Webhook** (optional): For quality alerts\n\nReplace all placeholder credentials before activating."
          },
          "typeVersion": 1
        },
        {
          "id": "0cfadf9c-3630-4494-8ba7-90812810f532",
          "name": "Short-Term Memory",
          "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
          "position": [
            -624,
            256
          ],
          "parameters": {
            "sessionKey": "brief-writer-session",
            "sessionIdType": "customKey"
          },
          "typeVersion": 1.3
        },
        {
          "id": "26e1bb40-3465-46c4-9cbf-3f97477f2d40",
          "name": "AI Agent (Brief Writer)",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            -560,
            16
          ],
          "parameters": {
            "text": "=Topic: {{ $('Normalize Input').item.json.intent }}\nIntent: {{ $('Normalize Input').item.json.intent }}\nUser request: {{ $('Normalize Input').item.json.content }}\n\nKeyword Data: {{ $('Get Keyword Metrics').item.json || 'No keyword data' }}\n\nContext (from Sheets): {{ $json.context || 'No context found' }}",
            "options": {
              "systemMessage": "=You are \"Brief Writer Agent\", a senior SEO content strategist AI.\n\nYou have access to:\n1. Keyword metrics (volume, difficulty, CPC)\n2. Deep competitor analysis (headings, word counts)\n3. Content gap opportunities\n4. Internal linking suggestions\n5. Entity and semantic analysis\n6. SERP Intelligence\n7. Historical content from Sheets\n\n🎯 ENHANCED BRIEF GENERATION\n\n**Use Keyword Data:**\n- Prioritize high volume + low difficulty\n- Include CPC for commercial intent\n- Add LSI keywords from entities\n\n**Use Competitor Analysis:**\n- Match or exceed word count by 15-20%\n- Improve on common H2 patterns\n- Exploit competitor weaknesses\n\n**Use Content Gaps:**\n- Create H2s for missed topics\n- Address unanswered PAA questions\n- Include unique angles\n\n**Use Internal Links:**\n- Suggest 3-5 related articles\n- Include anchor text recommendations\n\n📄 VERSIONING\n1. Check Sheets for existing topic\n2. If exists: reuse content_id, increment version_no\n3. If new: create CNT-<timestamp>, version_no = 1\n\n📤 OUTPUT FORMAT\n\n{\n  \"brief\": {\n    \"title\": \"string\",\n    \"meta_description\": \"string\",\n    \"target_keywords\": [\n      {\n        \"keyword\": \"string\",\n        \"volume\": number,\n        \"difficulty\": number,\n        \"priority\": \"primary|secondary\"\n      }\n    ],\n    \"outline\": [\n      {\n        \"h2\": \"string\",\n        \"h3_suggestions\": [\"string\"],\n        \"purpose\": \"competitor_match|content_gap|paa_answer\"\n      }\n    ],\n    \"word_count\": number,\n    \"tone\": \"string\",\n    \"cta_ideas\": [\"string\"],\n    \"internal_links\": [\n      {\n        \"anchor_text\": \"string\",\n        \"target_content_id\": \"string\",\n        \"relevance_score\": number\n      }\n    ],\n    \"semantic_entities\": [\"string\"],\n    \"content_gaps_addressed\": [\"string\"]\n  },\n  \"competitive_intel\": {\n    \"avg_competitor_word_count\": number,\n    \"top_3_competitors\": [\"string\"],\n    \"our_advantage\": [\"string\"],\n    \"difficulty_assessment\": \"easy|medium|hard\"\n  },\n  \"metadata\": {\n    \"content_id\": \"string\",\n    \"version_no\": number,\n    \"version_id\": \"string\",\n    \"is_new_topic\": boolean\n  },\n  \"quality_scores\": {\n    \"seo_score\": number,\n    \"differentiation_score\": number,\n    \"completeness_score\": number,\n    \"overall_score\": number\n  },\n  \"context_used\": [\"string\"]\n}\n\n📌 RULES\n- Use ALL data sources\n- Data-driven decisions\n- If competitor avg is 2000 words, recommend 2300-2400\n- Address 3+ content gaps\n- Include entities in keywords\n- Calculate quality scores\n- Return JSON ONLY"
            },
            "promptType": "define",
            "hasOutputParser": true
          },
          "typeVersion": 2.1
        },
        {
          "id": "6a888524-27de-400a-ac65-795ac9c39d59",
          "name": "Structured JSON Output Parser",
          "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
          "position": [
            -240,
            256
          ],
          "parameters": {
            "jsonSchemaExample": "{\n  \"brief\": {\n    \"title\": \"string\",\n    \"meta_description\": \"string\",\n    \"target_keywords\": [{\"keyword\": \"string\", \"volume\": 1000, \"difficulty\": 45, \"priority\": \"primary\"}],\n    \"outline\": [{\"h2\": \"string\", \"h3_suggestions\": [\"string\"], \"purpose\": \"content_gap\"}],\n    \"word_count\": 2500,\n    \"tone\": \"string\",\n    \"cta_ideas\": [\"string\"],\n    \"internal_links\": [{\"anchor_text\": \"string\", \"target_content_id\": \"string\", \"relevance_score\": 8}],\n    \"semantic_entities\": [\"string\"],\n    \"content_gaps_addressed\": [\"string\"]\n  },\n  \"competitive_intel\": {\n    \"avg_competitor_word_count\": 2000,\n    \"top_3_competitors\": [\"string\"],\n    \"our_advantage\": [\"string\"],\n    \"difficulty_assessment\": \"medium\"\n  },\n  \"metadata\": {\n    \"content_id\": \"CNT-001\",\n    \"version_no\": 1,\n    \"version_id\": \"VER-001\",\n    \"is_new_topic\": true\n  },\n  \"quality_scores\": {\n    \"seo_score\": 8.5,\n    \"differentiation_score\": 7.0,\n    \"completeness_score\": 9.0,\n    \"overall_score\": 8.2\n  },\n  \"context_used\": [\"serp\", \"keywords\", \"competitors\", \"sheets\"]\n}"
          },
          "typeVersion": 1.3
        },
        {
          "id": "2f106b07-7da8-4c1b-bdb5-7a9149102fbf",
          "name": "Retrieve Historical Content Context",
          "type": "n8n-nodes-base.googleSheetsTool",
          "position": [
            -496,
            256
          ],
          "parameters": {
            "options": {},
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": 2120745354,
              "cachedResultName": "content_versions"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1fsnnXsU1n-iX-MEpLuw3XC6wHD-ek6OlkQe31ousk84",
              "cachedResultName": "SEO Content Automation"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.7
        },
        {
          "id": "485c1a47-f406-49cd-84dd-2a2cb08401b8",
          "name": "Validate Brief Quality",
          "type": "n8n-nodes-base.if",
          "position": [
            208,
            32
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 1,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "or",
              "conditions": [
                {
                  "id": "quality-check-1",
                  "operator": {
                    "type": "number",
                    "operation": "largerEqual"
                  },
                  "leftValue": "={{ $json.output.brief.outline.length }}",
                  "rightValue": 5
                },
                {
                  "id": "quality-check-2",
                  "operator": {
                    "type": "number",
                    "operation": "largerEqual"
                  },
                  "leftValue": "={{ $json.output.brief.target_keywords.length }}",
                  "rightValue": 3
                },
                {
                  "id": "quality-check-3",
                  "operator": {
                    "type": "number",
                    "operation": "largerEqual"
                  },
                  "leftValue": "={{ $json.output.brief.word_count }}",
                  "rightValue": 800
                },
                {
                  "id": "quality-check-4",
                  "operator": {
                    "type": "number",
                    "operation": "largerEqual"
                  },
                  "leftValue": "={{ $json.output.quality_scores.overall_score }}",
                  "rightValue": 6
                },
                {
                  "id": "7d55c376-2f47-4a12-8379-ab3477c83236",
                  "operator": {
                    "type": "number",
                    "operation": "gt"
                  },
                  "leftValue": "={{ $json.output.quality_scores.overall_score }}",
                  "rightValue": 8
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "9aa6edbb-ab73-4d74-b74b-76d4394f08b6",
          "name": "Store Brief with Version Control",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            656,
            -80
          ],
          "parameters": {
            "columns": {
              "value": {
                "tone": "={{ $json.output.brief.tone }}",
                "topic": "={{ $('Normalize Input').item.json.topic }}",
                "outline": "={{ JSON.stringify($json.output.brief.outline) }}",
                "keywords": "={{ JSON.stringify($json.output.brief.target_keywords) }}",
                "cta_ideas": "={{ JSON.stringify($json.output.brief.cta_ideas) }}",
                "meta_desc": "={{ $json.output.brief.meta_description }}",
                "timestamp": "={{ $now }}",
                "content_id": "={{ $json.output.metadata.content_id }}",
                "meta_title": "={{ $json.output.brief.title }}",
                "version_id": "={{ $json.output.metadata.version_id }}",
                "version_no": "={{ $json.output.metadata.version_no }}",
                "word_count": "={{ $json.output.brief.word_count }}",
                "context_used": "={{ JSON.stringify($json.output.context_used) }}"
              },
              "schema": [
                {
                  "id": "content_id",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "content_id",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "version_no",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "version_no",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "version_id",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "version_id",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "topic",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "topic",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "meta_title",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "meta_title",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "meta_desc",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "meta_desc",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "outline",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "outline",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "keywords",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "keywords",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "tone",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "tone",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "word_count",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "word_count",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "cta_ideas",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "cta_ideas",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "context_used",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "context_used",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "timestamp",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "timestamp",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "section",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "section",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "html",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "html",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "status",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "status",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [
                "timestamp"
              ],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": 2120745354,
              "cachedResultName": "content_versions"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1fsnnXsU1n-iX-MEpLuw3XC6wHD-ek6OlkQe31ousk84",
              "cachedResultName": "SEO Content Automation"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.7
        },
        {
          "id": "4ad12b1b-6d88-4e44-9ecf-46c40c0931fb",
          "name": "OpenAI GPT-4o-mini Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            -752,
            256
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4o-mini"
            },
            "options": {}
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "8d102000-1d1f-4adc-9d6c-1b4f95894852",
          "name": "Normalize Input",
          "type": "n8n-nodes-base.set",
          "position": [
            -1264,
            16
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "8ea18d06-f3cb-4988-9015-d1baec5f74c1",
                  "name": "intent",
                  "type": "string",
                  "value": "={{ $json.intent || 'brief' }}"
                },
                {
                  "id": "f091b1a0-2d42-4ade-b25d-9d562cad239f",
                  "name": "topic",
                  "type": "string",
                  "value": "={{ $json.topic || $json.chatInput }}"
                },
                {
                  "id": "4ce9bf82-c89e-44e8-aca6-4720fdf6dcf7",
                  "name": "content",
                  "type": "string",
                  "value": "={{ $json.content || '' }}"
                },
                {
                  "id": "cef206d3-24f5-46c4-bab4-bbe246ef655e",
                  "name": "parameter",
                  "type": "object",
                  "value": "={{ $json.parameter || {} }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "6bd7c780-daf0-4044-b79d-83b2aac46eaa",
          "name": "SERP Analysis Tool",
          "type": "@n8n/n8n-nodes-langchain.toolSerpApi",
          "position": [
            -368,
            256
          ],
          "parameters": {
            "options": {}
          },
          "credentials": {
            "serpApi": {
              "id": "credential-id",
              "name": "serpApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "d729bf90-d5d8-4639-bf1d-95588d7aaf1d",
          "name": "Chat Trigger",
          "type": "@n8n/n8n-nodes-langchain.chatTrigger",
          "position": [
            -1552,
            16
          ],
          "webhookId": "7603f4c1-b953-4813-a2de-1152da409e91",
          "parameters": {
            "options": {}
          },
          "typeVersion": 1.3
        },
        {
          "id": "cbd4a16a-2bee-429e-b2a6-330147f27264",
          "name": "Fetch Keyword Metrics from DataForSEO",
          "type": "n8n-nodes-base.httpRequest",
          "notes": "Fetches search volume, keyword difficulty, and CPC data",
          "position": [
            -1040,
            16
          ],
          "parameters": {
            "url": "https://api.dataforseo.com/v3/keywords_data/google/search_volume/live",
            "method": "POST",
            "options": {},
            "sendBody": true,
            "authentication": "genericCredentialType",
            "bodyParameters": {
              "parameters": [
                {
                  "name": "keywords",
                  "value": "=[\"{{ $('Normalize Input').item.json.topic }}\"]"
                },
                {
                  "name": "language_code",
                  "value": "=en"
                },
                {
                  "name": "location_code",
                  "value": "=2840"
                }
              ]
            },
            "genericAuthType": "httpBasicAuth"
          },
          "credentials": {
            "httpBasicAuth": {
              "id": "credential-id",
              "name": "httpBasicAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "a45a5bb2-12e3-4667-8700-5fdc6596f07f",
          "name": "Calculate Quality Scores",
          "type": "n8n-nodes-base.code",
          "position": [
            -32,
            32
          ],
          "parameters": {
            "jsCode": "const brief = $input.first().json.output.brief;\nconst competitive = $input.first().json.output.competitive_intel;\n\nlet seoScore = 0;\nif (brief.target_keywords && brief.target_keywords.length >= 5) seoScore += 3;\nif (brief.meta_description && brief.meta_description.length <= 160) seoScore += 2;\nif (brief.title && brief.title.length <= 60) seoScore += 2;\nif (brief.outline && brief.outline.length >= 7) seoScore += 2;\nif (brief.semantic_entities && brief.semantic_entities.length >= 5) seoScore += 1;\n\nlet diffScore = 0;\nif (brief.content_gaps_addressed && brief.content_gaps_addressed.length >= 3) diffScore += 4;\nif (competitive.our_advantage && competitive.our_advantage.length >= 2) diffScore += 3;\nif (brief.word_count > competitive.avg_competitor_word_count) diffScore += 3;\n\nlet completeScore = 0;\nif (brief.outline && brief.outline.length >= 5) completeScore += 2;\nif (brief.cta_ideas && brief.cta_ideas.length >= 2) completeScore += 2;\nif (brief.internal_links && brief.internal_links.length >= 3) completeScore += 2;\nif (brief.target_keywords && brief.target_keywords.length >= 3) completeScore += 2;\nif (brief.semantic_entities && brief.semantic_entities.length >= 5) completeScore += 2;\n\nconst overallScore = ((seoScore + diffScore + completeScore) / 3).toFixed(1);\n\nreturn {\n  json: {\n    ...$input.first().json,\n    output: {\n      ...$input.first().json.output,\n      quality_scores: {\n        seo_score: seoScore,\n        differentiation_score: diffScore,\n        completeness_score: completeScore,\n        overall_score: parseFloat(overallScore)\n      }\n    }\n  }\n};"
          },
          "typeVersion": 2
        },
        {
          "id": "cb585b9f-8a79-4fd1-bedd-abb7843d3c08",
          "name": "Send Slack Quality Alert",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            432,
            128
          ],
          "parameters": {
            "url": "https://hooks.slack.com/services/[YOUR_WEBHOOK_URL]",
            "method": "POST",
            "options": {},
            "jsonBody": "={\n  \"text\": \"⚠️ Brief Quality Check Failed\",\n  \"blocks\": [\n    {\n      \"type\": \"section\",\n      \"text\": {\n        \"type\": \"mrkdwn\",\n        \"text\": \"*Brief Generation Alert*\\nTopic: {{ $('Normalize Input').item.json.topic }}\\nQuality Score: {{ $('Calculate Quality Scores').item.json.output.quality_scores.overall_score }}\"\n      }\n    }\n  ]\n}",
            "sendBody": true,
            "specifyBody": "json"
          },
          "typeVersion": 4.2
        },
        {
          "id": "2927e7c9-a9f5-4899-961f-895d48eee343",
          "name": "Generate HTML Preview",
          "type": "n8n-nodes-base.code",
          "position": [
            432,
            -80
          ],
          "parameters": {
            "jsCode": "const output = $input.first().json.output;\nconst brief = output.brief;\nconst competitive = output.competitive_intel;\nconst quality = output.quality_scores;\nconst metadata = output.metadata;\n\nconst keywordsHtml = brief.target_keywords.map(kw => \n  typeof kw === 'object' \n    ? `<span class=\"keyword ${kw.priority === 'primary' ? 'primary' : ''}\">${kw.keyword} ${kw.volume ? `(${kw.volume})` : ''}</span>`\n    : `<span class=\"keyword\">${kw}</span>`\n).join('');\n\nconst outlineHtml = brief.outline.map(section => \n  typeof section === 'object'\n    ? `<li><strong>${section.h2}</strong> <span class=\"purpose\">${section.purpose || ''}</span>\n       ${section.h3_suggestions && section.h3_suggestions.length > 0 ? `<ul style=\"margin-top: 8px;\">${section.h3_suggestions.map(h3 => `<li style=\"border:none; background:transparent; padding:5px 0;\">${h3}</li>`).join('')}</ul>` : ''}\n       </li>`\n    : `<li>${section}</li>`\n).join('');\n\nconst html = `<!DOCTYPE html>\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Brief Preview - ${brief.title}</title>\n  <style>\n    body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif; max-width: 900px; margin: 40px auto; padding: 20px; background: #f5f7fa; }\n    .header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 30px; border-radius: 12px; margin-bottom: 30px; }\n    .header h1 { margin: 0 0 10px 0; font-size: 32px; }\n    .header .meta { opacity: 0.9; font-size: 14px; }\n    .card { background: white; padding: 25px; border-radius: 8px; margin-bottom: 20px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }\n    .card h2 { margin: 0 0 15px 0; font-size: 20px; color: #2d3748; border-bottom: 2px solid #667eea; padding-bottom: 10px; }\n    .keywords { display: flex; flex-wrap: wrap; gap: 8px; margin: 15px 0; }\n    .keyword { background: #edf2f7; padding: 6px 12px; border-radius: 20px; font-size: 13px; border: 1px solid #cbd5e0; }\n    .keyword.primary { background: #667eea; color: white; border-color: #667eea; }\n    .outline { list-style: none; padding: 0; }\n    .outline li { padding: 12px; margin: 8px 0; background: #f7fafc; border-left: 4px solid #667eea; border-radius: 4px; }\n    .outline li .purpose { font-size: 11px; color: #718096; margin-left: 10px; background: #edf2f7; padding: 2px 8px; border-radius: 10px; }\n    .scores { display: grid; grid-template-columns: repeat(4, 1fr); gap: 15px; }\n    .score-box { text-align: center; padding: 20px; background: #f7fafc; border-radius: 8px; border: 2px solid #e2e8f0; }\n    .score-box .number { font-size: 36px; font-weight: bold; color: #667eea; }\n    .score-box .label { font-size: 12px; color: #718096; margin-top: 5px; text-transform: uppercase; }\n  </style>\n</head>\n<body>\n  <div class=\"header\">\n    <h1>${brief.title}</h1>\n    <div class=\"meta\">Content ID: ${metadata.content_id} | Version: ${metadata.version_no} | ${metadata.is_new_topic ? '🆕 New Topic' : '🔄 Updated'}</div>\n  </div>\n  <div class=\"card\">\n    <h2>📊 Quality Scores</h2>\n    <div class=\"scores\">\n      <div class=\"score-box\"><div class=\"number\">${quality.overall_score}</div><div class=\"label\">Overall</div></div>\n      <div class=\"score-box\"><div class=\"number\">${quality.seo_score}</div><div class=\"label\">SEO</div></div>\n      <div class=\"score-box\"><div class=\"number\">${quality.differentiation_score}</div><div class=\"label\">Differentiation</div></div>\n      <div class=\"score-box\"><div class=\"number\">${quality.completeness_score}</div><div class=\"label\">Completeness</div></div>\n    </div>\n  </div>\n  <div class=\"card\">\n    <h2>🎯 Meta Information</h2>\n    <p><strong>Meta Description:</strong></p>\n    <p style=\"background: #f7fafc; padding: 15px; border-radius: 6px;\">${brief.meta_description}</p>\n    <p><strong>Word Count:</strong> ${brief.word_count} | <strong>Tone:</strong> ${brief.tone}</p>\n  </div>\n  <div class=\"card\">\n    <h2>🔑 Target Keywords</h2>\n    <div class=\"keywords\">${keywordsHtml}</div>\n  </div>\n  <div class=\"card\">\n    <h2>📝 Content Outline</h2>\n    <ol class=\"outline\">${outlineHtml}</ol>\n  </div>\n  <div class=\"card\">\n    <h2>🏆 Competitive Intelligence</h2>\n    <p><strong>Avg Competitor Words:</strong> ${competitive.avg_competitor_word_count || 'N/A'}</p>\n    <p><strong>Difficulty:</strong> ${competitive.difficulty_assessment || 'N/A'}</p>\n  </div>\n</body>\n</html>`;\n\nreturn {\n  json: {\n    html_preview: html,\n    ...output\n  },\n  binary: {\n    preview: {\n      data: Buffer.from(html).toString('base64'),\n      mimeType: 'text/html',\n      fileName: `brief_${metadata.content_id}_${metadata.version_id}.html`\n    }\n  }\n};"
          },
          "typeVersion": 2
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "80898bbe-36e4-470f-87cd-2d6d34d89f44",
      "connections": {
        "Chat Trigger": {
          "main": [
            [
              {
                "node": "Normalize Input",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Normalize Input": {
          "main": [
            [
              {
                "node": "Fetch Keyword Metrics from DataForSEO",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Short-Term Memory": {
          "ai_memory": [
            [
              {
                "node": "AI Agent (Brief Writer)",
                "type": "ai_memory",
                "index": 0
              }
            ]
          ]
        },
        "SERP Analysis Tool": {
          "ai_tool": [
            [
              {
                "node": "AI Agent (Brief Writer)",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Generate HTML Preview": {
          "main": [
            [
              {
                "node": "Store Brief with Version Control",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Validate Brief Quality": {
          "main": [
            [
              {
                "node": "Generate HTML Preview",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Send Slack Quality Alert",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "AI Agent (Brief Writer)": {
          "main": [
            [
              {
                "node": "Calculate Quality Scores",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Calculate Quality Scores": {
          "main": [
            [
              {
                "node": "Validate Brief Quality",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "OpenAI GPT-4o-mini Model": {
          "ai_languageModel": [
            [
              {
                "node": "AI Agent (Brief Writer)",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Structured JSON Output Parser": {
          "ai_outputParser": [
            [
              {
                "node": "AI Agent (Brief Writer)",
                "type": "ai_outputParser",
                "index": 0
              }
            ]
          ]
        },
        "Retrieve Historical Content Context": {
          "ai_tool": [
            [
              {
                "node": "AI Agent (Brief Writer)",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Fetch Keyword Metrics from DataForSEO": {
          "main": [
            [
              {
                "node": "AI Agent (Brief Writer)",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 20,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 1
        },
        "n8n-nodes-base.set": {
          "count": 1
        },
        "n8n-nodes-base.code": {
          "count": 2
        },
        "n8n-nodes-base.stickyNote": {
          "count": 6
        },
        "n8n-nodes-base.httpRequest": {
          "count": 2
        },
        "n8n-nodes-base.googleSheets": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 1
        },
        "n8n-nodes-base.googleSheetsTool": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.chatTrigger": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.toolSerpApi": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.lmChatOpenAi": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.memoryBufferWindow": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.outputParserStructured": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Rahul Joshi",
      "username": "rahul08",
      "bio": "Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.\n\n",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/callrahul/"
      ],
      "avatar": "https://gravatar.com/avatar/b6cf57822463143589b36ada06fbf6cb1509223a740fae3160b28f1ce41ccc12?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": 19,
        "icon": "file:httprequest.svg",
        "name": "n8n-nodes-base.httpRequest",
        "codex": {
          "data": {
            "alias": [
              "API",
              "Request",
              "URL",
              "Build",
              "cURL"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/",
                  "icon": "📈",
                  "label": "Automatically pulling and visualizing data with n8n"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/",
                  "icon": "✍️",
                  "label": "Learn how to automatically cross-post your content with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/",
                  "icon": "🛳",
                  "label": "Running n8n on ships: An interview with Maranics"
                },
                {
                  "url": "https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/",
                  "icon": " 🪢",
                  "label": "What are APIs and how to use them with no code"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/world-poetry-day-workflow/",
                  "icon": "📜",
                  "label": "Celebrating World Poetry Day with a daily poem in Telegram"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/",
                  "icon": "🎨",
                  "label": "Automate Designs with Bannerbear and n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/",
                  "icon": "📱",
                  "label": "Building an expense tracking app in 10 minutes"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/",
                  "icon": "🧰",
                  "label": "How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/",
                  "icon": "🦄",
                  "label": "Learn how to use webhooks with Mattermost slash commands"
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/",
                  "icon": "📈",
                  "label": "A low-code bitcoin ticker built with QuestDB and n8n.io"
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/automations-for-activists/",
                  "icon": "✨",
                  "label": "How Common Knowledge use workflow automation for activism"
                },
                {
                  "url": "https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/",
                  "icon": "🤟",
                  "label": "Creating scheduled text affirmations with n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "HTTP Request",
          "color": "#0004F5"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="
        },
        "displayName": "HTTP Request",
        "typeVersion": 4,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 20,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.if",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "Filter",
              "Condition",
              "Logic",
              "Boolean",
              "Branch"
            ],
            "details": "The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/",
                  "icon": "🏭",
                  "label": "Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/",
                  "icon": "🤬",
                  "label": "Create a toxic language detector for Telegram in 4 step"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "If",
          "color": "#408000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "If",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 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": 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": 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": 1163,
        "icon": "fa:database",
        "name": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Memory"
              ],
              "Memory": [
                "For beginners"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Simple Memory"
        },
        "iconData": {
          "icon": "database",
          "type": "icon"
        },
        "displayName": "Simple Memory",
        "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": 1199,
        "icon": "file:serpApi.svg",
        "name": "@n8n/n8n-nodes-langchain.toolSerpApi",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolserpapi/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Tools"
              ],
              "Tools": [
                "Other Tools"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "SerpAPI"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMCIgdmlld0JveD0iMCAwIDQ2ODAgMTM0MCI+PHBhdGggZmlsbD0iIzdEN0Q4NyIgZD0iTTQ0NjMgMTIxdjExMGgyMDdWMTFoLTIwN3pNMzAwLjUgNDcuNmMtMi43LjItMTIuMi44LTIxIDEuNC02OC4yIDQuNi0xMjMuOCAxOC4xLTE2MSAzOS4yQzYwLjYgMTIxIDMxLjggMTc0LjIgMjQgMjYzYy0yLjcgMzEuNS0yLjIgOTguMyAxLjEgMTM1QzM1IDUwOS40IDcyLjggNTU1LjEgMTg1IDU5MS41YzI0IDcuNyA1NS4xIDE1LjggOTguMiAyNS41IDIwIDQuNSA0Ny4xIDEwLjkgNjAuMyAxNC4yIDcxLjggMTggOTUgMzIuNSAxMDIuNSA2My45IDUuMiAyMS45IDUuMiA3NC4zLjEgOTcuOS05IDQwLjktMzYuMSA1NS44LTEwNS44IDU3LjgtOTEuNiAyLjgtMTc3LTkuMy0yNzkuNi0zOS41LTEwLjQtMy0xOS4yLTUuMS0xOS43LTQuNy0uOSAxLjEtMzYuMyAxNjUuNC0zNS43IDE2NiAxLjMgMS4zIDM0LjQgMTQuMyA0OS43IDE5LjUgNTkuOSAyMC41IDEyMy4yIDMzLjMgMTk3LjUgNDAgMTkuMiAxLjcgOTIuMSAyLjMgMTE3IDEgMTMzLjYtNy4yIDIxMC0zNi40IDI1My4xLTk2LjggMzQuMy00OCA0Ni44LTExNy4yIDQyLjUtMjM1LjMtMi4zLTYyLjgtNy41LTkyLjEtMjEuNi0xMjEuNS0yNy41LTU3LjItODktOTAuMS0yMzUuNS0xMjYuMS05Mi44LTIyLjgtMTA0LjktMjYuMS0xMjMuMy0zMy40LTI1LjctMTAuMy0zNy41LTIyLTQyLjctNDIuNS0zLjctMTQuNS01LjItNTUuOS0yLjktNzkgNC0zOS45IDIwLjEtNTYuMyA2MS45LTYzIDMzLjctNS40IDExNC42LTMuNiAxODQuNSA0LjEgMjcgMyA3NC41IDkuNyAxMTAuOSAxNS43IDE2LjMgMi43IDI2IDMuOSAyNi4yIDMuMi42LTEuOSAyMS41LTE3OS44IDIxLjEtMTgwLjEtLjctLjgtNDAuNS04LjUtNjMuNi0xMi4zQzUzMS43IDU4IDQ4OS40IDUzIDQzMy41IDQ4LjljLTE0LjEtMS0xMjIuMS0yLjEtMTMzLTEuM20yNjk5IDE0LjZjLTEgMi45LTI5MS41IDk1Ni44LTI5MS41IDk1Ny4zIDAgLjMgNTAuNS40IDExMi4yLjNsMTEyLjMtLjMgMjUuMi05MWMxMy44LTUwLjEgMjUuNC05MiAyNS44LTkzLjNsLjUtMi4yIDE2MC44LjIgMTYwLjcuMyAyNS41IDkyYzE0LjEgNTAuNiAyNS44IDkyLjYgMjYgOTMuMy40IDEgMjMuNCAxLjIgMTEyLjYgMWwxMTItLjMtMTQ2LjYtNDc5LTE0Ni43LTQ3OS0xNDQuMi0uM2MtMTE0LjgtLjItMTQ0LjMgMC0xNDQuNiAxbTE5OS4zIDM5MGMyOS44IDEwOS42IDU0LjIgMTk5LjYgNTQuMiAyMDAgMCAuNS00OS41LjgtMTEwLjEuOC05MS4zIDAtMTEwLS4yLTEwOS42LTEuMy4zLS44IDI1LjItOTAuOCA1NS4zLTIwMCAzMC4xLTEwOS4zIDU1LjEtMTk4LjcgNTUuNC0xOTguN3MyNSA4OS43IDU0LjggMTk5LjJNMTA2MiAzMDQuNmMtMTcuNC45LTM4LjYgMi43LTQ4LjUgNC0xMjkuOCAxNy41LTIwNS44IDg1LjktMjI2LjUgMjA0LjEtNS4yIDI5LjctNS4zIDMwLjktNS43IDE0Mi44LS41IDExMC4xLS4xIDEyNi43IDMuOCAxNTQuNCA3LjEgNTAuOCAyNSA5NS43IDUxLjQgMTI4LjYgMzcuMyA0Ni42IDk0LjggNzYuOSAxNjguOSA4OC45IDM0LjEgNS42IDU3LjQgNyAxMDIuMSA2LjMgNTMuNC0uOSA5OC41LTUuOSAxNTMuNS0xNy4yIDM5LjItOCA5Ny0yNC42IDk3LTI3LjcgMC0xLjItMjguOS0xNTAuNi0yOS42LTE1Mi45LS40LTEuNS0uOS0xLjUtNS4yLS4zLTQwLjggMTIuNC0xMTAuNSAyMy45LTE2Ni45IDI3LjUtMjQuOCAxLjYtNzcuNC43LTkxLjEtMS41LTQxLTYuNy02MC41LTIwLjQtNzAuMy00OS43LTQuMS0xMi40LTUuOS0yNS4yLTYuNi00OS4ybC0uNi0yMC43SDEzNjZ2LTczLjhjMC03Ni42LS45LTEwOS40LTMuNi0xMzMuNS0xMi4yLTExMC43LTYwLjUtMTc4LjgtMTQ5LjYtMjEwLjgtMjIuNS04LTUzLjYtMTQuNi04Mi44LTE3LjMtMTUuNS0xLjUtNTUuNy0yLjctNjgtMm0zOSAxNjMuNGMyMS43IDIuNyAzNS42IDguNiA0Ny4xIDIwIDE2LjMgMTYuMyAyMS4yIDMzLjMgMjEuMyA3NC41bC4xIDI0aC0xODFsLS4zLTE1Yy0uOC00MS4yIDYuMy02NC43IDI0LjYtODEuNyAxMS4zLTEwLjQgMjUuMy0xNy4xIDQyLjMtMjAuMiAxNC42LTIuNyAzMi0zLjMgNDUuOS0xLjZtMTI5Ni41LTE2Mi45Yy0zOS4zIDIuNy04NSAxNC42LTEzMC43IDM0LTE3LjggNy42LTQ0LjQgMjEtNTguMSAyOS4ybC0xMC44IDYuNS0xLjItMy4xYy0uNy0xLjgtNS42LTE0LjMtMTAuOC0yNy45bC05LjQtMjQuOEgyMDE0djUwNi41YzAgNDY0LjcuMSA1MDYuNSAxLjYgNTA2LjUuOSAwIDQ3LTYuMyAxMDIuNC0xNCA1NS41LTcuNyAxMDEuMy0xNCAxMDEuOS0xNCAuOCAwIDEuMS00Mi40IDEuMS0xNDQuOHYtMTQ0LjlsOC4zIDEuOGMzNS42IDcuOSA4MiAxNCAxMjguNSAxNyAyNC4yIDEuNSA3Mi42LjcgODguNy0xLjUgNjcuOS05LjUgMTE1LjMtMzYuNSAxNDYuOS04My42IDcuNi0xMS4zIDE5LjUtMzUuNyAyNC40LTUwIDcuNi0yMi4yIDEyLjUtNDYuMSAxNS45LTc2LjUgMS4zLTExLjYgMS42LTM0LjkgMi0xMzYgLjUtMTIzLjkgMC0xNTEuNC0zLjItMTc3LjUtMTAtODIuMi00MS42LTEzOS43LTk0LjctMTcyLjYtMjguOC0xNy45LTYyLjgtMjcuNy0xMDUuMy0zMC40LTE2LjUtMS4xLTE5LTEuMS0zNSAuMU0yMzY0IDQ4NWMxOS45IDEuOSAzMi40IDYuOCA0My4xIDE2LjhzMTYuNiAyMiAxOS40IDM5LjVjMi4yIDEzLjcgMi4yIDI0Mi4yIDAgMjU1LTQuOCAyNy4zLTE3LjkgNDQuNS00MC40IDUyLjctMTIgNC40LTIxLjUgNS40LTQ2LjEgNC43LTIyLjUtLjYtNDQuOS0yLjktNzEtNy4xLTE1LjctMi42LTM3LjEtNi44LTQ0LjItOC42bC0zLjgtMS4xVjUzOS4ybDQuMy0zLjdjNi42LTUuNyAyNi4yLTE4LjYgMzcuOC0yNC44IDMwLjItMTYuMiA1Ny43LTI0LjQgODguNC0yNi42IDEuMSAwIDYuNy40IDEyLjUuOW0xNzE0LjUtMTgwLjRjLTU5IDMuNS0xMzQuNCAyOC4zLTE5My43IDYzLjdsLTEwLjcgNi40LTQuOS0xMi42Yy0yLjctNi45LTcuNS0xOS41LTEwLjctMjcuOWwtNS45LTE1LjJIMzY5MHY1MDYuNWMwIDQ2OCAuMSA1MDYuNSAxLjYgNTA2LjUuOSAwIDQ3LjEtNi4zIDEwMi42LTE0czEwMS4zLTE0IDEwMS44LTE0Yy42IDAgMS01My4zIDEtMTQ0Ljh2LTE0NC44bDE4LjMgMy43YzMwLjIgNi4xIDU2LjUgOS43IDk3LjcgMTMuNiAyMy41IDIuMiA4OC45IDIuNSAxMDUgLjUgMzEtMy45IDU5LjUtMTIgODIuOS0yMy45IDE5LjItOS42IDMwLjktMTguMSA0Ni4xLTMzLjMgMjkuMi0yOS4yIDQ3LTY1LjEgNTctMTE1IDcuNC0zNyA4LTUxLjMgOC0xOTEgMC0xMzguOS0uNi0xNTIuOC04LTE5MC0yMC4zLTEwMi04MC42LTE2MC44LTE3Ny0xNzIuNC0xMy0xLjUtMzguMS0yLjYtNDguNS0yTTQwNDEgNDg1YzEyLjYgMS4yIDE5LjggMy4yIDI5LjcgOCAxNS4zIDcuNSAyNS4yIDIwLjggMzAuNiA0MWwyLjIgOC41djI1M2wtMi4yIDguNGMtNi4yIDIzLjEtMjAuMiAzOS00MC4xIDQ1LjUtMTMuMSA0LjMtMTkuNyA0LjktNDQuMiA0LjMtMjIuMi0uNi0zNi4xLTEuOS02My41LTUuOC0xMy43LTItNDUuMy04LTUyLjctMTBsLTMuOC0xVjUzOWw1LjgtNC41YzMyLjctMjYuMSA3OC44LTQ2IDExNC41LTQ5LjQgMTEuNi0xLjIgMTMuMS0xLjIgMjMuNy0uMU0xODc5IDMwNy42Yy00NS4xIDExLjgtMTE1LjcgNDIuNi0xNjIuNSA3MC45LTcuOCA0LjgtMTIuMiA2LjktMTIuNiA2LjItLjMtLjctMy43LTE1LjctNy40LTMzLjVsLTYuOC0zMi4ySDE1MTd2NzAxaDIwN1Y1OTIuMmwxMC44LTdjMzUuNy0yMy4xIDk3LjctNTMuNyAxNTguNC03OC4yIDguNC0zLjQgMTUuNi02LjUgMTYtNi44LjQtLjQtMy4xLTQzLjctNy44LTk2LjItNC42LTUyLjUtOC40LTk2LjMtOC40LTk3LjMgMC0yLjMtMi40LTIuMi0xNCAuOW0yNTg0IDM2MS45VjEwMjBoMjA3VjMxOWgtMjA3eiIvPjwvc3ZnPg=="
        },
        "displayName": "SerpApi (Google Search)",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1247,
        "icon": "fa:comments",
        "name": "@n8n/n8n-nodes-langchain.chatTrigger",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes",
              "Langchain"
            ]
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "When chat message received"
        },
        "iconData": {
          "icon": "comments",
          "type": "icon"
        },
        "displayName": "Chat Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 31,
        "name": "Content Creation"
      },
      {
        "id": 51,
        "name": "Multimodal AI"
      }
    ],
    "image": []
  }
}