"n8n 실전 2026 — Discord · Notion · Gmail 연동 워크플로 만들기"
OAuth 설정부터 첫 워크플로 발행까지 — 실제 동작하는 3개 플로우 단계별
핵심 요약
- 대상 독자: n8n 입문편을 읽고 실제로 만들어 보려는 사용자. OAuth 설정에서 막혔던 사람.
- 얻을 것: 1) Discord·Notion·Gmail OAuth 설정 단계별 2) 실제 동작하는 3 플로우 — Discord 봇 명령 처리 / Gmail → Notion 자동 정리 / Notion 페이지 → Discord 공지 3) 흔히 막히는 7가지 + 해결 4) 운영 팁 (모니터링·에러·복구).
- 전제: n8n cloud 14일 무료 또는 셀프호스트 설치 완료. 각 서비스 계정 보유.
1. 시작 전 — OAuth 설정 3가지
n8n 연동에서 가장 막히는 곳이 OAuth credential 설정이다. 한 번씩만 해두면 다시 안 만져도 된다.
1.1 Discord — Webhook + Bot Token
Discord는 두 방식이 있다. 단순 메시지 발송은 Webhook, 양방향(트리거 + 응답)은 Bot Token 필요.
Webhook 방식 (간단) 1. Discord 채널 설정 → Integrations → Webhooks → New Webhook 2. URL 복사 3. n8n: Discord 노드 → Credential: Webhook URL 입력 → 저장
Bot Token 방식 (양방향)
1. Discord Developer Portal → New Application → Bot 생성 → Token 복사
2. OAuth2 → URL Generator → scopes: bot, applications.commands → 권한: 메시지 읽기·쓰기 등 → 생성된 URL로 봇을 자기 서버에 초대
3. n8n: Discord Bot API → Bot Token 입력 → 저장
가장 흔한 실수: 봇을 서버에 초대 안 하고 Token만 입력 → 메시지 수신 안 됨.
1.2 Notion — Internal Integration Token
Notion은 OAuth보다 Internal Integration이 훨씬 간단.
- Notion Integrations → New Integration
- 이름·워크스페이스 지정 → 생성
- Internal Integration Secret 복사
- 자동화할 페이지/데이터베이스에서 ⋯ → Connections → 방금 만든 integration 추가 ← 이 단계 자주 빼먹음
- n8n: Notion API → API Key에 secret 붙여넣기
가장 흔한 실수: 4번 단계 누락 → "Object not found" 에러. integration이 페이지에 명시적으로 연결되어야만 접근 가능.
1.3 Gmail — OAuth2
가장 까다롭다. 두 옵션:
옵션 A: n8n Cloud에서 Managed OAuth2 (가장 쉬움) - n8n Cloud 사용자 한정. Credential 추가 시 "Sign in with Google" 클릭만 하면 끝.
옵션 B: 셀프호스팅 — Google Cloud Console에서 직접 설정
1. Google Cloud Console → 프로젝트 생성
2. APIs & Services → Library → Gmail API enable
3. OAuth consent screen → External → 본인 이메일 등록
4. Credentials → Create OAuth 2.0 Client ID → Web application
5. Redirect URI에 https://your-n8n-domain/rest/oauth2-credential/callback 추가
6. Client ID / Secret 복사
7. n8n: Gmail OAuth2 → Client ID·Secret 붙여넣기 → "Connect my account" 클릭
가장 흔한 실수: 셀프호스팅 시 Webhook URL이 HTTP면 OAuth 실패. HTTPS 필수 → Cloudflare Tunnel 또는 ngrok.
2. 플로우 1 — Discord 봇 명령 처리 + AI 응답
시나리오
Discord에서 /ask 질문 명령으로 봇에 질문하면 Claude/GPT가 답변.
단계
1. Discord Trigger 노드
- Bot Token credential
- Trigger on: Message Created
- Channel: 특정 채널 ID
2. IF 노드
- 조건: message text starts with "/ask "
3. Code 노드 (또는 Set 노드)
- 입력 메시지에서 "/ask " 제거 → question 변수
4. Anthropic Chat 노드
- Model: Claude Sonnet 4.6
- System: "당신은 친절한 Discord 봇입니다. 한국어로 간결하게 답하세요."
- User: {{ $json.question }}
5. Discord 노드 (응답 발송)
- Operation: Send Message
- Channel: 같은 채널
- Reply To: 원본 메시지 ID
- Content: {{ $json.choices[0].message.content }}
비용 산정
- 하루 50건 → 월 1,500 실행 → Cloud Starter (€24, 2,500/월) 안에 들어감
- Claude Sonnet 4.6 평균 입력·출력 500토큰 × 1,500건 → 입력 $2.25 + 출력 $11.25 = 약 $13.50/월
- 합계 ≒ €24 + $13.50 ≒ €36/월
비용 줄이기: 분류용 Haiku로 1차 필터 → 복잡한 질문만 Sonnet.
3. 플로우 2 — Gmail → Notion 자동 정리
시나리오
특정 라벨이 붙은 이메일을 자동으로 Notion 데이터베이스에 정리. 제목·발신자·요약·링크 저장.
단계
1. Gmail Trigger
- Credential: Gmail OAuth2
- Watch labels: "Important" 또는 inbox
- Polling: every 5 minutes (또는 webhook)
2. Claude Haiku Chat 노드
- System: "이메일을 한 줄로 요약하라. 100자 이내."
- User: {{ $json.snippet }}
3. Notion 노드
- Operation: Create Database Page
- Database: "Email Triage"
- Properties:
- Title: {{ $json.subject }}
- From: {{ $json.from }}
- Summary: {{ $('Claude Haiku').item.json.choices[0].message.content }}
- URL: {{ $json.threadUrl }}
- Date: {{ $json.date }}
- Source: "Auto"
옵션 — 분류까지 추가
2번 노드를 Claude Haiku 분류 + 요약으로 확장:
시스템: "이메일을 [업무/개인/구독/스팸] 중 하나로 분류하고 한 줄 요약을 추가하라.
JSON 형식: {category, summary}"
3번 노드 Notion property에 category 추가, 4번에 Switch 노드를 더해 카테고리별 다른 데이터베이스로 라우팅 가능.
비용
- 일 100건 메일 × 30일 = 3,000 실행 → Cloud Pro €60/월
- Haiku 토큰 ~$1.50/월
- 합계 ≒ €61.50/월
대안: 셀프호스팅 + Haiku → ~$1.50/월
4. 플로우 3 — Notion 페이지 발행 → Discord 공지
시나리오
Notion 데이터베이스에 "Status: Published"로 변경된 페이지가 있으면 Discord 공지 채널에 자동 게시.
단계
1. Schedule Trigger
- Every 5 minutes
2. Notion 노드
- Operation: Database Get Many
- Database: "Blog Posts"
- Filter: Status = "Published" AND Last Edited > {{ now - 5min }}
3. Loop Over Items 노드 (각 페이지 개별 처리)
4. AI Agent 노드 (선택)
- Model: Claude Sonnet 4.6
- System: "다음 블로그 글 정보를 받아 Discord 공지 메시지 200자 이내로 작성하라.
이모지 1개 포함. 마지막에 링크 표기."
- User: 제목·요약·URL
5. Discord 노드
- Operation: Send Message
- Channel: #announcements
- Content: {{ $('AI Agent').item.json.message }}
- Embed: title=제목, url=링크, image=썸네일
6. Notion 노드 (다시)
- Operation: Update Page
- Property: "Discord Announced" = true
(중복 게시 방지)
핵심 트릭
- 6번 단계가 중복 방지의 핵심. 안 하면 5분마다 같은 페이지 반복 게시.
- 또는 2번 필터에
AND Discord Announced = false추가.
5. 흔히 막히는 7가지 + 해결
| 증상 | 원인 | 해결 |
|---|---|---|
| Notion "Object not found" | Integration이 해당 페이지에 연결 안 됨 | 페이지 ⋯ → Connections에서 추가 |
| Discord Bot 메시지 못 받음 | Bot이 서버에 초대 안 됐음 | OAuth2 URL Generator로 초대 링크 만들고 서버에 추가 |
| Gmail OAuth "Access blocked" | OAuth consent screen에 본인 이메일 등록 안 됨 | Test users 섹션에 본인 추가 |
| 셀프호스팅 OAuth Redirect 실패 | HTTPS가 아니거나 도메인 일치 안 함 | Cloudflare Tunnel/ngrok로 HTTPS 노출, redirect URI 정확히 일치시킴 |
| 같은 항목 여러 번 처리 | 중복 방지 플래그 없음 | DB에 "Processed" 컬럼 추가하고 필터에 AND Processed=false |
| Webhook 안 와요 | 무료 트라이얼은 polling 권장 | 트라이얼은 polling, 운영은 webhook |
| LLM 응답 파싱 실패 | 자유 형식 출력 | "JSON 형식만 출력" 시스템 프롬프트 + JSON Parse 노드 |
6. 운영 팁
6.1 모니터링
- Executions 탭: 실패한 실행 빨간색 표시 → 클릭하면 어느 노드에서 실패했는지 확인
- Email Notifications: Settings → Personal → Send error notifications 활성화
6.2 에러 워크플로
실패 시 별도 알림용 에러 워크플로를 만들어 모든 워크플로의 "Workflow Settings → Error Workflow"에 연결.
6.3 백업
- Cloud: 자동 백업
- Self-host: PostgreSQL
pg_dump또는 SQLite 파일 daily 복사. 워크플로 export(JSON)도 Git에.
6.4 비밀 관리
- API 키는 항상 Credentials에만. 노드 파라미터에 직접 입력 금지.
- 셀프호스트는
N8N_ENCRYPTION_KEY환경변수 설정 필수.
개발자 팁
- Workflow as Code: n8n 워크플로 JSON을 Git에 commit → PR 리뷰 → 배포 시 import. CI/CD 가능.
- Custom Nodes: 특이한 SaaS·내부 시스템 통합은 Custom node 개발 — TypeScript로 작성.
- Webhook secret 검증: 외부 웹훅 노드는 query token 또는 HMAC signature 검증. 노출된 webhook은 누구나 호출 가능.
- Rate limit 핸들링: Wait 노드와 Loop 조합으로 토큰 버킷 패턴. 또는 외부 큐(Redis) + Schedule.
- Postgres 백엔드 + 멀티 인스턴스: 운영 단계는 SQLite 대신 PostgreSQL + Worker 모드 분리로 처리량 확장.
- Tracing: 큰 워크플로 디버깅 시 각 노드에 Set 노드로 메타데이터 추가 (timestamp, step name) → 실행 로그에서 흐름 추적 쉬움.
참고
- n8n Discord 통합 docs
- n8n Notion credentials docs
- n8n Google credentials docs
- GitHub — awesome-n8n-templates (280+ 템플릿)
- Hostinger — n8n + Discord 가이드
이 글은 AI 입문 시리즈의 7-2/11 편입니다. 다음 편: 로컬 LLM 입문 — Ollama / LM Studio.
댓글
댓글 쓰기