Gmail 자동 라벨링 + 보관, 삭제 시스템 구축기: 메일함 정리 안되는거 나만 그런거 아니잖아?

다양한 유형의 네트워크 다이어그램을 보여주는 화면

↑3차 버전까지 간 흔적들

메일함이 너무 정리가 안 되어 있었다. 너무 지저분하고 찾기도 어려웠다.

마음은 지식관리 하고 싶은데 메일함조차 정리가 안 되는 모습.

그런데 나만 그런 거 아니잖아? 다들 그런 거 아냐?

생각해보니 요즘 누구나 이런 고민이 있을 것 같았다:

  • 하루에 몇십 통씩 오는 메일들

  • 중요한 업무 메일이 광고에 묻혀버리는 상황

  • "어디 있더라?" 하면서 메일 뒤지는 시간

  • 정리하고 싶은데 카테고리 나누기도 애매함

나만 이메일 많이 받나? 싶었는데, 요즘 시대에 메일 관리 못 하는 사람이 나만은 아닐 거다.

그래서 이걸 하기로 했다.

AI는 성실하니까 들어오는 메일 놓치지 않고 다 처리해줄 거야.

어차피 나는 귀찮아서 안 하는 건데, 얘는 성실하니까 완벽하게 할 거 아냐?

1차 버전: Text Classifier 노드 도전

사용한 도구

  • n8n: 워크플로우 자동화

  • Text Classifier 노드: n8n 내장 AI 분류 도구

  • Google Gemini: 분류 엔진

  • Gmail API: 라벨 자동 적용

1차 워크플로우 구조

Gmail Trigger → Text Classifier → 12개 Gmail 라벨 노드들 (개별 분기)
                                      ↓
                              특정 카테고리만 → AI 요약 → 텔레그램 알림
시스템의 다른 부분을 보여주는 다이어그램

1차 버전 결과

이게 전부일까 싶었다.

워낙 라벨이 많다보니 제대로 분류 못하는 것들이 많았다.

  • "개인 업무"와 "업무 관리" 구분 실패

  • "AI 기술"과 "인사이트" 혼재

  • 광고 메일을 중요 업무로 분류하는 경우

  • 한국어 메일 분류 정확도 떨어짐

분명 라벨링이 되긴 된다. 다만 Text Classifier로는 한계가 있겠다 싶어서 다른 방법을 찾기로 했다.


2차 버전: Basic LLM Chain으로 직접 프롬프트 작성

깨달음

"Text Classifier보다는 직접 프롬프트 짜는 게 낫겠다."

컴퓨터 다이어그램을 보여주는 컴퓨터 화면의 스크린 샷

2차 워크플로우 구조

Gmail Trigger → Basic LLM Chain (상세 프롬프트) → Code 노드 (파싱) → Gmail 라벨 적용 → 중요 메일 필터링 → 텔레그램 알림

Basic LLM Chain 프롬프트 설계

가장 핵심인 AI 분석 프롬프트를 공개한다:

당신은 15년차 F&B 브랜드 대표이자 AI 강의 전문가의 이메일 분류 전처리 담당자입니다.

## 사용자 프로필
- 이미커피 & 이미양과자 대표 (15년 운영)
- AI 실무 활용 전문가 (n8n, Notion, Claude 자동화)
- 기업 강의 및 컨설팅 (소상공인, 자영업자 대상)
- 작가 (출간 경험), 트레바리 리더

## 분류 가이드라인

### 🟡 개인 메일
- 가족, 친구, 지인의 사적인 연락
- 개인적 취미, 관심사 관련
- 사업과 무관한 개인적 소통
- 키워드: 안부, 생일, 개인적, 친구, 가족
- 예시: "오늘 저녁 약속", "생일 축하", "개인적 안부"

### 🟡 개인 업무 (교육 / 인터뷰 / 이벤트)
- CEO 개인에게 직접 온 사업 기회
- AI 강의, 교육, 워크샵 요청
- 인터뷰, 팟캐스트, 미디어 출연 섭외
- 컨설팅, 자문 요청
- 출판, 집필 관련 제안
- 컨퍼런스, 세미나 강연 요청
- 키워드: 강의, 교육, 인터뷰, 출연, 컨설팅, 워크샵, 세미나, AI 교육, 기업 교육
- 예시: "기업 AI 교육 요청", "팟캐스트 출연 섭외", "멘토링"

### ⚫ 광고
- 마케팅, 프로모션 메일
- 상품/서비스 광고
- 뉴스레터 (상업적 목적)
- 스팸성 메일
- 키워드: 할인, 프로모션, 광고, 마케팅, 세일, 이벤트, 혜택
- 예시: "50% 할인", "신제품 출시", "마케팅 제안"

### 🔴 세무 회계
- 노무법인, 세무서, 회계사무소 발신
- 급여, 세금, 재무제표 관련
- 정부 기관 세무 통지
- 사업자등록, 부가세 신고
- 키워드: 노무법인, 세무서, 급여대장, 세금계산서, 부가세, 소득세, 재무제표
- 예시: "급여대장 송부", "부가세 신고", "세무조사 통지"

### 🔴 업무 관리
- 이미커피/이미양과자 매장 운영
- 고객 서비스, 클레임 처리
- 공급업체, 벤더 커뮤니케이션
- 장비 유지보수, A/S
- 일반적인 비즈니스 업무
- 키워드: 매장, 운영, 고객, 공급업체, 주문, 배송, 장비, A/S
- 예시: "원두 공급 문의", "장비 수리 요청", "고객 컴플레인"

### 🔴 인사 급여
- 직원 채용, 관리, 퇴사 관련
- 급여 처리, 4대보험
- 근로계약서, 노무 관련
- 교육, 복리후생
- 키워드: 직원, 급여, 4대보험, 근로계약, 퇴사, 교육, 복리후생
- 예시: "직원 교육 안내", "4대보험 변경", "근로계약서 작성"

### 🔴 채용 및 기타
- 바리스타, 로스터 지원서
- 구인, 구직 관련
- 채용 공고, 면접 관련
- 인력 소개, 추천
- 키워드: 지원서, 이력서, 채용, 구인, 바리스타, 로스터, 면접
- 예시: "바리스타 지원", "로스터 이력서", "인력 추천"

### 🔵 인보이스
- 청구서, 세금계산서
- 결제 요청, 수금
- 공과금, 임대료
- 구매 대금 청구
- 키워드: 청구서, 인보이스, 결제, 세금계산서, 공과금, 임대료
- 예시: "월 임대료 청구", "전기료 고지서", "원두 대금 청구"

### 🟢 AI 기술
- AI, 자동화, n8n 관련
- 기술 뉴스, 업데이트
- 소프트웨어, 도구 관련
- GPTers, 개발자 커뮤니티
- 키워드: AI, 자동화, n8n, 기술, 소프트웨어, GPT, Claude, 개발
- 예시: "GPTers 커뮤니티", "n8n 업데이트", "AI 도구 소개"

### 🟢 인사이트
- 비즈니스 전략, 인사이트
- 시장 분석, 트렌드
- 경영 관련 정보
- 전문가 의견, 칼럼
- 키워드: 인사이트, 전략, 분석, 트렌드, 경영, 시장, 전망
- 예시: "F&B 시장 전망", "소상공인 지원정책", "경영 전략"

### 🟢 업계정보
- 카페, F&B 업계 뉴스
- 경쟁사 정보, 업계 동향
- 원두, 커피 관련 정보
- 업계 이벤트, 박람회
- 키워드: 카페, 커피, F&B, 업계, 동향, 박람회, 원두, 로스팅
- 예시: "커피 박람회 안내", "원두 가격 동향", "카페 트렌드"

## 분석 지시사항

다음 이메일을 분석하여 정확히 분류할 수 있도록 핵심 정보를 추출하고 정리해주세요.

이메일 정보:
발신자: {{ $json.from.value[0].name }}
제목: {{ $json.subject }}
내용: {{ $json.text }}

분석 결과를 다음 형태로 출력해주세요:

발신자 유형: [개인/회사/기관/자동발송]
추정 카테고리: [위 11개 카테고리 중 가장 적합한 것]
주요 키워드: [분류에 도움되는 핵심 키워드 3-5개]
내용 요약: [핵심 내용을 한 문장으로]
분류 근거: [왜 해당 카테고리로 판단했는지 구체적 이유]
메시지ID: {{ $json.id }}

특별 분류 규칙 (우선순위 순):
1. 발신자명이 "LongBlack" 또는 "시티호퍼스" → 무조건 "인사이트"
2. 발신자가 "GPTers" → 무조건 "AI 기술"  
4. 기업에서 CEO 개인에게 온 강의/교육 요청 → "개인 업무"
5. 매장 운영 관련 → "업무 관리"
6. 명확한 광고성 메일 → "광고"
7. 위 조건 해당 없음 → 내용 기반 분류

가장 까다로웠던 부분: Gmail 라벨 ID 찾기

라벨 매핑이 어려웠다.

AI가 분류를 잘해도, Gmail에 라벨을 적용할 때 계속 오류가 났다.

Error: Invalid label: 인사이트

원인: 라벨명이 아닌 변수 값인 라벨 ID로 판단해서 각 메일에 라벨링을 해야한다.

그래서 라벨 ID를 찾기 위해 별도의 노드를 만들었다:

  1. Gmail Get All Labels 노드로 전체 라벨 목록 조회

  2. Code 노드에서 라벨 구조 파악

Gmail 실제 구조:

  • 사용자가 보는 이름: "인사이트"

  • 실제 라벨 구조: "학습 정보/인사이트"

  • API에서 사용하는 ID: "Label_6365891902333944865"

Code 노드에서 매핑 테이블 생성:

const categoryMapping = {
  '개인 메일': 'Label_1',
  '개인 업무 (교육 / 인터뷰 / 이벤트)': 'Label_1959499669462627962',
  '광고': 'Label_2664386232547169382',
  '세무 회계': 'Label_5346007232886454131',
  '업무 관리': 'Label_7564681703374459659',
  // ... 나머지 라벨들
};

2차 버전 결과

분류는 이제 잘하기 시작했다.

상세한 프롬프트로 비즈니스 맥락을 설명하니 정확도가 확실히 올라갔다.

그런데 예전에 만들어 놓고 현재 사용하고 있던 Gmail 알리미 자동화랑 합치면 어떨까 생각했다.


다양한 장치를 보여주는 컴퓨터 화면의 스크린 샷

3차 버전: Gmail 알리미와 통합

기존 Gmail 알리미 시스템

실은 khai 님이 만든 노드였다.

나도 덕분에 잘 사용하고 있는 n8n 자동화였다.

메일이 올 때마다 텔레그램으로 요약해서 알려주고, 보관/삭제/별표 버튼으로 바로 관리할 수 있는 시스템이었다.

통합 아이디어

메일이 올때마다 관리하는건 괜찮았는데, 기왕 라벨링 자동화를 하다보니 합치면 어떨까 했다.

그래서 결정했다: 수신하는 모든 메일을 성실하게 라벨링하고,

삭제/보관/별표를 할 수 있는 버튼을 이용해서 관리하는 걸로 마음 먹었다.

3차 워크플로우 구조 (최종 완성)

📧 Gmail Trigger (2분마다)
    ↓
🤖 AI 분류 (OpenAI GPT-4o-mini)
    ↓
🏷️ 자동 라벨링 (모든 메일)
    ↓
📝 AI 요약 (Google Gemini)
    ↓
📱 텔레그램 알림 (모든 메일, 액션 버튼 포함)
    ↓
⚙️ 원터치 관리 (보관/삭제/별표)

핵심 변화

1) 필터링 제거

사실 필터링을 고민했다.

광고나 중요도가 낮은 메일들은 필터링 하고,

비교적 중요 메일만 텔레그램으로 받을까 고민하다가

우선 느긋하게 판단해서 삭제까지 해보자는 마인드. 필터링은 나중에 넣어도 되니까!

2) 카테고리별 맞춤 요약

- 개인 업무: 요청 내용, 일정, 보상/조건 중심
- 업무 관리: 긴급도, 처리 방법, 담당자 중심  
- 인보이스: 금액, 기한, 지불 방법 중심
- AI 기술: 새로운 기능, 활용 방안 중심

아래는 프롬프트.

--

이메일 본문을 한글로 핵심만 요약하라. 이 메일은 '{{ $('Parse Classification').item.json.category }}' 카테고리로 분류되었습니다.

[카테고리별 맞춤 요약 가이드]
- 개인 업무 (교육/인터뷰): 요청 내용, 일정, 보상/조건, 참석자 수 중심
- 업무 관리: 긴급도, 처리 방법, 담당자, 기한 중심  
- 인보이스: 금액, 기한, 지불 방법, 항목 중심
- AI 기술: 새로운 기능, 활용 방안, 업데이트 내용 중심
- 인사이트: 핵심 인사이트, 시사점, 액션 아이템 중심
- 세무 회계: 처리 기한, 필요 서류, 담당자 연락처 중심

[요약 기준]
- 반드시 제목과 본문 요약을 구분하여 [제목], [요약] 형식으로 출력
- 요약은 최대 3문단 이내로, 본문의 핵심 정보와 주요 업데이트·안내만 포함
- URL, 하이퍼링크, 이메일, 연락처 등 링크/개인정보는 절대 포함하지 말 것
- 광고·이벤트 안내, 피드백, 수신거부, n8n 등 자동발송·푸터·출처 안내 등 메일 하단의 부가 안내 문구는 요약에 절대 포함하지 말 것
- 영문 텍스트가 포함될 경우, 의미만 반영해서 한글로 자연스럽게 요약
- 필요시 핵심만 압축해서 불필요한 반복·장황한 설명은 생략

[출력 예시]
[제목] (메일 제목 또는 주제 한 줄)
[카테고리] {{ $('Parse Classification').item.json.category }}
[요약] (핵심 내용 2~3문단, 간결·정보 위주)

3) 텔레그램 즉시 액션

📥 보관  🗑️ 삭제  ⭐ 별표

버튼 클릭하면 바로 Gmail에서 해당 액션 수행

한국 Gmail 앱의 스크린 샷

11개 카테고리 분류 체계 (최종)

개인 관련

  • 개인 메일: 가족, 친구 연락

  • 개인 업무: 강의 섭외, 인터뷰 요청, 컨설팅 문의

비즈니스 운영

  • 세무 회계: 노무법인, 세무서 관련

  • 업무 관리: 매장 운영, 고객 서비스

  • 인사 급여: 직원 관리, 4대보험

  • 채용 및 기타: 바리스타 지원서, 인력 추천

재무 관리

  • 인보이스: 청구서, 세금계산서

학습 정보

  • AI 기술: 개발자 커뮤니티, 기술 뉴스

  • 인사이트: 비즈니스 전략, 시장 분석

  • 업계정보: 카페, F&B 동향

기타

  • 광고: 마케팅, 프로모션 메일


3번의 개선으로 얻은 교훈

1차 → 2차: 도구 선택의 중요성

Text Classifier vs Basic LLM Chain
→ 범용 도구보다 커스터마이징 가능한 도구가 낫다
→ 비즈니스 맥락을 직접 설명할 수 있는 프롬프트가 정확도를 높인다

2차 → 3차: 기존 시스템과의 통합

새로 만들기 vs 기존 시스템 활용
→ 이미 잘 작동하는 시스템이 있다면 합치는 게 효율적
→ 라벨링 + 관리를 하나로 통합하면 완전한 시스템

전 과정: 라벨 ID의 함정

Gmail 화면 라벨명 ≠ API 라벨 ID
→ 실제 구현 전에 API 구조 파악이 필수
→ 간단해 보이는 것도 실제로는 복잡할 수 있다

달라진 메일 관리

  • 카테고리별로 자동 정리

  • 텔레그램에서 요약 확인 후 즉시 판단

  • 중요한 메일 놓칠 걱정 없음

  • 라벨별로 체계적 관리 가능


마무리: 성실한 AI의 힘

핵심 인사이트: AI가 나보다 똑똑해서가 아니라, 성실해서 좋다. 들어오는 메일을 하나도 놓치지 않고 정확히 분류해준다. 나는 그냥 텔레그램에서 판단만 하면 된다.

결과: 이제 내 메일함이 깔끔하게 정리된다. 강의 섭외나 매장 이슈는 놓치지 않고, 정보성 메일은 시간 날 때 모아서 볼 수 있다.

AI가 성실하게 분류하고, 사람은 편하게 판단한다. 이게 답인 것 같다.

그냥... 또 해봤다는 기록. ☕

(모각 갔다가 술마시고 돌아와서 글 마무리!)

도움 받은 글

https://www.gpters.org/nocode/post/gmail-notification-journey-gmail-vpPJEcZKyrCozPA

https://youtu.be/_ir9L7C3bOk?si=FDdA_zn3ZfVn-eLi



[다음 편: 뭐할까 고민이지만 17기는 여기서 마무리...]

3
2개의 답글

👉 이 게시글도 읽어보세요