{
  "workflow": {
    "id": 7451,
    "name": "Natural language to SQL converter for Google Sheets with GPT-4o",
    "views": 736,
    "recentViews": 0,
    "totalViews": 736,
    "createdAt": "2025-08-15T18:42:36.269Z",
    "description": "This n8n workflow template creates an intelligent data analysis system that converts natural language questions into Google Sheets SQL queries using OpenAI's GPT-4o model. The system generates proper Google Sheets query URLs and executes them via HTTP requests for efficient data retrieval.\n\n## What This Workflow Does\n\n- **Natural Language to SQL**: Converts user questions into Google Sheets SQL syntax\n- **Direct HTTP Queries**: Bypasses API limits by using Google Sheets' built-in query functionality\n- **Column Letter Mapping**: Automatically maps column names to their corresponding letters (A, B, C, etc.)\n- **Structured Query Generation**: Outputs properly formatted Google Sheets query URLs\n- **Real-time Data Access**: Retrieves live data directly from Google Sheets\n- **Memory Management**: Maintains conversation context for follow-up questions\n\n## Tools Used\n\n- **OpenAI Chat Model (GPT-4o)** - SQL query generation and natural language understanding\n- **OpenAI Chat Model (GPT-4.1 Mini)** - Result formatting and table output\n- **Google Sheets Tool** - Column metadata extraction and schema understanding\n- **HTTP Request Node** - Direct data retrieval via Google Sheets query API\n- **Structured Output Parser** - Formats AI responses into executable queries\n- **Memory Buffer Window** - Conversation history management\n- **Chat Trigger** - Webhook-based conversation interface\n\n\n## Step-by-Step Setup Instructions\n\n### 1. Prerequisites\n\nBefore starting, ensure you have:\n- An n8n instance (cloud or self-hosted)\n- An OpenAI account with API access and billing setup\n- A Google account with access to Google Sheets\n- The target Google Sheet must be publicly accessible or shareable via link\n\n### 2. Import the Workflow\n\n1. Copy the workflow JSON provided\n2. In your n8n instance, go to **Workflows** → **Import from JSON**\n3. Paste the JSON and click **Import**\n4. Save with a descriptive name like \"Google Sheets SQL Query Generator\"\n\n### 3. Set Up OpenAI Connections\n\n#### Get API Key:\n1. Go to [OpenAI Platform](https://platform.openai.com/)\n2. Sign in or create an account\n3. Navigate to **API Keys** section\n4. Click **Create new secret key**\n5. Copy the generated API key\n6. **Important**: Add billing information and credits to your OpenAI account\n\n#### Configure Both OpenAI Nodes:\n1. **OpenAI Chat Model1 (GPT-4o)**:\n   - Click on the node\n   - Click **Create New Credential**\n   - Select **OpenAI API**\n   - Paste your API key\n   - Save the credential\n\n2. **OpenAI Chat Model2 (GPT-4.1 Mini)**:\n   - Apply the same OpenAI API credential\n   - This handles result formatting\n\n### 4. Set Up Google Sheets Connection\n\n#### Create OAuth2 Credentials:\n1. Go to [Google Cloud Console](https://console.cloud.google.com/)\n2. Create a new project or select existing one\n3. Enable the **Google Sheets API**\n4. Go to **Credentials** → **Create Credentials** → **OAuth 2.0 Client IDs**\n5. Set application type to **Web Application**\n6. Add authorized redirect URIs (get this from n8n credentials setup)\n7. Copy the **Client ID** and **Client Secret**\n\n#### Configure in n8n:\n1. Click on the **Get Column Info2** node\n2. Click **Create New Credential**\n3. Select **Google Sheets OAuth2 API**\n4. Enter your **Client ID** and **Client Secret**\n5. Complete the OAuth flow by clicking **Connect my account**\n6. Authorize the required permissions\n\n### 5. Prepare Your Google Sheet\n\n#### Option A: Use the Sample Data Sheet\n- Access the pre-configured sheet: [Sample Marketing Data](https://docs.google.com/spreadsheets/d/19aUQYZq02qHsCelO4eeV4sx_MTJJupC5qe0gDLQBtRA/edit?usp=drivesdk)\n- Make a copy to your Google Drive\n- **Important**: Set sharing to \"Anyone with the link can view\"\n\n4. **Critical**: Set sharing to \"Anyone with the link can view\" for HTTP access\n5. Copy the Sheet ID from the URL\n6. Update the **Get Column Info2** node with your Sheet ID and column metadata sheet\n\n### 6. Configure Sheet References\n\n1. **Get Column Info2 Node**:\n   - Set **Document ID** to your Google Sheet ID\n   - Set **Sheet Name** to your columns metadata sheet (e.g., \"Columns\")\n   - This provides the AI with column letter mappings\n\n2. **HTTP Request Node**:\n   - No configuration needed - it uses dynamic URLs from the AI agent\n   - Ensure your sheet has proper sharing permissions\n\n### 7. Update System Prompt (If Using Custom Sheet)\n\nIf using your own Google Sheet, update the system prompt in the **AI Agent3** node:\n1. Replace the URL in the system message with your Google Sheet URL\n2. Update the GID (sheet ID) to match your data sheet\n3. Keep the same query structure format\n\n\n\n\n---\n\n## Contact Information\n\n**Robert  Ynteractive**\n\nFor support, customization, or questions about this template:\n\n- **Email**: robert@ynteractive.com\n- **LinkedIn**: [Robert Breen](https://www.linkedin.com/in/robert-breen-29429625/)\n\n*Need help implementing this workflow, want to add security features, or require custom modifications? Reach out for professional n8n automation services and AI integration support.*",
    "workflow": {
      "meta": {
        "instanceId": "ad0113c344ee237399e44e9f11798b05baeb83a6196d514a9ae9d2ad71c3b5c9",
        "templateCredsSetupCompleted": true
      },
      "nodes": [
        {
          "id": "5a4c2536-9070-40b4-9db1-24e3b6f440fa",
          "name": "AI Agent3",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            224,
            1872
          ],
          "parameters": {
            "options": {
              "systemMessage": "# MVP System Prompt — Google Sheets Ask-YOUR_OPENAI_KEY_HERE\n\nRule, you must always use the column tool for every question and followup question to know the column names and column letters. \n\nwrite a sql query to send to google sheets based on the location of the google column on the google sheet. The output should look something like this. \n\nmust include google sheets entire url before the query. do not truncate. \"https://docs.google.com/spreadsheets/d/19aUQYZq02qHsCelO4eeV4sx_MTJJupC5qe0gDLQBtRA/edit?gid=365710158#gid=365710158\" \n\nexample: \nhttps://docs.google.com/spreadsheets/d/19aUQYZq02qHsCelO4eeV4sx_MTJJupC5qe0gDLQBtRA/gviz/tq?tqx=out:csv&gid=365710158&tq=SELECT E, SUM(H), SUM(F) GROUP BY E\n\nYou can only use column letters, no names\nouptut data like this. \n\n{\n\t\"query\": \"https://docs.google.com/spreadsheets/d/19aUQYZq02qHsCelO4eeV4sx_MTJJupC5qe0gDLQBtRA/gviz/tq?tqx=out:csv&gid=365710158&tq=SELECT E, SUM(H), SUM(F) GROUP BY E\"\n}"
            },
            "hasOutputParser": true
          },
          "typeVersion": 2.2
        },
        {
          "id": "766b4958-6e0b-4d99-99ce-8fe98a44b019",
          "name": "Get Column Info2",
          "type": "n8n-nodes-base.googleSheetsTool",
          "position": [
            368,
            2160
          ],
          "parameters": {
            "options": {},
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": 467321788,
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/19aUQYZq02qHsCelO4eeV4sx_MTJJupC5qe0gDLQBtRA/edit#gid=467321788",
              "cachedResultName": "Columns"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "19aUQYZq02qHsCelO4eeV4sx_MTJJupC5qe0gDLQBtRA",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/19aUQYZq02qHsCelO4eeV4sx_MTJJupC5qe0gDLQBtRA/edit?usp=drivesdk",
              "cachedResultName": "Sample Marketing Data"
            },
            "descriptionType": "manual",
            "toolDescription": "Extracts a sheet’s column metadata so downstream steps (querying, validation, docs) can rely on a clean, typed schema. It returns each column’s name, inferred data type, and human-readable description, plus helpful profiling hints."
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.7
        },
        {
          "id": "96e7c115-ecfa-40b1-90ac-96760588a56b",
          "name": "Simple Memory2",
          "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
          "position": [
            192,
            2144
          ],
          "parameters": {},
          "typeVersion": 1.3
        },
        {
          "id": "e3fec4d3-f499-4a6e-ac00-70d2f784762c",
          "name": "OpenAI Chat Model1",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            16,
            2128
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4o",
              "cachedResultName": "gpt-4o"
            },
            "options": {}
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "09aab886-f1fd-447f-aded-70242aa27821",
          "name": "Sticky Note5",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -352,
            1440
          ],
          "parameters": {
            "color": 5,
            "width": 1584,
            "height": 1008,
            "content": "## 📬 Need Help or Want to Customize This?\n📧 [robert@ynteractive.com](mailto:robert@ynteractive.com)  \n🔗 [LinkedIn](https://www.linkedin.com/in/robert-breen-29429625/)"
          },
          "typeVersion": 1
        },
        {
          "id": "94911852-7bba-4178-a4bd-1461bf08d3db",
          "name": "Structured Output Parser1",
          "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
          "position": [
            528,
            2160
          ],
          "parameters": {
            "jsonSchemaExample": "{\n\t\"query\": \"sql query for google sheets\"\n}"
          },
          "typeVersion": 1.3
        },
        {
          "id": "262e5d0d-c616-4332-a0ab-f1bc9d7225ef",
          "name": "OpenAI Chat Model2",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            880,
            1840
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4.1-mini"
            },
            "options": {}
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "734f8a72-054b-4d04-bd9b-dc85ba160683",
          "name": "When chat message received",
          "type": "@n8n/n8n-nodes-langchain.chatTrigger",
          "position": [
            -160,
            1744
          ],
          "webhookId": "edca0f0a-77c3-43e5-8ece-e514a29446f5",
          "parameters": {
            "options": {}
          },
          "typeVersion": 1.3
        },
        {
          "id": "be5f8fc5-0d06-4acf-8fa8-efca6310f0ec",
          "name": "Get Data from Google Sheet",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            640,
            1888
          ],
          "parameters": {
            "url": "={{ $json.output.query }}",
            "options": {},
            "sendQuery": true,
            "queryParameters": {
              "parameters": [
                {}
              ]
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "71029e6d-3933-49a0-b31b-1461ef3a176f",
          "name": "Write into Table Output1",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            864,
            1616
          ],
          "parameters": {
            "text": "={{ $json.data }}",
            "options": {
              "systemMessage": "write this into one table. output as dimensions, then metrics"
            },
            "promptType": "define"
          },
          "typeVersion": 2.2
        },
        {
          "id": "43d7c1a8-0fc0-4877-ab9c-908c3836239a",
          "name": "Sticky Note12",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1920,
            1440
          ],
          "parameters": {
            "width": 752,
            "height": 1008,
            "content": "## Step-by-Step Setup Instructions\n\n\n### 1. Set Up OpenAI Connections\n\n#### Get API Key:\n1. Go to [OpenAI Platform](https://platform.openai.com/)\n2. Sign in or create an account\n3. Navigate to **API Keys** section\n4. Click **Create new secret key**\n5. Copy the generated API key\n6. **Important**: Add billing information and credits to your OpenAI account\n\n#### Configure Both OpenAI Nodes:\n1. **OpenAI Chat Model1 (GPT-4o)**:\n   - Click on the node\n   - Click **Create New Credential**\n   - Select **OpenAI API**\n   - Paste your API key\n   - Save the credential\n\n2. **OpenAI Chat Model2 (GPT-4.1 Mini)**:\n   - Apply the same OpenAI API credential\n   - This handles result formatting\n\n### 4. Set Up Google Sheets Connection\n\n#### Create OAuth2 Credentials:\n1. Go to [Google Cloud Console](https://console.cloud.google.com/)\n2. Create a new project or select existing one\n3. Enable the **Google Sheets API**\n4. Go to **Credentials** → **Create Credentials** → **OAuth 2.0 Client IDs**\n5. Set application type to **Web Application**\n6. Add authorized redirect URIs (get this from n8n credentials setup)\n7. Copy the **Client ID** and **Client Secret**\n\n#### Configure in n8n:\n1. Click on the **Get Column Info2** node\n2. Click **Create New Credential**\n3. Select **Google Sheets OAuth2 API**\n4. Enter your **Client ID** and **Client Secret**\n5. Complete the OAuth flow by clicking **Connect my account**\n6. Authorize the required permissions\n\n### 5. Prepare Your Google Sheet\n\n#### Option A: Use the Sample Data Sheet\n- Access the pre-configured sheet: [Sample Marketing Data](https://docs.google.com/spreadsheets/d/19aUQYZq02qHsCelO4eeV4sx_MTJJupC5qe0gDLQBtRA/edit?usp=drivesdk)\n- Make a copy to your Google Drive\n- **Important**: Set sharing to \"Anyone with the link can view\"\n\n### 6. Configure Sheet References\n\n1. **Get Column Info2 Node**:\n   - Set **Document ID** to your Google Sheet ID\n   - Set **Sheet Name** to your columns metadata sheet (e.g., \"Columns\")\n   - This provides the AI with column letter mappings\n\n2. **HTTP Request Node**:\n   - No configuration needed - it uses dynamic URLs from the AI agent\n   - Ensure your sheet has proper sharing permissions\n\n### 7. Update System Prompt (If Using Custom Sheet)\n\nIf using your own Google Sheet, update the system prompt in the **AI Agent3** node:\n1. Replace the URL in the system message with your Google Sheet URL\n2. Update the GID (sheet ID) to match your data sheet\n3. Keep the same query structure format\n"
          },
          "typeVersion": 1
        },
        {
          "id": "0081f73b-ae42-424d-8cd1-9f9e0b30c64f",
          "name": "Sticky Note13",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1136,
            1440
          ],
          "parameters": {
            "width": 752,
            "height": 1008,
            "content": "\n\n### 5. Prepare Your Google Sheet\n\n#### Option A: Use the Sample Data Sheet\n- Access the pre-configured sheet: [Sample Marketing Data](https://docs.google.com/spreadsheets/d/19aUQYZq02qHsCelO4eeV4sx_MTJJupC5qe0gDLQBtRA/edit?usp=drivesdk)\n- Make a copy to your Google Drive\n- **Important**: Set sharing to \"Anyone with the link can view\"\n\n### 6. Configure Sheet References\n\n1. **Get Column Info2 Node**:\n   - Set **Document ID** to your Google Sheet ID\n   - Set **Sheet Name** to your columns metadata sheet (e.g., \"Columns\")\n   - This provides the AI with column letter mappings\n\n2. **HTTP Request Node**:\n   - No configuration needed - it uses dynamic URLs from the AI agent\n   - Ensure your sheet has proper sharing permissions\n\n### 7. Update System Prompt (If Using Custom Sheet)\n\nIf using your own Google Sheet, update the system prompt in the **AI Agent3** node:\n1. Replace the URL in the system message with your Google Sheet URL\n2. Update the GID (sheet ID) to match your data sheet\n3. Keep the same query structure format\n"
          },
          "typeVersion": 1
        }
      ],
      "pinData": {},
      "connections": {
        "AI Agent3": {
          "main": [
            [
              {
                "node": "Get Data from Google Sheet",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Simple Memory2": {
          "ai_memory": [
            [
              {
                "node": "AI Agent3",
                "type": "ai_memory",
                "index": 0
              }
            ]
          ]
        },
        "Get Column Info2": {
          "ai_tool": [
            [
              {
                "node": "AI Agent3",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "OpenAI Chat Model1": {
          "ai_languageModel": [
            [
              {
                "node": "AI Agent3",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "OpenAI Chat Model2": {
          "ai_languageModel": [
            [
              {
                "node": "Write into Table Output1",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Structured Output Parser1": {
          "ai_outputParser": [
            [
              {
                "node": "AI Agent3",
                "type": "ai_outputParser",
                "index": 0
              }
            ]
          ]
        },
        "Get Data from Google Sheet": {
          "main": [
            [
              {
                "node": "Write into Table Output1",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "When chat message received": {
          "main": [
            [
              {
                "node": "AI Agent3",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 51,
    "workflowInfo": {
      "nodeCount": 12,
      "nodeTypes": {
        "n8n-nodes-base.stickyNote": {
          "count": 3
        },
        "n8n-nodes-base.httpRequest": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 2
        },
        "n8n-nodes-base.googleSheetsTool": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.chatTrigger": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.lmChatOpenAi": {
          "count": 2
        },
        "@n8n/n8n-nodes-langchain.memoryBufferWindow": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.outputParserStructured": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Robert Breen",
      "username": "rbreen",
      "bio": "Professional services consultant with over 10 years of experience solving complex business problems across industries. I specialize in n8n and process automation—designing custom workflows that integrate tools like Google Calendar, Airtable, GPT, and internal systems. Whether you need to automate scheduling, sync data, or streamline operations, I build solutions that save time and drive results.",
      "verified": true,
      "links": [
        "https://ynteractive.com/"
      ],
      "avatar": "https://gravatar.com/avatar/15bb5ad97bad47ca2079e1fa123a8287000c72c86498c90043f70ec2adab05f3?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "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": 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": 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": 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": 35,
        "name": "Document Extraction"
      },
      {
        "id": 51,
        "name": "Multimodal AI"
      }
    ],
    "image": []
  }
}