This workflow follows the Agent → Chat Trigger recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"nodes": [
{
"parameters": {
"model": "text-embedding-3-small",
"options": {}
},
"id": "a6540041-a362-43c9-9369-55e9a3b62f54",
"name": "Embeddings OpenAI",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1,
"position": [
660,
100
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsonMode": "expressionData",
"jsonData": "={{ $('Split Out').item.json.description }}",
"options": {
"metadata": {
"metadataValues": [
{
"name": "=issueId",
"value": "={{ $('Split Out').item.json.issueId }}"
},
{
"name": "=scope",
"value": "={{ $('Split Out').item.json.category }}"
},
{
"name": "type",
"value": "={{ $('Split Out').item.json.type }}"
},
{
"name": "version",
"value": "={{ $('Split Out').item.json.version }}"
},
{
"name": "issue_link",
"value": "={{ $('Split Out').item.json.issueLink }}"
}
]
}
}
},
"id": "99775efb-166d-4571-a083-385a5db570d3",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"typeVersion": 1,
"position": [
780,
120
]
},
{
"parameters": {},
"id": "d0908c37-4a71-4f21-844a-cda67f5bfec6",
"name": "Token Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterTokenSplitter",
"typeVersion": 1,
"position": [
780,
280
]
},
{
"parameters": {
"url": "https://raw.githubusercontent.com/n8n-io/n8n/refs/heads/master/CHANGELOG.md",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-1080,
-40
],
"id": "11443ad2-e0e2-4162-a332-ccdb4a830ff7",
"name": "HTTP Request"
},
{
"parameters": {
"fieldToSplitOut": "non_indexed_changes",
"options": {}
},
"id": "7540efdf-ddec-4e42-8dae-5462305025f7",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
140,
-40
],
"executeOnce": false
},
{
"parameters": {
"content": "## Fetch and process changelog from Github",
"height": 368.5722079401346,
"width": 587.4610446931715
},
"id": "83000640-69e6-41be-8aca-1de7dc23792c",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1160,
-180
]
},
{
"parameters": {
"name": "search_all",
"description": "Call this tool to search across all changes",
"workflowId": {
"__rl": true,
"mode": "list",
"value": "3xnlsX2oneLuOzdl",
"cachedResultName": "n8n Changelog Agent"
},
"fields": {
"values": [
{
"name": "tool",
"stringValue": "search_all"
}
]
},
"specifyInputSchema": true,
"schemaType": "manual",
"inputSchema": "{\n\"type\": \"object\",\n\"properties\": {\n\t\"search_query\": {\n\t\t\"type\": \"string\",\n\t\t\"description\": \"Search query for vector store similarity matching\"\n\t }\n}\n}"
},
"id": "b92cf7ab-0c95-4f38-a2a6-31ec81805e31",
"name": "search_all",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 1.2,
"position": [
-120,
662
]
},
{
"parameters": {},
"id": "dc97ef82-64e0-4622-bdc3-0b5f12a97663",
"name": "Execute Workflow Trigger",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1,
"position": [
-1820,
780
]
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"leftValue": "={{ $json.tool }}",
"rightValue": "get_specific_version",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "get_specific_version"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "ac2ce915-d7ed-4a93-b6ce-0a6ec2dc0b7c",
"leftValue": "={{ $json.tool }}",
"rightValue": "search_all",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "search_all"
}
]
},
"options": {}
},
"id": "6c4c3eb2-eec4-40f7-a5d6-b389cc66ddce",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"typeVersion": 3.2,
"position": [
-1600,
780
]
},
{
"parameters": {
"model": "text-embedding-3-small",
"options": {}
},
"id": "661af6f0-ce7e-4247-a0a2-eab399bd669b",
"name": "Embeddings OpenAI1",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1,
"position": [
-1280,
1020
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "4dc6d7e1-606f-40ca-aa7d-ea30d022c91b",
"name": "response",
"value": "={{ $json.response.toJsonString() }}",
"type": "string"
}
]
},
"options": {}
},
"id": "1403ef34-ebb5-47a1-b8f1-47317a6ad593",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-520,
760
]
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"destinationFieldName": "response",
"options": {}
},
"id": "dcd2563a-4eb9-41aa-8c73-ed2203ead5a5",
"name": "Aggregate",
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
-760,
760
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "eddf4f6a-65a3-4e32-9386-bf082d4b768e",
"name": "content",
"value": "={{ $json.document.pageContent }}",
"type": "string"
},
{
"id": "57b30760-3921-4cbb-9243-65c690e039f9",
"name": "metadata.issueId",
"value": "={{ $json.document.metadata.issueId }}",
"type": "string"
},
{
"id": "f01e31f0-9c66-4f10-ab91-a8437ec47bca",
"name": "metadata.issue_link",
"value": "={{ $json.document.metadata.issue_link }}",
"type": "string"
},
{
"id": "b82237b9-00d2-4f88-bc6b-2c8407540fe1",
"name": "metadata.scope",
"value": "={{ $json.document.metadata.scope }}",
"type": "string"
},
{
"id": "6d470084-0872-432b-b58b-82fab9f91d48",
"name": "metadata.type",
"value": "={{ $json.document.metadata.type }}",
"type": "string"
}
]
},
"options": {}
},
"id": "b3ca5a55-08b4-4c7b-8e94-c408d06dad2b",
"name": "Edit Fields1",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-960,
700
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "eddf4f6a-65a3-4e32-9386-bf082d4b768e",
"name": "content",
"value": "={{ $json.document.pageContent }}",
"type": "string"
},
{
"id": "57b30760-3921-4cbb-9243-65c690e039f9",
"name": "metadata.issueId",
"value": "={{ $json.document.metadata.issueId }}",
"type": "string"
},
{
"id": "f01e31f0-9c66-4f10-ab91-a8437ec47bca",
"name": "metadata.issue_link",
"value": "={{ $json.document.metadata.issue_link }}",
"type": "string"
},
{
"id": "b82237b9-00d2-4f88-bc6b-2c8407540fe1",
"name": "metadata.scope",
"value": "={{ $json.document.metadata.scope }}",
"type": "string"
},
{
"id": "6d470084-0872-432b-b58b-82fab9f91d48",
"name": "metadata.type",
"value": "={{ $json.document.metadata.type }}",
"type": "string"
},
{
"id": "ae897867-245b-4a89-8dde-c4fa50540ce2",
"name": "metadata.version",
"value": "={{ $json.document.metadata.version }}",
"type": "string"
},
{
"id": "4866a577-acc2-4699-aff3-ef782d7a3db5",
"name": "score",
"value": "={{ $json.score }}",
"type": "number"
}
]
},
"options": {}
},
"id": "6401b8e3-4d50-4dcc-a549-f445a91b75e0",
"name": "Edit Fields2",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-960,
860
]
},
{
"parameters": {
"toolDescription": "Call this tool to fetch detail of an issue",
"url": "https://github.com/n8n-io/n8n/issues/{issue}",
"placeholderDefinitions": {
"values": [
{
"name": "issue",
"description": "ID of the issue ",
"type": "string"
}
]
},
"optimizeResponse": true,
"responseType": "html",
"onlyContent": true,
"elementsToOmit": "img,script,svg"
},
"id": "6860d9aa-9d93-4ee7-a57b-4acbb61af2ac",
"name": "get_issue_detail",
"type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
"typeVersion": 1.1,
"position": [
400,
660
]
},
{
"parameters": {
"fieldToSplitOut": "versions",
"options": {}
},
"id": "dffae841-aaab-4499-b876-e0f5fe89a575",
"name": "Split Out1",
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
-240,
-520
]
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"__rl": true,
"value": "1WlNoIjDxEqpSSQ2t5-euxClwFUsHa7I5mSlVg3kMoyA",
"mode": "list",
"cachedResultName": "Changelog",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WlNoIjDxEqpSSQ2t5-euxClwFUsHa7I5mSlVg3kMoyA/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Sheet1",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WlNoIjDxEqpSSQ2t5-euxClwFUsHa7I5mSlVg3kMoyA/edit#gid=0"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"version": "={{ $json.versions }}"
},
"matchingColumns": [
"version"
],
"schema": [
{
"id": "version",
"displayName": "version",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "indexed",
"displayName": "indexed",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
}
]
},
"options": {}
},
"id": "9478ee86-0b90-4ec2-b9bd-c145d70236ad",
"name": "Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
40,
-520
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "1WlNoIjDxEqpSSQ2t5-euxClwFUsHa7I5mSlVg3kMoyA",
"mode": "list",
"cachedResultName": "Changelog",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WlNoIjDxEqpSSQ2t5-euxClwFUsHa7I5mSlVg3kMoyA/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Sheet1",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WlNoIjDxEqpSSQ2t5-euxClwFUsHa7I5mSlVg3kMoyA/edit#gid=0"
},
"filtersUI": {
"values": [
{
"lookupColumn": "indexed",
"lookupValue": "false"
}
]
},
"options": {}
},
"id": "8ffe787a-83f3-4a6d-a3e8-307ffca34556",
"name": "Google Sheets2",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
-340,
-40
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"__rl": true,
"value": "1WlNoIjDxEqpSSQ2t5-euxClwFUsHa7I5mSlVg3kMoyA",
"mode": "list",
"cachedResultName": "Changelog",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WlNoIjDxEqpSSQ2t5-euxClwFUsHa7I5mSlVg3kMoyA/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Sheet1",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WlNoIjDxEqpSSQ2t5-euxClwFUsHa7I5mSlVg3kMoyA/edit#gid=0"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"version": "={{ $json.version }}",
"indexed": "true"
},
"matchingColumns": [
"version"
],
"schema": [
{
"id": "version",
"displayName": "version",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "indexed",
"displayName": "indexed",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
}
]
},
"options": {}
},
"id": "7d2ac9d3-3a39-4f15-b94f-a9351a4b05de",
"name": "Google Sheets3",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
840,
520
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "// N8N Code Node: Enhanced Changelog Parser with Version List\n\n// Input data is expected to be the raw Markdown changelog\nconst mdData = $input.first().json.data;\n\n// Function to parse the changelog\nfunction parseChangelog(changelog) {\n const versionRegex = /# \\[(\\d+\\.\\d+\\.\\d+)\\]/;\n const typeRegex = /^### (.+)/;\n const changeRegex = /^\\* (?:\\*\\*(.+?):\\*\\* )?(.+?) \\(\\[#(\\d+)\\]\\((https:\\/\\/github\\.com\\/[^)]+)\\)\\)/;\n\n const changes = [];\n const versions = [];\n let currentVersion = null;\n let currentType = null;\n let currentVersionChanges = null;\n\n const lines = changelog.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n \n const versionMatch = line.match(versionRegex);\n if (versionMatch) {\n if (currentVersion) {\n versions.push({\n version: currentVersion,\n changes: currentVersionChanges\n });\n }\n currentVersion = versionMatch[1];\n currentType = null;\n currentVersionChanges = [];\n continue;\n }\n\n const typeMatch = line.match(typeRegex);\n if (typeMatch) {\n currentType = typeMatch[1];\n continue;\n }\n\n const changeMatch = line.match(changeRegex);\n if (changeMatch && currentVersion) {\n const change = {\n version: currentVersion,\n type: currentType || 'Uncategorized',\n category: changeMatch[1] || '',\n description: changeMatch[2],\n issueId: changeMatch[3],\n issueLink: changeMatch[4]\n };\n changes.push(change);\n \n currentVersionChanges.push({\n type: change.type,\n category: change.category,\n description: change.description\n });\n }\n }\n\n // Add the last version\n if (currentVersion) {\n versions.push({\n version: currentVersion,\n changes: currentVersionChanges\n });\n }\n\n return { changes, versions };\n}\n\n// Parse the changelog\nconst { changes, versions } = parseChangelog(mdData);\n\n// Count changes per version\nconst changesByVersion = changes.reduce((acc, change) => {\n acc[change.version] = (acc[change.version] || 0) + 1;\n return acc;\n}, {});\n\n// Output the parsed changes, version list, and version counts\nreturn {\n changes: changes,\n // versions: versions,\n // changesByVersion: changesByVersion\n versions: Object.keys(changesByVersion)\n }"
},
"id": "202bc73d-b17d-425c-8f46-a10b0ffffad1",
"name": "Code",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-840,
-40
]
},
{
"parameters": {
"content": "## Add matched versions to Google Sheets",
"height": 289.49812910568795,
"width": 531.3069887092895
},
"id": "07ea8faa-c5b0-412b-afed-de4b3ab43bf5",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-300,
-620
]
},
{
"parameters": {
"content": "## Select only versions which were not indexed yet",
"height": 307.83414738613953,
"width": 640.1770972494695
},
"id": "9f23cc5d-1e8d-44e5-9aad-5f0a0bbfcde9",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-360,
-120
]
},
{
"parameters": {
"content": "## Populate vector store with new versions",
"height": 523.2823621814433,
"width": 593.1910504058127
},
"id": "90fc16cc-c841-4289-8d9e-b9b49cab6590",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
600,
-120
]
},
{
"parameters": {
"content": "## Update Google Sheets versions that we just indexed",
"height": 240.37973392107438,
"width": 659.8531140246544
},
"id": "91304617-2ce4-4366-a3b4-90762a4be92b",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
600,
440
]
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "1WlNoIjDxEqpSSQ2t5-euxClwFUsHa7I5mSlVg3kMoyA",
"mode": "list",
"cachedResultName": "Changelog",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WlNoIjDxEqpSSQ2t5-euxClwFUsHa7I5mSlVg3kMoyA/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Sheet1",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WlNoIjDxEqpSSQ2t5-euxClwFUsHa7I5mSlVg3kMoyA/edit#gid=0"
},
"filtersUI": {
"values": [
{
"lookupColumn": "indexed",
"lookupValue": "true"
}
]
},
"options": {}
},
"id": "e347f241-9cd8-4ec5-8222-d30836b37929",
"name": "Google Sheets1",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
-1120,
302
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "d5478c7a-1495-4609-8d87-efb8e9a50657",
"name": "non_indexed_changes",
"value": "={{ $('Code').item.json.changes.filter(change => change.version === $json.version) }}",
"type": "array"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-100,
-40
],
"id": "84d7fced-9e31-4b7e-901f-19ac1fa86a2b",
"name": "Match non-indexed changes"
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "={{{ \n versions: $input.all()\n .map(item => item.json.version)\n .sort((a, b) => {\n const versionA = a.split('.').map(Number);\n const versionB = b.split('.').map(Number);\n \n for (let i = 0; i < 3; i++) {\n if (versionA[i] > versionB[i]) return -1;\n if (versionA[i] < versionB[i]) return 1;\n }\n \n return 0;\n })} \n}}",
"options": {}
},
"id": "96a54c52-8135-42c8-ad00-048b7d6efc5d",
"name": "Edit Fields3",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-820,
302
],
"executeOnce": true
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $('When chat message received').item.json.sessionId }}",
"contextWindowLength": 100
},
"id": "f80ab970-be05-4223-926d-c4b1a6a8f7ba",
"name": "Window Buffer Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.2,
"position": [
-160,
462
]
},
{
"parameters": {
"name": "get_specific_version",
"description": "Call this tool to get changes for a specific n8n version",
"workflowId": {
"__rl": true,
"value": "3xnlsX2oneLuOzdl",
"mode": "list",
"cachedResultName": "My workflow 579"
},
"fields": {
"values": [
{
"name": "tool",
"stringValue": "get_specific_version"
}
]
},
"specifyInputSchema": true,
"schemaType": "manual",
"inputSchema": "{\n\"type\": \"object\",\n\"properties\": {\n\t\"version\": {\n \"type\": \"string\",\n\t\t\"description\": \"A semvar version, for example, 1.11.1\"\n }\n}\n}"
},
"id": "8e9859b5-8da0-4682-80e7-7363d16a441f",
"name": "get_specific_version",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 1.2,
"position": [
140,
660
]
},
{
"parameters": {
"options": {}
},
"id": "86dea2a4-59c9-47bc-8c8e-63add9a606b4",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
-360,
460
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"public": true,
"options": {}
},
"id": "0b501e62-b018-48b2-b94e-c52b00c28838",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"typeVersion": 1.1,
"position": [
-1340,
302
]
},
{
"parameters": {
"content": "## Get all available versions & format them for LLM",
"height": 221.42270244777907,
"width": 621.1357433939111
},
"id": "07aef6c9-80e5-4003-8784-a498e46f1f52",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1160,
240
]
},
{
"parameters": {
"mode": "load",
"pineconeIndex": {
"__rl": true,
"value": "n8n-changelog",
"mode": "list",
"cachedResultName": "n8n-changelog"
},
"prompt": "={{ $json.query.version }}",
"topK": 100,
"options": {
"pineconeNamespace": "changes_new",
"metadata": {
"metadataValues": [
{
"name": "version",
"value": "={{ $json.query.version }}"
}
]
}
}
},
"id": "cce9d6b0-54c9-4af9-899e-53642949f126",
"name": "Search with Metadata",
"type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
"typeVersion": 1,
"position": [
-1280,
700
],
"alwaysOutputData": true,
"credentials": {
"pineconeApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "load",
"pineconeIndex": {
"__rl": true,
"value": "n8n-changelog",
"mode": "list",
"cachedResultName": "n8n-changelog"
},
"prompt": "={{ $json.query.search_query }}",
"topK": 40,
"options": {
"pineconeNamespace": "changes_new"
}
},
"id": "f972edd8-a4f6-4c01-ba14-75f6c735c354",
"name": "Search All",
"type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
"typeVersion": 1,
"position": [
-1280,
860
],
"alwaysOutputData": true,
"credentials": {
"pineconeApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"content": "## Agent tools in-workflow routing\n",
"width": 412.5597972601356
},
"id": "674ed5fc-4715-427a-bdb9-df55a5716cb1",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1860,
680
]
},
{
"parameters": {
"mode": "insert",
"pineconeIndex": {
"__rl": true,
"value": "n8n-changelog",
"mode": "list",
"cachedResultName": "n8n-changelog"
},
"options": {
"clearNamespace": false,
"pineconeNamespace": "changes_new"
}
},
"id": "a23d0f9d-de39-4ee1-9b6d-1468b8910379",
"name": "Pinecone Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
"typeVersion": 1,
"position": [
720,
-40
],
"credentials": {
"pineconeApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "={{ $('When chat message received').item.json.chatInput }}",
"options": {
"systemMessage": "=You are an AI assistant specializing in n8n changelogs. Your primary function is to help users understand changes, updates, and issues related to n8n versions. You have access to three powerful tools that allow you to retrieve and search for information about n8n changes and issues.\n\n## Your Responsibilities\n\n1. Provide accurate and relevant information about n8n changes, updates, and issues.\n2. Use the provided tools effectively to answer user queries.\n3. Offer clear explanations and summaries of the information you retrieve.\n4. Guide users to the most relevant information based on their queries.\n\n## Guidelines for Interaction\n\n1. Greet users and introduce yourself as the n8n Changelog Assistant.\n2. Always analyze the user's query carefully to determine which tool(s) would be most appropriate to use.\n3. If a query is ambiguous, ask for clarification before using any tools.\n4. When using tools, provide clear reasoning for why you're using a particular tool.\n5. After retrieving information, present it comprehensively and organize it clearly.\n6. If the information retrieved doesn't fully answer the user's query, consider using additional tools or asking the user for more details.\n7. Be prepared to explain technical terms or concepts related to n8n that users might not understand.\n8. If a user asks about a specific version or changes since a specific version, always use the get_specific_version tool first, and then use search_all to compile a comprehensive list of changes.\n9. For general queries or searches across multiple versions, use the search_all tool.\n10. When users mention specific issues or ask for detailed information about a particular problem, use the get_issue_detail tool.\n11. When asked about changes since a specific version, provide ALL changes, not just the most notable ones. Use multiple API calls if necessary to compile a complete list.\n\n## Response Format\n\n1. Tool Usage: When you use a tool, clearly state which tool you're using and why.\n Example: \"To provide a comprehensive list of changes since n8n version 1.51.0, I'll use the get_specific_version tool for each subsequent version, starting from 1.52.0 up to the latest version.\"\n\n2. Information Presentation: After retrieving information, present ALL changes in a clear, organized manner. Use markdown formatting for better readability. Group changes by version and type (e.g., Features, Bug Fixes, Enhancements).\n Example:\n \"Here's a complete list of changes since n8n version 1.51.0:\n\n Version 1.52.0:\n Features:\n - Feature A: Description of Feature A\n - Feature B: Description of Feature B\n Bug Fixes:\n - Bug Fix C: Details of Bug Fix C\n - Bug Fix D: Details of Bug Fix D\n Enhancements:\n - Enhancement E: Explanation of Enhancement E\n\n Version 1.53.0:\n [List all changes in the same format]\n\n ... [Continue for all versions up to the latest]\"\n\n3. Follow-up: Always ask if the user needs more information or has any questions about the provided information.\n\n## Error Handling\n\n1. If a tool doesn't return the expected information, acknowledge this and consider using a different tool or asking the user for more details.\n2. If you encounter information you're not certain about, express your uncertainty and suggest ways to find more accurate information.\n\nRemember, your goal is to be a helpful, accurate, and efficient assistant for all matters related to n8n changelogs. Always strive to provide the most relevant, up-to-date, and COMPLETE information to users, especially when they ask about changes since a specific version.\n\nCurrent date: {{ $now.format('yyyy-MM-dd') }}\n\nAvailable n8n versions from newest to oldest:\n- {{ $json.versions.join('\\n- ') }}"
}
},
"id": "5adc8e49-eaba-4c78-8992-77525bddbc1e",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.6,
"position": [
-280,
302
]
},
{
"parameters": {},
"id": "e1837604-507e-4219-889e-d6c314fde8d4",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-1600,
140
]
}
],
"connections": {
"Embeddings OpenAI": {
"ai_embedding": [
[
{
"node": "Pinecone Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Pinecone Vector Store",
"type": "ai_document",
"index": 0
}
]
]
},
"Token Splitter": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Pinecone Vector Store",
"type": "main",
"index": 0
}
]
]
},
"search_all": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Execute Workflow Trigger": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Search with Metadata",
"type": "main",
"index": 0
}
],
[
{
"node": "Search All",
"type": "main",
"index": 0
}
]
]
},
"Embeddings OpenAI1": {
"ai_embedding": [
[
{
"node": "Search with Metadata",
"type": "ai_embedding",
"index": 0
},
{
"node": "Search All",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields1": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields2": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"get_issue_detail": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Split Out1": {
"main": [
[
{
"node": "Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets2": {
"main": [
[
{
"node": "Match non-indexed changes",
"type": "main",
"index": 0
},
{
"node": "Google Sheets3",
"type": "main",
"index": 0
}
]
]
},
"Code": {
"main": [
[
{
"node": "Google Sheets2",
"type": "main",
"index": 0
},
{
"node": "Split Out1",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets1": {
"main": [
[
{
"node": "Edit Fields3",
"type": "main",
"index": 0
}
]
]
},
"Match non-indexed changes": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields3": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Window Buffer Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"get_specific_version": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "Google Sheets1",
"type": "main",
"index": 0
}
]
]
},
"Search with Metadata": {
"main": [
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
]
]
},
"Search All": {
"main": [
[
{
"node": "Edit Fields2",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[]
]
}
},
"meta": {
"templateCredsSetupCompleted": true
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleSheetsOAuth2ApiopenAiApipineconeApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Gist:Olegivaniv. Uses embeddingsOpenAi, documentDefaultDataLoader, textSplitterTokenSplitter, httpRequest. Event-driven trigger; 38 nodes.
Source: https://gist.github.com/OlegIvaniv/1114ec940b050d5518c2d461b554a5f4 — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Alfred (funcional). Uses gmailTool, googleCalendarTool, gmail, embeddingsOpenAi. Event-driven trigger; 83 nodes.
Your AI workforce is ready. Are you?
This comprehensive workflow bundle is designed as a powerful starter kit, enabling you to build a multi-functional AI assistant on Telegram. It seamlessly integrates AI-powered voice interactions, an
Agent IA Projet Client. Uses executeWorkflowTrigger, lmChatOpenAi, toolWorkflow, vectorStoreQdrant. Event-driven trigger; 79 nodes.
This intelligent chatbot leverages cutting-edge financial APIs and AI-driven analysis to deliver comprehensive stock research reports. Get instant access to professional-grade investment analysis that