📧💬 Gmail & Slack 알림 추가!
📌 이번 업데이트 내용
✅ Ver 1.0 (지난주)
구글 드라이브 녹음 파일 → 자동 전사 → 회의록 생성
🆕 Ver 2.0 (이번 주)
✅ Gmail 알림 추가 (HTML 디자인)
✅ Slack 알림 추가 (채널 메시지)
✅ 병렬 처리로 동시 알림
결과: 회의록 생성 완료 즉시 이메일 + Slack으로 알림! 🎉
🎯 왜 알림을 추가했나?
문제 상황
Ver 1.0의 한계:
❌ 회의록이 완성되어도 모름
❌ 구글 드라이브 들어가서 직접 확인해야 함
❌ 언제 완성되는지 계속 체크
❌ 팀원들에게 공유하려면 또 작업
해결!
Ver 2.0:
✅ 회의록 생성 완료 즉시 이메일 수신
✅ Slack 채널에 자동 알림
✅ 링크 클릭만으로 바로 확인
✅ 팀 전체가 동시에 확인 가능
🛠️ 기술 스택 (업데이트)
기존: n8n + OpenAI API + Google Drive
추가:
✅ Gmail API (구글 계정 OAuth)
✅ Slack API (Bot Token 방식)
💰 비용 (변동 없음!)
10분 녹음 파일 1개 기준:
- Whisper 전사: $0.06 (약 80원)
- GPT-4o 회의록: $0.02 (약 30원)
- Gmail 알림: 무료 ✅
- Slack 알림: 무료 ✅
= 총 약 110원/건 (동일!)
알림 추가해도 비용 증가 없음! 💪
🚀 새로 추가된 노드
전체 워크플로우 구조 (Ver 2.0)
📥 Google Drive Trigger (새 파일 감지)
↓
🔍 Check if Audio File (오디오 파일 확인)
↓
⬇️ Download Audio File (파일 다운로드)
↓
🎤 Transcribe with Whisper (음성 → 텍스트)
↓
📝 Generate Meeting Minutes (GPT → 회의록)
↓
💾 Create file from text (결과 저장)
↓ (병렬 처리)
├─→ 📧 Send Email (Gmail 알림)
└─→ 💬 Send Slack Message (Slack 알림)
핵심: 병렬 처리!
파일 저장 완료 후
Gmail과 Slack에 동시에 알림 발송
📧 Gmail 알림 구현
[1] Gmail 노드 설정
노드 타입: Gmail
Operation: Send Email
Email Type: HTML
수신자: [email protected]
제목: 🎙️ 회의록 생성 완료: {{ 파일명 }}
[2] HTML 이메일 디자인
포함 내용:
✅ 보라색 그라데이션 헤더
✅ 파일 정보 테이블 (파일명, 시각, 크기)
✅ 버튼 (회의록 보기, 원본 듣기)
✅ 회의록 미리보기 (처음 500자)
✅ 반응형 디자인 (모바일 지원)
[3] 이메일 미리보기
┌───────────── ────────────────────────┐
│ ✅ 회의록 생성 완료! │
│ AI가 자동으로 회의록을 작성했습니다 │
├─────────────────────────────────────┤
│ 📄 파일 정보 │
│ 원본 파일: meeting_20241203.m4a │
│ 생성 시각: 2024-12-03 14:30:25 │
│ 파일 크기: 5.23 MB │
│ │
│ [📋 회의록 보기] [🎧 원본 듣기] │
│ │
│ 📝 회의록 미리보기 │
│ # 회의록 │
│ ## 기본 정보... │
└─────────────────────────────────────┘
[4] 성공!
실제 수신 화면:
깔끔한 디자인
클릭 가능한 버튼
모바일에서도 잘 보임
💬 Slack 알림 구현
시행착오 과정
❌ 시도 1: 기존 Slack API Credential
문제: "Could not load list"
원인: Slack API (구버전) 사용
해결: 실패 - Send Message 노드와 호환 안 됨
❌ 시도 2: Slack OAuth2 API (User 방식)
문제: "Missing required OAuth Scopes"
원인: users:read 권한 부족
해결: 실패 - 권한 추가 복잡
✅ 시도 3: Slack OAuth2 API (Channel 방식)
방법: Send Message To를 "Channel"로 변경
설정: Channel = "general" (# 없이!)
결과: 성공! 🎉
[1] Slack 노드 설정
노드 타입: Slack
Operation: Send Message
Credential: Slack OAuth2 API
Send Message To: Channel
Channel: general (또는 회의록-알림)
Message Type: Simple Text Message
[2] 메시지 내용
🎙️ *회의록 생성 완료*
*원본 파일:* meeting_20241203.m4a
*생성 시각:* 2024-12-03 14:30:25
*파일 크기:* 5.23 MB
<회의록 링크|📋 회의록 보기> | <원본 링크|🎧 원본 듣기>
[3] Slack 메시지 미리보기
┌─────────────────────────────────────┐
│ 🎙️ 회의록 생성 완료 │
│ │
│ 원본 파일: meeting_20241203.m4a │
│ 생성 시각: 2024-12-03 14:30:25 │
│ 파일 크기: 5.23 MB │
│ │
│ 📋 회의록 보기 | 🎧 원본 듣기 │
└─────────────────────────────────────┘
[4] 성공 화면
Slack 채널에 메시지 도착:
링크 클릭으로 즉시 확인
팀 전체가 동시에 볼 수 있음
알림으로 즉시 알 수 있음
🔧 구현 과정 상세
Step 1: Gmail 알림 추가
1. Gmail Credential 설정
n8n → Credentials → Create New
→ Gmail OAuth2 선택
→ Google 계정 로그인
→ 권한 승인 (Gmail 보내기)
2. Send Email 노드 추가
Create file from text 노드 다음에 추가
병렬 연결:
- Create file from text의 출력(●)를 클릭
- Send Email 노드로 드래그
3. HTML 이메일 작성
Email Type: HTML 선택
Message 필드에 HTML 코드 입력
동적 데이터 삽입:
- 파일명: {{ $('Download Audio File').item.json.name }}
- 시각: {{ new Date().toLocaleString('ko-KR') }}
- 링크: {{ $('Create file from text').item.json.webViewLink }}
결과: 성공! ✅
Step 2: Slack 알림 추가 (복습!)
배경:
지난주 스터디 주제: Slack 연동
이번 주: 실전 적용 + 복습
1. Slack App 생성
https://api.slack.com/apps
→ Create New App
→ From scratch
→ App Name: n8n-bot
→ Workspace 선택
2. OAuth 권한 설정
OAuth & Permissions 메뉴
→ Bot Token Scopes 추가:
✅ chat:write
✅ chat:write.public
→ Install App to Workspace
→ Allow
3. n8n Credential 추가
⚠️ 주의: "Slack OAuth2 API" 선택!
(Slack API X)
Client ID, Secret 입력
→ Connect my account
→ 워크스페이스 선택
→ 승인
4. Send Message 노드 설정
중요 포인트:
❌ Send Message To: User (권한 필요)
✅ Send Message To: Channel (권한 불필요!)
Channel: general (# 없이!)
시행착오:
처음에 User로 설정
→ "Missing OAuth Scopes" 에러
→ Channel로 변경
→ 성공! 🎉
결과: 성공! ✅
Step 3: 병렬 연결
방법:
1. Create file from text 노드의 출력(●) 클릭
2. Send Email 노드로 드래그
3. 다시 Create file from text 출력(●) 클릭
4. Send Slack Message 노드로 드래그
결과:
Create file from text
├─→ Send Email
└─→ Send Slack Message
동시 실행! ⚡
📊 완성된 워크플로우
전체 노드 구조
[Google Drive Trigger] → [Check if Audio File]
→ [Download Audio File] → [Transcribe a recording]
→ [Generate Meeting Minutes] → [Create file from text]
↓ (병렬)
├─→ [Send Email]
└─→ [Send a message (Slack)]
실행 흐름
1. 구글 드라이브에 녹음 파일 업로드
↓
2. n8n이 자동으로 감지 (1분 이내)
↓
3. Whisper로 전사 (1-2분)
↓
4. GPT-4o로 회의록 작성 (30초)
↓
5. 구글 드라이브에 저장 (10초)
↓
6. 동시에:
- Gmail로 알림 📧
- Slack으로 알림 💬
↓
7. 완료! (총 3-4분) 🎉
🎓 배운 점 & 시행착오
1. Gmail 연동은 쉬웠다
✅ OAuth 인증만 하면 바로 작동
✅ HTML 이메일도 간단
✅ 동적 데이터 삽입도 쉬움
2. Slack은 삽질했다
시행착오:
1차: Slack API (구버전) 사용
→ Send Message 노드에서 안 보임
→ 실패 ❌
2차: Slack OAuth2 API + User
→ "Missing OAuth Scopes" 에러
→ users:read 권한 필요
→ 복잡해서 포기 ❌
3차: Slack OAuth2 API + Channel
→ 추가 권한 불필요!
→ 채널 이름만 입력
→ 성공! ✅
교훈:
Credential 타입이 중요!
Channel 방식이 User보다 간단
공식 문서 잘 읽기
3. 지난주 스터디 복습 효과
지난주: Slack API 이론 학습
이번주: 실전 적용
복습하면서:
✅ OAuth2 개념 이해
✅ Bot Token Scopes 의미 파악
✅ 실전 문제 해결 능력 향상
앞으로도 계속 활용 가능!
💡 활용 방안
1. 팀 협업
회의 후:
- 녹음 파일만 드라이브에 업로드
- 팀원 전체가 Slack으로 알림 받음
- 각자 링크로 회의록 확인
- 회의 참석 못 한 사람도 내용 파악
2. 개인 기록
스터디/미팅:
- Gmail로 개인 이메일 수신
- 검색 가능한 회의록 보관
- 나중에 찾기 쉬움
3. 프로젝트 관리
정기 회의:
- #프로젝트-회의 채널에 자동 기록
- 회의록이 쌓여서 히스토리 형성
- 결정 사항 추적 가능
📈 성능 & 결과
처리 시간
10분 녹음 기준:
1. 전사: 약 1-2분
2. 회의록 생성: 약 30초
3. 파일 저장: 약 10초
4. 알림 발송: 약 2초
총: 약 3-4분
정확도
전사 정확도: 85-90%
회의록 품질: 매우 우수
- 구조화 잘 됨
- 핵심 내용 정리
- 액션 아이템 명확
편의성
Ver 1.0: ⭐⭐⭐ (파일 직접 확인)
Ver 2.0: ⭐⭐⭐⭐⭐ (알림으로 즉시 확인!)
개선 효과:
- 확인 시간 10분 → 10초
- 공유 작업 불필요
- 팀 전체 즉시 공유
🎯 다음 계획 (Ver 3.0)
1. 구글 시트 연동 ✅ (다음 목표)
현재: 텍스트 파일
목표: 회사 양식 구글 시트에 자동 입력
예상 기능:
- 일시, 참석자, 안건 등 필드 자동 채우기
- 기존 양식 활용
- 검색/필터링 가능
2. NotebookLM 연동 (연구 필요)
아이디어:
- 회의록을 NotebookLM에 자동 업로드
- AI 기반 추가 분석
- 질문 답변 기능
과제:
- API 제공 여부 확인
- 대안 방법 탐색
3. 회사 보안 검토
확인 사항:
- 회사 구글 계정으로 API 사용 가능?
- OpenAI API 사용 정책
- 데이터 보안 요구사항
=
다음 목표:
구글 시트 자동 입력
더 많은 활용 사례 발굴
개인서버 구축하기(미니pc 구입) : 근데 어떤게 괜찮은건지?!
📸 스크린샷
1. 전체 워크플로우
머신러닝 시스템의 프로세스를 보여주는 다이어그램
2. Gmail 알림 성공
한국어 텍스트가 있는 웹사이트의 스크린샷
3. Slack 알림 성공
휴대폰에 있는 한국어 앱의 스크린샷