This workflow follows the Chainllm → Google Gemini Chat 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 →
{
"name": "Bots discuss spec",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-304,
0
],
"id": "987a3b1f-32b3-48eb-957d-dc0eea30be97",
"name": "When clicking \u2018Execute workflow\u2019"
},
{
"parameters": {
"resource": "file",
"operation": "get",
"owner": {
"__rl": true,
"value": "dobryakov",
"mode": "name"
},
"repository": {
"__rl": true,
"value": "bots-discuss-spec",
"mode": "list",
"cachedResultName": "bots-discuss-spec",
"cachedResultUrl": "https://github.com/dobryakov/bots-discuss-spec"
},
"filePath": "chat-history.txt",
"asBinaryProperty": false,
"additionalParameters": {}
},
"type": "n8n-nodes-base.github",
"typeVersion": 1.1,
"position": [
400,
-112
],
"id": "a41232cb-e8ba-4d43-a7df-eeae6d40eecc",
"name": "Get a file",
"credentials": {
"githubApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const input = Buffer.from($json.content, 'base64').toString('utf-8');\n\nconst lines = input\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line.length > 0);\n\nconst result = lines.map(line => {\n const [index, bot, message] = line.split('|');\n\n return {\n index: Number(index),\n bot,\n message\n };\n});\n\nreturn {\n chat_history: lines.join(\"\\n\")\n}"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
608,
-112
],
"id": "828b30e3-1a6a-415f-86da-d822f00572b9",
"name": "Code in JavaScript"
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"leftValue": "={{ $('Edit Fields').item.json.role }}",
"rightValue": "Bitrix_Lead_Bot",
"operator": {
"type": "string",
"operation": "equals"
},
"id": "e00d9c8e-a3f9-4013-a1c9-e116081bb629"
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "Bitrix_Lead_Bot"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "81e4aef5-e2d9-4f48-a4bd-8fccc719e03a",
"leftValue": "={{ $('Edit Fields').item.json.role }}",
"rightValue": "ERPSYS_Head_Bot",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "ERPSYS_Head_Bot"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.switch",
"typeVersion": 3.2,
"position": [
1088,
0
],
"id": "15bb40d8-454a-489a-9e4f-06ca5524149b",
"name": "Switch"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "e910041b-1319-4611-952a-1f02d97243dd",
"name": "role",
"value": "Bitrix_Lead_Bot",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-96,
0
],
"id": "bbaf1446-01a9-4eca-b9c8-7d3a537e9553",
"name": "Edit Fields"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "84c8decf-f246-4915-a25c-bda59409b5fe",
"name": "system_prompt",
"value": "\u0422\u044b - Bitrix_Lead_Bot, \u043b\u0438\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u0434\u0440\u044f\u0434\u0447\u0438\u043a\u0430, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0448\u044c\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0430\u0439\u0442\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 \u043d\u0430 Bitrix.\n\u0422\u0432\u043e\u044f \u0437\u0430\u0434\u0430\u0447\u0430 - \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u0441 ERPSYS_Head_Bot, \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0438\u043a\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 ERP, \u043e\u0431 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 Bitrix \u0438 ERP \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0437\u0430\u043a\u0430\u0437\u043e\u0432 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 \u0432 ERP.\n\n\u0422\u044b \u043c\u043e\u043b\u043e\u0434\u043e\u0439, \u043d\u043e \u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a. \u0412 \u0442\u0432\u043e\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430\u0445 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Bitrix, \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u0434\u0438\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438.\n\n",
"type": "string"
},
{
"id": "921dc42f-bc12-421b-bf05-ba43d08ede92",
"name": "prompt",
"value": "=\u0412\u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 timestamp|role|message:\n\n{{ $json.chat_history }}\n\n---\n\n\u0412\u043e\u0442 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 openspec:\n\n{{ $json.spec_content }}\n\n---\n\n\u0421\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0439 \u0441\u0432\u043e\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u043f\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u044d\u0442\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u041a\u0440\u0430\u0442\u043a\u043e.\n",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1376,
-160
],
"id": "d4f0d7d1-458b-49cf-ac32-d5737fcc71a8",
"name": "Edit Fields1"
},
{
"parameters": {
"resource": "file",
"operation": "get",
"owner": {
"__rl": true,
"value": "dobryakov",
"mode": "list",
"cachedResultName": "dobryakov",
"cachedResultUrl": "https://github.com/dobryakov"
},
"repository": {
"__rl": true,
"value": "bots-discuss-spec",
"mode": "list",
"cachedResultName": "bots-discuss-spec",
"cachedResultUrl": "https://github.com/dobryakov/bots-discuss-spec"
},
"filePath": "openspec.yaml",
"asBinaryProperty": false,
"additionalParameters": {}
},
"type": "n8n-nodes-base.github",
"typeVersion": 1.1,
"position": [
400,
128
],
"id": "f1898eb3-48b9-40de-bd8e-2024f24e629d",
"name": "Get a file1",
"credentials": {
"githubApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "return {\n spec_content: Buffer.from($json.content, 'base64').toString('utf-8')\n}"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
608,
128
],
"id": "f109d36a-e7e6-486b-8572-94944093739f",
"name": "Code in JavaScript1"
},
{
"parameters": {
"mode": "combine",
"combineBy": "combineByPosition",
"options": {}
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
880,
0
],
"id": "34236548-9b98-41f7-a1bd-f455a9c88c8c",
"name": "Merge"
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.prompt }}",
"messages": {
"messageValues": [
{
"message": "={{ $json.system_prompt }}"
}
]
},
"batching": {}
},
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.7,
"position": [
1648,
0
],
"id": "be243fd4-b954-4f3c-8863-b0995adae9a5",
"name": "Basic LLM Chain"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
1648,
192
],
"id": "ffd5e8df-5946-4ffd-9f30-a2d1301736fa",
"name": "Google Gemini Chat Model",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"resource": "file",
"operation": "edit",
"owner": {
"__rl": true,
"value": "dobryakov",
"mode": "list",
"cachedResultName": "dobryakov",
"cachedResultUrl": "https://github.com/dobryakov"
},
"repository": {
"__rl": true,
"value": "bots-discuss-spec",
"mode": "list",
"cachedResultName": "bots-discuss-spec",
"cachedResultUrl": "https://github.com/dobryakov/bots-discuss-spec"
},
"filePath": "chat-history.txt",
"fileContent": "={{ $('Code in JavaScript').item.json.chat_history }}\n{{ Date.now() }}|{{ $('Edit Fields').item.json.role }}|{{ $json.text.replace(/\\n/g, \" \") }}\n",
"commitMessage": "={{ $json.text.substr(0, 80) }}"
},
"type": "n8n-nodes-base.github",
"typeVersion": 1.1,
"position": [
2048,
-144
],
"id": "7e62ff7c-2fc5-48ea-bc2c-2ca0f1eb3bf4",
"name": "Edit a file",
"credentials": {
"githubApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=\u0422\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u0442\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0448\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 openspec:\n\n{{ $('Switch').item.json.spec_content }}\n\n---\n\n\u0422\u0435\u0431\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430:\n\n{{ $json.text }}\n\n---\n\n\u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0439 \u044d\u0442\u043e \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u041e\u0442\u0432\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0431\u0435\u0437 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u0431\u0435\u0437 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439 \u0438 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0439.\n",
"batching": {}
},
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.7,
"position": [
2048,
144
],
"id": "307984f4-ca9b-4365-b506-bbdc11a38836",
"name": "Basic LLM Chain1"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
2048,
336
],
"id": "3420c66b-be1a-425d-bdb4-824d7bfba28b",
"name": "Google Gemini Chat Model1",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"resource": "file",
"operation": "edit",
"owner": {
"__rl": true,
"value": "dobryakov",
"mode": "list",
"cachedResultName": "dobryakov",
"cachedResultUrl": "https://github.com/dobryakov"
},
"repository": {
"__rl": true,
"value": "bots-discuss-spec",
"mode": "list",
"cachedResultName": "bots-discuss-spec",
"cachedResultUrl": "https://github.com/dobryakov/bots-discuss-spec"
},
"filePath": "openspec.yaml",
"fileContent": "={{ $json.text }}",
"commitMessage": "={{ $('Basic LLM Chain').item.json.text.substr(0, 80) }}"
},
"type": "n8n-nodes-base.github",
"typeVersion": 1.1,
"position": [
2592,
144
],
"id": "c6fa3151-8873-470f-9d8b-2485df8b0e5a",
"name": "Edit a file1",
"credentials": {
"githubApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {},
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
112,
0
],
"id": "4c451038-2cc0-4003-83e6-1c390fb8319a",
"name": "No Operation, do nothing"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "84c8decf-f246-4915-a25c-bda59409b5fe",
"name": "system_prompt",
"value": "\u0422\u044b - ERPSYS_Head_Bot, \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0438\u043a \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 ERP, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0448\u044c\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 ERP \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u044f.\n\u0422\u0432\u043e\u044f \u0437\u0430\u0434\u0430\u0447\u0430 - \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u0441 Bitrix_Lead_Bot, \u043b\u0438\u0434\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Bitrix, \u043e\u0431 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 Bitrix \u0438 ERP \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0437\u0430\u043a\u0430\u0437\u043e\u0432 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 \u0432 ERP.\n\n\u0422\u044b \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0439, \u043a\u043e\u043d\u0441\u0435\u0440\u0432\u0430\u0442\u0438\u0432\u043d\u044b\u0439, \u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a. \u0422\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0448\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0433\u043e\u0434\u0430\u043c\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b. \u041e\u0434\u043d\u0430\u043a\u043e \u0442\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 ERP (\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u0430\u044f \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043e\u043a), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0445\u043e\u0434\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u0442\u044b \u043d\u0430\u0441\u0442\u0430\u0438\u0432\u0430\u0435\u0448\u044c \u043d\u0430 \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0438 \u044d\u0442\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0438 \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435\u043e\u0445\u043e\u0442\u043d\u043e \u0438\u0434\u0451\u0448\u044c \u043d\u0430 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u044b.\n\n\n",
"type": "string"
},
{
"id": "921dc42f-bc12-421b-bf05-ba43d08ede92",
"name": "prompt",
"value": "=\u0412\u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 timestamp|role|message:\n\n{{ $json.chat_history }}\n\n---\n\n\u0412\u043e\u0442 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 openspec:\n\n{{ $json.spec_content }}\n\n---\n\n\u0421\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0439 \u0441\u0432\u043e\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u043f\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u044d\u0442\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u041e\u0427\u0415\u041d\u042c \u041a\u0420\u0410\u0422\u041a\u041e.\n",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1376,
176
],
"id": "3a4d384c-7d24-4be1-8482-86d18192fde2",
"name": "Edit Fields2"
},
{
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "return { text: ($json.text.replace(/```yaml/g, \"\").replace(/```/g, \"\").trim()) }"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
2384,
144
],
"id": "480a9f2f-932f-4a55-a67f-bcf595ef7aeb",
"name": "Code in JavaScript2"
}
],
"connections": {
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Get a file": {
"main": [
[
{
"node": "Code in JavaScript",
"type": "main",
"index": 0
}
]
]
},
"Code in JavaScript": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
],
[
{
"node": "Edit Fields2",
"type": "main",
"index": 0
}
]
]
},
"Get a file1": {
"main": [
[
{
"node": "Code in JavaScript1",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Code in JavaScript1": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Edit Fields1": {
"main": [
[
{
"node": "Basic LLM Chain",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "Basic LLM Chain",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Basic LLM Chain": {
"main": [
[
{
"node": "Edit a file",
"type": "main",
"index": 0
},
{
"node": "Basic LLM Chain1",
"type": "main",
"index": 0
}
]
]
},
"Edit a file": {
"main": [
[]
]
},
"Google Gemini Chat Model1": {
"ai_languageModel": [
[
{
"node": "Basic LLM Chain1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Basic LLM Chain1": {
"main": [
[
{
"node": "Code in JavaScript2",
"type": "main",
"index": 0
}
]
]
},
"No Operation, do nothing": {
"main": [
[
{
"node": "Get a file",
"type": "main",
"index": 0
},
{
"node": "Get a file1",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields2": {
"main": [
[
{
"node": "Basic LLM Chain",
"type": "main",
"index": 0
}
]
]
},
"Code in JavaScript2": {
"main": [
[
{
"node": "Edit a file1",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "131dcde9-7ad0-4876-bff0-8fc362bc23c8",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "4JIHE1C4iCi8BBAk",
"tags": []
}
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.
githubApigooglePalmApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Bots discuss spec. Uses github, chainLlm, lmChatGoogleGemini. Event-driven trigger; 18 nodes.
Source: https://github.com/dobryakov/bots-discuss-spec/blob/7e11d5f8caaf900491325aef92cc5cdee3733129/samples/n8n-pipeline.json — 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.
This workflow creates a multi-talented AI assistant named Simran that interacts with users via Telegram. It can handle text and voice messages, understand the user's intent, and perform various tasks.
Content - Newsletter Agent. Uses formTrigger, chainLlm, outputParserStructured, httpRequest. Event-driven trigger; 91 nodes.
A Telegram bot that converts natural-language work descriptions into detailed cost estimates using AI parsing, vector search, and the open-source DDC CWICR database with 55,000+ construction work item
Content - Newsletter Agent. Uses formTrigger, chainLlm, outputParserStructured, httpRequest. Event-driven trigger; 87 nodes.
This template attempts to replicate OpenAI's DeepResearch feature which, at time of writing, is only available to their pro subscribers.