{"workflow":{"id":12848,"name":"Facebook Messenger Chatbot That Learns From Your Documents","views":402,"recentViews":1,"totalViews":402,"createdAt":"2026-01-20T13:52:20.984Z","description":"# Quickstart Guide: Facebook Messenger Chatbot with Pinecone RAG\n\nStep-by-step instructions to get this workflow running in n8n.\n\n---\n\n## Prerequisites\n\n- Self-hosted n8n instance (v1.113.0+ recommended)\n- Community nodes enabled in n8n\n- Facebook Page (you must be an admin)\n- OpenAI account\n- Pinecone account (free Starter plan works)\n\n---\n\n## Workflow Architecture\n\nThis workflow uses **two webhooks** with the same URL path but different HTTP methods:\n\n| Webhook | Method | Purpose |\n|---------|--------|---------|\n| Facebook Verification Webhook | GET | Handles Facebook's webhook verification |\n| Facebook Message Webhook | POST | Receives incoming messages |\n\nBoth webhooks share the same URL: `https://your-n8n.com/webhook/facebook-messenger-webhook`\n\nn8n automatically routes requests based on HTTP method:\n- **GET** requests → Verification flow\n- **POST** requests → Message processing flow\n\n### RAG Enhancement\n\n```\nUser Message → Batching → AI Agent ─┬─ OpenAI Chat Model\n                                    ├─ Conversation Memory\n                                    └─ Pinecone Assistant Tool (RAG)\n                                              │\n                                              ▼\n                                    Search your documents\n                                              │\n                                              ▼\n                                    Answer with citations\n```\n\n---\n\n## Step 1: Install the Pinecone Assistant Community Node\n\nThe Pinecone Assistant node is a community node that must be installed separately.\n\n1. In n8n, go to **Settings** → **Community Nodes**\n2. Click **Install a community node**\n3. Enter: `@pinecone-database/n8n-nodes-pinecone-assistant`\n4. Click **Install**\n5. Restart n8n if prompted\n\n&gt; **Note:** Community nodes must be enabled in your n8n instance. For Docker, set `N8N_COMMUNITY_PACKAGES_ALLOW_INSTALL=true`.\n\n---\n\n## Step 2: Create Pinecone Account & Assistant\n\n### 2.1 Create Pinecone Account\n\n1. Go to [Pinecone](https://www.pinecone.io/)\n2. Sign up for a free account (Starter plan includes 100 files per assistant)\n3. Complete the onboarding\n\n### 2.2 Create an Assistant\n\n1. In the Pinecone console, go to **Assistants**\n2. Click **Create Assistant**\n3. Name it `n8n-assistant` (or choose your own name)\n4. Select your preferred region\n5. Click **Create**\n\n### 2.3 Upload Your Documents\n\n1. Click on your newly created assistant\n2. Go to the **Files** tab\n3. Click **Upload Files**\n4. Upload your documents (PDFs, text files, etc.)\n5. Wait for processing to complete\n\n### 2.4 Get Your Pinecone API Key\n\n1. In the Pinecone console, click on your profile/account\n2. Go to **API Keys**\n3. Copy your API key (or create a new one)\n\n---\n\n## Step 3: Get Your OpenAI API Key\n\n1. Go to [OpenAI Platform](https://platform.openai.com/api-keys)\n2. Sign in with your OpenAI account\n3. Click **Create new secret key**\n4. Copy and save the API key\n\n---\n\n## Step 4: Create Facebook App & Get Page Access Token\n\n### 4.1 Create Facebook App\n\n1. Go to [Facebook Developers](https://developers.facebook.com)\n2. Click **My Apps** → **Create App**\n3. Select **Other** → **Next**\n4. Select **Business** → **Next**\n5. Enter app name and contact email\n6. Click **Create App**\n\n### 4.2 Add Messenger Product\n\n1. In your app dashboard, scroll to **Add products to your app**\n2. Find **Messenger** and click **Set up**\n\n### 4.3 Connect Your Facebook Page\n\n1. In Messenger settings, find **Access Tokens** section\n2. Click **Add or Remove Pages**\n3. Select your Facebook Page and grant permissions\n4. Click **Done**\n\n### 4.4 Generate Page Access Token\n\n1. Back in Messenger settings, find your page in the list\n2. Click **Generate Token**\n3. Copy and save the token\n\n---\n\n## Step 5: Create Your Verify Token\n\nThe verify token is a secret string for Facebook webhook verification.\n\n1. Create a random string (e.g., `my-secret-token-12345`)\n2. Save this value - you'll need it in Steps 7 and 10\n\n---\n\n## Step 6: Create n8n Credentials\n\n### 6.1 Pinecone Credential\n\n1. In n8n, go to **Credentials** → **Add Credential**\n2. Search for **\"Pinecone\"** (or **\"Pinecone API\"**)\n3. Configure:\n   - **Name:** `Pinecone API`\n   - **API Key:** Paste your Pinecone API key from Step 2.4\n4. Click **Save**\n\n### 6.2 OpenAI API Credential\n\n1. In n8n, go to **Credentials** → **Add Credential**\n2. Search for **\"OpenAI API\"**\n3. Configure:\n   - **Name:** `OpenAI API`\n   - **API Key:** Paste your OpenAI API key from Step 3\n4. Click **Save**\n\n### 6.3 Facebook Graph API Credential\n\n1. In n8n, go to **Credentials** → **Add Credential**\n2. Search for **\"Facebook Graph API\"**\n3. Configure:\n   - **Name:** `Facebook Page Access Token`\n   - **Access Token:** Paste your Page Access Token from Step 4.4\n4. Click **Save**\n\n---\n\n## Step 7: Import the Workflow\n\n1. In n8n, click **Add Workflow** → **Import from File**\n2. Select the `workflow.json` file from this folder\n3. The workflow will open in the editor\n\n### 7.1 Configure the Verify Token\n\n1. Find the **\"Is Token Valid?\"** node\n2. Click on the node to open its settings\n3. In the conditions, find **Value 2** that shows `YOUR_VERIFY_TOKEN_HERE`\n4. Replace it with your verify token from Step 5\n\n### 7.2 Configure the Pinecone Assistant Name\n\n1. Find the **\"Get context snippets in Pinecone Assistant\"** node\n2. Click on the node to open its settings\n3. Change **Assistant Name** from `n8n-assistant` to your actual assistant name (from Step 2.2)\n\n---\n\n## Step 8: Connect Credentials to Nodes\n\n### 8.1 Connect Facebook Credential\n\nUpdate these 3 nodes with your Facebook credential:\n\n1. Click on **\"Send Seen Indicator\"** → Select your `Facebook Page Access Token` credential\n2. Click on **\"Send Typing Indicator\"** → Select your `Facebook Page Access Token` credential\n3. Click on **\"Send Response to User\"** → Select your `Facebook Page Access Token` credential\n\n### 8.2 Connect OpenAI Credential\n\n1. Click on **\"OpenAI Chat Model\"** → Select your `OpenAI API` credential\n\n### 8.3 Connect Pinecone Credential\n\n1. Click on **\"Get context snippets in Pinecone Assistant\"** → Select your `Pinecone API` credential\n\n---\n\n## Step 9: Publish the Workflow\n\n1. Click **Save** to save the workflow\n2. Click the **Publish** button to make the workflow live\n3. Copy the webhook URL (e.g., `https://your-n8n.com/webhook/facebook-messenger-webhook`)\n\n---\n\n## Step 10: Configure Facebook Webhook\n\n1. Go to [Facebook Developers](https://developers.facebook.com) → Your App → Messenger Settings\n2. Find **Webhooks** section\n3. Click **Add Callback URL**\n4. Enter:\n   - **Callback URL:** Your n8n webhook URL from Step 9\n   - **Verify Token:** Same value from Step 5\n5. Click **Verify and Save**\n6. After verification, subscribe to webhook fields:\n   - `messages` (required)\n   - `messaging_postbacks` (recommended)\n\n---\n\n## Step 11: Test Your Chatbot\n\n### 11.1 Add Test Users (if needed)\n\nWith Standard Access, only users with app roles can message the bot:\n\n1. Go to your Facebook App → **App Roles** → **Roles**\n2. Add users as **Testers**\n3. Those users must accept the invitation\n\n### 11.2 Send a Test Message\n\n1. Open Facebook Messenger\n2. Search for your Facebook Page\n3. Try these test messages:\n   - `\"Hello!\"` - Should get a friendly greeting\n   - `\"What information do you have?\"` - Should search your documents\n   - `\"Tell me about [topic in your docs]\"` - Should return relevant information with context\n\n---\n\n## How Pinecone RAG Works\n\n```\nUser asks: \"What are your return policies?\"\n         │\n         ▼\n┌─────────────────────────┐\n│  AI Agent receives msg  │\n└─────────┬───────────────┘\n          │\n          ▼\n┌─────────────────────────┐\n│  Calls Pinecone Tool    │ → Searches your documents\n└─────────┬───────────────┘\n          │\n          ▼\n┌─────────────────────────┐\n│  Gets relevant snippets │ ← \"Return Policy.pdf: Items can be...\"\n└─────────┬───────────────┘\n          │\n          ▼\n┌─────────────────────────┐\n│  AI formulates answer   │ → \"According to our policy, items can be...\"\n└─────────────────────────┘\n```\n\n---\n\n## Troubleshooting\n\n| Problem | Solution |\n|---------|----------|\n| \"Pinecone Assistant Tool\" not found | Ensure community node is installed (Step 1) |\n| \"No relevant information found\" | Upload more documents to your Pinecone Assistant |\n| Webhook verification fails | Check verify token matches in n8n and Facebook |\n| No response from bot | Check n8n execution logs for errors |\n| \"Error validating access token\" | Regenerate Page Access Token in Facebook |\n| AI Agent not using Pinecone tool | After import, open the \"AI Agent1\" node, make a small edit to the system message (e.g., add a space), and save. This re-initializes the tool bindings. |\n\n---\n\n## Customization\n\n### Change the AI Behavior\n\nEdit the **\"AI Agent1\"** node's system message to:\n- Adjust how it cites sources\n- Change personality/tone\n- Add specific instructions for your use case\n\n### Change the Assistant\n\nUpdate the **\"Get context snippets in Pinecone Assistant\"** node to use a different assistant name.\n\n### Adjust Response Length\n\nThe workflow truncates responses to 1900 characters for Messenger. Edit the **\"Format Response\"** node to change this.\n\n---\n\n## Resources\n\n- [Pinecone Assistant Documentation](https://docs.pinecone.io/guides/assistant/overview)\n- [Pinecone Assistant n8n Node (GitHub)](https://github.com/pinecone-io/n8n-nodes-pinecone-assistant)\n- [Facebook Messenger Platform](https://developers.facebook.com/docs/messenger-platform)\n- [OpenAI API Documentation](https://platform.openai.com/docs)\n- [n8n Documentation](https://docs.n8n.io/)\n","workflow":{"meta":{"templateCredsSetupCompleted":false},"name":"Facebook Messenger AI Chatbot with Pinecone RAG","tags":[],"nodes":[{"id":"866ee81f-f01b-4f5f-a1b8-d4d005a262ea","name":"Sticky Note - Overview","type":"n8n-nodes-base.stickyNote","position":[5008,3056],"parameters":{"color":4,"width":520,"height":800,"content":"# Facebook Messenger AI Chatbot with Pinecone RAG\n\n## Who is this for?\nBusinesses who want to automate customer interactions on Facebook Messenger using AI that can answer questions from your documents.\n\n## What does it do?\n- Receives messages from Facebook Messenger\n- Batches rapid consecutive messages together\n- Retrieves relevant context from your documents via Pinecone Assistant\n- Processes messages with OpenAI (GPT-4o-mini)\n- Maintains conversation memory\n- Sends intelligent AI responses with document citations\n\n## Setup Requirements\n1. **Facebook App** with Messenger product enabled\n2. **Facebook Page** connected to the app\n3. **OpenAI API Key**\n4. **Pinecone Account** with Assistant created\n5. **Pinecone Assistant community node** installed\n\n## Quick Start\n1. Install the Pinecone Assistant community node\n2. Configure credentials (Facebook, OpenAI, Pinecone)\n3. Create a Pinecone Assistant and upload your documents\n4. Set your verify token in \"Is Token Valid?\" node\n5. Update the Assistant name in \"Pinecone Assistant Tool\" node\n6. Publish the workflow\n7. Configure Facebook webhook URL\n8. Test by messaging your Facebook Page!\n\n"},"typeVersion":1},{"id":"cda30df8-a761-4dfa-b655-2b8a07288261","name":"Sticky Note - Webhook Verification","type":"n8n-nodes-base.stickyNote","position":[5600,2768],"parameters":{"color":7,"width":520,"height":280,"content":"## 1. Webhook Verification\n\nFacebook sends a GET request to verify your webhook URL during setup.\n\n**How it works:**\n1. Facebook sends `hub.verify_token` and `hub.challenge`\n2. We validate the token matches your secret\n3. If valid, return the challenge to confirm\n4. If invalid, return 403 Forbidden\n\n**Important:** Change `YOUR_VERIFY_TOKEN_HERE` in the \"Is Token Valid?\" node to your own secret token."},"typeVersion":1},{"id":"12b7a811-0266-40f7-9b71-479d2407e9b2","name":"Sticky Note - Message Receipt","type":"n8n-nodes-base.stickyNote","position":[5616,3728],"parameters":{"color":7,"width":540,"height":332,"content":"## 2. Receive & Filter Messages\n\nHandles incoming POST requests from Facebook when users send messages.\n\n**How it works:**\n1. Immediately acknowledge with `EVENT_RECEIVED` (required by Facebook)\n2. Filter out:\n   - Echo messages (messages we sent)\n   - Non-text messages\n   - Empty messages\n\nOnly valid user text messages proceed to processing."},"typeVersion":1},{"id":"3164fd54-2389-4e8c-9bf1-b6e3d5d9949f","name":"Sticky Note - Message Batching","type":"n8n-nodes-base.stickyNote","position":[6320,3040],"parameters":{"color":7,"width":740,"height":300,"content":"## 3. Message Batching (Smart Feature!)\n\nUsers often send multiple quick messages. This section combines them into one request.\n\n**How it works:**\n1. Store each message in workflow static data\n2. Send \"seen\" indicator so user knows we received it\n3. Wait 3 seconds for additional messages\n4. Combine all messages from the same user\n5. Process as a single conversation turn\n\n**Benefit:** Reduces API calls and provides more context to the AI."},"typeVersion":1},{"id":"63db4412-d223-4a93-8f6d-be45941301c3","name":"Sticky Note - AI Processing","type":"n8n-nodes-base.stickyNote","position":[7536,2784],"parameters":{"color":7,"width":480,"height":480,"content":"## 4. AI Agent with Pinecone RAG\n\nThe brain of the chatbot - powered by OpenAI + Pinecone.\n\n**Components:**\n- **OpenAI Chat Model:** Uses GPT-4o-mini for responses\n- **Conversation Memory:** Remembers last 50 messages per user\n- **Pinecone Assistant Tool:** Retrieves relevant context from your documents\n\n**RAG Features:**\n- Searches your documents for relevant information\n- Provides citations from source documents\n- Acknowledges when information is not available\n- Maintains context across conversations\n\n**Customize:**\n- Edit the system prompt in the AI Agent node\n- Change the Assistant name in Pinecone Assistant Tool\n- Upload documents to your Pinecone Assistant"},"typeVersion":1},{"id":"a0f6ec23-6bc9-45ee-b1f0-944f06d6d5e1","name":"Sticky Note - Pinecone Setup","type":"n8n-nodes-base.stickyNote","position":[7856,3712],"parameters":{"color":3,"width":400,"height":280,"content":"### Pinecone Setup\n\n1. Create account at [pinecone.io](https://www.pinecone.io)\n2. Create an Assistant named `n8n-assistant`\n3. Upload your documents to the Assistant\n4. Get your API key from the Pinecone console\n5. In n8n: Install the community node:\n   `@pinecone-database/n8n-nodes-pinecone-assistant`\n6. Create Pinecone credential with your API key\n7. Update the Assistant name in the tool node"},"typeVersion":1},{"id":"1ae54fd5-b47a-4f87-b94c-4c5535ddac0e","name":"Sticky Note - OpenAI Setup","type":"n8n-nodes-base.stickyNote","position":[7168,3760],"parameters":{"color":3,"width":380,"height":216,"content":"### OpenAI Credential Setup\n\n1. Go to [OpenAI API Keys](https://platform.openai.com/api-keys)\n2. Click **Create new secret key**\n3. Copy the key\n4. In n8n: Click the OpenAI node -> Credential -> Create New\n5. Paste your API key and save"},"typeVersion":1},{"id":"a1965c3c-2d3b-4a67-b10f-197ebca239b8","name":"Sticky Note - Response","type":"n8n-nodes-base.stickyNote","position":[8064,2976],"parameters":{"color":7,"width":540,"height":280,"content":"## 5. Format & Send Response\n\n**How it works:**\n1. Format AI response for Messenger (remove markdown)\n2. Truncate if over 1900 characters\n3. Send via Facebook Graph API\n\n**Response includes:**\n- Proper recipient ID\n- Message type: RESPONSE\n- Clean, readable text"},"typeVersion":1},{"id":"67a7da1b-8110-48be-824c-d3429a8f8054","name":"Sticky Note - Facebook Setup","type":"n8n-nodes-base.stickyNote","position":[6384,3632],"parameters":{"color":3,"width":460,"height":240,"content":"### Facebook Graph API Credential Setup\n\n1. Create a Facebook App at [developers.facebook.com](https://developers.facebook.com)\n2. Add **Messenger** product to your app\n3. Connect a Facebook Page\n4. Generate a **Page Access Token**\n5. In n8n: Create Facebook Graph API credential\n6. Paste the Page Access Token"},"typeVersion":1},{"id":"5c1c1a54-5e97-429f-a944-8264882d9dc7","name":"Facebook Verification Webhook","type":"n8n-nodes-base.webhook","position":[5632,3168],"webhookId":"facebook-messenger-webhook-verify","parameters":{"path":"facebook-messenger-webhook","options":{},"responseMode":"responseNode"},"typeVersion":2},{"id":"cd320e99-8f67-4499-827c-f440cc49bd40","name":"Facebook Message Webhook","type":"n8n-nodes-base.webhook","position":[5648,3520],"webhookId":"facebook-messenger-webhook-message","parameters":{"path":"facebook-messenger-webhook","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"9ea3708e-d19c-4c40-819c-77fa7e709154","name":"Is Token Valid?","type":"n8n-nodes-base.if","position":[5856,3168],"parameters":{"options":{},"conditions":{"options":{"version":1,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"verify-token","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.query['hub.verify_token'] }}","rightValue":"YOUR_VERIFY_TOKEN_HERE"}]}},"typeVersion":2},{"id":"d21d92ed-91b8-44f9-bef2-6d9694d285f1","name":"Respond with Challenge","type":"n8n-nodes-base.respondToWebhook","position":[6080,3088],"parameters":{"options":{},"respondWith":"text","responseBody":"={{ $json.query['hub.challenge'] }}"},"typeVersion":1.1},{"id":"80e766d3-414c-4597-bf8e-9ae5ce9c47a8","name":"Respond Forbidden","type":"n8n-nodes-base.respondToWebhook","position":[6080,3248],"parameters":{"options":{"responseCode":403},"respondWith":"text","responseBody":"Verification failed"},"typeVersion":1.1},{"id":"20969b8e-8f11-4881-a0a9-4df73532bc52","name":"Acknowledge Event","type":"n8n-nodes-base.respondToWebhook","position":[5872,3520],"parameters":{"options":{"responseCode":200},"respondWith":"text","responseBody":"EVENT_RECEIVED"},"typeVersion":1.1},{"id":"dbd43cd0-f776-49e8-9071-d191a6c48389","name":"Filter Valid Messages","type":"n8n-nodes-base.if","position":[6096,3520],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"has-message","operator":{"type":"string","operation":"exists"},"leftValue":"={{ $json.body?.entry?.[0]?.messaging?.[0]?.message?.text }}","rightValue":""},{"id":"not-echo","operator":{"type":"boolean","operation":"notEquals"},"leftValue":"={{ $json.body?.entry?.[0]?.messaging?.[0]?.message?.is_echo }}","rightValue":true}]}},"typeVersion":2},{"id":"d16aa51b-896a-4660-9da3-a8a9c5dcc4cc","name":"Store Message for Batching","type":"n8n-nodes-base.code","position":[6320,3424],"parameters":{"jsCode":"// Extract message data from Facebook webhook\nconst entry = $input.first().json.body?.entry?.[0];\nconst messaging = entry?.messaging?.[0];\n\nconst userId = messaging?.sender?.id;\nconst pageId = messaging?.recipient?.id;\nconst messageText = messaging?.message?.text;\nconst timestamp = messaging?.timestamp || Date.now();\nconst messageId = messaging?.message?.mid;\n\n// Store in workflow static data for batching\nconst staticData = $getWorkflowStaticData('global');\n\nif (!staticData.messageBatches) {\n  staticData.messageBatches = {};\n}\n\nif (!staticData.messageBatches[userId]) {\n  staticData.messageBatches[userId] = {\n    messages: [],\n    firstMessageTime: timestamp,\n    pageId: pageId\n  };\n}\n\nstaticData.messageBatches[userId].messages.push({\n  text: messageText,\n  timestamp: timestamp,\n  messageId: messageId\n});\n\nreturn {\n  json: {\n    userId,\n    pageId,\n    messageText,\n    timestamp,\n    messageId,\n    batchCount: staticData.messageBatches[userId].messages.length\n  }\n};"},"typeVersion":2},{"id":"afd69549-cb23-4fa6-9312-df2694e3fa2e","name":"Send Seen Indicator","type":"n8n-nodes-base.httpRequest","onError":"continueRegularOutput","position":[6544,3424],"parameters":{"url":"=https://graph.facebook.com/v21.0/me/messages","method":"POST","options":{},"jsonBody":"={\n  \"recipient\": {\n    \"id\": \"{{ $json.userId }}\"\n  },\n  \"sender_action\": \"mark_seen\"\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"facebookGraphApi"},"credentials":{"facebookGraphApi":{"id":"REPLACE_WITH_YOUR_CREDENTIAL_ID","name":"Facebook Graph API"}},"typeVersion":4.2,"alwaysOutputData":true},{"id":"71c1f6fc-aeb8-43e2-95a3-fc6e2971e518","name":"Wait 3 Seconds","type":"n8n-nodes-base.wait","position":[6768,3424],"webhookId":"wait-batch","parameters":{"amount":3},"typeVersion":1.1},{"id":"12f6e864-7a6f-471a-b321-70eb5fbdfcc3","name":"Retrieve Batched Messages","type":"n8n-nodes-base.code","position":[6992,3424],"parameters":{"jsCode":"// Retrieve all batched messages for this user\n// Get userId from Store node directly (not from input, which is HTTP response)\nconst userId = $('Store Message for Batching').first().json.userId;\nconst pageId = $('Store Message for Batching').first().json.pageId;\n\nconst staticData = $getWorkflowStaticData('global');\nconst userBatch = staticData.messageBatches?.[userId];\n\nif (!userBatch || userBatch.messages.length === 0) {\n  return { json: { skip: true } };\n}\n\n// Combine all messages into one\nconst combinedMessage = userBatch.messages\n  .sort((a, b) => a.timestamp - b.timestamp)\n  .map(m => m.text)\n  .join(' ');\n\n// Clear the batch\ndelete staticData.messageBatches[userId];\n\nreturn {\n  json: {\n    userId,\n    pageId,\n    combinedMessage,\n    messageCount: userBatch.messages.length,\n    skip: false\n  }\n};"},"typeVersion":2},{"id":"9475f390-beed-4654-9883-ac2940b79233","name":"Has Messages to Process?","type":"n8n-nodes-base.if","position":[7216,3424],"parameters":{"options":{},"conditions":{"options":{"version":1,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"not-skip","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $json.skip }}","rightValue":false}]}},"typeVersion":2},{"id":"54254117-c8b2-4ff6-becd-7ae6c8b4db8d","name":"Send Typing Indicator","type":"n8n-nodes-base.httpRequest","onError":"continueRegularOutput","position":[7440,3328],"parameters":{"url":"=https://graph.facebook.com/v21.0/me/messages","method":"POST","options":{},"jsonBody":"={\n  \"recipient\": {\n    \"id\": \"{{ $json.userId }}\"\n  },\n  \"sender_action\": \"typing_on\"\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"facebookGraphApi"},"credentials":{"facebookGraphApi":{"id":"REPLACE_WITH_YOUR_CREDENTIAL_ID","name":"Facebook Graph API"}},"typeVersion":4.2,"alwaysOutputData":true},{"id":"0e8e3e5f-c153-4dd0-913b-94cfba179f66","name":"Conversation Memory","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[7632,3632],"parameters":{"sessionKey":"={{ $('Retrieve Batched Messages').first().json.userId }}","sessionIdType":"customKey","contextWindowLength":50},"typeVersion":1.3},{"id":"7f12fd6e-392c-48bd-b247-31e4e7582ba0","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[7296,3632],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-mini","cachedResultName":"gpt-4o-mini"},"options":{}},"credentials":{"openAiApi":{"id":"REPLACE_WITH_YOUR_CREDENTIAL_ID","name":"OpenAI API"}},"typeVersion":1.2},{"id":"3ada67ba-1bf5-4e72-8947-09a0b15e55c6","name":"Format Response","type":"n8n-nodes-base.code","position":[8064,3328],"parameters":{"jsCode":"// Format AI response for Facebook Messenger\nconst aiResponse = $input.first().json.output || $input.first().json.text || '';\nconst userId = $('Retrieve Batched Messages').first().json.userId;\nconst pageId = $('Retrieve Batched Messages').first().json.pageId;\n\n// Messenger has a 2000 character limit per message\nlet formattedResponse = aiResponse.trim();\n\n// If response is too long, truncate it\nif (formattedResponse.length > 1900) {\n  formattedResponse = formattedResponse.substring(0, 1897) + '...';\n}\n\n// Remove any markdown formatting that doesn't render well in Messenger\nformattedResponse = formattedResponse\n  .replace(/\\*\\*(.+?)\\*\\*/g, '$1')  // Remove bold\n  .replace(/\\*(.+?)\\*/g, '$1')      // Remove italic\n  .replace(/```[\\s\\S]*?```/g, (match) => match.replace(/```\\w*\\n?/g, ''))  // Remove code blocks\n  .replace(/`(.+?)`/g, '$1');       // Remove inline code\n\nreturn {\n  json: {\n    userId,\n    pageId,\n    response: formattedResponse\n  }\n};"},"typeVersion":2},{"id":"2cdd999c-7068-4d74-8a7b-7842ce6fc6e7","name":"Send Response to User","type":"n8n-nodes-base.httpRequest","onError":"continueRegularOutput","position":[8288,3328],"parameters":{"url":"=https://graph.facebook.com/v21.0/me/messages","method":"POST","options":{},"jsonBody":"={\n  \"recipient\": {\n    \"id\": \"{{ $json.userId }}\"\n  },\n  \"messaging_type\": \"RESPONSE\",\n  \"message\": {\n    \"text\": {{ JSON.stringify($json.response) }}\n  }\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"facebookGraphApi"},"credentials":{"facebookGraphApi":{"id":"REPLACE_WITH_YOUR_CREDENTIAL_ID","name":"Facebook Graph API"}},"typeVersion":4.2,"alwaysOutputData":true},{"id":"a53563d7-2886-456e-880e-8c3474f09a8b","name":"Success","type":"n8n-nodes-base.set","position":[8512,3328],"parameters":{"options":{}},"typeVersion":3.4},{"id":"7e31988e-4371-4770-a4dc-37a2d95a1361","name":"Get context snippets in Pinecone Assistant","type":"@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistantTool","position":[8000,3552],"parameters":{"assistantData":"{\"name\":\"YOUR_ASSISTANT_NAME\",\"host\":\"YOUR_PINECONE_HOST\"}","additionalFields":{"sourceTag":"n8n:n8n_nodes_pinecone_assistant:quickstart"}},"credentials":{"pineconeAssistantApi":{"id":"REPLACE_WITH_YOUR_CREDENTIAL_ID","name":"Pinecone Assistant API"}},"typeVersion":1},{"id":"187d190c-512f-41b6-a7fe-05863d5e3e04","name":"AI Agent1","type":"@n8n/n8n-nodes-langchain.agent","position":[7712,3328],"parameters":{"text":"={{ $('Retrieve Batched Messages').first().json.combinedMessage }}","options":{"systemMessage":"You are a helpful assistant. Use the \"Get context snippets in Pinecone Assistant\" tool to retrieve relevant information from your knowledge base.\n\nYour Behavior:\n\n1. Use Your Knowledge Base: When users ask questions, ALWAYS use the \"Get context snippets in Pinecone Assistant\" tool to search for relevant information from your documents first.\n\n2. Cite Your Sources: When you find relevant information from documents, mention where it came from (e.g., \"According to our documentation...\" or \"Based on our records...\").\n\n3. Acknowledge Limitations: If the Pinecone search returns no relevant results or the information is not in your documents, clearly tell the user:\n   - \"I don't have specific information about that in my knowledge base.\"\n   - \"That topic isn't covered in my available documents.\"\n   - Do NOT make up answers or use general knowledge for questions that should be answered from documents.\n\n4. Conversation Style:\n   - Be concise and conversational - suitable for chat format\n   - Keep responses under 2000 characters (Messenger limit)\n   - Be friendly but professional\n   - End conversations gracefully when appropriate\n\n5. For General Chat: For greetings, small talk, or questions clearly not related to your documents, respond naturally without using the tool.\n\nRemember: You're chatting via Messenger, so keep responses appropriate for that medium."},"promptType":"define"},"typeVersion":3}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"connections":{"AI Agent1":{"main":[[{"node":"Format Response","type":"main","index":0}]]},"Wait 3 Seconds":{"main":[[{"node":"Retrieve Batched Messages","type":"main","index":0}]]},"Format Response":{"main":[[{"node":"Send Response to User","type":"main","index":0}]]},"Is Token Valid?":{"main":[[{"node":"Respond with Challenge","type":"main","index":0}],[{"node":"Respond Forbidden","type":"main","index":0}]]},"Acknowledge Event":{"main":[[{"node":"Filter Valid Messages","type":"main","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"AI Agent1","type":"ai_languageModel","index":0}]]},"Conversation Memory":{"ai_memory":[[{"node":"AI Agent1","type":"ai_memory","index":0}]]},"Send Seen Indicator":{"main":[[{"node":"Wait 3 Seconds","type":"main","index":0}]]},"Filter Valid Messages":{"main":[[{"node":"Store Message for Batching","type":"main","index":0}]]},"Send Response to User":{"main":[[{"node":"Success","type":"main","index":0}]]},"Send Typing Indicator":{"main":[[{"node":"AI Agent1","type":"main","index":0}]]},"Facebook Message Webhook":{"main":[[{"node":"Acknowledge Event","type":"main","index":0}]]},"Has Messages to Process?":{"main":[[{"node":"Send Typing Indicator","type":"main","index":0}]]},"Retrieve Batched Messages":{"main":[[{"node":"Has Messages to Process?","type":"main","index":0}]]},"Store Message for Batching":{"main":[[{"node":"Send Seen Indicator","type":"main","index":0}]]},"Facebook Verification Webhook":{"main":[[{"node":"Is Token Valid?","type":"main","index":0}]]},"Get context snippets in Pinecone Assistant":{"ai_tool":[[{"node":"AI Agent1","type":"ai_tool","index":0}]]}}},"lastUpdatedBy":29,"workflowInfo":{"nodeCount":29,"nodeTypes":{"n8n-nodes-base.if":{"count":3},"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":3},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.webhook":{"count":2},"n8n-nodes-base.stickyNote":{"count":9},"n8n-nodes-base.httpRequest":{"count":3},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.respondToWebhook":{"count":3},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":1},"@n8n/n8n-nodes-langchain.memoryBufferWindow":{"count":1},"@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistantTool":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Tristan V","username":"tristanv","bio":"","verified":true,"links":["https://trendai.au/"],"avatar":"https://gravatar.com/avatar/0d7dfd796a3b8d7208160c5a0ebb0fa9045ad7792df9b216347daa7c64a644d8?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":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":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":535,"icon":"file:webhook.svg","name":"n8n-nodes-base.respondToWebhook","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/"}]},"categories":["Core Nodes","Utility"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"transform\"]","defaults":{"name":"Respond to Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Respond to Webhook","typeVersion":2,"nodeCategories":[{"id":7,"name":"Utility"},{"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"}]}],"categories":[{"id":40,"name":"Support Chatbot"},{"id":48,"name":"AI RAG"}],"image":[]}}