별책부록 21편
별책부록 21편
영문판 봇 운영
한국어 봇이 안정화되면 글로벌로 — 코드는 그대로, 프롬프트·UI만 영어로
📑 이 편에서 다룰 내용

한국어 봇이 안정적으로 운영되고 있다면, 이제 글로벌 시장으로 나갈 차례입니다. 반가운 소식은 영문판 봇은 한국어 봇 코드를 거의 그대로 씁니다. 시스템 프롬프트, UI 메시지, Discord 채널 이름만 영어로 바꾸면 됩니다. 이 편에서는 영문판 봇 운영에 필요한 전 과정을 설명합니다.

💡 이 편에서 다룰 핵심 5가지
  1. 시스템 프롬프트 영문화 + Position C 영어 표현
  2. UI·메시지 i18n (한국어·영어·일본어 다국어 구조)
  3. Discord 영문 서버 채널 구성
  4. 시간대 자동 처리 (각 사용자 현지 09:00 기준)
  5. 글로벌 시장 진입 전략 (미국·유럽·아시아)
21-1 시스템 프롬프트 영문화 🔗

시스템 프롬프트를 영어로 바꾸는 것이 영문판 전환의 핵심입니다. Claude는 시스템 프롬프트 언어에 따라 자연스럽게 해당 언어로 응답합니다.

기본 봇 소개 — 한국어 → 영어 전환 예시

💻 시스템 프롬프트 언어 전환
# 한국어 봇
SYSTEM_PROMPT_KO = """
당신은 'TSV 모니터링 봇'입니다.
TotalSportsView 운영자 Junho의 일일 리포트를 작성합니다.
친근하고 시원한 톤 (~예요, ~합니다)으로 답변하세요.
"""

# 영문판 봇
SYSTEM_PROMPT_EN = """
You are the 'TSV Monitoring Bot'.
You write daily reports for Junho, the operator of TotalSportsView.
Respond in a friendly, helpful tone.
Always identify yourself as an AI assistant when asked.
"""

Position C 영어 표현 — TSV 봇 기준

💻 Position C 영어 시스템 프롬프트
# 한국어
"""베팅·도박 추천 절대 금지. 분석 미디어로서 통계와 맥락만 제공."""

# 영어
"""
NEVER recommend betting, gambling, or specific game outcomes.
Provide statistics and context only, as an analytical media outlet.
Use phrases like 'statistics suggest', 'historically', 'data shows'.
Avoid 'will win', 'guaranteed', 'pick this team'.
"""

영어 톤 가이드 — 해야 할 표현 vs 피해야 할 표현

상황권장 표현금지 표현
친근하게 인사"Hello! Glad to help.""Hi!!!! AWESOME!"
제안할 때"I'd suggest...", "It might be worth considering...""You should definitely..."
주의 안내"I should mention...", "Please note...""WARNING!!!"
추천할 때"I recommend...", "It's a good idea to...""100% sure this will work..."
단정 금지"Statistics suggest...""This will definitely..."
21-2 UI·메시지 i18n 구조 🔗

i18n(internationalization)은 다국어를 지원하는 구조입니다. 한 번 만들어두면 한국어·영어·일본어를 손쉽게 전환할 수 있어요.

메시지 파일 구조

💻 /bots/shared/i18n.js
// /bots/shared/i18n.js
const messages = {
  ko: {
    welcome: "환영합니다! 🎉",
    help_command: "/help — 봇 명령어 목록",
    error_rate_limit: "잠시 후 다시 시도해주세요.",
    error_unknown: "일시적인 오류가 발생했습니다.",
    ai_disclosure: "저는 AI 봇입니다. Anthropic Claude를 활용합니다.",
  },
  en: {
    welcome: "Welcome! 🎉",
    help_command: "/help — Bot command list",
    error_rate_limit: "Please try again in a moment.",
    error_unknown: "A temporary error occurred.",
    ai_disclosure: "I'm an AI bot powered by Anthropic Claude.",
  },
  ja: {
    welcome: "ようこそ! 🎉",
    help_command: "/help — ボットコマンド一覧",
    error_rate_limit: "少し後でもう一度お試しください。",
    error_unknown: "一時的なエラーが発生しました。",
    ai_disclosure: "私はAnthropicのClaudeを使用したAIボットです。",
  }
};

export function t(key, lang = 'en') {
  return messages[lang]?.[key] || messages.en[key] || key;
}

사용자 언어 자동 감지

💻 bots/shared/user_language.py
# bots/shared/user_language.py
async def detect_user_language(user_id: int, message: str) -> str:
    # 1. DB에 저장된 언어 설정 우선 확인
    saved = await db.fetch_one(
        "SELECT language FROM users WHERE id = $1", user_id
    )
    if saved and saved.language:
        return saved.language

    # 2. 메시지 텍스트로 언어 감지
    detected = detect_language_from_text(message)

    # 3. Discord locale 폴백
    if detected == 'unknown':
        detected = get_discord_user_locale(user_id) or 'en'

    # 4. 감지된 언어 저장 (다음부터는 DB에서 바로 조회)
    await db.execute(
        "UPDATE users SET language = $1 WHERE id = $2",
        detected, user_id
    )
    return detected
21-3 Discord 영문 서버 구성 🔗

영문 사용자를 위한 Discord 서버는 두 가지 방식으로 구성할 수 있습니다. Junho의 상황에서는 별도 서버(옵션 B)를 권장합니다.

서버 구성 옵션 비교

옵션구성장점단점
옵션 A — 한 서버 + 언어별 카테고리🇰🇷 KOREAN / 🇺🇸 ENGLISH / 🇯🇵 JAPANESE 카테고리 분리관리 서버 1개, 설정 단순언어 혼재 시 커뮤니티 혼란
옵션 B — 별도 서버 (★ 권장)TSV-KR / TSV-EN / TSV-JP 각 별도 서버언어별 커뮤니티 명확히 분리서버별 별도 관리 필요

영문 서버 필수 채널 구성

💻 TSV-EN 서버 채널 구조
[필수 채널]
#welcome        — 신규 멤버 자동 환영 메시지
#announcements  — 운영자 공지 (읽기 전용)
#general        — 일반 채팅
#questions      — 사용자 Q&A
#bot-feedback   — 버그 리포트 & 기능 요청

[봇 전용 채널]
#bot-commands   — 봇 명령어 전용
#alerts         — 봇 자동 알림 (운영자만 전송)
💡 영문 서버 웰컴 메시지 예시

신규 멤버가 서버에 참여하면 자동으로 전송되는 메시지입니다:

"Welcome to TSV-EN! 👋 I'm your AI monitoring bot powered by Claude (Anthropic). Type /help to see what I can do. If you have any questions, ask in #questions. Happy to help!"

21-4 글로벌 시장 전략 🔗

영문판 봇의 주요 타깃 시장과 각 시장의 특성을 파악해야 합니다.

주요 시장 특성

시장규모특징주의 사항
미국·캐나다·영국·호주 ★영어권 최대구독 결제 문화 익숙, 높은 지불 의사COPPA(13세 미만 보호), 각주별 개인정보법 상이
유럽 (독일·프랑스 등)다언어영어 서비스로 진입 가능GDPR 필수 준수
일본 (Phase 3+)높은 구독 충성도별도 일본어 봇 필요22편에서 별도 다룸

Junho의 글로벌 진입 순서 (권장)

1
영어권 우선 — 미국·영국·캐나다·호주

언어 장벽 없이 가장 빠르게 진입 가능한 시장입니다. 구독 결제 문화가 성숙해 수익화도 수월합니다.

2
유럽 — 영어 서비스로 진입 (GDPR 대응 필수)

GDPR 준수 체계를 갖추면 영어 서비스로 유럽 전체에 서비스할 수 있습니다. 개인정보 처리 방침에 GDPR 항목을 추가하세요.

3
일본 (Phase 3+) — 22편에서 별도 진행

일본어 시스템 프롬프트와 UI가 필요하므로 별도 편으로 다룹니다.

⚠️ 유럽 진입 시 GDPR 필수 대응
  • 개인정보 처리 방침에 GDPR 조항 추가
  • EU 사용자의 데이터 삭제 요청(Right to be Forgotten) 처리 기능 구현
  • 쿠키 사용 동의 팝업 추가
  • 데이터 처리 목적과 법적 근거 명시
21-5 시간대·언어 자동 처리 🔗

영문판 봇은 미국·유럽 사용자에게 각자의 현지 시간 기준으로 매일 리포트를 보내야 합니다. 한국 시간으로만 보내면 미국 사용자에게는 새벽에 알림이 가게 됩니다.

시간대 매핑 설정

💻 bots/shared/timezone.py
# bots/shared/timezone.py
from datetime import datetime
import pytz

USER_TIMEZONES = {
    'ko':    'Asia/Seoul',
    'en-US': 'America/New_York',
    'en-GB': 'Europe/London',
    'en-AU': 'Australia/Sydney',
    'ja':    'Asia/Tokyo',
    'de':    'Europe/Berlin',
    'fr':    'Europe/Paris',
}

def get_user_local_time(user_language: str) -> datetime:
    tz_str = USER_TIMEZONES.get(user_language, 'UTC')
    tz = pytz.timezone(tz_str)
    return datetime.now(tz)

매일 09:00 리포트 — 사용자별 현지 시간 기준

💻 daily_report.py — 다중 시간대 처리
async def send_daily_reports():
    """모든 활성 사용자에게 현지 시간 09:00 기준으로 리포트 발송"""

    # 1. 활성 사용자 목록 조회
    users = await db.fetch_all(
        "SELECT id, timezone, language FROM users WHERE active = true"
    )

    # 2. 각 사용자 현지 시간 확인
    for user in users:
        tz = pytz.timezone(user.timezone or 'UTC')
        local_now = datetime.now(tz)

        # 3. 현지 09:00~09:05 사이인 경우에만 발송
        if local_now.hour == 9 and local_now.minute < 5:
            await send_report(
                user_id=user.id,
                language=user.language or 'en'
            )

# cron 설정: */5 * * * *  (5분마다 실행해서 각 시간대 09:00 커버)
💡 시간대 처리 핵심 원리

5분마다 cron을 돌려서 "지금 현지 시간이 09:00~09:05인 사용자"에게만 발송합니다. 한국 09:00 = 미국 동부 전날 19:00 = 런던 전날 00:00이므로, 24시간을 5분 단위로 쪼개면 모든 시간대를 커버할 수 있어요.

21-6 Anthropic API 다중 언어 운영 🔗

한국어 봇과 영문판 봇은 각각 별도의 시스템 프롬프트를 사용합니다. Prompt Caching을 활용하면 각 언어별 프롬프트가 캐싱되어 비용을 절감할 수 있어요.

언어별 Prompt Caching 적용

💻 다중 언어 API 호출 — Prompt Caching 포함
import anthropic

client = anthropic.Anthropic()

# 한국어 봇 — 한국어 시스템 프롬프트 캐싱
def call_ko_bot(user_message: str):
    return client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        system=[
            {
                "type": "text",
                "text": KOREAN_SYSTEM_PROMPT,
                "cache_control": {"type": "ephemeral"}  # 캐싱 적용
            }
        ],
        messages=[{"role": "user", "content": user_message}]
    )

# 영문판 봇 — 영어 시스템 프롬프트 캐싱
def call_en_bot(user_message: str):
    return client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        system=[
            {
                "type": "text",
                "text": ENGLISH_SYSTEM_PROMPT,
                "cache_control": {"type": "ephemeral"}  # 별도 캐싱
            }
        ],
        messages=[{"role": "user", "content": user_message}]
    )

언어별 API 비용 비교

언어토큰 효율상대 비용비고
한국어보통1.0x 기준
영어 ★높음약 0.7x (30% 절감)같은 내용을 영어로 쓰면 토큰 수가 적어짐
일본어낮음약 1.5x한자·가나 혼용으로 토큰 소모 많음
🎉 영문판 봇은 한국어 봇보다 API 비용이 30% 저렴합니다

영어는 한국어보다 같은 내용에서 토큰 소모량이 적어요. 영문판 봇이 안정적으로 운영되면 같은 기능을 30% 낮은 API 비용으로 제공할 수 있습니다.

21-7 한국 운영자의 영어권 운영 현실 🔗

한국 시간 기준 09:00은 미국 동부 기준으로 전날 저녁 19:00(여름) 또는 18:00(겨울)입니다. 운영자가 한국에서 자고 있는 동안 미국 사용자들이 활발히 활동합니다.

📘 한국↔미국 주요 시간대 차이
한국 시간미국 동부 (EST)미국 서부 (PST)런던 (GMT)
09:00전날 19:00전날 16:0000:00
18:0004:0001:0009:00
자정 00:0010:0007:0015:00

한국 운영자의 영어권 운영 전략 3가지

1
봇 24/7 자동 운영 (기본)

systemd + pm2로 봇이 24시간 자동으로 운영됩니다. 미국 사용자의 질문에 봇이 즉시 답변하므로 운영자가 새벽에 깨어 있을 필요가 없어요.

2
자동 에스컬레이션 (FAQ → 운영자 전달)

FAQ는 봇이 자동 답변하고, 복잡한 문의는 운영자에게 이메일·Telegram 알림으로 전달합니다. 운영자는 한국 업무 시간에 처리하면 됩니다.

3
24시간 응답 원칙 (영어권 기대치)

영어권 사용자는 보통 24시간 이내 응답을 기대합니다. 운영자 직접 답변이 필요한 건은 한국 업무 시간(09:00~18:00)에 처리해도 충분해요.

21-8 Day 14 체크리스트 🔗
📘 영문판 봇 런칭 Day 14 점검 항목

봇 기능 점검

  • ☑ 영어 시스템 프롬프트 적용 및 응답 언어 확인
  • ☑ Position C 영어 표현 동작 확인 (베팅·의료·법률·금융 관련 테스트)
  • ☑ 영어 웰컴 메시지 및 AI 공시 문구 확인

인프라 점검

  • ☑ Discord 영문 서버 채널 구성 완료
  • ☑ 시간대별 09:00 리포트 발송 테스트 (EST·GMT·PST 각각)
  • ☑ 한국어 사용자에게 한국어로, 영어 사용자에게 영어로 응답 확인

법적·정책 점검

  • ☑ 개인정보 처리 방침 영문 버전 공개
  • ☑ 이용약관 영문 버전 공개
  • ☑ GDPR 대응 항목 확인 (유럽 진입 시)
💡 영문판 런칭 후 마케팅 출발점
  • Reddit 관련 서브레딧 (r/discordbots, 서비스 주제별 서브레딧)에 소개 게시
  • Product Hunt에 봇 소개 등록
  • Discord.gg 같은 봇 디렉토리 사이트에 등록
  • 영어 블로그 포스팅 (봇이 해결하는 문제 중심으로)
📌 21편 정리
  • 1️⃣ 코드는 그대로 — 시스템 프롬프트·UI 메시지·Discord 채널명만 영어로 변환
  • 2️⃣ i18n 구조messages.ko / messages.en / messages.ja 로 다국어 관리
  • 3️⃣ Discord 서버 — 별도 영문 서버 권장 (TSV-EN), 필수 채널 6개 구성
  • 4️⃣ 시간대 처리 — 5분마다 cron + 현지 09:00 감지로 전 세계 리포트 발송
  • 5️⃣ 글로벌 전략 — 영어권(미국·영국·캐나다·호주) → 유럽(GDPR) → 일본(22편) 순서
  • 6️⃣ API 비용 — 영어 프롬프트는 한국어 대비 약 30% 토큰 절감
  • 7️⃣ 운영 현실 — 봇이 24/7 자동 운영, 운영자는 한국 업무 시간에 처리
🎉 핵심 한 줄

영문판 봇은 새로 만드는 게 아니라 기존 봇의 "언어 옷"만 갈아입히는 작업입니다.

한국어 봇이 안정적으로 운영되고 있다면, 영문판 전환은 1~2일이면 충분해요.

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