소개
저는 일정 관리에 꽤 진심인 편인데, 동시에 자주 놓칩니다.
이유는 명확했어요. 하는 일이 너무 많고, 일정도 분산돼 있고, 일정 등록을 미루다 잊어버리는 것
그래서 아예 핸드폰으로 스크린샷만 찍으면 캘린더에 일정이 자동으로 등록되는 시스템을 만들기로 했습니다.
“프리랜서 n8n” 스터디의 첫 예제가 구글 캘린더 자동화였던 덕분에 이걸 잘 활용하면 제 페인포인트를 직접 해결할 수 있겠다 싶었어요.
사용한 도구
Android 폰
FolderSync (클라 우드 연동용 앱)
Google Drive
n8n
진행 방법
프리랜서 n8n 스터디에 참여한 이유와 진행 중인 프로젝트
‘프리랜서 n8n’ 스터디를 신청하게 된 계기는, 4주 뒤 내가 직접 만들어낼 자동화 결과물 리스트를 보고 큰 흥미를 느꼈기 때문입니다.
마침 첫 번째 스터디 예제가 ‘구글 캘린더 자동 등록’이라 더욱 반가웠습니다. ‘드디어 내 오랜 페인포인트를 스스로 해결할 수 있겠구나’라는 기대감이 들었어요.
제가 갖고 있는 일정 관리의 문제는 크게 두 가지였습니다.
하나는 다양한 협업 툴에서 일정을 주고받다 보니 일정이 이곳저곳 흩어진다는 점이고,
다른 하나는 일정이 많아질수록 캘린더에 등록하는 걸 자꾸 잊게 된다는 점이었죠.
그래서 첫 주 오프라인 모임에서 세임님과 대화를 나눈 후, 이미지를 기반으로 캘린더에 자동 등록되는 시스템을 구현해보기로 마음먹었습니다.
프로젝트 목표: 스크린샷 → 일정 등록까지 자동화
핸드폰으로 일정이 적힌 화면을 캡처하면,
→ 자동으로 클라우드에 업로드되고
→ 이미지 분석을 통해 일정이 있는지 확인한 뒤
→ 일정이 있다면 구글 캘린더에 등록되도록 하는 것이 목표였습니다.
메모하듯이 스크린샷을 해두는게 습관이다보니, 일정에 관련해서도 이런식으로 자동화를 해두면 확실히 도움이 될 거라고 판단했습니다.
1단계. 클라우드 연동부터 고민
가장 먼저 고민한 건, 핸드폰 내 “스크린샷” 폴더에 저장된 이미지를 클라우드로 자동 업로드하는 방법이었습니다.
검토해본 클라우드 옵션은 총 세 가지였어요.
구글 드라이브
원드라이브
드롭박스
세임님의 조언에 따라 드롭박스는 제외했고,
원드라이브는 안드로이드 폰에 자동 연동되긴 하지만, 이 자동화 하나만을 위해 유료 구독을 하는 건 부담스러워 선택하지 않았습니다.
결국 선택한 방식은 FolderSync 앱을 이용해 구글 드라이브에 스크린샷을 자동 업로드하는 것이었어요.
(스터디원 지훈님의 추천으로 시도하게 됐습니다.)
+ 작업 중에 구글 포토를 통해 구글 드라이브와 연동하는 방법도 시도해보았어요.
사진 백업은 잘 되긴 했지만, 문제는 폴더 구조였습니다.
구글 포토는 핸드폰의 실제 폴더 체계와 다르게 작동해서 “스크린샷” 폴더가 없거나, 같은 이름이라도 내부 사진 구성이 완전히 달랐습니다. 결국 원하는 폴더만 정확히 연동하기가 어려워서 이 방식은 포기하게 됐어요.
FolderSync 설정 과정에서 꽤 많은 시행착오가 있었습니다. (결국 해냈지만!)
아무리해도 설정해 둔 자동 동기화가 작동하지 않아, 자동 업로드가 되지 않았습니다.
왜 그럴지 계속 고민하고, 검색하고, 앱을 사용하다보니
문제는
와이파이 외 연결을 허용하지 않아 전송이 막혔으며
앱 권한 허용도 제대로 안 되어 있었던 것
이런 부분을 하나씩 확인하고 해결하면서, 정상적으로 파일이 업로드되도록 만들 수 있었습니다.
※ 참고한 설정 방법
https://geekorea.com/how-to-google-drive-backup-and-auto-sync-on-galaxy/
2단계. 본격적인 n8n 구성 시작
n8n 작업은 생각보다 막막하게 시작했습니다.
무엇부터 구성해야 할지 몰라 한참 헤맸고, 그때마다 ChatGPT와 Claude의 도움을 받으며 하나씩 시도해봤습니다.
하고자 하는 기능을 프롬프트로 설명하고
→ AI의 응답을 바탕으로 노드를 설정하고
→ 중간에 에러가 나면 캡처해서 질문하고
→ 다시 수정하고 반복하며 구성해나갔습니다.
이런 과정을 수십 번 거치며, 총 2가지 방식의 플로우를 만들어냈습니다.
(본업보다 더 집착했던 것 같아요...😂)
첫번째 방식: 단계별 분리 처리 방식
Google Drive 트리거 → 파일 다운로드 → 이미지 분석 → 일정 판별 → 데이터 가공 → 캘린더 분기 → 각 캘린더 등록
"OpenAI로 이미지 분석만 수행하고, 이후 데이터 처리와 캘린더 등록은 별도의 n8n 노드들(If, Set, Switch, Google Calendar)로 구현" 라고 적었지만 사실 이게 무슨 소리인지 잘 모르겠습니다. 하라는데로 했을 뿐..
1단계: Google Drive Trigger
노드: Google Drive Trigger
트리거 조건: fileCreated (새 파일 생성시)
모니터링 폴더: 스크린샷 폴더
출력: 파일 정보를 다음 단계로 전달2단계: Download file
노드: Google Drive
작업: download (파일 다운로드)
파일 ID: {{ $json.id }} (트리거에서 전달받은 파일 ID)
출력: 이미지를 바이너리 데이터로 변환3단계: Analyze image
노드: OpenAI
모델: GPT-4O
프롬프트: 이미지 분석 후 일정 정보 추출 및 JSON 형식 응답 요청
출력 형식: has_schedule, category, title, relative_date, start_time 등을 포함한 JSON4단계: If
노드: If
조건: {{ JSON.parse($json.content).has_schedule }} === true
역할: 일정 존재 여부에 따른 분기 처리5단계: 데이터 가공
노드: Set
기능: 상대적 날짜를 절대 날짜로 변환, 제목 포맷팅, 캘린더 URL 설정
주요 변환: "24일" → "2025-07-24", "다음주 목요일" → 구체적 날짜 계산6단계: Switch
노드: Switch
분기 조건: category 값에 따라 personal/work/class로 분기
역할: 일정 유형별로 적절한 캘린더 노드로 라우팅7단계: 캘린더 등록
노드: Google Calendar (3개)
일정 내용에 따라 캘린더에 나눠서 등록
공통 설정: 날짜/시간 형식 변환 및 한국 시간대(+09:00) 적용
두번째 방식: AI Agent 통합 처리 방식
Google Drive 트리거 → 파일 다운로드 → AI Agent (이미지 분석 + 캘린더 등록)
AI Agent를 활용하여 이미지 분석부터 캘린더 등록까지 모든 작업을 하나의 노드에서 처리하는 방식입니다. 스터드 처음에 예제로 해본 MCP를 적극 활용했습니다.
관련해서 작성한 사례글 : https://www.gpters.org/nocode/post/taste-calendar-automation-n8n-rpyHJIyHcu6498Y
1단계: Google Drive Trigger
노드: Google Drive Trigger
트리거 조건: fileCreated (새 파일 생성시)
모니터링 폴더: 스크린샷 폴더 (FolderSync 업로드 대상)
폴링 주기: 1분마다 확인2단계: Download file
노드: Google Drive
작업: download (파일 다운로드)
파일 ID: {{ $json.id }} (트리거에서 전달받은 파일 ID)
출력: 이미지를 바이너리 데이터로 변환3단계: AI Agent
노드: AI Agent
주요 설정:
Chat Model: OpenAI GPT-4o
Tools: 3개 MCP Client (개인/업무/수업 캘린더)
Options: Automatically Passthrough Binary Images 활성화프롬프트에는 캘린더 구분, 제목 규칙, 작업 과정에 대해서 작성
회사 막내가 한 말이 아직도 귀에 맴돕니다.
“이 정도면 AI들 월급 줘야 해요. 그렇게 부려먹을 거면…”
엄청 고생한 ChatGPT와 Claude...
테스트 결과는?
두 방식 모두 일정 등록에는 성공했습니다.
일정이 포함된 스크린샷은 정상적으로 캘린더에 등록되었고
일정이 없는 스크린샷은 자동으로 건너뛰었습니다.
현재는 두 번째 방식(AI Agent 활용)을 중심으로 테스트 중입니다.
(첫번째 방식은 아직 이해를 잘 못했기 때문이죠...)
앞으로의 계획
앞으로는 자동 등록된 일정의 결과를 바로 확인할 수 있도록
텔레그램과 연동하여 알림을 받는 기능도 추가할 계획입니다.
등록 실패나 잘못된 일정은 즉시 확인해서 수정할 수 있도록 하고,
자동화된 일정 관리를 더욱 안정적으로 만들고 싶습니다.
결과와 배운 점
날짜 처리의 복잡성
"24일", "다음주 목요일" 같은 상대적 날짜를 절대 날짜로 변환하는 것이 생각보다 복잡했습니다. 특히 한국 시간대 처리와 서버 시간대 차이로 인한 오류가 자주 발생했어요. 지금은 어찌저찌 되고 있지만, 좀 더 테스트를 해봐야 문제가 없는지 확인할 수 있을 것 같습니다.
n8n 관련해서는 ChatGPT보다 Claude 답변이 더 좋았다!
다음편!
귀찮은 일정 입력, 스크린샷 기반 캘린더 자동화 (2) : https://www.gpters.org/nocode/post/objective-schedule-input-screenshot-djosHGMIi4GH61c