This workflow follows the Agent → Chainllm 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": "kisisel asistan",
"nodes": [
{
"parameters": {
"name": "emailAgent",
"description": "Call this tool for any email actions.",
"workflowId": {
"__rl": true,
"value": "giQBft9b4Inr5H0d",
"mode": "list",
"cachedResultUrl": "/workflow/giQBft9b4Inr5H0d",
"cachedResultName": "email agent"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {},
"matchingColumns": [],
"schema": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2,
"position": [
3296,
304
],
"id": "78f1daf4-01dc-4904-be1c-f5fea9ca7886",
"name": "Email Agent"
},
{
"parameters": {
"name": "contactAgent",
"description": "Call this tool for any contact related actions.",
"workflowId": {
"__rl": true,
"value": "z9BZN7zAYT0kHNAB",
"mode": "list",
"cachedResultUrl": "/workflow/z9BZN7zAYT0kHNAB",
"cachedResultName": "contact agent"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {},
"matchingColumns": [],
"schema": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2,
"position": [
3408,
304
],
"id": "8c3b4068-b419-4f71-91df-db4c01795a2c",
"name": "Contact Agent"
},
{
"parameters": {
"toolDescription": "Use this tool to search the internet",
"method": "POST",
"url": "https://api.tavily.com/search",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\n \"api_key\": \"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\",\n \"query\": \"{searchTerm}\",\n \"search_depth\": \"basic\",\n \"include_answer\": true,\n \"topic\": \"news\",\n \"include_raw_content\": true,\n \"max_results\": 3\n} ",
"placeholderDefinitions": {
"values": [
{
"name": "searchTerm",
"description": "What the user has requested to search the internet for",
"type": "string"
}
]
}
},
"type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
"typeVersion": 1.1,
"position": [
3520,
304
],
"id": "395fa315-9b6f-4182-af69-ebbd1acec128",
"name": "Tavily"
},
{
"parameters": {},
"type": "@n8n/n8n-nodes-langchain.toolCalculator",
"typeVersion": 1,
"position": [
3184,
976
],
"id": "6cd96907-8496-4d94-8f40-f97d6da3a769",
"name": "Calculator"
},
{
"parameters": {
"name": "calendarAgent",
"description": "Call this tool for any calendar action.",
"workflowId": {
"__rl": true,
"value": "m7HK9QpyoXN654aQ",
"mode": "list",
"cachedResultUrl": "/workflow/m7HK9QpyoXN654aQ",
"cachedResultName": "calender agent"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {},
"matchingColumns": [],
"schema": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2,
"position": [
3184,
816
],
"id": "8abd7b09-8259-42f4-975f-6d05f26d3221",
"name": "Calendar Agent"
},
{
"parameters": {},
"type": "@n8n/n8n-nodes-langchain.toolThink",
"typeVersion": 1,
"position": [
3040,
976
],
"id": "dd1307be-33a5-44ef-9b52-24a07c0f1c11",
"name": "Think"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "fe7ecc99-e1e8-4a5e-bdd6-6fce9757b234",
"name": "chatInput",
"value": "={{ $json.messages[0].text.body }}",
"type": "string"
}
]
},
"options": {}
},
"id": "930eab9b-28c3-4e92-b397-7cbe40544275",
"name": "Set 'Text'",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
864,
224
]
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "9bff8dce-d687-47a0-9007-b585889868b1",
"leftValue": "={{ $json.messages[0].type }}",
"rightValue": "=text",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "text"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "3b224b18-0973-4c73-88ab-92f42d6fc6e3",
"leftValue": "={{ $json.messages[0].type }}",
"rightValue": "image",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "image"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "7b02e521-27b2-4a91-a812-c2ab1f89d9fd",
"leftValue": "={{ $json.messages[0].type }}",
"rightValue": "audio",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "audio"
}
]
},
"options": {}
},
"id": "40b1ffa4-58fb-4b36-83f6-a74674496253",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"typeVersion": 3.2,
"position": [
-16,
544
]
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
-32,
-64
],
"id": "989f084d-f348-415a-be78-c747a36e99b6",
"name": "Google Gemini Chat Model",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"include": "specifiedFields",
"fieldsToInclude": "id, From, To, CC, snippet",
"options": {}
},
"id": "500ffc19-3dce-40de-bf54-8ae752041194",
"name": "Email Data Organize Et",
"type": "n8n-nodes-base.aggregate",
"position": [
-240,
-176
],
"typeVersion": 1
},
{
"parameters": {
"promptType": "define",
"text": "=Sen bir e-posta \u00f6zetleyici asistans\u0131n. A\u015fa\u011f\u0131daki e-posta verilerini analiz et:\n\n1. Her e-posta i\u00e7in k\u0131sa ve anlaml\u0131 bir \u00f6zet olu\u015ftur ve bunu `summary_of_emails` alt\u0131nda listele.\n2. E\u011fer herhangi bir aksiyon al\u0131nmas\u0131 gerekiyorsa, bunu `actions` alt\u0131nda belirt.\n3. Her e-posta \u00f6zeti `<from>` etiketi i\u00e7inde g\u00f6nderenin **isim ve e-posta adresi** bilgisiyle birlikte verilmelidir. \n - `From` alan\u0131 \u015fu formattaysa: `\"Emrullah Yaprak <yprkemrullah@gmail.com>\"`, o zaman `<from>Emrullah Yaprak (yprkemrullah@gmail.com)</from>` \u015feklinde yaz\u0131lmal\u0131d\u0131r.\n4. \u00d6zellikle a\u015fa\u011f\u0131daki t\u00fcrde i\u00e7erikleri aksiyon olarak \u00e7\u0131kar:\n - \u00d6deme yap\u0131lmas\u0131 gereken durumlar (\u00f6rn. \"5 g\u00fcn i\u00e7inde \u00f6deme yap\u0131lmal\u0131\", \"fatura ektedir\")\n - Belirli bir tarihe kadar yap\u0131lmas\u0131 gereken i\u015fler\n - Acil olarak yan\u0131t verilmesi istenen mailler\n - Toplant\u0131/etkinlik kat\u0131l\u0131m\u0131, teyit verilmesi gereken durumlar\n - \u0130ptaller, son tarihler, talepler vb.\n5. T\u00fcm yan\u0131tlar T\u00fcrk\u00e7e olmal\u0131.\n6. En son telegram mesaj iletildi yazd\u0131\u011f\u0131n zaman yan\u0131na att\u0131\u011f\u0131n mailin linkini ekle.\n\nVeri a\u015fa\u011f\u0131daki gibidir:\n\nInput:\n{{ $json.data.toJsonString() }}\n\nBeklenen \u00e7\u0131kt\u0131 format\u0131:\n```json\n{\n \"summary_of_emails\": [\n \"<from>Umut Cakir (umut@udivastudio.com)</from>: K\u0131sa \u00f6zet 1\",\n \"<from>Umut Cakir (umut@udivastudio.com)</from>: K\u0131sa \u00f6zet 2\"\n ],\n \"actions\": [\n {\n \"name\": \"Umut Cakir\",\n \"action\": \"Yan\u0131t verilmesi gerekiyor\"\n }\n ]\n}\n\n",
"hasOutputParser": true
},
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.6,
"position": [
-16,
-288
],
"id": "288aba0e-e8c5-4a08-bf93-8ee72961fc80",
"name": "Email \u00d6zetleyici"
},
{
"parameters": {
"sendTo": "atisamo6776@gmail.com",
"subject": "=G\u00fcnl\u00fck E-Mail \u00d6zet - {{\n (() => {\n const date = new Date();\n date.setDate(date.getDate() - 1);\n return date.toLocaleDateString('tr-TR', {\n timeZone: 'Europe/Istanbul',\n day: '2-digit',\n month: 'short',\n year: 'numeric'\n });\n })()\n}}",
"message": "=<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>24 Saatlik Email \u00d6zet -</title>\n <style>\n body {\n font-family: Arial, sans-serif;\n margin: 0;\n padding: 0;\n background-color: #f9f9f9;\n color: #333;\n line-height: 1.6;\n }\n .email-container {\n max-width: 600px;\n margin: 20px auto;\n background: #ffffff;\n border: 1px solid #ddd;\n border-radius: 10px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n }\n .email-header {\n background-color: #0073e6;\n color: #fff;\n padding: 20px;\n text-align: center;\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n }\n .email-header h1 {\n margin: 0;\n font-size: 24px;\n }\n .email-content {\n padding: 20px;\n }\n .section-title {\n font-size: 20px;\n color: #0073e6;\n margin-bottom: 10px;\n }\n ul {\n list-style: none;\n padding: 0;\n }\n ul li {\n margin: 10px 0;\n padding: 10px;\n background: #f4f4f4;\n border-left: 4px solid #0073e6;\n border-radius: 5px;\n }\n .action-item {\n font-weight: bold;\n margin: 5px 0;\n }\n .action-detail {\n margin-left: 10px;\n }\n .email-footer {\n background-color: #0073e6;\n color: #fff;\n text-align: center;\n padding: 10px;\n font-size: 14px;\n border-bottom-left-radius: 10px;\n border-bottom-right-radius: 10px;\n }\n </style>\n</head>\n<body>\n <div class=\"email-container\">\n <div class=\"email-header\">\n <h1>Email \u00d6zet</h1>\n </div>\n <div class=\"email-content\">\n <div>\n <h2 class=\"section-title\">Email \u00d6zeti:</h2>\n <ul>\n {{ $json.output.summary_of_emails.map(email => `<li>${email}</li>`).join('') }}\n </ul>\n </div>\n <div>\n <h2 class=\"section-title\">Aksiyonlar:</h2>\n <ul>\n {{ $json.output.actions.map(action => `\n <li>\n <span class=\"action-item\">${action.name}:</span>\n <span class=\"action-detail\">${action.action}</span>\n </li>\n `).join('') }}\n </ul>\n </div>\n </div>\n <div class=\"email-footer\">\n<p>Atilla Cloud</p>\n </div>\n </div>\n</body>\n</html>",
"options": {
"appendAttribution": false,
"replyToSenderOnly": false
}
},
"id": "420a8d6d-a227-4c56-ac96-aea58a2a74dd",
"name": "\u00d6zet G\u00f6nder",
"type": "n8n-nodes-base.gmail",
"position": [
352,
-288
],
"typeVersion": 2.1,
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "getAll",
"returnAll": true,
"filters": {
"q": "={{ (() => {\n const start = new Date();\n start.setDate(start.getDate() - 1);\n const end = new Date();\n const format = (d) => `${d.getFullYear()}/${(d.getMonth()+1).toString().padStart(2, '0')}/${d.getDate().toString().padStart(2, '0')}`;\n return `-from:gloozedrey132@gmail.com after:${format(start)} before:${format(end)}`;\n})() }}",
"readStatus": "unread"
}
},
"id": "d2e664c1-38a1-4dcb-a21b-29a0ee8a7e0c",
"name": "Bir \u00d6nceki G\u00fcn Okunmayan Emailleri Getir",
"type": "n8n-nodes-base.gmail",
"position": [
-464,
-176
],
"typeVersion": 2.1,
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 8
}
]
}
},
"id": "16c0db54-fe04-4fd1-a29a-ad63ef20a943",
"name": "G\u00fcnl\u00fck Sabah 8de \u00c7al\u0131\u015facak",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-672,
-176
],
"typeVersion": 1.2
},
{
"parameters": {
"jsonSchemaExample": "{\n \"summary_of_emails\": [\n \"<from>Emrullah Yaprak (yprkemrullah@gmail.com)</from>: K\u0131sa \u00f6zet 1\",\n \"<from>Hasan Ters (hsnters@gmail.com)</from>: K\u0131sa \u00f6zet 2\"\n ],\n \"actions\": [\n {\n \"name\": \"Hasan Ters\",\n \"action\": \"Yan\u0131t verilmesi gerekiyor\"\n }\n ]\n}\n"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.2,
"position": [
128,
-64
],
"id": "99dfec6e-5820-4341-8f52-0706a9e5718f",
"name": "Structured Output Parser"
},
{
"parameters": {
"operation": "getAll",
"calendar": {
"__rl": true,
"value": "atisamo6776@gmail.com",
"mode": "list",
"cachedResultName": "atisamo6776@gmail.com"
},
"timeMin": "={{ $fromAI(\"dayBefore\",\"the day before the date the user requested\") }}",
"timeMax": "={{ $fromAI(\"dayAfter\",\"the day after the date the user requested\") }}",
"options": {}
},
"type": "n8n-nodes-base.googleCalendarTool",
"typeVersion": 1.3,
"position": [
1152,
-80
],
"id": "1dac3233-7772-4ae9-ab53-2c1c0fb25d6a",
"name": "Get Events",
"credentials": {
"googleCalendarOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 8
}
]
}
},
"id": "eff32d39-cd7c-4a18-ab40-d515ec785713",
"name": "G\u00fcnl\u00fck Sabah 8de \u00c7al\u0131\u015facak1",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
800,
-272
],
"typeVersion": 1.2
},
{
"parameters": {
"promptType": "define",
"text": "=Bug\u00fcn program\u0131mda ne var?",
"options": {
"systemMessage": "=# Sen Atilla Beyin ki\u015fisel takvim asistan\u0131s\u0131n.\n\n# Ve bu workflow her tetiklendi\u011finde yani (saat 8 a.m'de) o g\u00fcnk\u00fc program\u0131 at.\n\n#getEvents i kullanarak o g\u00fcn\u00fcn program\u0131n\u0131 \u015fu \u015fekilde at.\n\n#\u00d6RNEK TARZ#\n\nMerhaba Umut Bey, bug\u00fcn program\u0131n\u0131zda:\n- 10:00-11:00 Kahvalt\u0131\n- 13:00-14:00 Ofis\n- 16:00-17:00 Mehmet Bey ile i\u015f g\u00f6r\u00fc\u015fmesi\n\n## Final Notes\nHere is the current date/time: {{ $now }}\nIf a duration for an event isn't specified, assume it will be one hour."
}
},
"id": "afb0cecc-a783-469a-8747-e38a2dbc844d",
"name": "Calendar Agent1",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.6,
"position": [
1008,
-272
],
"onError": "continueErrorOutput"
},
{
"parameters": {
"model": {
"__rl": true,
"value": "gpt-4o-mini",
"mode": "list",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
2496,
816
],
"id": "883c9183-fa02-468e-8550-d5aa9afd3bc6",
"name": "OpenAI Chat Model",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "1",
"contextWindowLength": 25
},
"type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
"typeVersion": 1.3,
"position": [
2640,
816
],
"id": "49b3341a-a054-4661-93fb-a3aee63c43ad",
"name": "atik suparbase n8n chat history",
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"updates": [
"messages"
],
"options": {}
},
"type": "n8n-nodes-base.whatsAppTrigger",
"typeVersion": 1,
"position": [
-688,
576
],
"id": "8581cad3-f304-46ff-922b-dfbfa85cd33c",
"name": "WhatsApp Trigger",
"credentials": {
"whatsAppTriggerApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "send",
"phoneNumberId": "762385906963040",
"recipientPhoneNumber": "905416349294",
"textBody": "={{ $json.message }}",
"additionalFields": {}
},
"type": "n8n-nodes-base.whatsApp",
"typeVersion": 1,
"position": [
3696,
576
],
"id": "a60c3e24-0b64-4729-bb94-5dfa350957d9",
"name": "Send message",
"credentials": {
"whatsAppApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "getAll",
"tableId": "atik-asistan",
"returnAll": true
},
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
560,
1200
],
"id": "4e06264c-e2ec-4f59-b538-2650a9a58b86",
"name": "Get many rows",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "bilgi"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
960,
1200
],
"id": "68169039-90a7-460d-b974-a95560405858",
"name": "Aggregate"
},
{
"parameters": {},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
1984,
560
],
"id": "0e490b40-6c28-4f2a-9c4a-e8707d973265",
"name": "Merge"
},
{
"parameters": {
"jsCode": "// \u00d6nceki node'dan gelen t\u00fcm verileri al\nconst items = $input.all();\n\n// \"bilgi\" alan\u0131n\u0131 i\u00e7eren objeyi bul\nconst bilgiArray = items.find(item => item.json.bilgi)?.json.bilgi || [];\n\n// T\u00fcm elemanlar\u0131 virg\u00fclle birle\u015ftir\nconst result = bilgiArray.join(\", \");\n\n// Sonucu tek \u00e7\u0131kt\u0131 olarak d\u00f6nd\u00fcr\nreturn [{ json: { merged_bilgi: result } }];\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1184,
1200
],
"id": "d0a83e0e-0207-4570-994c-e8b1e8e9ce7d",
"name": "Code in JavaScript"
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.chatInput }}",
"options": {
"systemMessage": "=G\u00fcncel zaman/tarih: {{ $now }}\n\nSen, kullan\u0131c\u0131 hakk\u0131nda \"an\u0131\" ekleme ve okuma yetene\u011fine sahip yard\u0131mc\u0131 bir asistans\u0131n.\n\nYeni bir an\u0131 veya i\u00e7g\u00f6r\u00fcy\u00fc son an\u0131lar listesinin en \u00fcst\u00fcne eklemek i\u00e7in, kullan\u0131c\u0131 hakk\u0131nda k\u0131sa, tek c\u00fcmlelik i\u00e7g\u00f6r\u00fcler eklemene olanak tan\u0131yan memory_tool arac\u0131n\u0131 kullanabilirsin. Bu, gelecekte yan\u0131tlar\u0131n\u0131 ki\u015fiselle\u015ftirmeni kolayla\u015ft\u0131r\u0131r.\n\nHer zaman an\u0131lara g\u00f6re \u201c\u00f6zelle\u015ftirme\u201d yapmak zorunda de\u011filsin, ancak yan\u0131t\u0131n\u0131 ki\u015fiselle\u015ftirmek i\u00e7in iyi bir neden varsa a\u015fa\u011f\u0131daki an\u0131lar\u0131 kullanabilirsin. Bunlar senin taraf\u0131ndan eklenmi\u015f an\u0131lard\u0131r. Kullan\u0131c\u0131 hakk\u0131nda gelecekte daha fazla bilgi edinmek istersen, onlar\u0131n tercihlerini not etmek i\u00e7in sorular sorabilirsin.\n\nKullan\u0131c\u0131n\u0131n mevcut an\u0131lar\u0131n\u0131 kullanarak ge\u00e7mi\u015f i\u00e7g\u00f6r\u00fcleri hat\u0131rla.\nE\u011fer kullan\u0131c\u0131 an\u0131lar\u0131na yazd\u0131\u011f\u0131n bir \u015feyi d\u00fczeltmek istiyorsa sende g\u00fcncel halini an\u0131lara ekle.\nEn son an\u0131lar\u0131n\u0131 buradan oku:\n{{ $json.merged_bilgi }}\n\nE\u011fer bir an\u0131 cevab\u0131nla alakal\u0131ysa, yan\u0131t\u0131n\u0131 buna g\u00f6re \u015fekillendir.\n\nSon yan\u0131t\u0131n\u0131 her zaman bir konu\u015fma par\u00e7as\u0131 olarak sun, bir liste ya da blog yaz\u0131s\u0131 gibi de\u011fil. E\u011fer liste haz\u0131rlaman gerekiyorsa basit tut ve \u00e7ok fazla hiyerar\u015fi ekleme \u2014 sadece en \u00f6nemli notlar\u0131 payla\u015f! Yan\u0131t\u0131n\u0131 olu\u015fturduktan sonra, TL;DR (\u00f6zet) versiyonunu d\u00fc\u015f\u00fcn ve her zaman samimi, hafif esprili ama kararl\u0131 ve yard\u0131mc\u0131 bir ton kullan. Fazla \u015fakac\u0131 olma; yan\u0131t\u0131na nazik, yumu\u015fak bir ton ver.\n\nKullanabilece\u011fin toollar:\nD\u00fc\u015f\u00fcnme toolu \"Think\".\nHesaplama toolu \"Calculator\".\nTakvim toolu \"Calendar Agent\".\nAn\u0131 toolu \"memory_tool\".\n\n"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 2.2,
"position": [
2544,
560
],
"id": "41cbbe7c-f206-4eee-aa3c-29377a01fcfc",
"name": "AI Agent"
},
{
"parameters": {
"jsCode": "const items = $input.all();\n\nlet result = {};\n\nfor (const item of items) {\n Object.assign(result, item.json);\n}\n\nreturn [{ json: result }];\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
2192,
560
],
"id": "1e9ca95d-626e-48f5-a95b-0d1c9dadbcda",
"name": "Code in JavaScript1"
},
{
"parameters": {
"tableId": "atik-asistan",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "bilgi",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', ``, 'string') }}"
}
]
}
},
"type": "n8n-nodes-base.supabaseTool",
"typeVersion": 1,
"position": [
3040,
816
],
"id": "24d462f2-22ec-43e6-b944-0cfad90c2ac5",
"name": "memory_tool",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"resource": "media",
"operation": "mediaUrlGet",
"mediaGetId": "={{ $json.messages[0].image.id }}"
},
"type": "n8n-nodes-base.whatsApp",
"typeVersion": 1,
"position": [
560,
560
],
"id": "37b33588-0346-4153-bb07-9e412ceb0518",
"name": "Download media",
"credentials": {
"whatsAppApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"url": "={{ $json.url }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=<redacted-credential>"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
752,
560
],
"id": "4a296862-e4c3-476c-bc66-dc63f282f6ea",
"name": "HTTP Request1"
},
{
"parameters": {
"resource": "image",
"operation": "analyze",
"modelId": {
"__rl": true,
"value": "models/gemini-2.5-flash",
"mode": "list",
"cachedResultName": "models/gemini-2.5-flash"
},
"text": "=T\u00fcrk\u00e7e yan\u0131tla.\nKullan\u0131c\u0131 a\u00e7\u0131klamas\u0131:{{ $('WhatsApp Trigger').item.json.messages[0].image.caption }}\n\nG\u00f6rev:\n- Caption\u2019daki iste\u011fi \u00f6nceliklendir (\u00f6rn. \u201cinsan say\u201d, \u201cetiket \u00e7\u0131kar\u201d).\n- G\u00f6rseldeki nesneler, ortam, eylemler ve metinleri maddelerle yaz.\n- En sonda k\u0131sa bir \u00f6zet ver.\n",
"inputType": "binary",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"typeVersion": 1,
"position": [
960,
560
],
"id": "de8e858c-d147-413a-aa79-4557511cd594",
"name": "Analyze an image",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"fieldToSplitOut": "content.parts[0].text",
"options": {
"destinationFieldName": "chatInput"
}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
1168,
560
],
"id": "2bdbf64f-2c01-4df5-8016-38d0dfd818c3",
"name": "Split Out"
},
{
"parameters": {
"resource": "media",
"operation": "mediaUrlGet",
"mediaGetId": "={{ $json.messages[0].audio.id }}"
},
"type": "n8n-nodes-base.whatsApp",
"typeVersion": 1,
"position": [
560,
848
],
"id": "5c7a2f5a-59d1-4621-b005-0ab9e59ddeeb",
"name": "Download media1",
"credentials": {
"whatsAppApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"url": "={{ $json.url }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=<redacted-credential>"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
752,
848
],
"id": "aaab9711-dcaf-41fe-b460-30a9a3fad300",
"name": "HTTP Request2"
},
{
"parameters": {
"resource": "audio",
"modelId": {
"__rl": true,
"value": "models/gemini-2.5-flash",
"mode": "list",
"cachedResultName": "models/gemini-2.5-flash"
},
"inputType": "binary",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"typeVersion": 1,
"position": [
960,
848
],
"id": "06831bd8-6d8d-4704-954c-d80d86cedfe4",
"name": "Transcribe a recording",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"fieldToSplitOut": "content.parts[0].text",
"options": {
"destinationFieldName": "chatInput"
}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
1168,
848
],
"id": "dafc7784-afdb-42d0-b129-71ffe1b8c299",
"name": "Split Out1"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "784b60ff-8d41-47a1-8671-fa2f6d55ebae",
"leftValue": "={{ $json.messages }}",
"rightValue": "",
"operator": {
"type": "array",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-448,
576
],
"id": "f2c68ff2-2ae7-48fb-ae6f-a165455c98b7",
"name": "If1"
},
{
"parameters": {
"operation": "send",
"phoneNumberId": "762385906963040",
"recipientPhoneNumber": "905416349294",
"textBody": "G\u00fcnl\u00fck rapor mailinize iletildi.",
"additionalFields": {}
},
"type": "n8n-nodes-base.whatsApp",
"typeVersion": 1,
"position": [
352,
-64
],
"id": "d7f8009b-ae0c-4bae-aa67-edc020407965",
"name": "Send message1",
"credentials": {
"whatsAppApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "send",
"phoneNumberId": "762385906963040",
"recipientPhoneNumber": "905416349294",
"textBody": "G\u00fcnl\u00fck rapor mailinize iletildi.",
"additionalFields": {}
},
"type": "n8n-nodes-base.whatsApp",
"typeVersion": 1,
"position": [
1392,
-288
],
"id": "9a881484-1cf4-4823-ab74-73793f8ab9c9",
"name": "Send message2",
"credentials": {
"whatsAppApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
1008,
-80
],
"id": "64ae5f0d-b3dd-44eb-8619-dc241ae22fcf",
"name": "Google Gemini Chat Model1",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const input = $input.item.json;\n\n// AI agent\u2019tan gelen metin\nconst text = input.output || \"\";\n\n// Maksimum karakter limiti (WhatsApp i\u00e7in)\nconst limit = 4096;\n\n// \u00c7\u0131kt\u0131 dizisini haz\u0131rla\nlet messages = [];\n\nif (text.length > limit) {\n // Uzunsa iki par\u00e7aya b\u00f6l\n const part1 = text.slice(0, limit);\n const part2 = text.slice(limit);\n messages.push({ message: part1 });\n messages.push({ message: part2 });\n} else {\n // K\u0131saysa tek par\u00e7a olarak g\u00f6nder\n messages.push({ message: text });\n}\n\n// n8n \u00e7\u0131kt\u0131s\u0131\nreturn messages.map(msg => ({ json: msg }));\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
3184,
560
],
"id": "0fd1db3b-9115-4968-87c5-ce0c0e33080b",
"name": "Code in JavaScript2"
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
3392,
560
],
"id": "84f4fa1d-c0b1-4c68-8c7e-4e2719c5d9d7",
"name": "Loop Over Items"
}
],
"connections": {
"Email Agent": {
"ai_tool": [
[]
]
},
"Contact Agent": {
"ai_tool": [
[]
]
},
"Tavily": {
"ai_tool": [
[]
]
},
"Calculator": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Calendar Agent": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Think": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Set 'Text'": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Set 'Text'",
"type": "main",
"index": 0
}
],
[
{
"node": "Download media",
"type": "main",
"index": 0
}
],
[
{
"node": "Download media1",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "Email \u00d6zetleyici",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Email Data Organize Et": {
"main": [
[
{
"node": "Email \u00d6zetleyici",
"type": "main",
"index": 0
}
]
]
},
"Email \u00d6zetleyici": {
"main": [
[
{
"node": "\u00d6zet G\u00f6nder",
"type": "main",
"index": 0
},
{
"node": "Send message1",
"type": "main",
"index": 0
}
]
]
},
"Bir \u00d6nceki G\u00fcn Okunmayan Emailleri Getir": {
"main": [
[
{
"node": "Email Data Organize Et",
"type": "main",
"index": 0
}
]
]
},
"G\u00fcnl\u00fck Sabah 8de \u00c7al\u0131\u015facak": {
"main": [
[
{
"node": "Bir \u00d6nceki G\u00fcn Okunmayan Emailleri Getir",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Email \u00d6zetleyici",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Get Events": {
"ai_tool": [
[
{
"node": "Calendar Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"G\u00fcnl\u00fck Sabah 8de \u00c7al\u0131\u015facak1": {
"main": [
[
{
"node": "Calendar Agent1",
"type": "main",
"index": 0
}
]
]
},
"Calendar Agent1": {
"main": [
[
{
"node": "Send message2",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"atik suparbase n8n chat history": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"WhatsApp Trigger": {
"main": [
[
{
"node": "If1",
"type": "main",
"index": 0
}
]
]
},
"Get many rows": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "Code in JavaScript",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Code in JavaScript1",
"type": "main",
"index": 0
}
]
]
},
"Code in JavaScript": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Code in JavaScript1": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Code in JavaScript2",
"type": "main",
"index": 0
}
]
]
},
"memory_tool": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Download media": {
"main": [
[
{
"node": "HTTP Request1",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request1": {
"main": [
[
{
"node": "Analyze an image",
"type": "main",
"index": 0
}
]
]
},
"Analyze an image": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Download media1": {
"main": [
[
{
"node": "HTTP Request2",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request2": {
"main": [
[
{
"node": "Transcribe a recording",
"type": "main",
"index": 0
}
]
]
},
"Transcribe a recording": {
"main": [
[
{
"node": "Split Out1",
"type": "main",
"index": 0
}
]
]
},
"Split Out1": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"If1": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
},
{
"node": "Get many rows",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model1": {
"ai_languageModel": [
[
{
"node": "Calendar Agent1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Code in JavaScript2": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[],
[
{
"node": "Send message",
"type": "main",
"index": 0
}
]
]
},
"Send message": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"timezone": "Europe/Istanbul",
"callerPolicy": "workflowsFromSameOwner"
},
"versionId": "01429381-4e3b-48b5-9b47-45aad82beaca",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "NYlyj1BHadhwyben",
"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.
gmailOAuth2googleCalendarOAuth2ApigooglePalmApiopenAiApipostgressupabaseApiwhatsAppApiwhatsAppTriggerApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
kisisel asistan. Uses toolWorkflow, toolHttpRequest, toolCalculator, toolThink. Scheduled trigger; 43 nodes.
Source: https://github.com/atillakesicioglu/n8n-automation-workflows/blob/1b33f8cb3040f28da4ca0b09b7d71eecbca1b001/ai-workflows/personal-assistants/kisisel-asistan/workflow.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.
LinkedIn_Job_Hunt_and_Cover_Letter. Uses outputParserStructured, outputParserAutofixing, googleDrive, agent. Scheduled trigger; 85 nodes.
System Architecture Two integrated N8N workflows providing automated US stock portfolio management through Telegram:
This n8n-powered workflow automates the entire lifecycle of real estate lead intake, qualification, routing, assignment, and reporting across multiple channels. It brings WhatsApp inquiries and websit
Fully automated blog creation system using n8n + AI Agents + Image Generation
This workflow automates comprehensive real estate investment analysis by orchestrating specialized AI agents to evaluate property data, market trends, and financial metrics. Designed for real estate i