{"workflow":{"id":13315,"name":"Optimize Webflow CMS SEO metadata using MCP and GPT‑4o-mini","views":119,"recentViews":0,"totalViews":119,"createdAt":"2026-02-11T17:10:38.297Z","description":"## Who's it for\n\nMarketing teams, content creators, and agencies managing Webflow CMS sites who need to optimize SEO metadata at scale.\n\n## How it works\n\nThe workflow fetches CMS items from Webflow, then uses AI to rewrite titles and descriptions to meet SEO best practices (50-60 character titles, 120-155 character meta descriptions). It automatically publishes changes back to Webflow and logs all updates to Google Sheets for audit purposes.\n\n## Requirements\n\n- Webflow site with CMS collections\n- MCP Webflow OAuth2 credentials\n- Any LLM api\n- Google Sheets for logging (optional)\n\n## How to set up\n\n1. **Get your collection ID**: In Webflow, go to your CMS collection → copy the collection ID\n2. **Update Set Fields node**: Replace collectionId with yours\n3. **Update Format for Update node**: Replace collectionId\n4. **Match field names**: If your collection uses different fields than \"name\" and \"project-summary\", update the agent prompt and Format for Update code\n5. **Test first**: Set batch size to 1 and run on a single item\n6. **Scale up**: Increase batch size gradually\n\n\n## How to customize\n\n**Change character limits**: Adjust minTitleLength, maxTitleLength, minSummaryLength, maxSummaryLength in Set Fields node. Add more fields like alt-text, post body, slug, etc.\n\n**Different field names**: Update agent system prompt, Structured Output Parser schema, and Format for Update code\n","workflow":{"id":"MjAjfa9No8m023Bu","meta":{"instanceId":"506e1eb999b7a8cf86103921b3e1b94e371534d9bae39d44754933678dc6697d","templateCredsSetupCompleted":true},"name":"Optimize SEO metadata for Webflow CMS using MCP and AI","tags":[{"id":"T3xhK1cIuPex0boX","name":"Templates","createdAt":"2025-09-03T11:06:03.839Z","updatedAt":"2025-09-03T11:06:03.839Z"}],"nodes":[{"id":"0156dff3-35ce-4866-9fdd-8079f2fd201e","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","position":[992,2688],"parameters":{},"typeVersion":1},{"id":"65a97353-0687-4d5e-af71-1c898e55ef10","name":"Track Metrics","type":"n8n-nodes-base.code","position":[3184,2688],"parameters":{"jsCode":"const formatData = $('Format for Update').item.json;\nconst executionStart = new Date(formatData.timestamp);\nconst executionEnd = new Date();\nconst duration = (executionEnd - executionStart) / 1000;\n\nreturn [{\n  json: {\n    timestamp: new Date().toLocaleString('en-US', { timeZone: 'America/New_York' }),\n    collectionId: formatData.collectionId,\n    itemsUpdated: formatData.count,\n    itemsPublished: formatData.count,\n    executionDuration: `${duration}s`,\n    postNames: formatData.items.map(i => i.fieldData.name).join('\\n'),\n    itemIds: formatData.itemIds.join('\\n')\n  }\n}];"},"typeVersion":2},{"id":"8b9af1aa-af12-4f39-b64f-b0788ed5e5f0","name":"Set Fields","type":"n8n-nodes-base.set","position":[1216,2688],"parameters":{"options":{},"assignments":{"assignments":[{"id":"a","name":"collectionId","type":"string","value":"xxxxxxxxxxxxxx"},{"id":"d","name":"minTitleLength","type":"number","value":50},{"id":"e","name":"maxTitleLength","type":"number","value":60},{"id":"f","name":"minSummaryLength","type":"number","value":120},{"id":"g","name":"maxSummaryLength","type":"number","value":155}]}},"typeVersion":3.4},{"id":"26576080-76ea-438d-ba42-468df5b6b50d","name":"Fetch CMS Items","type":"@n8n/n8n-nodes-langchain.mcpClient","maxTries":3,"position":[1440,2688],"parameters":{"tool":{"__rl":true,"mode":"list","value":"data_cms_tool"},"options":{},"parameters":{"value":{"actions":"=[{\"list_collection_items\": {\"collection_id\": \"{{ $json.collectionId }}\", \"request\": {\"limit\": 100}}}]","context":"Retrieving collection items for SEO analysis"},"schema":[{"id":"actions","type":"array","display":true,"required":true,"displayName":"actions","defaultMatch":false,"defaultValue":"[\n  {\n    \"get_collection_list\": {\n      \"siteId\": \"string\"\n    },\n    \"get_collection_details\": {\n      \"collection_id\": \"string\"\n    },\n    \"create_collection\": {\n      \"request\": {\n        \"displayName\": \"string\",\n        \"singularName\": \"string\",\n        \"slug\": \"string\"\n      }\n    },\n    \"create_collection_static_field\": {\n      \"collection_id\": \"string\",\n      \"request\": {\n        \"id\": \"string\",\n        \"isEditable\": false,\n        \"isRequired\": false,\n        \"type\": \"Color\",\n        \"displayName\": \"string\",\n        \"helpText\": \"string\"\n      }\n    },\n    \"create_collection_option_field\": {\n      \"collection_id\": \"string\",\n      \"request\": {\n        \"id\": \"string\",\n        \"isEditable\": false,\n        \"isRequired\": false,\n        \"type\": \"string\",\n        \"displayName\": \"string\",\n        \"helpText\": \"string\",\n        \"metadata\": {\n          \"options\": [\n            {\n              \"name\": \"string\",\n              \"id\": \"string\"\n            }\n          ]\n        }\n      }\n    },\n    \"create_collection_reference_field\": {\n      \"collection_id\": \"string\",\n      \"request\": {\n        \"id\": \"string\",\n        \"isEditable\": false,\n        \"isRequired\": false,\n        \"type\": \"MultiReference\",\n        \"displayName\": \"string\",\n        \"helpText\": \"string\",\n        \"metadata\": {\n          \"collectionId\": \"string\"\n        }\n      }\n    },\n    \"update_collection_field\": {\n      \"collection_id\": \"string\",\n      \"field_id\": \"string\",\n      \"request\": {\n        \"isRequired\": false,\n        \"displayName\": \"string\",\n        \"helpText\": \"string\"\n      }\n    },\n    \"list_collection_items\": {\n      \"collection_id\": \"string\",\n      \"request\": {\n        \"cmsLocaleId\": \"string\",\n        \"limit\": 0,\n        \"offset\": 0,\n        \"name\": \"string\",\n        \"slug\": \"string\",\n        \"sortBy\": \"lastPublished\",\n        \"sortOrder\": \"asc\"\n      }\n    },\n    \"create_collection_items\": {\n      \"collection_id\": \"string\",\n      \"request\": {\n        \"cmsLocaleIds\": [\n          \"string\"\n        ],\n        \"isArchived\": false,\n        \"isDraft\": false,\n        \"fieldData\": [\n          {\n            \"name\": \"string\",\n            \"slug\": \"string\"\n          }\n        ]\n      }\n    },\n    \"update_collection_items\": {\n      \"collection_id\": \"string\",\n      \"request\": {\n        \"items\": [\n          {\n            \"id\": \"string\",\n            \"cmsLocaleId\": \"string\",\n            \"lastPublished\": \"string\",\n            \"lastUpdated\": \"string\",\n            \"createdOn\": \"string\",\n            \"isArchived\": false,\n            \"isDraft\": false,\n            \"fieldData\": {\n              \"name\": \"string\",\n              \"slug\": \"string\"\n            }\n          }\n        ]\n      }\n    },\n    \"publish_collection_items\": {\n      \"collection_id\": \"string\",\n      \"request\": {\n        \"itemIds\": [\n          \"string\"\n        ]\n      }\n    },\n    \"delete_collection_items\": {\n      \"collection_id\": \"string\",\n      \"request\": {\n        \"items\": [\n          {\n            \"id\": \"string\",\n            \"cmsLocaleIds\": [\n              \"string\"\n            ]\n          }\n        ]\n      }\n    }\n  }\n]"},{"id":"context","type":"string","display":true,"required":true,"displayName":"context","defaultMatch":false}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"endpointUrl":"https://mcp.webflow.com/mcp"},"retryOnFail":true,"typeVersion":1,"waitBetweenTries":5000},{"id":"67810024-e919-4b42-8721-da432621c4e0","name":"Loop Over Items","type":"n8n-nodes-base.splitInBatches","position":[1664,2688],"parameters":{"options":{"reset":false},"batchSize":"=5"},"typeVersion":3},{"id":"d95e34ae-bf07-487e-b3ac-18d08f8034aa","name":"SEO Analysis Agent","type":"@n8n/n8n-nodes-langchain.agent","maxTries":3,"position":[1952,2688],"parameters":{"text":"={{ JSON.stringify($input.all().map(item => item.json)) }}","options":{"systemMessage":"=You are an SEO optimization specialist for Webflow CMS.\n\nYour task: Optimize items to meet these requirements:\n- name (title): {{ $('Set Fields').first().json.minTitleLength }}-{{ $('Set Fields').first().json.maxTitleLength }} characters\n- project-summary: {{ $('Set Fields').first().json.minSummaryLength }}-{{ $('Set Fields').first().json.maxSummaryLength }} characters\n\nFor each item:\n1. Optimize name if outside target range\n2. Optimize project-summary if outside target range\n3. Check services-rendered for H1/H2 structure\n4. Flag missing alt text\n5. Count words in services-rendered\n\nOutput: JSON array ONLY. NO explanations. NO markdown. Start with [ and end with ].\n\nStructure:\n[\n  {\n    \"id\": \"string\",\n    \"needsUpdate\": true,\n    \"status\": \"optimized | attention_required\",\n    \"updates\": {\n      \"name\": \"string or null\",\n      \"project-summary\": \"string or null\"\n    },\n    \"audit\": {\n      \"charCount_name\": 0,\n      \"charCount_summary\": 0,\n      \"wordCount_services\": 0\n    },\n    \"issues\": [\"MISSING_ALT\", \"THIN_CONTENT\", \"INVALID_H_STRUCTURE\"]\n  }\n]\n\n\nConstraints:\n- Never modify: id, slug, _archived, _draft, featured-project, color\n- Keep brand voice professional\n- Include target keywords naturally"},"promptType":"define","hasOutputParser":true},"retryOnFail":true,"typeVersion":1.7,"continueOnFail":true,"waitBetweenTries":5000},{"id":"f0419ea1-4483-4e13-9e4c-3220c135e5ec","name":"Format for Update","type":"n8n-nodes-base.code","position":[2512,2688],"parameters":{"jsCode":"const data = $input.first().json;\nconst output = data.output || data;\nconst itemsToUpdate = output.filter(i => i.needsUpdate);\n\nif (itemsToUpdate.length === 0) {\n  return [];\n}\n\nconst formattedItems = itemsToUpdate.map(item => {\n  const fieldData = {};\n  if (item.updates.name !== null) fieldData.name = item.updates.name;\n  if (item.updates['project-summary'] !== null) fieldData['project-summary'] = item.updates['project-summary'];\n  \n  return {\n    id: item.id,\n    fieldData: fieldData\n  };\n});\n\nreturn [{\n  json: {\n    // Make sure to update the correct collection ID ⚠️\n    collectionId: \"xxxxxxxxxx\",\n    items: formattedItems,\n    itemIds: formattedItems.map(i => i.id),\n    count: itemsToUpdate.length,\n    timestamp: new Date().toISOString()\n  }\n}];"},"typeVersion":2},{"id":"fe9d2b7d-a242-4b40-81fa-a175dc57d02e","name":"Update Items","type":"@n8n/n8n-nodes-langchain.mcpClient","maxTries":3,"position":[2736,2688],"parameters":{"tool":{"__rl":true,"mode":"list","value":"data_cms_tool"},"options":{"timeout":60000},"inputMode":"json","jsonInput":"={\n  \"actions\": [{\n    \"update_collection_items\": {\n      \"collection_id\": \"{{ $json.collectionId }}\",\n      \"request\": {\n        \"items\": {{ JSON.stringify($json.items) }}\n      }\n    }\n  }]\n}","endpointUrl":"https://mcp.webflow.com/mcp"},"retryOnFail":true,"typeVersion":1,"continueOnFail":true,"waitBetweenTries":5000},{"id":"d0912e99-4dfc-423f-b086-f54462c67ffe","name":"Publish Items","type":"@n8n/n8n-nodes-langchain.mcpClient","maxTries":3,"position":[2960,2688],"parameters":{"tool":{"__rl":true,"mode":"list","value":"data_cms_tool"},"options":{},"inputMode":"json","jsonInput":"={\n  \"actions\": [{\n    \"publish_collection_items\": {\n      \"collection_id\": \"{{ $('Format for Update').item.json.collectionId }}\",\n      \"request\": {\n        \"itemIds\": {{ JSON.stringify($('Format for Update').item.json.itemIds) }}\n      }\n    }\n  }]\n}","endpointUrl":"https://mcp.webflow.com/mcp"},"retryOnFail":true,"typeVersion":1,"continueOnFail":true,"waitBetweenTries":5000},{"id":"0b465118-b2e6-4447-bf1b-37960c70cb6f","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[2144,2912],"parameters":{"autoFix":true,"schemaType":"manual","inputSchema":"[\n  {\n    \"id\": \"string\",\n    \"needsUpdate\": true,\n    \"status\": \"string\",\n    \"updates\": {\n      \"name\": \"string\",\n      \"project-summary\": \"string\"\n    },\n    \"audit\": {\n      \"charCount_name\": 0,\n      \"charCount_summary\": 0,\n      \"wordCount_services\": 0\n    },\n    \"issues\": [\"string\"]\n  }\n]"},"typeVersion":1.3},{"id":"169f8777-4974-4964-9c4f-6d718b3c4eb0","name":"Parser Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[2224,3120],"parameters":{"model":"openai/gpt-4o-mini","options":{}},"credentials":{"openRouterApi":{"id":"n7lLJrAKdBPhRo5C","name":"OpenRouter account (Dummy)"}},"typeVersion":1},{"id":"e197a0aa-75c6-4228-8879-8e88c3a4df78","name":"Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[1888,2912],"parameters":{"model":"openai/gpt-4o-mini","options":{}},"credentials":{"openRouterApi":{"id":"n7lLJrAKdBPhRo5C","name":"OpenRouter account (Dummy)"}},"typeVersion":1},{"id":"91504172-c37d-42bf-a6cd-004b273f18c0","name":"Simple Memory","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[2016,2912],"parameters":{"sessionKey":"={{ $('Set Fields').item.json.collectionId }}","sessionIdType":"customKey"},"typeVersion":1.3},{"id":"820b8fd3-9dad-45e2-b198-4ebd05e2a59a","name":"Save Summary","type":"n8n-nodes-base.googleSheets","position":[3408,2688],"parameters":{"columns":{"value":{"itemIds":"={{ $json.itemIds }}","Timestamp":"={{ $json.timestamp }}","postNames":"={{ $json.postNames }}","Collection ID":"={{ $json.collectionId }}","Items Updated":"={{ $json.itemsUpdated }}","itemsPublished":"={{ $json.itemsPublished }}"},"schema":[{"id":"Timestamp","type":"string","display":true,"required":false,"displayName":"Timestamp","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Collection ID","type":"string","display":true,"required":false,"displayName":"Collection ID","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Items Updated","type":"string","display":true,"required":false,"displayName":"Items Updated","defaultMatch":false,"canBeUsedToMatch":true},{"id":"itemsPublished","type":"string","display":true,"removed":false,"required":false,"displayName":"itemsPublished","defaultMatch":false,"canBeUsedToMatch":true},{"id":"postNames","type":"string","display":true,"removed":false,"required":false,"displayName":"postNames","defaultMatch":false,"canBeUsedToMatch":true},{"id":"itemIds","type":"string","display":true,"removed":false,"required":false,"displayName":"itemIds","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"id","value":2109721884},"documentId":{"__rl":true,"mode":"id","value":"xxxxxxx"}},"credentials":{"googleSheetsOAuth2Api":{"id":"zyEOPkCfmHTXNm4V","name":"Google Sheets (Dummy Account)"}},"typeVersion":4.7},{"id":"01aa9a8a-83c8-4fe0-a863-ead528c8b2a4","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[208,2304],"parameters":{"width":512,"height":1744,"content":"# 🚀 Webflow CMS SEO Bulk Optimizer\nThis workflow optimizes SEO metadata for Webflow CMS collections using AI.\n\n**What it does:**\n- Fetches CMS items from your Webflow collection\n- Analyzes titles and descriptions against SEO best practices\n- Optimizes length (titles: 50-60 chars, summaries: 120-155 chars)\n- Checks for missing alt text and content structure\n- Updates and publishes items back to Webflow\n- Logs all changes to Google Sheets\n\n**Requirements:**\n- Webflow MCP OAuth2 credentials\n- OpenRouter or any other LLM API key \n- Google Sheets or similar\n- Your Webflow collection ID\n\n**Before running:**\nIf your collection has different field names:\n1. **Agent system prompt**: Replace \"name\" and \"project-summary\" with your field names\n2. **Structured Output Parser schema**: Update field names in JSON schema\n3. **Format for Update code**: Change field names \n\n**Common field names (Webflow default collections):**\n- Posts: name, post-summary, post-body\n- Products: name, description, short-description\n- Projects: name, project-summary, services-rendered\n\n## Webflow MCP Config\n\n**Create credentials:**\n- Select MCP OAuth2 API\n- Set **Server URL** to https://mcp.webflow.com/mcp\n- Click Save and authorize access to your Webflow workspaces and sites\n\n**Configure MCP Client nodes:**\n- Set MCP Endpoint URL to https://mcp.webflow.com/mcp\n- Select **data_cms_tool** (for CMS operations). For other operations, select the appropriate tool.\n- **Actions** and **Context** depend on the tool and your use case—see examples in the workflow nodes.\n\n### MCP Webflow node errors i've encountered\n\n**Authentication:**\n- Credential type: MCP OAuth2 API\n- Server URL: https://mcp.webflow.com/mcp\n- Must authorize Webflow workspaces after saving\n\n**Common errors:**\n\n**404 - Resource not found**\n→ Wrong collection ID. Get from Webflow CMS URL.\n\n**400 - Bad Request**\n→ Check JSON structure has \"request\" wrapper\n→ Remove null values from fieldData\n→ Verify parameter names (itemIds not itemIDs)\n\n**400 - Invalid input for 'actions'**\n→ Missing \"request\" object inside action\n→ Wrong JSON structure\n\n**Items not updating:**\n→ Field names don't match collection schema\n→ Use exact field names from Webflow (case-sensitive, with hyphens)\n\n**Nothing publishes:**\n→ Using \"itemIDs\" instead of \"itemIds\"\n→ Collection ID mismatch between Update and Publish\n\n**Verify setup:**\n1. Check collection ID matches in Set Fields AND Format for Update\n2. Test field names: view Fetch CMS Items output\n3. Run with 1 item first before scaling"},"typeVersion":1},{"id":"34c6c61a-b2a8-49d6-9353-dfda7fc12ebf","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1152,2256],"parameters":{"color":7,"width":224,"height":560,"content":"#### Start Here: Configure Your Collection\nUpdate these values for your Webflow collection:\n- **collectionId**: Get from Webflow CMS URL (required)\n- **batchSize**: 5-20 items per batch (5 = slower/safer, 20 = faster)\n- **Title limits**: 50-60 chars (SEO standard)\n- **Summary limits**: 120-155 chars (meta description standard)\n\nLater on, you may increase the values to optimise like url slug, post body, alt-text,etc"},"typeVersion":1},{"id":"6b984edd-da56-4374-95f9-43e968ecd278","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1872,2288],"parameters":{"color":7,"width":480,"height":528,"content":"#### AI Agent: Customize for Your Fields\n\n**Current setup optimizes:**\n- `name` → 50-60 character titles\n- `project-summary` → 120-155 character descriptions\n\n**If your collection uses different field names:**\n1. Update system prompt (replace \"name\" and \"project-summary\", etc)\n2. Update Structured Output Parser schema\n3. Update Format for Update code (lines 9-10)\n\n**Common Webflow field names:**\n- Blog: name, post-summary, post-body\n- Products: name, description, short-description\n- Portfolio: name, project-summary, project-details"},"typeVersion":1},{"id":"dbee186d-7a77-4d2d-8194-0f50a1fb77fb","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[2464,2384],"parameters":{"color":7,"width":224,"height":464,"content":"#### Update Collection ID\n\n**Line 23 in this code node MUST match your collection ID.**\n\n**Also update if using different field names:**\n- Line 9: `fieldData.name` → your title field\n- Line 10: `fieldData['project-summary']` → your description field"},"typeVersion":1},{"id":"c38935a9-e019-4bfd-9fee-2b9965134cbe","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[3360,2864],"parameters":{"color":7,"width":208,"content":"#### Summary\n\nAll optimizations are logged to Google Sheets. This is optional, remove this node if you don't need it."},"typeVersion":1},{"id":"610d1216-388f-4fc2-8999-4ecbecd8c28e","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[1408,2256],"parameters":{"color":7,"width":224,"height":560,"content":"#### Fetch CMS Items\nRetrieves up to 100 items from your Webflow collection\n\n**Settings:**\n- **Endpoint URL**: https://mcp.webflow.com/mcp\n- **Tool**: data_cms_tool \n- **Action**: list_collection_items\n- **Context**: Brief description of what you're doing (NOT siteId)\n- **Authentication**: Remember to set up your credentials first. Instructions are on the yellow sticky note"},"typeVersion":1},{"id":"0fbeed20-3c26-4684-9df4-233e95bc0fd2","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[2704,2304],"parameters":{"color":7,"width":224,"height":528,"content":"#### Update Items\n\nUpdates fieldData for CMS items\n\n**settings:**\n- **Input Mode**: JSON (not parameters)\n- **Action**: update_collection_items\n- **Timeout**: 60000ms (1 minute for large batches)\n- **Authentication**: Remember to set up your credentials first. Instructions are on the yellow sticky note"},"typeVersion":1},{"id":"658eafc9-29fc-4159-8c9e-4c6307e9c094","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[2944,2304],"parameters":{"color":7,"width":224,"height":528,"content":"####  Publish Items\n\nPublishes updated items to live Webflow site\n\n**settings:**\n- **Input Mode**: JSON (not parameters)\n- **Action**: publish_collection_items\n- **Parameter name**: itemIds (case sensitive)\n- **Authentication**: Remember to set up your credentials first. Instructions are on the yellow sticky note\n\n"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"binaryMode":"separate","availableInMCP":false,"executionOrder":"v1"},"versionId":"6b682a8f-c7bd-4ab3-807f-ec93299742e3","connections":{"Chat Model":{"ai_languageModel":[[{"node":"SEO Analysis Agent","type":"ai_languageModel","index":0}]]},"Set Fields":{"main":[[{"node":"Fetch CMS Items","type":"main","index":0}]]},"Parser Model":{"ai_languageModel":[[{"node":"Structured Output Parser","type":"ai_languageModel","index":0}]]},"Update Items":{"main":[[{"node":"Publish Items","type":"main","index":0}],[]]},"Publish Items":{"main":[[{"node":"Track Metrics","type":"main","index":0}]]},"Simple Memory":{"ai_memory":[[{"node":"SEO Analysis Agent","type":"ai_memory","index":0}]]},"Track Metrics":{"main":[[{"node":"Save Summary","type":"main","index":0}]]},"Manual Trigger":{"main":[[{"node":"Set Fields","type":"main","index":0}]]},"Fetch CMS Items":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Loop Over Items":{"main":[[],[{"node":"SEO Analysis Agent","type":"main","index":0}]]},"Format for Update":{"main":[[{"node":"Update Items","type":"main","index":0}]]},"SEO Analysis Agent":{"main":[[{"node":"Format for Update","type":"main","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"SEO Analysis Agent","type":"ai_outputParser","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":22,"nodeTypes":{"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.stickyNote":{"count":8},"n8n-nodes-base.googleSheets":{"count":1},"n8n-nodes-base.manualTrigger":{"count":1},"n8n-nodes-base.splitInBatches":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"@n8n/n8n-nodes-langchain.mcpClient":{"count":3},"@n8n/n8n-nodes-langchain.lmChatOpenRouter":{"count":2},"@n8n/n8n-nodes-langchain.memoryBufferWindow":{"count":1},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Dahiana","username":"mssporto","bio":"No-Code Specialist with more than 10 years of experience in Digital Marketing. Currently working with Bubble. Webflow, AI, Agents and N8N.","verified":true,"links":["https://dahiana.work/"],"avatar":"https://gravatar.com/avatar/cbb2c52ceb5284c7d5f2ce1a4911a94bfecc760e73490fd6bd15d3f2f6db6988?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":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":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":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":1281,"icon":"file:openrouter.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenrouter/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenRouter Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjOTRBM0I4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDI0IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjx0aXRsZT5PcGVuUm91dGVyPC90aXRsZT48cGF0aCBkPSJNMTYuODA0IDEuOTU3bDcuMjIgNC4xMDV2LjA4N0wxNi43MyAxMC4yMWwuMDE3LTIuMTE3LS44MjEtLjAzYy0xLjA1OS0uMDI4LTEuNjExLjAwMi0yLjI2OC4xMS0xLjA2NC4xNzUtMi4wMzguNTc3LTMuMTQ3IDEuMzUyTDguMzQ1IDExLjAzYy0uMjg0LjE5NS0uNDk1LjMzNi0uNjguNDU1bC0uNTE1LjMyMi0uMzk3LjIzNC4zODUuMjMuNTMuMzM4Yy40NzYuMzE0IDEuMTcuNzk2IDIuNzAxIDEuODY2IDEuMTEuNzc1IDIuMDgzIDEuMTc3IDMuMTQ3IDEuMzUybC4zLjA0NWMuNjk0LjA5MSAxLjM3NS4wOTQgMi44MjUuMDMzbC4wMjItMi4xNTkgNy4yMiA0LjEwNXYuMDg3TDE2LjU4OSAyMmwuMDE0LTEuODYyLS42MzUuMDIyYy0xLjM4Ni4wNDItMi4xMzcuMDAyLTMuMTM4LS4xNjItMS42OTQtLjI4LTMuMjYtLjkyNi00Ljg4MS0yLjA1OWwtMi4xNTgtMS41YTIxLjk5NyAyMS45OTcgMCAwMC0uNzU1LS40OThsLS40NjctLjI4YTU1LjkyNyA1NS45MjcgMCAwMC0uNzYtLjQzQzIuOTA4IDE0LjczLjU2MyAxNC4xMTYgMCAxNC4xMTZWOS44ODhsLjE0LjAwNGMuNTY0LS4wMDcgMi45MS0uNjIyIDMuODA5LTEuMTI0bDEuMDE2LS41OC40MzgtLjI3NGMuNDI4LS4yOCAxLjA3Mi0uNzI2IDIuNjg2LTEuODUzIDEuNjIxLTEuMTMzIDMuMTg2LTEuNzggNC44ODEtMi4wNTkgMS4xNTItLjE5IDEuOTc0LS4yMTMgMy44MTQtLjEzOGwuMDItMS45MDd6Ij48L3BhdGg+PC9zdmc+Cg=="},"displayName":"OpenRouter Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1324,"icon":"file:../mcp.svg","name":"@n8n/n8n-nodes-langchain.mcpClient","codex":{"data":{"categories":["Langchain"]}},"group":"[\"transform\"]","defaults":{"name":"MCP Client"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDE5NSAxOTUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+Cgk8ZyBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMTIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CgkJPHBhdGggZD0iTTI1IDk3Ljg1MjhMOTIuODgyMyAyOS45NzA2QzEwMi4yNTUgMjAuNTk4IDExNy40NTEgMjAuNTk4IDEyNi44MjMgMjkuOTcwNlYyOS45NzA2QzEzNi4xOTYgMzkuMzQzMSAxMzYuMTk2IDU0LjUzOTEgMTI2LjgyMyA2My45MTE3TDc1LjU1ODEgMTE1LjE3NyIvPgoJCTxwYXRoIGQ9Ik03Ni4yNjUzIDExNC40N0wxMjYuODIzIDYzLjkxMTdDMTM2LjE5NiA1NC41MzkxIDE1MS4zOTIgNTQuNTM5MSAxNjAuNzY1IDYzLjkxMTdMMTYxLjExOCA2NC4yNjUyQzE3MC40OTEgNzMuNjM3OCAxNzAuNDkxIDg4LjgzMzggMTYxLjExOCA5OC4yMDYzTDk5LjcyNDggMTU5LjZDOTYuNjAwNiAxNjIuNzI0IDk2LjYwMDYgMTY3Ljc4OSA5OS43MjQ4IDE3MC45MTNMMTEyLjMzMSAxODMuNTIiLz4KCQk8cGF0aCBkPSJNMTA5Ljg1MyA0Ni45NDExTDU5LjY0ODIgOTcuMTQ1N0M1MC4yNzU3IDEwNi41MTggNTAuMjc1NyAxMjEuNzE0IDU5LjY0ODIgMTMxLjA4N1YxMzEuMDg3QzY5LjAyMDggMTQwLjQ1OSA4NC4yMTY4IDE0MC40NTkgOTMuNTg5NCAxMzEuMDg3TDE0My43OTQgODAuODgyMiIvPgoJPC9nPgo8L3N2Zz4K"},"displayName":"MCP Client","typeVersion":1,"nodeCategories":[{"id":26,"name":"Langchain"}]}],"categories":[{"id":31,"name":"Content Creation"},{"id":48,"name":"AI RAG"}],"image":[]}}