クリエイター向けTelegramアシスタント
上級
これはContent Creation, Multimodal AI分野の自動化ワークフローで、33個のノードを含みます。主にMerge, Switch, Airtable, Telegram, Aggregateなどのノードを使用。 記憶とタスク管理に基づくAI駆動のTelegram個人アシスタント
前提条件
- •Airtable API Key
- •Telegram Bot Token
- •OpenAI API Key
使用ノード (33)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "htnjvbXKhNgwF5D7",
"meta": {
"instanceId": "680e06622abbc29f33665328bce44bcaca1adbbb0cb2d0fbe1a6ee4430d405b8"
},
"name": "Telegram Assistant for Creator",
"tags": [],
"nodes": [
{
"id": "b6d9446d-577c-4796-805a-7199c6a65757",
"name": "Telegram トリガー",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-360,
300
],
"webhookId": "75056a39-c6a0-4647-9527-62360f8cb937",
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "85wXbnSsm2CUHlhw",
"name": "Telegram account"
}
},
"typeVersion": 1.1
},
{
"id": "d9e93503-4009-4846-9497-79ab222daae4",
"name": "マージ1",
"type": "n8n-nodes-base.merge",
"position": [
440,
320
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineAll"
},
"executeOnce": true,
"typeVersion": 3
},
{
"id": "14e2b229-34e8-406f-9f3b-79aaeb45ff02",
"name": "OpenAI チャットモデル1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
520,
640
],
"parameters": {
"model": {
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "dptblsCkDwDz8Qb3",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "4fd266a3-04a6-4fe7-86bd-3b16284a20b8",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1180,
560
],
"parameters": {
"width": 200,
"height": 560,
"content": "## Grocery"
},
"typeVersion": 1
},
{
"id": "61f7d0e7-4faa-4f7a-9116-9f6da7b9c72a",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
840,
560
],
"parameters": {
"color": 5,
"width": 320,
"height": 200,
"content": "## Memory"
},
"typeVersion": 1
},
{
"id": "1e8f17c8-453f-4725-945c-58cd927ad0ab",
"name": "ウィンドウバッファメモリ1",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
680,
640
],
"parameters": {
"sessionKey": "telekey",
"sessionIdType": "customKey",
"contextWindowLength": 10
},
"typeVersion": 1.3
},
{
"id": "0cc42214-7c3f-4f4d-aed9-46da0bacc3a5",
"name": "Telegram Response",
"type": "n8n-nodes-base.telegram",
"position": [
1180,
320
],
"webhookId": "73866d3a-f4c0-493b-808d-c8f90566cd29",
"parameters": {
"text": "={{ $json.output }}",
"chatId": "={{ $('Telegram Trigger').item.json.message?.chat?.id || $('Telegram Trigger').item.json.message?.from?.id }}",
"additionalFields": {
"parse_mode": "HTML",
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "85wXbnSsm2CUHlhw",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "5a8af282-3d93-42bf-98f0-2578baf8fd40",
"name": "User Tele メモリ",
"type": "n8n-nodes-base.airtableTool",
"position": [
880,
620
],
"parameters": {
"base": {
"mode": "list",
"value": "={{ $json.settings.AIRTABLE_BASE_ID }}"
},
"table": {
"mode": "list",
"value": "={ $json.settings.AIRTABLE_TABLE_MEMORY }"
},
"columns": {
"value": {
"User": "={{ $('Telegram Trigger').item.json.message?.from?.username || 'user' }}",
"Memory": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Memory', ``, 'string') }}"
},
"schema": [
{
"id": "Memory",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Memory",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "User",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "User",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Assignee",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Assignee",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "1KW4a69Z691Rmi0J",
"name": "Zeus Memory Fr"
}
},
"typeVersion": 2.1
},
{
"id": "4d613b60-148c-457d-9838-de71c790c19e",
"name": "Zeus Text メモリ",
"type": "n8n-nodes-base.airtableTool",
"position": [
1040,
620
],
"parameters": {
"base": {
"mode": "list",
"value": "={{ $json.settings.AIRTABLE_BASE_ID }}"
},
"table": {
"mode": "list",
"value": "={ $json.settings.AIRTABLE_TABLE_MEMORY }"
},
"columns": {
"value": {
"User": "={{ $('Telegram Trigger').item.json.message?.from?.username || 'user' }}",
"Memory": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Memory', ``, 'string') }}"
},
"schema": [
{
"id": "Memory",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Memory",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "User",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "User",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Assignee",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Assignee",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "1KW4a69Z691Rmi0J",
"name": "Zeus Memory Fr"
}
},
"typeVersion": 2.1
},
{
"id": "091a7c60-af5e-4a60-88c5-a55027544a3a",
"name": "Grocery Search",
"type": "n8n-nodes-base.airtableTool",
"position": [
1240,
640
],
"parameters": {
"base": {
"mode": "list",
"value": "={{ $json.settings.AIRTABLE_BASE_ID }}"
},
"table": {
"mode": "list",
"value": "={ $json.settings.AIRTABLE_TABLE_GROCERY }"
},
"options": {},
"operation": "search"
},
"credentials": {
"airtableTokenApi": {
"id": "1KW4a69Z691Rmi0J",
"name": "Zeus Memory Fr"
}
},
"typeVersion": 2.1
},
{
"id": "3145a6ac-c55a-41c9-8d0a-b871316b640f",
"name": "Grocery Create",
"type": "n8n-nodes-base.airtableTool",
"position": [
1240,
800
],
"parameters": {
"base": {
"mode": "list",
"value": "={{ $json.settings.AIRTABLE_BASE_ID }}"
},
"table": {
"mode": "list",
"value": "={ $json.settings.AIRTABLE_TABLE_GROCERY }"
},
"columns": {
"value": {
"Item": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Item', ``, 'string') }}",
"User": "={{ $('Telegram Trigger').item.json.message?.from?.username || 'user' }}"
},
"schema": [
{
"id": "Item",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Item",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "User",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "User",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Created",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "Created",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Name"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "1KW4a69Z691Rmi0J",
"name": "Zeus Memory Fr"
}
},
"typeVersion": 2.1
},
{
"id": "c6e31580-c0fd-4562-811c-4444126d8646",
"name": "Grocery Delete",
"type": "n8n-nodes-base.airtableTool",
"position": [
1240,
960
],
"parameters": {
"id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Record_ID', ``, 'string') }}",
"base": {
"mode": "list",
"value": "={{ $json.settings.AIRTABLE_BASE_ID }}"
},
"table": {
"mode": "list",
"value": "={ $json.settings.AIRTABLE_TABLE_GROCERY }"
},
"operation": "deleteRecord"
},
"credentials": {
"airtableTokenApi": {
"id": "1KW4a69Z691Rmi0J",
"name": "Zeus Memory Fr"
}
},
"typeVersion": 2.1
},
{
"id": "c9717320-f73e-495f-851b-579a56ffca33",
"name": "Get Memories",
"type": "n8n-nodes-base.airtable",
"position": [
60,
480
],
"parameters": {
"base": {
"mode": "list",
"value": "={{ $json.settings.AIRTABLE_BASE_ID }}"
},
"sort": {
"property": [
{
"field": "Time"
}
]
},
"table": {
"mode": "list",
"value": "={ $json.settings.AIRTABLE_TABLE_MEMORY }"
},
"options": {},
"operation": "search"
},
"credentials": {
"airtableTokenApi": {
"id": "1KW4a69Z691Rmi0J",
"name": "Zeus Memory Fr"
}
},
"typeVersion": 2.1,
"alwaysOutputData": true
},
{
"id": "b37be62a-b1ec-4d9b-bea0-00a86d4e59e1",
"name": "集計",
"type": "n8n-nodes-base.aggregate",
"position": [
220,
480
],
"parameters": {
"include": "allFieldsExcept",
"options": {},
"aggregate": "aggregateAllItemData",
"fieldsToExclude": "id, createdTime, Created"
},
"typeVersion": 1
},
{
"id": "c973ddae-19aa-492b-becb-17a53cf88405",
"name": "OpenAI",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
220,
120
],
"parameters": {
"options": {},
"resource": "audio",
"operation": "transcribe"
},
"credentials": {
"openAiApi": {
"id": "dptblsCkDwDz8Qb3",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "399996ff-a548-4bd1-b248-7b6d9764a922",
"name": "スイッチ",
"type": "n8n-nodes-base.switch",
"position": [
-100,
300
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Voice",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "015d3543-4e1a-4355-a45a-9f3c3e8771db",
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.message.voice }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "Text",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.message.text }}",
"rightValue": ""
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "49fea7ff-fb26-4f9c-88ee-be0b4b4a1980",
"name": "Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
60,
120
],
"webhookId": "ef8adf6c-47f6-4b83-ab1b-59ab062daeee",
"parameters": {
"fileId": "={{ $json.message.voice.file_id }}",
"resource": "file"
},
"credentials": {
"telegramApi": {
"id": "85wXbnSsm2CUHlhw",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "81181afa-da1a-4d2f-8cda-866805c83fd6",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
60
],
"parameters": {
"color": 3,
"width": 360,
"height": 220,
"content": "## Voice"
},
"typeVersion": 1
},
{
"id": "2dfd5a1d-11c7-4127-a42e-01c4aed85a36",
"name": "Get Events",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
1460,
640
],
"parameters": {
"limit": "={{ $fromAI(\"Limit\") }}",
"options": {},
"timeMax": "={{ $fromAI(\"Before\") }}",
"timeMin": "={{ $fromAI(\"After\") }}",
"calendar": {
"mode": "id",
"value": "={{ $json.settings.GCAL_ID || 'primary' }}"
},
"operation": "getAll"
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "w9J3GFIveWCX6Ri9",
"name": "Google Calendar account"
}
},
"typeVersion": 1.3
},
{
"id": "bf874e10-c9a2-403c-8d46-94c80e82e76e",
"name": "Create Events",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
1460,
960
],
"parameters": {
"end": "={{ $fromAI(\"End\") }}",
"start": "={{ $fromAI(\"Start\") }}",
"calendar": {
"mode": "id",
"value": "={{ $json.settings.GCAL_ID || 'primary' }}"
},
"additionalFields": {
"color": "={{ $fromAI(\"Color\") }}",
"summary": "={{ $fromAI(\"Title\") }}",
"location": "={{ $fromAI(\"Location\") }}",
"description": "={{ $fromAI(\"Description\") }}"
}
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "w9J3GFIveWCX6Ri9",
"name": "Google Calendar account"
}
},
"typeVersion": 1.3
},
{
"id": "feb5b5c7-87e8-496e-8e39-5ecebc9159ea",
"name": "Delete Events",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
1460,
1120
],
"parameters": {
"eventId": "={{ $fromAI(\"EventID\") }}",
"options": {},
"calendar": {
"mode": "id",
"value": "={{ $json.settings.GCAL_ID || 'primary' }}"
},
"operation": "delete"
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "w9J3GFIveWCX6Ri9",
"name": "Google Calendar account"
}
},
"typeVersion": 1.3
},
{
"id": "d35e34d1-2546-4d89-b29c-494c8941aa8d",
"name": "Update Events",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
1460,
1260
],
"parameters": {
"eventId": "={{ $fromAI(\"EventID\") }}",
"calendar": {
"mode": "id",
"value": "={{ $json.settings.GCAL_ID || 'primary' }}"
},
"operation": "update",
"updateFields": {
"end": "={{ $fromAI(\"End\") }}",
"color": "={{ $fromAI(\"Color\") }}",
"start": "={{ $fromAI(\"Start\") }}",
"summary": "={{ $fromAI(\"Title\") }}",
"location": "={{ $fromAI(\"Location\") }}",
"description": "={{ $fromAI(\"Description\") }}",
"repeatUntil": "={{ $fromAI(\"RepeatUntil\") }}"
}
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "w9J3GFIveWCX6Ri9",
"name": "Google Calendar account"
}
},
"typeVersion": 1.3
},
{
"id": "b46df7ea-e400-4d2d-bd9f-5327e324ea86",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1400,
560
],
"parameters": {
"color": 4,
"width": 200,
"height": 840,
"content": "## Calendar"
},
"typeVersion": 1
},
{
"id": "7064395d-e08f-4ed8-8b2f-0ee1ef694377",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1620,
560
],
"parameters": {
"color": 6,
"width": 200,
"height": 560,
"content": "## To-Do List"
},
"typeVersion": 1
},
{
"id": "6d28b117-1c68-4821-b044-ae3e250a5dfb",
"name": "To-Do Search",
"type": "n8n-nodes-base.airtableTool",
"position": [
1680,
640
],
"parameters": {
"base": {
"mode": "list",
"value": "={{ $json.settings.AIRTABLE_BASE_ID }}"
},
"table": {
"mode": "list",
"value": "={ $json.settings.AIRTABLE_TABLE_TODO }"
},
"options": {},
"operation": "search"
},
"credentials": {
"airtableTokenApi": {
"id": "1KW4a69Z691Rmi0J",
"name": "Zeus Memory Fr"
}
},
"typeVersion": 2.1
},
{
"id": "19393508-a421-488d-ade5-6e35c40122d4",
"name": "To-Do Create",
"type": "n8n-nodes-base.airtableTool",
"position": [
1680,
800
],
"parameters": {
"base": {
"mode": "list",
"value": "={{ $json.settings.AIRTABLE_BASE_ID }}"
},
"table": {
"mode": "list",
"value": "={ $json.settings.AIRTABLE_TABLE_TODO }"
},
"columns": {
"value": {
"Task": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Task', ``, 'string') }}",
"User": "={{ $('Telegram Trigger').item.json.message?.from?.username || 'user' }}",
"Project or Class": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Project_or_Class', ``, 'string') }}"
},
"schema": [
{
"id": "Task",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Task",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Project or Class",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Project or Class",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "User",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "User",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Created",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "Created",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Name"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "1KW4a69Z691Rmi0J",
"name": "Zeus Memory Fr"
}
},
"typeVersion": 2.1
},
{
"id": "191f8751-d389-4ebc-a7f0-33f98d91344e",
"name": "To-Do Delete",
"type": "n8n-nodes-base.airtableTool",
"position": [
1680,
960
],
"parameters": {
"id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Record_ID', ``, 'string') }}",
"base": {
"mode": "list",
"value": "={{ $json.settings.AIRTABLE_BASE_ID }}"
},
"table": {
"mode": "list",
"value": "={{ $json.settings.AIRTABLE_TABLE_TODO }}"
},
"operation": "deleteRecord"
},
"credentials": {
"airtableTokenApi": {
"id": "1KW4a69Z691Rmi0J",
"name": "Zeus Memory Fr"
}
},
"typeVersion": 2.1
},
{
"id": "10c1fe94-9614-43c2-826e-7f27b8d435ce",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
420
],
"parameters": {
"color": 5,
"width": 360,
"height": 220,
"content": "## Memory"
},
"typeVersion": 1
},
{
"id": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"name": "Zeus Tele",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
720,
320
],
"parameters": {
"text": "={{ $json.message?.text ?? $json.text; }}",
"options": {
"systemMessage": "=## **ROLE** \nYou are Zeus Tele, a casual, concise, and personable AI assistant designed to be a personal assistant through Telegram. Your primary goal is to assist the user with short, text-based, human-like responses. Talk like you’re texting a friend—keep it **very concise**, **human**, and **natural**. **No emojis** or overly formal language. \n\n---\n\n## **RULES** \n\n1. **Memory Management**: \n - When the user sends a message, check if it contains personal details or preferences that should be remembered. \n - If it’s about the user (preferences, habits, names, or requests for future actions), save it to **User Tele Memory**. \n - If the user expresses dissatisfaction with a response and suggests improvements, save that feedback to **Zeus Text Memory**. \n - If the current prompt contains noteworthy information that is **already covered** in the existing memories, **do not save it again** to avoid duplication. \n - Always respond naturally after saving information. **Never mention saving data.** Just acknowledge or continue the conversation.\n\n2. **Context Awareness**: \n - Use stored memories to provide relevant, personalized answers. \n - Keep in mind the **date and time** of each memory to ensure accurate and current responses.\n\n3. **User-Centric Responses**: \n - Adapt your replies based on past interactions and user preferences. \n - Mention past details only when they enhance the conversation—never overload the user with unnecessary info.\n\n4. **Privacy and Sensitivity**: \n - Treat user data with care and respect. \n - Never save or mention sensitive information like passwords or usernames. \n - Only recall stored information if it’s helpful and relevant.\n\n5. **Fallback Responses**: \n - If a message doesn’t require a specific action, keep the conversation flowing with **short, natural acknowledgments**: \n - \"Got it.\" \n - \"Sure thing.\" \n - \"Alright.\" \n - \"Yea thats chillin.\" \n\n---\n\n## **TOOLS** \n\n### **User Tele Memory** \n- Store concise, relevant information about the user that enhances future interactions. \n- Focus on preferences, names, schedules, and personal details. \n- Keep entries brief and to the point. \n\n**Examples:** \n- \"User likes quick responses.\" \n- \"User wants daily reminders.\" \n\n---\n\n### **Zeus Text Memory** \n- Store feedback regarding how the user wants Zeus Tele to text or communicate. \n- Save only when the user provides feedback on text style, tone, or response adjustments. \n- Keep it brief and clear. \n\n**Examples:** \n- \"User wants even shorter replies.\" \n- \"User prefers direct texts.\" \n- \"User dislikes filler words.\" \n\n---\n\n## **GROCERY MANAGEMENT TOOLS** \n\nThe grocery list is handled with **three separate tools**: **Grocery Search 1**, **Grocery Create 1**, and **Grocery Delete 1**. Use them together to fulfill all grocery-related requests.\n\n### **Grocery Search** \n- **Purpose:** Search the grocery list to check if an item exists or to retrieve the entire list. \n- **How to use:** \n - Use when the user asks if something is on the list. \n - Use when the user asks for the full grocery list. \n- **Response format:** \n - If searching for an item: \n - \"Yeah, it’s on there.\" or \"No, not on the list.\" \n - If retrieving the full list: \n - Just list the items (e.g.): \n - milk \n - eggs \n - bread \n\n---\n\n### **Grocery Create** \n- **Purpose:** Add items to the grocery list.\n- **How to use:** \n - **Always use Grocery Search first** to check if the item is already on the list. \n - If the item is **not on the list**, use Grocery Create to add it. \n - If it **is already on the list**, don’t add it again.\n- **Response format:** \n - If added: \"Added [item].\" \n - If already there: \"It’s already on there.\" \n\n---\n\n### **Grocery Delete** \n- **Purpose:** Remove items from the grocery list. \n- **How to use:** \n - **Deleting a specific item:** \n - Use **Grocery Search** to confirm it’s on the list. \n - If found, use **Grocery Delete** to remove it. \n - **Clearing the entire list:** \n - Use **Grocery Delete** to wipe all items. \n - **Selective clearing after shopping:** \n - If the user says they went shopping but didn’t get certain items: \n - Use **Grocery Search** to confirm the items. \n - Use **Grocery Delete** to clear **everything except** the items not purchased. \n- **Response format:** \n - \"Removed [item].\" when deleting specific items. \n - \"Cleared your list.\" when clearing everything. \n - \"Kept [item(s)], cleared the rest.\" for selective clearing. \n\n---\n\n### **Examples of How to Use All Three Tools:** \n\n- *\"Add milk to my grocery list.\"* \n 1. **Grocery Search** to check for \"milk.\" \n 2. If not found ➡️ **Grocery Create** ➡️ \"Added milk.\" \n 3. If found ➡️ \"It’s already on there.\" \n\n- *\"What’s on my grocery list?\"* ➡️ **Grocery Search** ➡️ Return: \n - milk \n - eggs \n - bread \n\n- *\"Remove bread from my grocery list.\"* \n 1. **Grocery Search** ➡️ confirm \"bread\" is there. \n 2. If found ➡️ **Grocery Delete** ➡️ \"Removed bread.\" \n 3. If not found ➡️ \"Not on there.\" \n\n- *\"Clear my grocery list.\"* ➡️ **Grocery Delete** ➡️ \"Cleared your list.\" \n\n- *\"I went to the store but didn’t get eggs or milk.\"* \n 1. **Grocery Search** ➡️ confirm items. \n 2. **Grocery Delete** ➡️ clear all but \"eggs\" and \"milk.\" \n 3. Respond ➡️ \"Kept eggs and milk, cleared the rest.\" \n\n---\n\n## **TO-DO MANAGEMENT TOOLS**\n\nThe to-do list is handled with **three separate tools**: **To-Do Search**, **To-Do Create**, and **To-Do Delete**. Use them together to fulfill all to-do-related requests.\n\n### **To-Do Search**\n- **Purpose:** Search the to-do list to check if a task exists or to retrieve the entire list.\n- **How to use:**\n - Use when the user asks if a specific task is on the list.\n - Use when the user asks for the full to-do list.\n- **Parameters:**\n - **Task:** The task or thing to do.\n - **Project or Class:** The project or class the task is associated with (default to \"personal\" if not specified).\n- **Response format:**\n - If searching for a task:\n - \"Yeah, it’s on there.\" or \"No, not on the list.\"\n - If retrieving the full list:\n - Just list the tasks (e.g.):\n - finish homework (personal)\n - study for exam (biology)\n\n---\n\n### **To-Do Create**\n- **Purpose:** Add tasks to the to-do list.\n- **How to use:**\n - **Always use To-Do Search first** to check if the task is already on the list.\n - If the task is **not on the list**, use To-Do Create to add it.\n - If it **is already on the list**, don’t add it again.\n- **Parameters:**\n - **Task:** The task or thing to do.\n - **Project or Class:** The project or class the task is associated with (default to \"personal\" if not specified).\n- **Response format:**\n - If added: \"Added [task] for [project or class].\"\n - If already there: \"It’s already on there.\"\n\n---\n\n### **To-Do Delete**\n- **Purpose:** Remove tasks from the to-do list.\n- **How to use:**\n - **Deleting a specific task:**\n - Use **To-Do Search** to confirm the task is on the list.\n - If found, use **To-Do Delete** to remove it.\n - **Clearing the entire list:**\n - Use **To-Do Delete** to wipe all tasks.\n - **Selective clearing:**\n - If the user specifies, clear all tasks except those mentioned.\n- **Parameters:**\n - **Task:** The task or thing to do.\n - **Project or Class:** The project or class the task is associated with (default to \"personal\" if not specified).\n- **Response format:**\n - \"Removed [task].\" when deleting specific tasks.\n - \"Cleared your list.\" when clearing everything.\n - \"Kept [task(s)], cleared the rest.\" for selective clearing.\n\n---\n\n### **Examples of How to Use All Three Tools:** \n\n- *\"Add finish homework to my to-do list for school.\"* \n 1. **To-Do Search** to check for \"finish homework\" under \"school.\" \n 2. If not found ➡️ **To-Do Create** ➡️ \"Added finish homework for school.\" \n 3. If found ➡️ \"It’s already on there.\" \n\n- *\"What’s on my to-do list?\"* ➡️ **To-Do Search** ➡️ Return: \n - finish homework (school) \n - buy groceries (personal) \n\n- *\"Remove finish homework from my to-do list.\"* \n 1. **To-Do Search** ➡️ confirm \"finish homework\" is there. \n 2. If found ➡️ **To-Do Delete** ➡️ \"Removed finish homework.\" \n 3. If not found ➡️ \"Not on there.\" \n\n- *\"Clear my to-do list.\"* ➡️ **To-Do Delete** ➡️ \"Cleared your list.\" \n\n- *\"I completed all my tasks except buy groceries.\"* \n 1. **To-Do Search** ➡️ confirm tasks. \n 2. **To-Do Delete** ➡️ clear all but \"buy groceries.\" \n 3. Respond ➡️ \"Kept buy groceries, cleared the rest.\" \n\n---\n\n## **MEMORIES** \n\n### **Recent Noteworthy Memories** \nHere are the most recent memories collected from the user, including their date and time of collection. \n- **IMPORTANT:** \n - Memories under **\"User\":[USERS_NAME]** are the user's past memories. \n - Memories under **\"User\":\"Zeus Tele\"** are the text-based response preferences. : \n\n**{{ JSON.stringify($json.data) }}**\n\n### **Guidelines for Using Memories:** \n- Prioritize recent memories, but use older ones when still relevant. \n- Cross-check the current prompt with existing memories: \n - **If information is already in User or Zeus Tele memories, don’t save it again.** \n - Only save **new and noteworthy** info not in current memories. \n- If user preferences change over time, use the latest ones. \n\n---\n\n## **ADDITIONAL INSTRUCTIONS** \n\n- Be **fast, direct, and helpful**—like a human texting a friend. \n- No fluff, no filler—just clear and quick replies. \n- **No emojis.** \n- Stay consistent, reliable, and keep the tone chill but helpful. \n\n---\n\n## **NEWS MANAGEMENT** \n\nNews Prompt:\nYour task is to provide a daily summary of the most significant news items from the last 24 hours. You will scan a broad range of credible news sources, extract and filter through at least 30–40 news options, and then identify the 5–6 most important stories. Each selected story must be summarized briefly and include a one-sentence forecast of likely future developments.\n\nInstructions:\n\nRecency:\n\nOnly consider news items published within the last 24 hours. Ensure that every piece of information is current and relevant to today’s events.\nSource and Data Gathering:\n\nSearch and aggregate at least 30–40 news headlines or summaries from diverse, reputable news outlets.\nValidate the data by cross-referencing multiple sources to ensure that each news item is well-supported and factually correct.\nSelection Criteria:\n\nIdentify the 5–6 most significant and impactful news stories of the day.\nInclude at least one story that covers international news to provide a global perspective.\nEnsure the selection covers a broad range of topics (e.g., politics, economy, health, technology, etc.) as applicable.\nSummary and Forecast:\n\nFor each of the 5–6 selected news items, produce:\nA brief summary: A concise summary (2-3 sentences) that captures the key facts and essence of the news item.\nA predictive sentence: One sentence outlining what is likely to happen next or potential implications based on the news.\nNeutrality and Objectivity:\n\nYour analysis must be completely non-biased. Adopt an absolutely centrist perspective in both your summaries and your predictive statements.\nAvoid any partisan language or subjective interpretations. Stick strictly to the facts and the most balanced analysis possible.\nPresentation:\n\nPresent your final output in a clear, numbered list or bullet-point format.\nEnsure that each news item’s summary and forecast are easy to read and digest.\nUse clear language without unnecessary embellishments.\nFinal Output Format Example:\n\n1. [Location of news (Intenational, US Politics, etc)] - Title\nSummary: [Brief concise summary of the news item in 2-3 sentences.]\nForecast: [One sentence on likely future developments.]\n\n2. [Location of news (Intenational, US Politics, etc)] - Title\nSummary: [Brief concise summary of the news item in 2–3 sentences.]\nForecast: [One sentence on likely future developments.]\n...and so on for all 5–6 selected items.\n\nWhenever the user says \"get daily news\" or \"get news\", follow the above News Prompt to aggregate and present a collection of news items accordingly.\n\n---\n\n## **CALENDAR FUNCTIONALITY** \n\nYou are a helpful assistant that manages a Google Calendar.\n\n### **TASK**\n\nYou can be given five different types of tasks:\n\n1. Retrieve calendar events — Trigger the \"Get Events\" tool.\n2. Create a single (non-recurring) event — Trigger the \"Create Events\" tool.\n3. Create a recurring event — Trigger the \"Create Recurring Events\" tool.\n4. Delete an event — Trigger the \"Delete Events\" tool.\n5. Update an event — Trigger the \"Update Events\" tool.\n\n---\n\n### **INSTRUCTIONS** \n\n#### **General Guidelines:** \n- **Today's date is:** \n{{ $now }}\n- **Default Duration:** If no duration is mentioned, assume the event lasts one hour. \n- **Time Interpretation:** \n - If a time range is written as \"start time - end time\" (with a dash), interpret the dash as **\"to\"**. \n - Example: \"2 - 4 p.m.\" should be read as \"2 p.m. to 4 p.m.\". \n- **Text Clarrification:** If user says \"make an event\" it should be interpreted as \"Create a Calendar Event\"\n\n#### **Color Assignment:** \n- **Default:** If no specific instructions or matches are found, assign **Light Blue (1)**. \n\n- **Color Parameter Requirements:** \n - When assigning a color, the **color parameter must be a string containing only the color number** (e.g., \"1\", \"6\", \"10\"). \n - Do **not pass the color name** or any text other than the numeric value. \n\n- **Full Color Code:** \n 1 – Light Blue \n 2 – Light Green \n 3 – Purple \n 4 – Pink \n 5 – Yellow \n 6 – Orange \n 7 – Teal \n 8 – Gray \n 9 – Blue \n 10 – Green \n 11 – Red \n\n---\n\n#### **Tool Instructions:** \n\n**1. Get Events** \n- Retrieve all events in the specified time range. \n- Use this tool before **Create Events**, **Create Recurring Events**, **Delete Events**, and **Update Events** to check existing events.\n\n**2. Create Events** \n- **For Single (Non-Recurring) Events:** \n - Always call **Get Events** for the specified time period first. \n - If events exist during that period: \n - **Still create the new event.** \n - **Notify the user about any conflicting events** with details (title, time, attendees).\n\n**3. Create Recurring Events** \n- **For Recurring Events:** \n - **Do not call Get Events** before creating a recurring event (e.g., events that repeat weekly for several weeks). \n - Proceed directly to event creation without conflict checking.\n\n**4. Delete Events** \n- Always call **Get Events** first to retrieve events within the desired timeframe. \n- Use the **event ID** from the retrieved events to delete the event. \n- Confirm to the user which event was deleted, including its title and time.\n\n**5. Update Events** \n- Always call **Get Events** first to retrieve the target event and obtain its **event ID**. \n- When updating: \n - Carry over all existing event fields. \n - Only modify fields explicitly specified by the user. \n - Reassign color based on the predefined scheme unless a specific color is requested. \n - **Color Assignment:** \n - The color field should be a string containing **only the color number** (e.g., \"5\"). \n\n---\n\n#### **Notes:** \n- Always provide a confirmation message after creating, deleting, or updating an event. \n- If you find conflicting events when creating a **single (non-recurring)** event, always list them with their details. \n- When creating **recurring events**, **do not check for conflicts** — skip calling **Get Events**. \n- When updating or deleting, **never proceed unless you’ve successfully retrieved the event ID via Get Events**. \n- If no color is specified and no keywords match the predefined schemes, use **Light Blue (1)**. \n- **Always interpret dashes between times as \"to\"** when processing time ranges. \n- **For colors:** Pass only the **numeric value as a string** (e.g., \"1\", \"10\"), no text names.\n"
},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "24b6f50f-2502-415a-a3de-8760044094dc",
"name": "Create Recurring Events",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
1460,
800
],
"parameters": {
"end": "={{ $fromAI(\"End\") }}",
"start": "={{ $fromAI(\"Start\") }}",
"calendar": {
"mode": "id",
"value": "={{ $json.settings.GCAL_ID || 'primary' }}",
"__regex": "(^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*)"
},
"additionalFields": {
"color": "={{ $fromAI(\"Color\") }}",
"summary": "={{ $fromAI(\"Title\") }}",
"location": "={{ $fromAI(\"Location\") }}",
"description": "={{ $fromAI(\"Description\") }}",
"repeatUntil": "={{ $fromAI(\"RepeatUntil\") }}"
}
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "w9J3GFIveWCX6Ri9",
"name": "Google Calendar account"
}
},
"typeVersion": 1.3
},
{
"id": "297e1c8b-c0f7-4fc2-ad65-b2eb8fb98e2c",
"name": "SerpAPI 検索",
"type": "@n8n/n8n-nodes-langchain.toolSerpApi",
"position": [
1900,
640
],
"parameters": {
"options": {}
},
"credentials": {
"serpApi": {
"id": "CzQ9SBXldn0mNzzC",
"name": "SerpAPI account"
}
},
"typeVersion": 1
},
{
"id": "d24bd131-8fcf-490a-8e72-2af808de5ebe",
"name": "付箋6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1840,
560
],
"parameters": {
"color": 2,
"width": 200,
"height": 240,
"content": "## Internet"
},
"typeVersion": 1
},
{
"id": "c8fc82ff-01f4-448e-8088-ce685fac8c0f",
"name": "付箋7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-280,
940
],
"parameters": {
"color": 4,
"width": 680,
"height": 360,
"content": "# Setup Instructions \n## After logging into everything, simply make a base on airtable, then a list for Memory, Grocery List, and To-Do List.\n\n## Then just assign each list to the corresponding airtable tool node."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "e1675769-0742-496e-b810-6c79b2786e8a",
"connections": {
"Merge1": {
"main": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "main",
"index": 0
}
]
]
},
"c973ddae-19aa-492b-becb-17a53cf88405": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "49fea7ff-fb26-4f9c-88ee-be0b4b4a1980",
"type": "main",
"index": 0
}
],
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"SerpAPI": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
},
"49fea7ff-fb26-4f9c-88ee-be0b4b4a1980": {
"main": [
[
{
"node": "c973ddae-19aa-492b-becb-17a53cf88405",
"type": "main",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
},
"3de3982f-6b85-4044-b43f-6d55f5384fc2": {
"main": [
[
{
"node": "0cc42214-7c3f-4f4d-aed9-46da0bacc3a5",
"type": "main",
"index": 0
}
]
]
},
"2dfd5a1d-11c7-4127-a42e-01c4aed85a36": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
},
"c9717320-f73e-495f-851b-579a56ffca33": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"19393508-a421-488d-ade5-6e35c40122d4": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
},
"191f8751-d389-4ebc-a7f0-33f98d91344e": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
},
"6d28b117-1c68-4821-b044-ae3e250a5dfb": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
},
"bf874e10-c9a2-403c-8d46-94c80e82e76e": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
},
"feb5b5c7-87e8-496e-8e39-5ecebc9159ea": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
},
"d35e34d1-2546-4d89-b29c-494c8941aa8d": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
},
"3145a6ac-c55a-41c9-8d0a-b871316b640f": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
},
"c6e31580-c0fd-4562-811c-4444126d8646": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
},
"091a7c60-af5e-4a60-88c5-a55027544a3a": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
},
"Telegram Trigger": {
"main": [
[
{
"node": "c9717320-f73e-495f-851b-579a56ffca33",
"type": "main",
"index": 0
},
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"User Tele Memory": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
},
"Zeus Text Memory": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Window Buffer Memory1": {
"ai_memory": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_memory",
"index": 0
}
]
]
},
"24b6f50f-2502-415a-a3de-8760044094dc": {
"ai_tool": [
[
{
"node": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - コンテンツ作成, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
完全な B2B セールスフロー:Apollo リード生成、Mailgun 外信、および AI 返信管理
完全なB2Bセールスフロー:Apolloリード生成、Mailgunアウト Reach、AI返信管理
If
Set
Code
+
If
Set
Code
116 ノードPaul
コンテンツ作成
再生リスト詳細設定ボットコピー
Suno、GPT-4、Runway、Creatomate を使って AI 生成の YouTube ミュージックプレイリストを作成
If
Set
Code
+
If
Set
Code
203 ノードJoseph
コンテンツ作成
AIパーソナルアシスタント - タスクとメール管理
Telegram上でGPT-4oパーソナルアシスタントでタスク、メール、カレンダーを管理
Set
Code
Switch
+
Set
Code
Switch
40 ノードRonnie Craig
コンテンツ作成
✨🩷自動化ソーシャルメディアコンテンツ公開工厂 + 系统提示组合
基于动态系统提示とGPT-4oのAI驱动多平台ソーシャルメディアコンテンツ工厂
If
Set
Code
+
If
Set
Code
100 ノードAmit Mehta
コンテンツ作成
💥 NanoBanana、Seedream 4、ChatGPT Image、Veo 3 を使って動画広告を自動化 - VIDEO
AI(NanoBanana、Seedream、GPT-4o、Veo 3)を使って動画広告キャンペーンを自動化し公開
Set
Code
Wait
+
Set
Code
Wait
63 ノードDr. Firas
コンテンツ作成
GPT-4駆動のカールドメールワークフロー(完全カスタマイズされた3本のメールフォロー付き)
GPT-4、Mailgun、Supabaseを使ってパーソナライズされたラグディ冷信Seriesを自動化
If
Set
Code
+
If
Set
Code
100 ノードPaul
リードナーチャリング