소개
매일 갱신되는 실적 데이터를 사람들이 깜빡하고 입력하지 않거나, 공유가 제때 안 되는 일이 반복됐습니다. 그래서 저는 Google Sheets 실적 데이터를 기반으로,
✅ 입력된 실적을 요약해서 공유하고
⚠️ 미입력 지점을 환기시키는 메시지를 두 개의 카카오톡 단톡방에 정해진 시간마다 자동 발송하는 시스템을 만들고자 했습니다.
"손으로 하나하나 챙기지 않아도 알아서 굴러가는 시스템"을 만들고 싶었죠!
진행 방법
사용한 도구
Google Sheets (CSV로 공개된 실적 데이터)
FastAPI + APScheduler (스케줄 관리 및 메시지 생성)
GPT-4o-mini (멘트 다양화)
메신저봇R 앱 (카카오톡 메시지 발송)
BridgeHub (중앙 메시지 허브, 큐 + 락 + API)
시스템 아키텍처
Python 스크립트의 스크린샷
BridgeHub 상세 구성 및 기능
1. 목적
카카오톡 봇들의 중앙 허브 역할 수행
공지/요약/뉴스/문서 저장·배포·예약·집계까지 가능한 통합 플랫폼
2. 주요 기능
📝 초안 관리 - 공지 초안 생성/수정/확정
📤 공지 발송 - 대기열 기반 폴링 (60초 권장)
🔒 중복 방지 - execution_lock + content_hash (10분 윈도우)
📊 Jobs API - 예약 작업 생성/조회/완료/실패
📋 Summaries API - 요약 저장/조회
⏰ Schedules API - 예약 발송 (시간 계산은 봇 쪽)
📈 Metrics API - Prometheus 형식 모니터링
🛠️ Admin API - 락 정리, 대기열 조회
3. API 사이클 흐름 (봇 연동 시)
/health→ 서버 상태 확인POST /drafts→ 초안 생성 (draft_id 반환)POST /confirm→ 초안 확정 (notice_id 반환)GET /pending→ 봇이 60초마다 폴링POST /complete→ 발송 완료 보고
4. 다른 프로젝트 연동 가이드
새 봇에서 BridgeHub를 사용하려면:
/health호출로 서버 상태 확인60초 폴링으로
/notices/pending조회공지 발송 후
/notices/{id}/complete호출인증이 필요한 경우 관리자에게 API 키 요청
콘텐츠 생성 서비스: ContentScheduler
역할: 스케줄 실행 + 메시지 생성 + BridgeHub 발송 요청
기술 스택: FastAPI + APScheduler + Python 3.x
데이터 소스: Google Sheets 공개 CSV
메시지 생성: GPT-4o-mini 사용, temperature=0.8
메신저봇 구축
플랫폼: 메신저봇R 앱 (Android)
역할: BridgeHub로부터 메시지 폴링 후 카카오톡 발송
기능 요약:
스케줄 알림 (1번방 5회, 2번방 2회)
구글 시트 연동 (공개 CSV, UTF-8, Excel 일련번호 지원)
LLM 멘트 다양화 (GPT 기반 멘트 자동 생성)
다층 중복 방지 (BridgeHub + 봇 락 + per-room 쿨다운)
한국어로 된 문자 메시지의 스크린샷
한국어로 된 문자 메시지의 스크린샷
결과와 배운 점
폭탄 문자 대참사 😱
스케줄은 작동 중인데 메신저 봇이 죽은 상태
메시지가 큐에 계속 쌓이고, 나중에 한꺼번에 발송되며 폭탄 문자 발생
앱을 재설치하고 컴파일을 두 번 누르자 좀비 스레드가 또 생김 → 메시지가 반복 중첩 발송
단톡방이 도배되고, 그걸 지우느라 진땀을 흘렸습니다 😵
ttt라는 단어가 포함된 문자 메시지의 스크린샷
구조 개선 및 해결
현우님이 공유해주신 노틱스브릿지봇 구조를 기반으로
직접 살짝 커스터마이징하여 적용 🔧
안정적인 서버-봇-사용자 흐름 완성
적용한 핵심 해결 포인트
중복 방지 락 도입 (execution_lock + content_hash)
서버 연결 안정화 (BridgeHub에서 큐 관리, 봇은 단순 폴링)
GPT로 다양한 메시지 생성 → 매번 같은 메시지 발송 방지
다층 락 구조로 진짜 중복 방지:
BridgeHub 서버 락
메신저봇 자체 인스턴스 락
per-room 쿨다운 적용
배운 점
기초부터 공부하려는 것보다, 직접 부딪혀야 진짜 기초가 왜 필요한지 느낀다
메시지 자동화 시스템도 결국 "인프라"다. 안정성, 중복방지, 예외처리가 핵심임을 체감
무조건 해보자! 시행착오에서 진짜 배운다 💪
도움 받은 글
현우님의 노틱스브릿지봇 가이드 및 실행파일 (스터디 공유 자료 기반)