이메일의 회의 세부 정보를 캘린더에 일일이 복사하지 마세요 — n8n과 GPT-4o-mini로 자동화하기
요약
n8n과 GPT-4o-mini를 활용하여 이메일의 회의 정보를 자동으로 추출하고 Google Calendar와 Slack에 연동하는 자동화 워크플로를 소개합니다. 이 시스템은 일정 생성뿐만 아니라 AI를 통한 회의 브리핑 생성 및 중복 방지 로직까지 포함합니다.
핵심 포인트
- n8n과 GPT-4o-mini를 결합한 이메일 기반 일정 자동화 구현
- 회의 정보 추출, 캘린더 생성, Slack 브리핑 전송의 통합 워크플로
- 신뢰도 임계값을 활용한 데이터 추출 품질 관리
- Gmail 라벨 또는 Google Sheets를 이용한 중복 생성 방지 전략
이메일에서 회의 세부 정보를 캘린더로 복사하는 일을 중단하세요 — n8n과 GPT-4o-mini로 자동화하기
Calendly 확인 메일을 받거나, Zoom 초대장을 받거나, 혹은 "화요일 오후 3시에 만납시다"라고 적힌 이메일을 받습니다.
매번 캘린더를 열고, 이벤트를 생성하고, 링크를 복사하고, 세부 정보를 붙여넣습니다. 그러고 나서 회의가 시작되기 전, 이 회의가 실제로 무엇에 관한 것인지 기억해 내기 위해 이메일 스레드를 훑어보는 데 5분을 소비합니다.
이 워크플로 (Workflow)는 이 두 단계를 모두 제거합니다. 15분마다 Gmail을 읽고, 회의 관련 이메일을 감지하며, 자동으로 캘린더 이벤트를 생성하고, 여러분이 받은 편지함을 열기도 전에 AI가 생성한 준비 브리핑 (Prep brief)을 Slack으로 전송합니다.
감지 대상
이 워크플로 (Workflow)는 GPT-4o-mini를 사용하여 수신된 이메일을 분류합니다. 다음 항목들을 포착합니다:
- Zoom / Google Meet / Teams 확인 메일 — 각 플랫폼에서 발송되는 표준 자동 확인 메일
- Calendly 예약 확인 메일 — "X와의 회의가 확정되었습니다"
- 비공식 회의 요청 — 일반 이메일에 포함된 "수요일 오후 2시에 만납시다"
- 항공 및 호텔 예약 — 날짜 + 시간 + 장소 = 캘린더 이벤트
- 레스토랑 예약 — 동일한 패턴
- 이메일로 전달된 캘린더 초대
출력 결과
감지된 각 회의에 대해, 워크플로 (Workflow)는 다음과 같은 작업을 수행합니다:
- Google Calendar 이벤트 생성 — 제목, 날짜, 시간, 지속 시간, 장소 및 비디오 링크를 미리 채워 생성
- AI를 통한 회의 브리핑 (Meeting brief) 생성 — 문맥 요약, 3
4개의 논의 사항, 준비를 위한 23개의 질문 - Slack으로 브리핑 전송 — 캘린더 이벤트로 바로 연결되는 링크와 함께 전송
- Google Sheets에 항목 기록 — 날짜, 이메일 제목, 이벤트 생성 여부, AI 브리핑 상태
Slack 메시지는 다음과 같은 형태입니다:
📅 Meeting Created: Discovery Call with Acme Corp
📍 Tuesday 29 Jul, 15:00 — 16:00 (Google Meet)
🔗 meet.google.com/abc-defg-hij
...
워크플로 (Workflow) 아키텍처
Schedule (15분마다)
→ Gmail: 읽지 않은 이메일 읽기 (최근 30분)
...
AI 추출 프롬프트 (AI Extraction Prompt)
이것이 가장 중요한 노드입니다. 캘린더 이벤트의 품질은 이메일에서 정보를 얼마나 잘 추출하느냐에 달려 있습니다:
당신은 일정 관리 어시스턴트입니다. 이 이메일에서 회의 세부 정보를 추출하세요.
이메일 제목: {{subject}}
...
신뢰도 임계값(confidence threshold, 예: 0.7)을 설정하세요. 이 값보다 낮으면 이벤트 생성을 건너뛰고 대신 수동 검토를 위해 로그를 남깁니다.
Gmail 중복 제거 (Gmail Deduplication)
이메일-캘린더 워크플로우(workflow)에서 발생하는 가장 큰 실질적인 문제는 다음과 같습니다. 여러 개의 확인 이메일(원본 초대장 + 리마인더 + 변경된 시간)을 받는 경우 동일한 회의가 두 번 생성되는 것을 원치 않는다는 점입니다.
두 가지 해결책이 있습니다:
옵션 A — 라벨 기반 (Label-based): 이메일을 처리한 후, Gmail 라벨 calendar-added를 추가합니다. 다음 실행 시 이 라벨이 붙은 이메일은 필터링하여 제외합니다.
옵션 B — Sheets 기반 (Sheets-based): 이메일의 Message-ID를 Google Sheets 열에 기록하고, 이벤트를 생성하기 전에 중복 여부를 확인합니다.
라벨 기반 방식이 더 간단하고 신뢰할 수 있습니다. 성공 분기(success branch) 끝에 Gmail 노드를 추가하세요:
Gmail → Modify Message → Add Label: calendar-added
읽기 단계(read step)에서 다음과 같이 필터링합니다: is:unread -label:calendar-added newer_than:1h
시간대 모호성 처리 (Handling Timezone Ambiguity)
"화요일 오후 3시에 만나요" — 오후 3시가 어디 기준인가요?
준비 브리프(prep brief) 프롬프트에는 설정된 시간대가 포함됩니다. 이메일에 시간대가 명시되지 않은 경우, 워크플로우는 기본적으로 사용자의 시간대를 사용합니다. 시간대가 명시되지 않고 가정된 경우, Slack 메시지에 다음과 같이 노트를 추가하세요:
const timezoneNote = detectedTimezone
? `🌍 Timezone: ${detectedTimezone}`
: `⚠️ Timezone assumed: ${CONFIG.default_timezone}`;
비용 (Cost)
GPT-4o-mini를 통해 하루 50개의 이메일을 처리할 경우:
- 분류(Classification) 호출: 이메일당 약 200 토큰(tokens) → 하루 약 $0.003
- 브리프 생성 (회의 관련 이메일만, 약 20%): 약 500 토큰(tokens) → 하루 약 $0.0015
- 총합: 하루 약 $0.0045 → 한 달 약 $1.35
매주 5~10개의 회의를 예약하는 전문가라면, 절약되는 시간(회의당 5분 이상)이 첫날 첫 시간 만에 비용을 상쇄하고도 남습니다.
CONFIG 노드
하나의 노드가 모든 것을 제어합니다:
const CONFIG = {
gmail_credential: "your-gmail-oauth-credential-id",
calendar_id: "primary", // 또는 특정 캘린더 ID
...
전체 워크플로우 가져오기
Gmail 중복 제거 (deduplication), 신뢰도 임계값 (confidence thresholds), 시간대 처리 (timezone handling), Slack 포맷팅, 그리고 Sheets 로깅을 포함한 18개 노드의 전체 워크플로우는 n8nmarkets.com에서 확인할 수 있습니다. "Email to Calendar AI Meeting Prep"을 검색하세요.
워크플로우 JSON, Google Sheets 템플릿, 그리고 (가장 흔한 병목 구간인) Gmail OAuth 설정을 위한 가이드가 포함되어 있습니다.
여러분은 어떤 회의 관련 이메일을 가장 자주 받으시나요? 이 워크플로우는 표준적인 확인 메일은 잘 처리하지만, 사람들이 어떤 예외 상황(edge cases)을 겪는지 궁금합니다. 전달된 초대장, 다중 시간대 팀, 또는 의제가 업데이트되는 반복 회의 등 말이죠.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기