Telegram 일정 로봇
중급
이것은Personal Productivity분야의자동화 워크플로우로, 11개의 노드를 포함합니다.주로 If, Code, Telegram, GoogleCalendar, ScheduleTrigger 등의 노드를 사용하며. Google 일정을 통해 Telegram으로 일일 일정 요약 알림 발송
사전 요구사항
- •Telegram Bot Token
카테고리
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "SeY9lTVPdPeVIQdg",
"meta": {
"instanceId": "b7b2db9d6a461f902b25d685e4550cab3c88fcbb3254a8654e06246b67e4ff5c",
"templateCredsSetupCompleted": true
},
"name": "Bot Telegram Calendar",
"tags": [
{
"id": "5iQR5Cw05Bzz7Aqt",
"name": "Google",
"createdAt": "2025-08-02T17:36:32.751Z",
"updatedAt": "2025-08-02T17:36:32.751Z"
},
{
"id": "DW3QCDhQZ9ZpSunz",
"name": "Bot",
"createdAt": "2025-08-02T17:37:06.011Z",
"updatedAt": "2025-08-02T17:37:06.011Z"
},
{
"id": "pvFbKYpUu6xv7RQ8",
"name": "Calendar",
"createdAt": "2025-08-02T17:36:30.352Z",
"updatedAt": "2025-08-02T17:36:30.352Z"
},
{
"id": "rYuINsb3Y1XjrgNv",
"name": "Productivity",
"createdAt": "2025-08-02T17:36:49.812Z",
"updatedAt": "2025-08-02T17:36:49.812Z"
},
{
"id": "yfpCFhbNZGRtYKc0",
"name": "Telegram",
"createdAt": "2025-08-02T17:36:35.592Z",
"updatedAt": "2025-08-02T17:36:35.592Z"
}
],
"nodes": [
{
"id": "a79f7817-b3e8-417c-b176-eb507d9c7b69",
"name": "이벤트 개수 확인",
"type": "n8n-nodes-base.code",
"position": [
416,
0
],
"parameters": {
"jsCode": "// Get all the event from the items\nconst allItems = $items(\"Check google Calendar\");\n\n// initiate event board\nlet events = [];\n\n// Check items and extract events\nallItems.forEach(item => {\n const data = item.json;\n\n if (Array.isArray(data)) {\n events.push(...data.filter(e => e && Object.keys(e).length > 0));\n } else if (data && Object.keys(data).length > 0) {\n events.push(data);\n }\n});\n\n// Calculate the number of events\nconst eventCount = events.length;\n\nreturn [\n {\n json: {\n eventCount,\n events\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "3daa99b4-dc92-47eb-a9a2-a749ca5fa215",
"name": "오전 7시 트리거",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
0,
0
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 8
}
]
}
},
"typeVersion": 1.2
},
{
"id": "11e1cff6-439b-4cae-8d1c-a48e7a8bed90",
"name": "조건문",
"type": "n8n-nodes-base.if",
"position": [
624,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "0a556b19-d5f6-42fd-aa9f-6ebfc2c5e042",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.eventCount}}",
"rightValue": 0
}
]
}
},
"executeOnce": false,
"typeVersion": 2.2,
"alwaysOutputData": false
},
{
"id": "711a4b13-a376-4f54-b458-f97a832e4fe1",
"name": "메시지 코드",
"type": "n8n-nodes-base.code",
"position": [
832,
-96
],
"parameters": {
"jsCode": "// Get all of the events from IF true branch\nconst rawItems = $items();\nlet events = [];\n\n// Normalize data\nrawItems.forEach(item => {\n const data = item.json;\n\n if (Array.isArray(data.events)) {\n events.push(...data.events);\n } else if (data.event) {\n events.push(data.event);\n } else {\n events.push(data);\n }\n});\n\n// Message creation\nlet message = `☀️ Good morning! Here's your calendar for today\\n\\n📅 You have ${events.length} event${events.length > 1 ? 's' : ''} today.\\n\\n`;\n\nevents.forEach(e => {\n message += `──────────────────────\\n`;\n message += `📌 Name: ${e.summary || \"N/A\"}\\n`;\n message += `⏰ Starts: ${e.start?.dateTime || e.start?.date || \"N/A\"}\\n`;\n message += `⏳ Ends: ${e.end?.dateTime || e.end?.date || \"N/A\"}\\n\\n`;\n\n message += `👤 Creator: ${e.creator?.email || \"N/A\"}\\n`;\n message += `👥 Organizer: ${e.organizer?.email || \"N/A\"}\\n\\n`;\n\n message += `📄 Type: ${e.eventType || \"N/A\"}\\n`;\n message += `🔗 Link: ${e.htmlLink || \"N/A\"}\\n\\n`;\n\n message += `📝 Description: ${e.description || \"No description\"}\\n`;\n message += `📍 Location: ${e.location || \"N/A\"}\\n\\n`;\n});\n\nmessage += \"✨ Have a great day!\";\n\nreturn [\n {\n json: {\n text: message\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "b6b693b3-c599-49e2-b4cd-7781ef0c97c0",
"name": "오늘 회의 없음 메시지",
"type": "n8n-nodes-base.telegram",
"position": [
928,
176
],
"webhookId": "9d964a15-b2bc-4d33-afbe-fdb5d537d11a",
"parameters": {
"text": "=👋 Hi! Your calendar is clear for today 🗓️✨",
"chatId": "1234",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "q45sTNe4DEc2aR0Q",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "774ce326-9fd9-4136-8882-e68167c23c13",
"name": "메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-48,
-496
],
"parameters": {
"color": 2,
"width": 416,
"height": 848,
"content": "## 1.Workflow trigger and Google Calendar\n\nThe workflow is **triggered automatically** each morning at 7am.\n\nThen the second node will **analyse your Google Calendar** of the day looking for any event or meeting scheduled.\n\nHow to setup:\nSet up your Google Agenda **API credentials** "
},
"typeVersion": 1
},
{
"id": "d2319706-cda9-45a0-860e-d3b1f330d3f0",
"name": "google 캘린더 확인",
"type": "n8n-nodes-base.googleCalendar",
"position": [
208,
0
],
"parameters": {
"options": {
"orderBy": "startTime"
},
"calendar": {
"__rl": true,
"mode": "list",
"value": "fr.french#holiday@group.v.calendar.google.com",
"cachedResultName": "Jours fériés et autres fêtes en France"
},
"operation": "getAll",
"returnAll": true
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "UNaR3A3kfDhLIVuc",
"name": "Google Calendar account"
}
},
"executeOnce": false,
"typeVersion": 1.3,
"alwaysOutputData": true
},
{
"id": "79952d85-8136-40b4-976a-409ecb103230",
"name": "메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
384,
-496
],
"parameters": {
"color": 5,
"width": 368,
"height": 848,
"content": "## 2.Count event code and Branch\n\nThe first node will **count the number of event items** scheduled and **return a number**. Even if there is no event, a number (0 in this case) would be returned.\n\nThe the second node will **analyse this number**, if the number is not 0, the True branch ✅ will be activated. If it's O, it will be the False branch ❌ that will be activated."
},
"typeVersion": 1
},
{
"id": "bbc556dc-619a-4bc1-9fdb-6c0f3a44576e",
"name": "메모3",
"type": "n8n-nodes-base.stickyNote",
"position": [
768,
-496
],
"parameters": {
"color": 4,
"width": 560,
"height": 848,
"content": "## 3. Send the telegram message\n\nIn the **True branch** ✅, the code node, will create the message and gather all the informations wanted about the events and meeting. So a full sum um will be sent in one message only.\nIn the Telegram send text node, the **message is sent**.\n\nIf it's the **False branch** ❌, the Telegram node will send the **message about not having meeting that day**.\n\nHow to setup:\n- Set up a Telegram bot and get the key API.\n- Connect the API credentials to the node.\n- For the **True branch** ✅, set up your message in javascript and then copy and paste the json file in the next node.\n- For the **False branch** ❌, just set up your message."
},
"typeVersion": 1
},
{
"id": "1e479d9c-0d57-469c-8631-195a879fb351",
"name": "요약 메시지 전송",
"type": "n8n-nodes-base.telegram",
"position": [
1040,
-96
],
"webhookId": "126cc2af-1a44-4309-af2b-83a5f71d65d7",
"parameters": {
"text": "={{ $json.text }}",
"chatId": "1234",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "q45sTNe4DEc2aR0Q",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "2d7ba810-f3d8-4e33-940f-516ea9b93a71",
"name": "메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
-496
],
"parameters": {
"color": 3,
"content": "## Required\n\n- Telegram Bot and its API\n- Google account\n- Google Calendar API"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "8576f66a-463e-4a95-a07a-205e8f57ff27",
"connections": {
"3daa99b4-dc92-47eb-a9a2-a749ca5fa215": {
"main": [
[
{
"node": "d2319706-cda9-45a0-860e-d3b1f330d3f0",
"type": "main",
"index": 0
}
]
]
},
"a79f7817-b3e8-417c-b176-eb507d9c7b69": {
"main": [
[
{
"node": "11e1cff6-439b-4cae-8d1c-a48e7a8bed90",
"type": "main",
"index": 0
}
]
]
},
"11e1cff6-439b-4cae-8d1c-a48e7a8bed90": {
"main": [
[
{
"node": "711a4b13-a376-4f54-b458-f97a832e4fe1",
"type": "main",
"index": 0
}
],
[
{
"node": "b6b693b3-c599-49e2-b4cd-7781ef0c97c0",
"type": "main",
"index": 0
}
]
]
},
"711a4b13-a376-4f54-b458-f97a832e4fe1": {
"main": [
[
{
"node": "1e479d9c-0d57-469c-8631-195a879fb351",
"type": "main",
"index": 0
}
]
]
},
"d2319706-cda9-45a0-860e-d3b1f330d3f0": {
"main": [
[
{
"node": "a79f7817-b3e8-417c-b176-eb507d9c7b69",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 개인 생산성
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
집중 시간
바쁜 일정 중 Google 캘린더에 집중 시간 자동 차단
If
Code
Item Lists
+
If
Code
Item Lists
11 노드Moe Ahad
개인 생산성
Gemini, 음성, 이미지 생성을 사용하여 다중 모달 Telegram AI 어시스턴트를 구축합니다.
Gemini, 음성, 이미지 생성을 사용하여 다중 모달 Telegram AI 어시스턴트를 구축합니다.
If
Set
Code
+
If
Set
Code
95 노드Iniyavan JC
개인 생산성
전 세계 휴일 충돌 검출 및 회의 재정렬
Google Calendar와 Slack을 사용하여 공휴일 충돌을 검출하고 회의 재정렬을 제안
If
Set
Code
+
If
Set
Code
23 노드Takuya Ojima
개인 생산성
무료 선물: 매일 알림 템플릿
Google Calendar, Twilio, 및 Claude AI를 사용하여 매일 일정 요약 SMS 가져오기
If
Set
Code
+
If
Set
Code
13 노드Anne Uy Gothong
개인 생산성
LinkedIn 직업 검색
LinkedIn 직업 검색: 자동 이력서 매칭(GPT/Gemini) + 취업서생성기 + Telegram 알림
If
Set
Code
+
If
Set
Code
33 노드Hojjat Jashnniloofar
개인 생산성
회의록 자동화 (Google Sheets + Gmail)
Google Sheets 및 Gmail을 사용한 자동화된 회의록 배포
Code
Gmail
Google Sheets
+
Code
Gmail
Google Sheets
7 노드Yassin Zehar
개인 생산성
워크플로우 정보
난이도
중급
노드 수11
카테고리1
노드 유형6
저자
Yassin Zehar
@yassinzeharDigital & IT Project Manager | Data-oriented | Agile certified (PSM I, PSPO I) | 6+ yrs experience | Paris
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유