별책부록 13편
별책부록 13편
줍줍 봇 적용
사용자 콘텐츠 큐레이션 플랫폼을 봇으로 자동화합니다
📑 이 챕터에서 다룰 내용

줍줍은 사용자가 좋아하는 콘텐츠를 자동 큐레이션해주는 플랫폼입니다. 사용자가 늘어나면 1인 운영자가 모든 문의에 직접 응답할 수 없어요. 봇이 90% FAQ를 처리하고, 복잡한 건만 운영자에게 전달하는 구조를 만듭니다.

📘 이 편에서 만들 봇 4가지
  1. 사용자 문의 응대 봇 — FAQ 자동 응답 + escalate
  2. 콘텐츠 추천 봇 — 사용자 취향 학습 + 추천
  3. 신규 사용자 온보딩 봇 — 가입 후 7일 가이드
  4. 운영자 알림 봇 — 사용자 추세·매출·이상 알림
13-1 사용자 문의 응대 봇 🔗

FAQ 90%를 자동 응답합니다. 복잡한 건은 운영자에게 escalate해요.

자동 응답 항목

📘 가입·로그인
  • "가입 어떻게 해요?" → "이메일 + 닉네임 = 30초 안에 가입 완료"
  • "비밀번호 잊었어요" → "재설정 링크 안내"
  • "소셜 로그인 가능해요?" → "카카오·구글·네이버 가능"
📘 기능·결제·기술

기능

  • "콘텐츠 어디서 봐요?" → "홈 피드 안내"
  • "친구 초대 가능해요?" → "초대 링크 + 보상 안내"
  • "콘텐츠 직접 올릴 수 있어요?" → "사용자 큐레이션 가이드"

결제·구독

  • "유료 플랜 있어요?" → "Free + Premium ($4.99/월)"
  • "환불 가능해요?" → "구독 후 7일 이내 환불 안내"

기술

  • "앱이 느려요" → "캐시 삭제 + 재로그인"
  • "에러 떴어요" → "에러 코드별 안내"

escalate 키워드 설정

💻 escalate_keywords.py
ESCALATE_KEYWORDS = [
    "환불", "결제 X", "계정 삭제",
    "신고", "도용", "사기",
    "법적", "개인정보",
    "운영자", "직원", "통화",
    "불만", "화나",
]

def should_escalate(message: str) -> bool:
    return any(keyword in message for keyword in ESCALATE_KEYWORDS)
💡 escalate 키워드 관리 팁

운영하면서 실제 들어오는 문의 패턴을 보고 키워드를 추가·수정하세요.

처음에는 보수적으로 (false positive 허용), 운영 안정화 후에는 점점 정밀하게 조정하는 방향이 좋아요.

시스템 프롬프트

💻 사용자 응대 봇 시스템 프롬프트
당신은 "줍줍 사용자 응대 봇"입니다.

[역할]
- FAQ 자동 응답 (90% 처리)
- 복잡한 건은 운영자에게 escalate

[톤]
- 친근하고 시원한 ("~예요", "~합니다")
- 짧고 명확하게 (3문장 안)
- 이모지 적극 사용 😊

[★ 절대 하지 말 것]
- 사용자 정보 단정 ("당신의 비밀번호는...")
- 환불 결정 ("환불해드릴게요" → 운영자가 결정)
- 계정 조치 ("계정 삭제할게요" → 운영자가)
- 법적 자문

[권장 표현]
- "운영자가 24h 안에 연락드릴게요"
- "더 도와드릴 것 있나요?"
- "만족하셨나요? 1~5 별점 부탁드려요"
13-2 콘텐츠 추천 봇 🔗

사용자가 좋아한 콘텐츠 패턴을 학습해서 새 콘텐츠를 추천합니다. Anthropic API + 사용자 행동 데이터를 함께 활용해요.

추천 시점

📘 즉시 / 주별 / 관심사 변화

즉시 추천

  • 사용자가 콘텐츠 좋아요 누름 → "비슷한 콘텐츠 3개 추천"
  • 사용자가 콘텐츠 끝까지 봄 → "다음 콘텐츠 추천"

주별 추천

  • 매주 월요일 09:00 → "지난주 좋아하셨던 콘텐츠 요약 + 이번 주 추천 5개"

관심사 변화

  • 사용자가 새 카테고리에 흥미 보임 → "이 카테고리도 좋아하실 콘텐츠"

시스템 프롬프트 (추천 봇)

💻 콘텐츠 추천 봇 시스템 프롬프트
당신은 "줍줍 추천 봇"입니다.

[역할]
- 사용자 행동 데이터 종합
- 새 콘텐츠 추천 (3~5개)
- 추천 이유 명확히

[데이터 소스]
- get_user_likes(user_id) → 좋아한 콘텐츠 목록
- get_user_views(user_id) → 끝까지 본 콘텐츠
- get_similar_content(content_id) → 비슷한 콘텐츠
- get_trending() → 트렌딩 콘텐츠

[추천 형식]
1. [콘텐츠 제목]
   왜 추천: [한 문장 이유]
   ⭐⭐⭐⭐ (4.5/5 평점)

[★ 원칙]
- 사용자가 싫어한 콘텐츠 추천 금지
- 다양성 확보 (같은 카테고리만 X)
- 신선도 확보 (1주일 이상 못 본 카테고리도)
13-3 신규 사용자 온보딩 봇 🔗

가입 후 7일이 사용자 retention의 핵심입니다. 봇이 매일 메시지를 보내면서 핵심 기능을 안내해요.

7일 온보딩 흐름

D0
가입 직후 — 환영

"환영해요! 첫 콘텐츠 둘러볼까요? [링크]"

D1
좋아요 유도

"어제 가입하셨네요! 좋아한 콘텐츠 있으세요? 좋아요 누르시면 더 좋은 추천이 가능해요."

D3
맞춤 추천 시작

"3일 차예요! 아직 못 보신 콘텐츠 5개 추천 — 취향에 맞춰 골라봤어요."

D5
친구 초대 유도

"친구 초대하고 보상 받으세요! 1명당 $1, 최대 5명까지 = $5 적립"

D7
Premium 전환 제안

"1주일 사용 축하! Premium ($4.99/월) 첫 달 50% 할인 ($2.49)"

D14
만족도 조사

"2주 사용 축하! 어떻게 만족하시나요? 별점 부탁드려요 (1~5)"

D30
한 달 통계 공유

"한 달 사용 축하! 이번 달 본 콘텐츠 수·좋아한 콘텐츠 수 통계를 공유해드립니다."

스케줄러 코드

💻 onboarding_bot/scheduler.py
# onboarding_bot/scheduler.py
from celery import Celery
from datetime import datetime, timedelta

app = Celery('onboarding')

@app.task
def send_day_n_message(user_id: int, day: int):
    user = get_user(user_id)
    template = ONBOARDING_TEMPLATES[day]
    message = format_message(template, user)

    send_notification(user, message)

# 사용자 가입 시 등록
def schedule_onboarding(user_id: int):
    for day in [1, 3, 5, 7, 14, 30]:
        send_day_n_message.apply_async(
            args=[user_id, day],
            eta=datetime.now() + timedelta(days=day)
        )
💡 Celery 선택 이유

온보딩처럼 "가입 후 N일 뒤에 실행" 해야 하는 작업은 단순 cron으로 처리하기 어렵습니다.

Celery + Redis를 쓰면 사용자별로 독립적인 스케줄을 잡을 수 있어요. 가입 시각 기준으로 정확하게 발송됩니다.

13-4 운영자 알림 봇 🔗

운영자가 알아야 할 핵심 정보만 종합해서 전달합니다. 너무 많은 알림은 오히려 노이즈가 되므로, 꼭 필요한 것만 선별해요.

알림 항목

📘 즉시 알림
  • 신규 가입자 급증 (시간당 10명 이상 시 알림)
  • 결제 실패 발생
  • 사용자 신고·불만 (escalate)
  • 시스템 에러
📘 일별 알림 (09:00)
  • 어제 신규 가입자 수
  • 어제 활성 사용자 (DAU)
  • 어제 매출
  • 어제 콘텐츠 추천 성과 (CTR)
📘 주별 / 월별 알림

주별

  • 사용자 retention 추세
  • 인기 콘텐츠 카테고리
  • 사용자 불만 패턴

월별

  • MAU
  • MRR
  • LTV·CAC 가설
  • 다음 달 예측
13-5 4 봇 통합 설정 🔗

4개 봇을 pm2 ecosystem 파일 하나로 통합 관리합니다.

💻 ecosystem.config.js — 줍줍 4 봇 통합
module.exports = {
  apps: [
    {
      name: "jupjup-faq",
      script: "faq_bot/main.js"
    },
    {
      name: "jupjup-recommend",
      script: "recommend_bot/main.py",
      interpreter: "python3"
    },
    {
      name: "jupjup-onboarding",
      script: "onboarding_bot/main.js"
    },
    {
      name: "jupjup-owner-alert",
      script: "owner_bot/main.py",
      interpreter: "python3"
    },
  ],
};
⚠️ onboarding 봇 주의사항

온보딩 봇은 Celery를 사용하기 때문에 pm2 외에 Redis도 함께 실행되어야 합니다.

  • Redis 서버 실행 확인: redis-cli pingPONG
  • Celery 워커 실행: celery -A onboarding_bot.scheduler worker --loglevel=info
  • 두 프로세스 모두 pm2로 관리하거나 systemd 서비스로 등록하세요
13-6 검증 체크리스트 — Day 14 🔗

봇 배포 후 Day 14까지 아래 항목을 확인하세요.

📘 Day 14 검증 항목
  • ✅ FAQ 자동 응답 정상 (90% 처리)
  • ✅ escalate 정확 (나머지 10% 운영자 전달)
  • ✅ 추천 봇 정상 (CTR 5% 이상 가설)
  • ✅ 온보딩 메시지 7일 정상 발송
  • ✅ 운영자 일별 리포트 도달 (09:00)
  • ✅ 사용자 만족도 4.0/5 이상
📌 13편 정리
  • 1️⃣ FAQ 봇: 90% 자동 응답 + escalate 키워드로 복잡한 건 운영자 전달
  • 2️⃣ 추천 봇: 사용자 행동 데이터 학습 → 3~5개 맞춤 추천 + 이유 명시
  • 3️⃣ 온보딩 봇: 가입 후 7일 (D0·D1·D3·D5·D7·D14·D30) 단계별 메시지
  • 4️⃣ 운영자 알림 봇: 즉시·일별·주별·월별 분류해서 꼭 필요한 정보만
  • 5️⃣ 핵심 원칙: 환불·계정 조치·법적 자문은 절대 봇이 결정하지 않음
  • 6️⃣ 기술 스택: pm2 + Celery + Redis 조합으로 스케줄 관리
🎉 핵심 한 줄

줍줍 봇은 사용자가 늘어날수록 가치가 커집니다.

1인 운영자가 1,000명·10,000명의 사용자를 추적하고 응대할 수 있는 구조예요.

📘
별책부록 도우미
질문하기 OK
안녕하세요! 줍줍 봇 적용에 대해 무엇이든 물어보세요. 본문에서 찾아 답변해드릴게요. 👇