Claude Code로 만든 사내 뉴스레터 - 팀원이 '메일 답장'으로 구독 키워드를 직접 관리하게 만들기

소개

지난 글에서는 Claude AI와 Google Apps Script(GAS) 를 활용해 보도자료와 경제 뉴스를 크롤링하고, 팀원들에게 메일로 뿌려주는 '단방향' 시스템 구축 과정을 소개했었는데요. (금융위/한은 보도자료 크롤링, RSS 없는 사이트 HTML 파싱 등 우여곡절이 많았죠 😂)

이번에는 이 시스템을 한 단계 더 진화시켰습니다. 바로 "비개발자 팀원도 코드를 전혀 모르지만, 메일 답장 한 통으로 보고 싶은 뉴스 키워드를 직접 추가/삭제하는 기능"입니다.

Claude Code와 함께 작업한 '키워드 자동 관리 시스템' 제작기를 공유합니다.

문제 의식: "좋긴 한데, 제가 관심 있는 건 따로 있어요."

기존 시스템은 제가(개발자/관리자) 미리 정해둔 키워드나 사이트의 뉴스만 일방적으로 보내는 방식이었습니다. 그러다 보니 팀원들에게 이런 니즈가 생기더군요.

"요즘 가계대출 이슈가 터졌는데, 관련 기사만 따로 모아서 볼 수 없을까?" "지난달 프로젝트 끝났는데, '핀테크' 키워드는 이제 그만 받아보고 싶어."

그때마다 제가 구글 시트에 들어가서 키워드를 수정해 주는 건 너무 비효율적이었습니다. "팀원이 그냥 메일로 '이거 추가해줘'라고 하면 알아서 시스템이 반영할 수는 없을까?" 라는 아이디어로 이번 업데이트를 시작했습니다.

2. 해결 방법: 메일 회신(Reply)을 트리거로 활용하기

팀원들에게 새로운 툴(노션이나 별도 웹페이지)을 쓰게 하는 건 진입장벽이 높습니다. 그래서 가장 익숙한 '이메일 답장'을 인터페이스로 활용하기로 했습니다.

핵심 로직

  1. 팀원이 뉴스레터를 받고 "키워드 추가: 기준금리"라고 답장을 보낸다.

  2. GAS가 정해진 시간(매주 월요일 07:30)에 수신함을 체크한다.

  3. 약속된 명령어(추가/삭제)가 있으면 내용을 파싱한다.

  4. 구글 시트(DB)를 자동으로 업데이트하고, 다음 뉴스 수집부터 반영한다.

3. 주요 구현 기능 (with Claude Code)

Claude Code를 활용해 크게 4가지 기능을 구현했습니다. 코드를 몰라도 자연어로 로직을 설명하니 뚝딱 만들어주더군요.

① 키워드 시트 구조 대대적 확장 (DB 고도화)

기존에는 단순히 키워드, 활성화 여부를 관리하는 열만 구성하고 있었는데, 컬럼을 8개로 늘렸습니다.

  • 신규(New) 태그: 새로 추가된 키워드는 뉴스레터에서 눈에 띄게 표시 (7일 후 자동 해제)

  • 만료일 설정: "이 이슈는 한 달만 보면 돼" → 30일 후 자동 구독 취소 기능

  • 효율성 측정: '총 매칭 수' 와 '최근 매칭일'을 기록해, 뉴스가 한 건도 안 나오는 '죽은 키워드'를 식별

    (최근에 이슈가 된 케빈워시를 추가해보았습니다)

② 이메일 파싱 & 명령 처리 (processKeywordRequests)

Gmail API를 활용해 답장 메일의 본문을 분석합니다.

  • 키워드 추가: 기준금리 → 90일(기본값) 동안 구독

  • 키워드 추가: 가계대출, 30 → 30일 뒤 자동 만료 설정

  • 키워드 삭제: 핀테크 → 즉시 비활성화

또한, 특정 도메인(회사 메일주소) 메일만 처리하도록 했습니다.

③ 키워드 생애주기 관리 (Lifecycle Management)

데이터가 무한정 쌓이는 걸 막기 위해 '청소부' 기능을 넣었습니다.

  • 자동 비활성화: 만료일이 지났거나, 30일 동안 매칭된 뉴스가 0건인 저효율 키워드는 시스템이 알아서 비활성화합니다.

결과와 배운 점

이것으로 뉴스레터 서비스의 구조는 어느정도 갖춘 것 같습니다. 이제 팀원들의 피드백을 받아 뉴스레터 서비스를 지속적으로 수정해나갈 계획입니다!

(현재까지 진행된 뉴스레터 서비스 진행상황)

한국어의 과정을 보여주는 다이어그램

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요