오전 7시에는 나의 할 일 추천을, 오후 7시에는 일일 리포트를 자동으로! '생산성 업 봇' 만들기 (Obsidian, Google Calendar, 로컬 n8n)

소개

혹시 하루가 계획대로 돌아가는 경우가 많으신가요?

직장인의 경우, 하루 출근을 하면서 '오늘은 어떤 일을 해야지~' 하면서 계획을 세웠을 순 있지만 막상 하루 일과 끝나고 보면, 계획 했던 일을 제대로 끝내는 경우는 많지 않은 것 같습니다.

계획에 없어던 일들, 더 우선순위가 높은 일들, 기존에 하고 있었던 업무들 보다 더 중요하지만 더 우선순위가 높은 일들.

많은 사람들과 많은 일들이 우리들의 시간과 주의력을 빼앗어먹으려고 씨름 중이죠...!

이런 상황에서 생산성을 내기 위해서는 무엇이 필요할까요? 바로 '다음 할 일'을 빠르게 파악하여 바로 실행하는 것 입니다.

우리에게 제일 한정된 주의력을 잘 활용해야 '생산성'을 적절히 발휘할 수 있고, 그럼 많은 일들도 조금이라도 더 처낼 수 있을 것 같아요.

저는 업무 노트와 기록을 Obsidian에, 일정은 Google Calendar에, 팀 커뮤니케이션은 Webex에 남깁니다.

각 도구를 수작업으로 오가며 “다음 할 일”을 정리하다 보면 또다시 시간이 사라지죠.

그래서 n8n으로 다음 두 가지 자동화를 만들었습니다.

시각

자동화 워크플로우

핵심 기능

07:00

Morning Planner

• 전날 Obsidian 노트의 ### Wrapping Up & Work Log 분석• 오늘 Google Calendar 일정 조회• 두 정보를 합쳐 오늘 우선순위 5개 체크리스트 생성 → Webex DM

19:00

Daily Report

• 오늘 계획(# Work) vs. 실행(Logs) 비교• 내일 일정‧우선순위 제안 포함 데일리 리포트 작성 → Webex DM

진행 방법

[전체 워크플로우]

시스템 프로세스를 보여주는 다이어그램

1. 맥 미니 홈 서버에 로컬에 n8n 깔고 실행시키기... (너무 골치아팠던)

최근에 집에서 원격으로 쓰기 위한 용도로 맥 미니를 하나 구입했습니니다. (신남)

여자친구는 집에서 개발하고, 저는 n8n을 돌리고자 하는 마음에... 구입했습니다.

이렇게 vnc (virtual network computing)으로 설정하고 나니 언제 어디서나 이렇게 원격으로 접속해서 피씨를 쓸 수 있게 했습니다.

이제 제가 구현하고자 하는 것을 n8n에서 구현하려고 했는데, 보니까,

기쁨도 잠시, cloud랑은 많이 다르다는 구나 라는 것을 깨달았습니다.

n8n을 npm으로 설치했는데요. n8n start 로 n8n을 하면, 로컬에서 돌아가긴 하는데, 문제는 링크가 localhost로 뜹니다.

내 로컬 PC에는 이게 서버로 돌아가고 있는데 로컬 n8n을 인터넷의 다른 앱들은 못 바라보고 있는 상태입니다.

문제는 내가 노드로 연결한 다양한 Webhook들이 어떻게 내 로컬 n8n을 바라보게끔 할까..
에 대한 것이 큰 고민이 있었습니다.

저는 웹 개발과 포트.. 웹훅.. 이런 것에 대한 지식이 거의 전무했기에 진짜 삽질을 많이 했습니다.

1트: ngrok

처음엔 ngrok 으로 나의 로컬 호스트를 터널링 시켜서 링크로 만들었습니다.

그런데 문제는 ngrok은 한번 링크를 열면 2시간인가? 밖에 유효하지 않다고 하더군요.

https://stackoverflow.com/questions/65647056/how-do-i-made-ngrok-server-run-forever

돈을 더 내기도 싫었고 그래서, 일단 시도하다가 실패했습니다.

2트: 공인 ip 포트 포워딩 이용하기.

두 번째는 공인 ip 포트 포워딩을 이용하는 것인데요.

네어버에서 '공인 ip'를 치면 나오는 ip로, 나의 n8n 포트를 가지고 포트 포워딩 / 터널링을 하는 겁니다.

여기에 있는 211.XXX.XXX.XXX가 외부에서 볼 수 있는 나의 IP 주소이고, 이것을 가지고 나의 localhost에 연결시켜서 웹에서 이걸 바라보게 하는 것이에요.

처음엔 어렵지 않게 잘 되었는데, GCP 구글 캘린더 연결에서 문제가 있었습니다.

Callback URL이 공인 IP 형식이 안 되고,

~~~~.io / ~~~~.com 처럼 제대로된 도메인이 필요하더라고요.

안전하게 'HTTPS'로 연결된, SSL 인증서가 발급된 안전한 도메인이 필요했습니다.

3트: 와일드카드 DNS 서비스

ChatGPT랑 2시간 정도 이야기하면서 보니... 와일드카드 DNS 서비스란 것이 있더라고요.

무료로 IP를 자동으로 맵핑해주는 서비스라고 합니다.

999.123.456.789 이 ip라고 하면..

이것을 999-123-456-789.nip.io 처럼 연결시켜주는 무료 서비스라고 하더라고요.

그래서 이걸 가지고 이것저것 삽질을 해서..

환경 변수도 설정해주고

Caddy 란 것도 깔아서 뭐 파일도 설정해주고...

그 상태로 n8n을 실행시켰습니다..

뭐 하여튼 이렇게 하니 나의 localhost로 호스팅된 것을 안전한 SSL 인증서가 발급받은 링크로 연결 시킬 수 있었습니다...

이것만 4시간 걸림 ㅎ


워크플로우

시스템 프로세스를 보여주는 다이어그램

후... 이제 워크플로우를 공유드리자면,

우선 일정 시간에 트리거 되는 것을 만들고자 했습니다.

  1. 오전 7시: 출근 전, 나에게 '어제' 노트와 '오늘 계획'을 바탕으로 할 일 추천해주기

  2. 오후 7시: 퇴근 후, '오늘'의 계획과 노트를 바탕으로 '내일' 할 것 추천해주기 (일정 포함)

우선 저는 옵시디언이 제 맥 미니에는 계속 돌아가고 있어서 웹 연결 없이 로컬에서 파일을 불러오는 것으로 했습니다.

제 업무 PC의 노트 기록들이 제 맥 미니의 옵시디언과 실시간으로 Github으로 동기화되고 있어 실시간으로 동기화가 됩니다.

이 노트들은 날짜 기반으로 일정한 폴더와 파일 형식으로 작성되고 있어서 이를 불러오는 것을 했습니다.

그럼 제 노트 / 데이터들은 어떻게 되어 있을까요.

간단하게 가져 왔습니다.

1/ 계획 Plan 노트

오전 출근 직후에 오늘 해야 한다고 생각되는 것들을 적습니다.

그리고퇴근 전에 내일 무엇을 해야 할지 적습니다.

작업 목록을 보여주는 화면의 스크린 샷

2/ 로그 Log 노트

저는 하루의 일과를 계획한 후에, 불렛저널 (시간 순) 대로 업무 기록을 진행하고 있습니다.

이것만 보면, 제가 의식적으로 무엇을 집중했는지 알 수 있는 알 수 있죠

로고가있는 웹 사이트의 스크린 샷

일정별로 파일 읽어오기

특정 날짜 / 시간을 기점으로, 그 날의 Plan / Log 노트의 위치를 알아서 식별해서 해당 노트를 가져와서 데이터를 가져옵니다.

최종적으로 위의 'Structured Data1' 이라는 노드에 그 데이터들이 정제되어 가지고 오게 됩니다.

여러 언어를 보여주는 컴퓨터 화면의 스크린 샷

이를 바탕으로 AI Agent가 제 구글 캘린더 일정까지 가지고 오게 되어 저에게 HTTP Request로 저에게 개인적으로 메시지를 쏘게 됩니다.

응용 프로그램의 흐름을 보여주는 다이어그램

오전 7시 할일 추천 AI Agent 프롬프트 (아직 초안)

=# 시스템(너의 역할)
너는 **똑쟁이 브라이언의**의 스마트 비서다.  
아래 “입력 데이터”를 분석해 **오늘(출근 직후) 할 일 추천**을 한국어 Markdown으로 작성한다.

- **오늘 일정**은 **Calendar MCP**(my-calendar) 툴로  
  `calendar.my_calendar.listEvents date={{ $json.today }}` 를 호출해 자동으로 조회해라.
- 어제 문서의 `### Wrapping Up` 섹션, 어제 Work Log, 오늘 일정 - 세 요소를 모두 반영해라.

=# 입력 데이터
- 📅 **오늘 날짜** : **{{ $json.today }}**
- 🔙 **어제 날짜** : **{{ $json.today }} 기준 -1 일**

- 🔚 **어제 Wrapping Up**  
{{ $json.plan || "*Wrapping Up 내용이 없습니다.*" }}

- 🗒️ **어제 Work Log**  
{{ $json.log || "*Work Log 가 비어 있습니다.*" }}

- 🗓️ **오늘 일정** (MCP 자동 조회)  
{{ $json.events?.length ? "_아래 목록 참조_" : "_오늘 일정 없음_" }}

=# 작성 지침
1. **어제 Wrapping Up → 오늘 이어서 해야 할 일**  
   - 어제 미완료·TODO를 요약 후 “오늘 해야 할 일”로 재정의.
2. **어제 Work Log 분석 → 개선/추진 과제 2–3개**  
   - “무엇이 지연됐는가, 개선할까” 관점으로 bullet 작성.
3. **오늘 일정 기반 신규 준비 작업 1–3개**  
   - 일정 시작 전에 준비해야 할 것을 제안.
4. 전체 합쳐 **최대 5개**만 제시, 체크박스 형식 `- [ ] <구체적 동사> …`.
5. **Markdown** 출력  
   - 맨 위 제목: `[즁봇 Morning 알림] # {{ $json.today }} 요일 할 일 추천`  
   - 섹션 헤더 `##`: 📌 어제 → 오늘 / 🗓️ 오늘 일정 / 🚀 오늘 우선순위  
   - 헤더용 이모지 외 과도한 이모지·영어 남용 금지.
6. 만약에 오늘의 날짜가 월요일이면, 어제의 날짜는 지난 금요일 것을 기준으로 모든 것을 처리 부탁해.

=# 예시(참고)
[즁봇 알림] # 2025-06-04 수요일 할 일 추천

## 📌 어제 → 오늘
- [ ] PR #42 코드 리뷰 마무리  
- [ ] KPI 대시보드 새 지표 적용

## 🗓️ 오늘 일정
1. 10:00 팀 스탠드업  
2. 15:00 클라이언트 리뷰 미팅

## 🚀 오늘 우선순위
- [ ] 11:00 전까지 PR #42 머지 요청  
- [ ] 클라이언트 미팅 자료 최종 교정 후 공유  
- [ ] KPI 대시보드 새 지표 테스트 배포

이렇게 하면 오전 7시와 오후 7시에 저에게 다음과 같이 옵니다

오전 7시

오후 7시

한국 문자 메시지의 스크린 샷

결과와 배운 점

일단 막 만든 것이라... 이게 앞으로 어떻게 잘 쓰일지는 직접 써보면서 차차 업그레이드 시켜봐야겠습니다.

일단 배운 점

  1. 기록을 열심히 해야겠다. 저만의 형식으로 일관된 형태의 노트들을 더 많이 할 수 있도록 연습하려고 합니다! (기존에 잘 하고 있지만 더 일관되게 잘 할 수 있는 방식으로 연습하려고 합니다)

  2. 아.. 로컬 n8n은 장난 없구나. 클라우드 서비스가 존재하는 이유를 다시 한번 알게 되었습니다. 이런 불편한 것을 다 한번에 해주니까... 말입니다.

개고생 하였지만, 그래도 뭐라도 해냈다는 것에 큰 뿌듯함을 느낍니다..후후

총 소요 시간: 6시간... (대선일에)

3
1개의 답글

👉 이 게시글도 읽어보세요