본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 06. 07:03

WhatsApp을 통해 매일 사랑의 메시지를 보내는 터미널 도구를 만들고 오픈 소스로 공개했습니다

요약

WhatsApp을 통해 매일 개인화된 메시지를 자동으로 전송하는 오픈 소스 CLI 도구인 Waify를 소개합니다. Google Gemini를 활용해 사용자의 말투를 반영한 메시지를 생성하며, OpenWA를 통해 보안을 유지하며 메시지를 발송합니다.

핵심 포인트

  • Google Gemini를 활용한 개인 맞춤형 메시지 생성
  • OpenWA를 통한 셀프 호스팅 방식의 안전한 WhatsApp 연동
  • 사용자 말투를 반영하는 시스템 프롬프트 및 퓨샷 예시 지원
  • Ofelia 컨테이너를 이용한 유연한 메시지 발송 스케줄링

작은 개인용 자동화로 시작한 것이 저의 첫 번째 오픈 소스 (Open Source) 프로젝트가 되었습니다. 이것이 어떻게 작동하는지, 그리고 왜 만들었는지 소개합니다.

Waify tui dashboard

Medium에서 읽어보세요.

소중한 사람들에게 안부를 묻는 것을 잊었을 때 느껴지는 특유의 죄책감이 있습니다. 관심이 없어서가 아니라 — 분명 관심이 있지만 — 삶이 바쁘게 돌아가기 때문입니다. 업무, 알림, 컨텍스트 스위칭 (Context-switching). 그렇게 하루하루가 지나갑니다.

저는 저 자신을 위해 이 문제를 해결하고 싶었습니다. 예상치 못했던 것은 다른 사람들도 원할 만한 무언가를 만들게 되었다는 점입니다.

문제 (The Problem)

제 삶에는 매일 진심 어린 메시지를 보내고 싶은 사람이 있습니다. 단순히 복사해서 붙여넣는 일반적인 "좋은 아침 ☀️" 같은 것이 아니라, 실제로 개인적이고 의도가 담긴 메시지 말이죠. 하지만 잠이 덜 깬 상태에서 이미 아침 일과에 쫓기다 보면, 매일 새롭고 의미 있는 메시지를 쓰는 것은 생각보다 어렵습니다.

명확한 해결책은 자동화 (Automate)하는 것입니다. 덜 명확한 부분은 사람처럼 느껴지게 만드는 것입니다.

Waify의 등장

Waify는 터미널에서 실행되며, 당신이 아끼는 사람에게 WhatsApp을 통해 매일 AI가 생성한 메시지를 보내는 CLI 도구입니다. 한 번만 설정해 두면 나머지는 알아서 처리합니다. 매일 아침, 당신이 선택한 시간에 사려 깊은 메시지가 그들의 채팅창에 도착합니다.

npm install -g @deckasoft/waify
waify setup   # 가이드 마법사: QR 스캔, AI 설정, 일정 예약
waify send    # 첫 번째 메시지 전송

그게 전부입니다. 시작하기 위한 세 가지 명령어뿐입니다.

실제 작동 방식

내부적으로 Waify는 두 가지 요소를 결합합니다:

Google Gemini가 메시지를 생성합니다. 사용자에게는 당신의 말투와 관계를 반영할 수 있는 커스텀 시스템 프롬프트 (System Prompt)와 선택 사항인 퓨샷 예시 (Few-shot examples)를 제공합니다. AI는 이를 사용하여 챗봇이 아닌, 마치 _당신_이 말하는 것 같은 메시지를 생성합니다.

OpenWA는 WhatsApp 전송을 담당합니다. 이는 Docker에서 로컬로 실행되는 셀프 호스팅(Self-hosted) WhatsApp API 서버로, 따라서 당신의 WhatsApp 세션과 메시지는 절대 당신의 기기를 벗어나지 않습니다. 설정 중에 QR 코드를 한 번 스캔하면, OpenWA가 세션을 유지합니다.

스케줄링 컨테이너 (Ofelia)는 당신이 설정한 cron 스케줄(매일, 평일만, 주말, 또는 사용자 정의 패턴)에 따라 발신기를 실행합니다.

설정 흐름 (The Setup Flow)

waify setup을 실행하면 모든 과정이 대화형으로 진행됩니다:

  1. Docker 서비스(OpenWA + 스케줄러)를 시작합니다.
  2. WhatsApp으로 스캔할 수 있는 QR 코드를 엽니다.
  3. Gemini API 키를 요청합니다 (무료 티어도 문제없이 작동합니다).
  4. 수신자, 언어, 시간 및 빈도를 설정할 수 있습니다.
  5. 모든 설정 파일을 생성하고 발신기 이미지를 빌드합니다.

그 후, waify tui를 실행하면 터미널 UI가 열리며, 여기서 설정 파일을 직접 건드리지 않고도 메시지 기록을 탐색하고, 설정을 조정하고, AI 프롬프트를 편집하며, 스케줄을 관리할 수 있습니다.

톤 커스터마이징 (Customizing the Tone)

제가 가장 만족하는 부분은 프롬프트 시스템입니다. Waify는 AI 지침을 ~/.config/waify/prompt.json에 저장하며, 당신이 원하는 대로 형태를 잡을 수 있습니다:

waify prompt edit              # $EDITOR에서 열기
waify prompt add-example "Good morning! Hope your presentation goes well today 💪"
waify preview -n 3             # 전송하지 않고 3개의 메시지 후보 확인

퓨샷 예시 (Few-shot examples)가 진정한 마법을 부립니다. 캐주얼하거나, 따뜻하거나, 시적이거나 등 당신의 실제 말투를 담은 메시지를 입력하면, AI는 그 말투를 맞추는 법을 배웁니다. 메시지가 생성될 언어를 직접 선택할 수도 있습니다.

왜 오픈 소스인가?

솔직히 말하자면? 피드백을 받고 싶었기 때문입니다.

이것은 저의 첫 번째 오픈 소스 (Open Source) 프로젝트입니다. 저 자신을 위해 만들고 작동하는 것을 확인한 뒤, _다른 사람들도 매일 연락하고 싶은 누군가가 분명히 있을 것_이라고 생각했습니다. 이 도구는 유용하지만, 내부에서는 보이지 않는 다듬어지지 않은 부분들이 분명히 있을 것입니다.

그래서 MIT 라이선스로 공개했습니다. 코드는 GitHub에, 패키지는 npm에 있으며, 누구나 이를 사용하고, 망가뜨리고, 무엇이 잘못되었는지 저에게 알려주셔도 좋습니다.

향후 계획

로드맵에는 이미 만들고 싶은 몇 가지 항목이 있습니다:

  • 다중 수신자 지원 (Multi-recipient support) — 데이터 모델은 이미 배열 (Array)을 지원하지만, 현재는 1명으로 제한되어 있습니다.
  • 더 많은 AI 제공업체 (AI providers) — 플러그형 AIProvider 인터페이스를 통해 OpenAI, Anthropic, Ollama를 지원할 예정입니다.
  • 더 많은 전송 어댑터 (Transport adapters) — Telegram과 SMS가 명확한 다음 목표입니다.

이 중 흥미로운 기능이 있거나, 혹은 완전히 다른 아이디어가 있다면 기꺼이 듣고 싶습니다.

사용해 보기

사전 요구 사항: Docker, Node.js 22+, 그리고 무료 Gemini API 키.

npm install -g @deckasoft/waify
waify setup

프로젝트는 **github.com/Deckasoft/waify**에 있습니다. Star, Issue, PR(Pull Request) 모두 환영합니다. 이곳의 댓글을 통한 피드백도 환영합니다. 제가 만든 것을 세상에 내놓는 것이 이번이 처음이라, 사람들이 어떻게 생각할지 진심으로 궁금합니다.

TypeScript, Node.js, Google Gemini, OpenWA, Docker로 제작되었습니다. MIT 라이선스 적용.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0