n8n을 활용한 회의록 작성 자동화 (ver 2.)

📧💬 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 알림 성공

휴대폰에 있는 한국어 앱의 스크린샷

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요