Helana Log
How Helena Lives · Docs

라디오 초대권 자동화 시스템 — "Classic Pass" 설계

AI 에이전트(DeepSeek/Aider) + 크롤링 + GitHub Actions + GUI 자동화로

source · docs/solutions/radio-ticket-automation.md · bridge docs↔web · _Grok

date: 2026-08-10
source: gemini-conversation
agent: Gemini + Claude Code (파싱·정제)
status: 설계 완료 → 구현 대기


라디오 초대권 자동화 시스템 — “Classic Pass” 설계

AI 에이전트(DeepSeek/Aider) + 크롤링 + GitHub Actions + GUI 자동화로
라디오 공개방송·초대권 당첨률을 극대화하는 자동화 파이프라인.

1. 핵심 제약 — 수요일 Only

Boss의 쉬는 날이 수요일이므로, 수요일에 진행/참여 가능한 프로그램만 타겟팅.
모든 크롤링·사연 생성·신청은 이 제약 위에서 동작.

2. 3대 채널 포트폴리오

채널 장르 타깃 방송사 프로그램 예시
채널 A 클래식 (치유·전공) KBS Classic FM 단일 KBS 음악실, 출발 FM과 함께, 가정음악, 살롱 드 피아노
채널 B 옛날 가요 (작은누나) 지상파 3사 전체 KBS 열린음악회, 불후의 명곡, MBC/SBS 특집
채널 C 해외 팝 (Boss 추억) MBC FM4U 단일 배철수의 음악캠프

3. 기술 아키텍처

┌─────────────────────────────────────────────────────────┐
│                 Classic Pass Pipeline                    │
├──────────┬──────────┬──────────┬──────────┬────────────┤
│ 크롤링    │ LLM 생성  │ 스케줄러   │ 전송      │ 제출        │
│ (Python) │ (DeepSeek)│ (GH Act) │ (TG Bot) │ (GUI/수동)  │
├──────────┼──────────┼──────────┼──────────┼────────────┤
│5대 공연장 │역산 알고리즘│주1회 실행  │스마트폰    │ADB 매크로   │
│3사 방청  │당첨 패턴   │cron      │알림+복사  │or Paste    │
│배캠 공지  │학습·생성  │          │          │Pipeline    │
└──────────┴──────────┴──────────┴──────────┴────────────┘

Module 1 — 크롤링 & 타겟팅 스케줄러

5대 클래식 공연장 타깃 도메인:
- 예술의전당 (sac.or.kr) — 달력형 HTML
- 롯데콘서트홀 (lotteconcerthall.com) — AJAX 비동기, JSON 엔드포인트 직접 타격 필요
- 세종문화회관 (sejongpac.or.kr)
- 금호아트홀 연세
- KBS홀

필터링 로직:

날짜 → day_of_week == "수요일"
장르 → "피아노" | "리사이틀" | "오케스트라" | "필하모닉" | "협주곡"
제휴 → 주최/협찬에 "KBS" | "KBS 클래식FM" 포함

가요·팝 방청 크롤링 추가:
- KBS 열린음악회 방청 신청 페이지
- MBC 라디오 공개방송 공지사항
- SBS 전설의 무대 아카이브K
- MBC FM4U 배철수의 음악캠프 공지사항 게시판

데이터 스키마 (JSON):

{
  "performance_id": "SAC_20260812_01",
  "location": "예술의전당 콘서트홀",
  "date": "2026-08-12",
  "day_of_week": "수요일",
  "time": "19:30",
  "title": "백건우 피아노 리사이틀",
  "genre": "클래식 / 솔로 악기",
  "repertoire": ["쇼팽 녹턴", "쇼팽 발라드 전곡"],
  "hosts": ["주최: 예술의전당", "협찬: KBS 클래식FM"],
  "program_match": "KBS 음악실",
  "deadline": "2026-08-05",
  "apply_url": "https://..."
}

Module 2 — DeepSeek 사연 역산 생성기

역산(Reverse Engineering) 로직:
1. 과거 당첨 사연 수집 → 텍스트 패턴 분석
2. 패턴: 길이, 감정 단어 빈도, 문체(구어체/문어체), 스토리 구조
3. 프롬프트에 내장 → “이 패턴을 따르되 새로운 맥락으로”

디폴트 프로필 (Persona Settings):
- 보호자(동생), 육체노동자, 출판사 AI 프로젝트 진행 중
- 쉬는 날: 수요일
- 가족: 치매 어머니, 조현병 작은누나(취미: 피아노), 큰누나(피아노 전공)

채널별 톤앤매너:
| 채널 | 프로그램 | 톤 |
|------|---------|-----|
| KBS 음악실 | 살롱 드 피아노 | 우아하고 전문성 있는 클래식 애호가 |
| 출발 FM | 아침 클래식 | 산뜻하고 간결하게 |
| 가정음악 | 저녁 클래식 | 따뜻하고 차분하게 |
| 열린음악회 | 가요 방청 | 작은누나의 추억 + 감동 가족 스토리 |
| 배철수의 음악캠프 | 팝 라이브 | 젊은 날의 열정 + 깊은 팬심 |

Module 3 — 알림 & 전송 (GitHub Actions → TG)

GitHub Actions cron (매주 일요일 밤)
  → 크롤링 스크립트 실행
  → DeepSeek API 사연 생성
  → 결과물을 GitHub Artifact + Telegram으로 전송

TG 메시지 포맷:
  [프로그램명] / [마감일] / [신청 페이지 링크] / [생성된 사연]

Module 4 — 최종 제출 (GUI/수동 하이브리드)

API 없는 방송사 게시판 대응:
- 완전 자동화: 안드로이드 ADB + MacroDroid/Tasker → 클립보드 주입 + Input Text
- 반자동 (현실적): TG로 받은 사연 복사 → 링크 눌러 게시판 이동 → 붙여넣기 → 제출 (5분)

WSL 한계 우회:
- WSL에서는 GUI 자동화 까다로움
- 저가형 안드로이드 폰에서 ADB/Termux로 구동
- 또는 GitHub Actions에서 사연 생성까지만 하고, 제출은 사람이 Paste Pipeline으로

4. 일정 역산 로직

목표일 = 공연/행사일 - 14일 (초대권 발송 프로세스 고려)
실행일 = 목표일 - 3일 (접수 마감 여유)
→ GitHub Actions cron: 매주 실행, 조건 충족 항목만 타겟팅

5. 수요일 참여 가능 프로그램 (1차 타겟)

클래식 (KBS Classic FM)

달달·일상 사연

진지·감동 사연

유쾌·웃음 사연

6. 개발 우선순위

단계 내용 의존성
1단계 3~5개 프로그램 선정, 게시판 URL 구조 파악 → 크롤러 작성 없음
2단계 DeepSeek 프롬프트 튜닝 (“당첨 치트키 패러다임”) 1단계
3단계 GitHub Actions cron 연동 + TG 알림 2단계
4단계 ADB/Tasker GUI 자동화 또는 Paste Pipeline 3단계

7. Gemini와의 대화 핵심 결론

  1. 크롤링은 전통적 하드코딩으로 — LLM에게 크롤링 맡기면 할루시네이션 위험 (날짜 오차, 동적 JS 누락). 정확한 도메인 타격이 먼저.
  2. 사연 생성은 LLM에게 — 톤앤매너 매칭, 디폴트 프로필 유지, 감동적인 스토리텔링은 AI의 강점.
  3. 제출은 사람이 최종 관여 — API 없음 + 캡차 + 로그인 보안. Paste Pipeline 모델 재활용.
  4. 채널 분리가 핵심 — 클래식(KBS 단일) / 가요(3사) / 팝(배캠 단일) — 채널마다 크롤링 도메인과 사연 톤이 완전히 다름.

8. 기존 helena_phone 파이프라인과의 연계

기존 시스템 Classic Pass 재활용
PD Pipeline (P0~P6) 크롤링·파싱 모듈 구조 그대로 도메인만 교체
Paste Pipeline (TG→복붙) 최종 제출 단계에서 동일 패턴
GitHub Actions cron 동일 인프라, workflow 파일 추가
DeepSeek API (Aider) LLM 생성 파트에서 동일 API
helana_log/기자/ RSS sync 방송사 공지사항 RSS 파싱으로 확장 가능

한 줄: “AI가 사연을 쓰고, 크롤러가 일정을 따고, GitHub가 스케줄을 돌리고, 사람이 5분만 투자해서 제출한다.”
— Boss의 Paste Pipeline 철학을 라디오 초대권으로 확장.