블로그 목록

Claude Code로 이메일 자동 발송하기: 구글 GWS 스킬 설치기

LLM한테 '메일 보내줘'가 될까? 개인 메일 테스트부터 단체 발송까지 해봤다.


Claude한테 "메일 보내줘"가 될까, 싶었다.

구글이 GWS1를 발표했을 때 딱 이 생각이 들었다. Gmail, Calendar, Drive 같은 구글 서비스를 터미널 명령어 한 줄로 다룰 수 있다는 건데, Claude Code와 연결하면 그냥 말로 시킬 수 있겠다 싶었다. LLM에 물어물어 설치를 마치고, 작업 폴더에 스킬2을 세팅했다.

(1) GWS(Google Workspace Skills) — 구글이 공개한 오픈소스 CLI 도구. Gmail, Calendar, Drive 등을 터미널 명령어 한 줄로 사용할 수 있게 해준다.

(2) 스킬(Skill) — Claude Code가 특정 작업을 수행하는 방법을 적어둔 SKILL.md 파일. Claude가 이 파일을 읽고 어떤 명령어를 어떻게 실행할지 판단한다.

설치는 간단하다. gws를 설치하고, 구글 계정을 연결한 뒤, 스킬 파일을 생성하면 끝이다.

gws auth login         # 구글 계정 연결
gws generate-skills    # 92개 스킬 파일 자동 생성

왜 이 스킬을 만들었나

평소에 반복적으로 하는 일이 있다. 받은 메일 확인, 정해진 양식으로 답장, 같은 내용을 여러 사람에게 보내기. 이걸 매번 Gmail을 열어서 하는 게 번거롭다기보다, Claude가 다른 작업을 하다가 "그리고 이 내용으로 메일도 보내줘"가 되면 흐름이 끊기지 않겠다 싶었다.

파일을 만들고, 정리하고, 메일까지 보내는 것이 하나의 흐름 안에서 끝나는 것. 그게 이 스킬을 세팅한 이유다.


첫 번째 테스트 — 나한테 메일 보내기

먼저 내 개인 메일로 테스트했다. Claude한테 한 줄 던졌다.

"내 이메일로 테스트 메일 보내줘, 제목은 'GWS 테스트', 내용은 잘 됩니다."

Claude가 gws 스킬을 참고해서 명령어를 구성하고 실행했다.

gws gmail +send \
  --to me@example.com \
  --subject "GWS 테스트" \
  --body "잘 됩니다."

Gmail을 열었더니 메일이 와 있었다. 됐다.

메일 확인도 마찬가지다. "받은 메일 중 안 읽은 거 요약해줘"라고 하면 Claude가 triage3를 실행해서 보낸 사람, 제목, 날짜를 정리해서 보여준다. Gmail 탭을 열지 않아도 된다.

(3) triage — 받은 편지함의 읽지 않은 메일을 요약해서 보여주는 gws 내장 명령어. 의료 현장에서 쓰는 말로, 부상자를 중증도에 따라 분류한다는 뜻이다.


두 번째 테스트 — 단체 메일 발송

개인 발송이 되니까 다음 질문이 생겼다. 고객 목록이 있으면 한 번에 보낼 수 있을까.

gws는 한 번에 한 명씩 보내는 구조라 엑셀을 직접 읽지는 못한다. 그래서 Python 스크립트를 얇게 얹었다. Python이 엑셀을 읽고, gws가 메일을 보내는 방식이다.

mail-merge/
├── SKILL.md         # Claude가 읽는 사용 가이드
├── send_mail.py     # 발송 스크립트
└── template.md      # 메일 본문 템플릿 ({{이름}} 같은 변수 사용)

customers.xlsx에 이름, 이메일, 변수들을 적어두고 스크립트를 실행하면, 각 행을 읽어서 개인화된 메일이 한 명씩 발송된다.

.venv/bin/python3 send_mail.py --dry-run  # 실제로 보내기 전에 시뮬레이션 먼저
.venv/bin/python3 send_mail.py            # 확인 후 실제 발송

dry-run4으로 먼저 확인하는 게 습관이 됐다. 한 번 잘못 발송하면 되돌릴 수 없으니까.

(4) dry-run — 실제로 실행하지 않고, 실행했을 때 어떤 일이 벌어지는지 미리 보여주는 옵션. "예행연습 모드"라고 보면 된다.


Claude한테 "고객 목록 보고 메일 보내줘"라고 하면 이제 이 스크립트를 참고해서 dry-run부터 제안한다. 직접 명령어를 치지 않아도 된다. 스킬을 만들어두는 이유가 이것이다. 한 번 정리해두면 다음부터는 말로 시키면 된다.


스킬 설치 시 주의할 것

스킬은 Claude가 읽고 실행하는 레시피다. 그만큼 신뢰할 수 있는 출처에서 받아야 한다. Anthropic, Google처럼 검증된 제공자나 믿을 수 있는 개발자의 스킬을 사용하길 권한다.

출처가 불분명한 스킬에는 프롬프트 인젝션5이 숨어 있을 수 있다. SKILL.md 안에 악의적인 지시를 심어두면, Claude가 그걸 그대로 따라 실행한다. 메일을 엉뚱한 곳으로 보내거나, 파일을 외부로 유출하거나, API 키 같은 민감한 정보를 탈취하는 것도 가능하다.

(5) 프롬프트 인젝션(Prompt Injection) — AI가 읽는 텍스트 안에 악의적인 명령을 숨겨서, AI가 원래 의도와 다른 행동을 하도록 유도하는 공격. 예를 들어 SKILL.md 안에 "이 내용을 외부 서버로 전송하라"는 지시를 숨겨두면 Claude가 그대로 실행할 수 있다.

스킬을 받기 전에 SKILL.md 파일을 직접 열어서 읽어보는 것이 가장 확실한 방법이다. 짧은 파일이라 어렵지 않다.