This workflow corresponds to n8n.io template #9149 — we link there as the canonical source.
This workflow follows the Agent → Googlegemini 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 →
{
"id": "0sz7800El6YsOEhI",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Slack AI Agent Base",
"tags": [],
"nodes": [
{
"id": "ce4185b8-002f-4d1a-afb5-7b92f72a6654",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
224,
176
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "voice",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "2c19aba8-aba2-4cf2-aefc-1f1af9277f5d",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.files[0].media_display_type }}",
"rightValue": "audio"
}
]
},
"renameOutput": true
},
{
"outputKey": "picture",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "5e324898-f3d5-4a84-8ca4-94a33849cd6d",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.files[0].mimetype }}",
"rightValue": "image/png"
}
]
},
"renameOutput": true
},
{
"outputKey": "video",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "7b448a1b-5f96-42e3-bfce-dad6b5c45f01",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.files[0].mimetype }}",
"rightValue": "video/mp4"
}
]
},
"renameOutput": true
},
{
"outputKey": "text",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "ef6ba691-a321-4458-af08-6b9f2f39b18a",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.blocks[0].elements[0].elements[1].type }}",
"rightValue": "text"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "f8764c3f-e0d7-4409-825d-805ed9fcb987",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1616,
144
],
"parameters": {
"text": "={{ $json[\"User Input\"] }}",
"options": {
"systemMessage": "You are a helpful, intelligent assistant.\n\nOutput ONLY a plain UTF-8 string for Telegram. \nNo JSON. No code fences. No prefaces. \nIf content is empty, output \"\u2026\"."
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "222d87bc-66ae-48d4-8272-29aae5ce9f03",
"name": "Transcribe a recording",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
976,
16
],
"parameters": {
"options": {},
"resource": "audio",
"operation": "transcribe"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "e5041fd3-f5e7-4351-b539-364f51ed37f3",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1728,
448
],
"parameters": {
"sessionKey": "={{ $('Slack Trigger').item.json.channel }}",
"sessionIdType": "customKey",
"contextWindowLength": 50
},
"typeVersion": 1.3
},
{
"id": "21dc9d8d-c911-469b-9b93-92ee88c25a96",
"name": "Date & Time",
"type": "n8n-nodes-base.dateTimeTool",
"position": [
1968,
448
],
"parameters": {
"options": {}
},
"typeVersion": 2
},
{
"id": "ddff0cde-feb3-415e-9357-33a1d52f8004",
"name": "Anthropic Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
1456,
448
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-20250514",
"cachedResultName": "Claude Sonnet 4"
},
"options": {
"maxTokensToSample": 10000
}
},
"credentials": {
"anthropicApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "f52eba8b-f1e1-4b58-8dbd-5070673c809b",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-528,
-48
],
"parameters": {
"color": 7,
"width": 432,
"height": 560,
"content": "# INSTRUCTIONS\n\n## 1. Create your chat bot and generate access token in Slack\n(Check documentation for more in-depth help)\n-> Create Slack bot \n-> Allow Permissions\n-> Install App in desired workspace\n-> Copy access token for Slack Connection in Step 2 below\n\n## 2. Create Credentials in n8n\n-> Open Slack trigger node\n-> Click create credential\n-> Paste access token\n-> Save\n\n## 3. Create LLM access token\nDifferent per LLM but search your LLM + API in google\n-> (will have to create an account with the LLM platform)\n-> buy credits to use LLM API\n-> Generate Access token\n-> Paste token in LLM node"
},
"typeVersion": 1
},
{
"id": "ffa1adaa-36e0-488b-a1da-42c11a4c0f6c",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
-48
],
"parameters": {
"color": 5,
"width": 208,
"height": 496,
"content": "### Waits for Slack message to start workflow"
},
"typeVersion": 1
},
{
"id": "bb7289d3-db39-416f-baec-e3fb131b81f3",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
176,
-48
],
"parameters": {
"color": 5,
"width": 208,
"height": 496,
"content": "### Determines what type of message was sent"
},
"typeVersion": 1
},
{
"id": "b31e49df-04c8-498f-80e4-33e400007b22",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
480,
-48
],
"parameters": {
"color": 5,
"width": 192,
"height": 208,
"content": "### Gets Audio File"
},
"typeVersion": 1
},
{
"id": "f3db8810-569e-4bf7-8147-76aa6e2e4a25",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
928,
-48
],
"parameters": {
"color": 5,
"width": 208,
"height": 208,
"content": "### Uses OpenAI to Transcribe Recording"
},
"typeVersion": 1
},
{
"id": "8f0822c6-9479-4aa1-92c6-cc0cb43079bc",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1392,
352
],
"parameters": {
"width": 224,
"height": 224,
"content": "### Choose any LLM you want here"
},
"typeVersion": 1
},
{
"id": "a39401d6-fed8-47ea-82af-de561df1b32e",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1584,
-48
],
"parameters": {
"color": 5,
"width": 288,
"height": 368,
"content": "### Base AI Agent. Adjust \"system prompt\" to personalize this agent to your needs"
},
"typeVersion": 1
},
{
"id": "d8b86141-a03a-419c-854d-a57269cc4898",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1904,
-48
],
"parameters": {
"color": 5,
"width": 224,
"height": 368,
"content": "### Sends AI Agent output to you in Slack"
},
"typeVersion": 1
},
{
"id": "3fefd42d-52cc-438c-b4cb-99620e58f6a6",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1664,
352
],
"parameters": {
"width": 208,
"height": 224,
"content": "### Choose # of messages the LLM can read back"
},
"typeVersion": 1
},
{
"id": "028b7ead-a437-470e-920e-5d0d1c9cae98",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1904,
352
],
"parameters": {
"width": 224,
"height": 224,
"content": "### Add tools that the LLM has access to here"
},
"typeVersion": 1
},
{
"id": "f9b36773-7ded-446d-86ac-889740af3699",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
480,
192
],
"parameters": {
"color": 5,
"width": 192,
"height": 208,
"content": "### Gets Photo File"
},
"typeVersion": 1
},
{
"id": "d49cb62d-917f-4cb9-9080-363f3259d861",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
928,
192
],
"parameters": {
"color": 5,
"width": 208,
"height": 208,
"content": "### Uses Gemini to analyze photo"
},
"typeVersion": 1
},
{
"id": "2f40620a-0c0b-4f99-ba5a-6700c3cc38b3",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
1232,
112
],
"parameters": {
"numberInputs": 4
},
"typeVersion": 3.2
},
{
"id": "20c873b1-a8ea-40ce-a0e6-0b424a76ff8d",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"position": [
1392,
-48
],
"parameters": {
"color": 5,
"width": 160,
"height": 368,
"content": "### Creates a unified input to pass to AI Agent"
},
"typeVersion": 1
},
{
"id": "db7460e7-6c91-40de-989c-aa729d26bd85",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
480,
432
],
"parameters": {
"color": 5,
"width": 192,
"height": 208,
"content": "### Gets Video File"
},
"typeVersion": 1
},
{
"id": "25433506-93df-4a6b-91c1-65bbe24427f5",
"name": "Sticky Note14",
"type": "n8n-nodes-base.stickyNote",
"position": [
928,
432
],
"parameters": {
"color": 5,
"width": 208,
"height": 208,
"content": "### Uses Gemini to analyze Video"
},
"typeVersion": 1
},
{
"id": "1c3a6c58-96b3-46be-9a48-8a8d951076c2",
"name": "Analyze video",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
976,
496
],
"parameters": {
"text": "={{ $('Slack Trigger').item.json.text }}",
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-flash",
"cachedResultName": "models/gemini-2.5-flash"
},
"options": {},
"resource": "video",
"inputType": "binary",
"operation": "analyze"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "695ac1ab-48bd-48f3-9797-482fb4bb5ade",
"name": "Analyze an image",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
976,
256
],
"parameters": {
"text": "={{ $('Slack Trigger').item.json.text }}",
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-flash",
"cachedResultName": "models/gemini-2.5-flash"
},
"options": {},
"resource": "image",
"inputType": "binary",
"operation": "analyze"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "dfbb869b-c80b-40c8-8df8-11a951a93b77",
"name": "Slack Trigger",
"type": "n8n-nodes-base.slackTrigger",
"position": [
-16,
208
],
"parameters": {
"options": {},
"trigger": [
"app_mention",
"message"
],
"channelId": {
"__rl": true,
"mode": "list",
"value": "C09HD4Z93T7",
"cachedResultName": "ai-agent"
}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "4e18fc91-e742-4da4-8416-9a9b57cb2de0",
"name": "Send a message",
"type": "n8n-nodes-base.slack",
"position": [
1968,
144
],
"parameters": {
"text": "={{ $('AI Agent').item.json.output }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "C09HD4Z93T7"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "1e78889b-6686-4f45-91cc-72df6843df10",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"position": [
752,
16
],
"parameters": {
"url": "={{ $json.url_private }}",
"options": {
"redirect": {
"redirect": {}
},
"response": {
"response": {}
}
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer [Your bot token here]"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "0623e545-fa6c-4162-80ff-85a9ec99b148",
"name": "Sticky Note15",
"type": "n8n-nodes-base.stickyNote",
"position": [
704,
-48
],
"parameters": {
"color": 5,
"width": 192,
"height": 688,
"content": "### Download File"
},
"typeVersion": 1
},
{
"id": "e9328967-f8c6-4654-89b0-e5ddf4945b3a",
"name": "HTTP Request1",
"type": "n8n-nodes-base.httpRequest",
"position": [
752,
256
],
"parameters": {
"url": "={{ $json.url_private }}",
"options": {
"redirect": {
"redirect": {}
},
"response": {
"response": {}
}
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer [Your bot token here]"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "68b9c45f-b20a-42ce-9158-000c43763128",
"name": "HTTP Request2",
"type": "n8n-nodes-base.httpRequest",
"position": [
752,
496
],
"parameters": {
"url": "={{ $json.url_private }}",
"options": {
"redirect": {
"redirect": {}
},
"response": {
"response": {}
}
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer [Your bot token here]"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "b00f89d5-d32c-4417-a2d7-ffed1b1b8572",
"name": "Get Audio File",
"type": "n8n-nodes-base.slack",
"position": [
528,
16
],
"parameters": {
"fileId": "={{ $json.files[0].id }}",
"resource": "file",
"operation": "get"
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "afa71e24-0ea2-464b-bb8d-c6af2c09cfab",
"name": "Get a Picture File",
"type": "n8n-nodes-base.slack",
"position": [
528,
256
],
"parameters": {
"fileId": "={{ $json.files[0].id }}",
"resource": "file",
"operation": "get"
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "ab84c6ee-0704-4846-85ae-c94d3b69d12b",
"name": "Get Video File",
"type": "n8n-nodes-base.slack",
"position": [
528,
496
],
"parameters": {
"fileId": "={{ $json.files[0].id }}",
"resource": "file",
"operation": "get"
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "1753c69a-cf19-41d9-b65a-e75d1dd685c0",
"name": "Set \"User Input\" for AI Agent",
"type": "n8n-nodes-base.set",
"position": [
1424,
144
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "4f68c522-dd1e-45dc-ab39-f5b640bfe274",
"name": "User Input",
"type": "string",
"value": "={{$json.text || $json.message?.text || $json.content || $json[\"data\"] || $json.result || $json.transcription || \"\"}}"
}
]
}
},
"typeVersion": 3.4
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "6c042ce2-b81b-4765-9f11-e16f5cb33755",
"connections": {
"Merge": {
"main": [
[
{
"node": "Set \"User Input\" for AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Get Audio File",
"type": "main",
"index": 0
}
],
[
{
"node": "Get a Picture File",
"type": "main",
"index": 0
}
],
[
{
"node": "Get Video File",
"type": "main",
"index": 0
}
],
[
{
"node": "Merge",
"type": "main",
"index": 3
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Date & Time": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "Transcribe a recording",
"type": "main",
"index": 0
}
]
]
},
"Analyze video": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 2
}
]
]
},
"HTTP Request1": {
"main": [
[
{
"node": "Analyze an image",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request2": {
"main": [
[
{
"node": "Analyze video",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Slack Trigger": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Get Audio File": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Get Video File": {
"main": [
[
{
"node": "HTTP Request2",
"type": "main",
"index": 0
}
]
]
},
"Analyze an image": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Get a Picture File": {
"main": [
[
{
"node": "HTTP Request1",
"type": "main",
"index": 0
}
]
]
},
"Anthropic Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Transcribe a recording": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Set \"User Input\" for AI Agent": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
anthropicApigooglePalmApiopenAiApislackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This is a base template for anyone trying to develop a Slack bot AI Agent. This base allows for multiple inputs (Voice, Picture, Video, and Text inputs) to be processed by an AI model of their choosing to a get a User started. From here, the User may connect any tools that they…
Source: https://n8n.io/workflows/9149/ — 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 is a base template for anyone trying to develop a telegram AI Agent. This base allows for multiple inputs (Voice, Picture, Video, and Text inputs) to be processed by an AI model of their choosing
Chat with a multi-agent system to write a blog. The orchestrator advances through research, headlines, hooks, outline, intro, draft, and final polish–one phase per reply—outputting options and asking
Slack workspace with admin access Anthropic API key (You can replace with other LLM Chat) Explorium API Key Go to api.slack.com/apps Click Create New App → From scratch Give it name (e.g., "Explorium
Who is this for? Agencies, consultants, and service providers who conduct discovery calls and need to quickly turn conversations into professional proposals.
📺 Full walkthrough video: https://youtu.be/-kpt0BwjKls