8
n8n 中文网amn8n.com

创作者Telegram助手

高级

这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 33 个节点。主要使用 Merge, Switch, Airtable, Telegram, Aggregate 等节点。 基于记忆和任务管理的AI驱动Telegram个人助手

前置要求
  • Airtable API Key
  • Telegram Bot Token
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "htnjvbXKhNgwF5D7",
  "meta": {
    "instanceId": "680e06622abbc29f33665328bce44bcaca1adbbb0cb2d0fbe1a6ee4430d405b8"
  },
  "name": "创作者 Telegram 助手",
  "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": "## 购物清单"
      },
      "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": "## 记忆"
      },
      "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 响应",
      "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": "用户 Telegram 记忆",
      "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 文本记忆",
      "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": "购物清单搜索",
      "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": "购物清单创建",
      "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": "购物清单删除",
      "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": "获取记忆",
      "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": "## 语音"
      },
      "typeVersion": 1
    },
    {
      "id": "2dfd5a1d-11c7-4127-a42e-01c4aed85a36",
      "name": "获取事件",
      "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": "创建事件",
      "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": "删除事件",
      "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": "更新事件",
      "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": "## 日历"
      },
      "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": "## 待办事项"
      },
      "typeVersion": 1
    },
    {
      "id": "6d28b117-1c68-4821-b044-ae3e250a5dfb",
      "name": "待办事项搜索",
      "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": "待办事项创建",
      "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": "待办事项删除",
      "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": "## 记忆"
      },
      "typeVersion": 1
    },
    {
      "id": "3de3982f-6b85-4044-b43f-6d55f5384fc2",
      "name": "Zeus Telegram",
      "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": "创建重复事件",
      "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": "## 互联网"
      },
      "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": "# 设置说明"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "e1675769-0742-496e-b810-6c79b2786e8a",
  "connections": {
    "Merge1": {
      "main": [
        [
          {
            "node": "Zeus Tele",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Telegram",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SerpAPI": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Telegram": {
      "main": [
        [
          {
            "node": "OpenAI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Zeus Tele": {
      "main": [
        [
          {
            "node": "Telegram Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Events": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Memories": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "To-Do Create": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "To-Do Delete": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "To-Do Search": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Create Events": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Delete Events": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Update Events": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Grocery Create": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Grocery Delete": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Grocery Search": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "Get Memories",
            "type": "main",
            "index": 0
          },
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "User Tele Memory": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Zeus Text Memory": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Window Buffer Memory1": {
      "ai_memory": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Create Recurring Events": {
      "ai_tool": [
        [
          {
            "node": "Zeus Tele",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 内容创作, 多模态 AI

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量33
分类2
节点类型14
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

外部链接
在 n8n.io 查看

分享此工作流