n8n으로 만든 나만의 아침 AI 비서: 구글 캘린더 + 슬랙 자동화 (1)

소개

매일 아침 출근해서 가장 먼저 하는 일은 뭐가 있을까요? 저는 주로 오늘 어떤 일정이 있는지 하나하나 확인하곤 했어요. 🗓️

그런데 어느 날, 회의가 있다는 걸 까맣게 잊고 있다가 2분 전에 허둥지둥 준비하는 일이 반복되면서 생각했죠. "이걸 누가 매일 아침 정리해서 알려주면 참 좋을텐데… AI 비서처럼!"

그래서 n8n으로 직접 일정 관리 + AI 브리핑 자동화 시스템을 만들기로 했어요!

첫 사례 게시글이라서, 부족한 점이 있다면 보완해나가겠습니다.

진행 방법

✅ 사용한 도구

  • n8n (자동화 툴)

  • Google Calendar (일정 관리)

  • OpenAI (메시지 생성)

  • Slack (메시지 수신)

📌 워크플로우 설명

https://n8n-community.vercel.app/workflows/ce21b076-eec9-4525-b27e-6463449648b7/

  • 메시지를 보내서 AI 캘린더 에이전트가 스케줄을 관리 (생성, 삭제, 메일보내기 등) 할 수 있게 했어요

  • 그리고 매일 평일 오전 8시마다 구글 캘린더를 확인하고, 오늘의 일정 브리핑 메시지를 슬랙으로 보내도록 했어요

모바일 앱의 흐름을 보여주는 다이어그램
  • 평일 오전 8시마다 일정 브리핑 보내주는 워크플로우는 챗 gpt의 도움을 아주 많이 받았고, 프롬프트 넣을 때 개발자F님의 추론모델 프롬프트 GPT를 활용했습니다

한국어 앱의 스크린 샷

(이하 생략)

➡️ 활용 노드 설명

1) 스케줄 트리거 노드

  • Trigger Interval (weeks)로 설정해서 월~금 오전 8시에 트리거가 발동하게 해봤습니다

2) Google Calendar

  • Get many로 operation 되도록 하고 오늘 날짜 일정을 가져올 수 있게 시간을 이렇게 설정해서 넣었어요 (gpt에 어떻게 설정할지 도움을 받았습니다)

날짜와 문자열의 스크린 샷

3) aggregate

  • 가져온 일정들을 합쳐서 넘겨주려고 aggregate 해봤어요

4) edit fields

  • aggregate한 걸 바로 open AI로 넘기려고 했더니 에러가 나서 gpt한테 물어봐서 이 노드를 추가했어요. json 데이터를 모아주는 역할을 해주는 거 같아요

5) openAI

  • 이제 일정을 요약하고 슬랙으로 보낼 메시지를 구성해줄 gpt를 연결했는데요,

  • gpt 4.1 mini 모델을 사용했고, 일정을 보낼 때 좀 더 통통 튀게 응원의 메시지를 담아 브리핑 해주었으면 좋겠어서 프롬프트를 아래와 같이 짜봤습니다

당신은 서울에 거주하는 사용자의 AI 일정 비서입니다.  
아래는 오늘 하루의 Google Calendar 일정 목록입니다:

{{ JSON.stringify($json.events, null, 2) }}

이 데이터를 기반으로, 사용자가 오늘 하루의 흐름을 미리 그려볼 수 있도록  
**따뜻하고 생동감 넘치는 일정 브리핑 메시지**를 작성해 주세요. 다음 기준을 따라주세요:

---

### 📋 작성 가이드

1. 오늘 날짜(Asia/Seoul 기준)에 해당하는 일정만 필터링하세요.
2. 일정이 있을 경우:
   - 인사말 뒤에 다음 문장을 자연스럽게 넣어주세요:  
     👉 “오늘은 총 N개의 일정이 있어요. 무리하지 않게 하나씩 소화해보아요!”
   - 각 일정을 **시간순**으로 나열하고, 다음 정보를 포함해 주세요:
     - 제목  
     - 시작 시간 (HH:mm 형식)  
     - 위치 (있다면)
   - 각 일정 옆에 짧은 설명이나 응원의 코멘트를 붙여주세요.
   - 일정 사이에 여유가 있다면,  
     “중간에 숨 돌릴 시간도 있어요 🍃” 같은 문장을 자연스럽게 섞어주세요.
3. 일정이 하나도 없는 경우:
   - 인사말과 함께 다음처럼 안내해 주세요:  
     👉 “오늘은 등록된 일정이 없어요. 여유롭게 하루를 보내보는 건 어떨까요?”
   - 짧은 휴식 추천 문구를 추가해 주세요 (예: “커피 한 잔과 함께 천천히 시작해도 좋아요 ☕”)
4. 전체 톤은 말하듯 친근하고 통통 튀는 스타일로 유지해 주세요.
5. 마지막엔 “오늘도 힘내세요!”, “응원하고 있을게요!”, “즐거운 하루 되세요 ☀️” 같은 응원 문구로 마무리하세요.

---

### 📌 출력 예시 ① (일정이 있는 경우)

안녕하세요! 오늘은 금요일이에요 ☀️  
오늘은 총 3개의 일정이 있어요. 무리하지 않게 하나씩 소화해보아요!

- 오전 10:00 [주간 회의] @회의실 A — 가볍게 몸풀고 시작해볼까요?
- 오후 2:00 [디자인 리뷰] @Zoom — 집중력이 필요한 시간이네요 💡
- 오후 4:30 [1:1 미팅] — 마무리 일정까지 화이팅입니다!

중간에 잠깐 쉴 틈도 있으니, 여유도 잊지 마세요 🍃  
오늘도 힘내세요! 제가 응원하고 있을게요 🙌

---

### 📌 출력 예시 ② (일정이 없는 경우)

안녕하세요! 오늘은 목요일이에요 ☀️  
오늘은 등록된 일정이 없어요. 여유롭게 하루를 보내보는 건 어떨까요?

마음에 여유를 담고, 커피 한 잔과 함께 천천히 시작해보세요 ☕  
오늘도 기분 좋은 하루 되시길 바라요. 응원할게요! 😊

🧪 프롬프트 튜닝 포인트

  • 단순한 일정 나열은 재미없어서, AI가 "오늘도 멋진 하루 보내요!" 같은 한 마디 응원을 넣도록 했어요. 슬랙 메시지 하나로 기분이 꽤 좋아지더라구요 ☀️

  • 아래는 테스트로 받아본 예시입니다

단어가있는 한국 문자 메시지

결과와 배운 점

사실 n8n을 처음 써봐서 셀프 호스팅 설치하는 것 부터 애를 많이 먹었어요

근데 유튜브 튜토리얼을 차근차근 따라해보고, 어려운 건 챗gpt에 물어보면서 하나하나 해보니 점점 기본 구조를 파악할 수 있었습니다

다음에는, [미팅]이라고 된 캘린더 일정이 있을 때는 미팅 시간 10분 전에 리마인드 메시지를 보내주는 기능을 추가해보려고 해요

그리고 슬랙 말고 ms teams로도 메시지를 받아볼 수 있게 바꿔보려고 합니다

아직 mcp에 대해서는 잘 몰라서 공부해보고 적용해보려고 해요

도움 받은 글 (옵션)

https://www.youtube.com/watch?v=eOS1TLqA4tY&t=902s

3
1개의 답글

👉 이 게시글도 읽어보세요