Backend가 Redis에 데이터를 저장하면, AI Agent가 자동으로 분석하여 결과를 Redis + MySQL에 저장하는 시스템입니다.
Backend (건드리지 않음)
├─ 사용자 채널 등록 → MySQL
├─ YouTube Data API로 데이터 수집
│ ├─ 채널 정보, 비디오 20개
│ ├─ 스크립트 (yt-dlp)
│ └─ 댓글 100개/비디오
└─ Redis에 저장 완료
↓
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Backend가 AI 서비스 호출
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
HTTP API 또는 Redis Pub/Sub
↓
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
AI Agent 분석 파이프라인
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1차 병렬 (동시 실행)
├─ Summarize (20개 영상)
└─ Comment Ecosystem (댓글)
↓
Creator Profiling (요약)
↓
결과 저장
├─ Redis (캐시)
└─ Backend API → MySQL (영구)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
필터링 (매일 4시 자동)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
AI/
├── 📄 README.md # 이 파일
│
├── 🔌 Backend 연동 (진입점)
│ ├── analysis_service.py # HTTP API 서버 (FastAPI)
│ ├── analysis_queue_worker.py # Redis Queue 워커 (권장) ⭐
│ ├── analysis_worker.py # Redis Pub/Sub 워커
│ └── backend_client.py # Backend API 클라이언트
│
├── 🤖 AI 분석 파이프라인
│ ├── agent_summarize.py # 비디오 요약 에이전트
│ ├── agent_filtering.py # 댓글 필터링 에이전트
│ ├── agent_comment_ecosystem.py # 댓글 생태계 분석 에이전트
│ └── agent_channel_profiling.py # 크리에이터 프로파일링 에이전트
│
├── 🔧 유틸리티
│ ├── extract_video_transcript.py # 스크립트 추출 (yt-dlp)
│ ├── youtube_channel_videos.py # YouTube Data API (비디오)
│ ├── youtube_channel_video_comments.py # YouTube Data API (댓글)
│ └── redis_test.py # Redis 테스트
│
├── 🧪 테스트
│ └── test_backend_integration.py # Backend 연동 테스트
│
├── 📚 문서
│ ├── README_PIPELINE.md # 파이프라인 상세 가이드
│ ├── BACKEND_INTEGRATION.md # Backend 연동 가이드
│ └── BACKEND_ENDPOINTS.md # Backend API 명세
│
└── ⚙️ 설정
├── requirements_pipeline.txt # 필수 패키지
└── .env.example # 환경 변수 예시
# 패키지 설치 pip install -r requirements_pipeline.txt # 환경 변수 설정 cp .env.example .env # .env 파일 수정: # - OPENAI_API_KEY # - BACKEND_API_URL
# Linux/Mac redis-server # Docker docker run -d -p 6379:6379 redis
# AI Queue Worker 시작 (계속 실행) python analysis_queue_worker.py # Backend에서 작업 추가만 하면 자동 실행! # redis-cli LPUSH analysis:queue '{"channel_id":"UC..."}'
장점:
- ✅ 작업 보장 (Worker 다운되어도 작업 유실 없음)
- ✅ 재시작 시 미처리 작업 자동 처리
- ✅ 여러 Worker 동시 실행 가능 (부하 분산)
# AI 분석 서비스 시작 python analysis_service.py # Backend에서 호출: # POST http://localhost:8000/api/v1/analyze-channel # {"channel_id": "UC..."}
# AI 워커 시작 (백그라운드) python analysis_worker.py # Backend에서 이벤트 발행: # redis-cli PUBLISH channel:analysis:requests '{"channel_id":"UC..."}'
# 매일 4시 자동 필터링
python scheduler_filtering.py-
✅ Redis에 다음 데이터 저장:
youtube:channel:{channel_id}:top20_videosvideo:{video_id}:transcriptvideo:{video_id}:comments
-
✅ Backend API 구현:
POST /api/v1/analysis/results- 분석 결과 저장POST /api/v1/analysis/filtering- 필터링 결과 저장POST /api/v1/analysis/status- 완료 알림
-
✅ AI 분석 트리거 (단 한 줄!):
// Node.js 예시 - Queue 방식 (권장) const redis = require('redis'); const redisClient = redis.createClient(); // Backend가 Redis에 데이터 저장 후, 이 한 줄만 추가! await redisClient.lPush('analysis:queue', JSON.stringify({ channel_id: 'UC...' })); // → AI Worker가 자동으로 Queue를 감지하고 분석 시작!
상세 가이드: BACKEND_INTEGRATION.md, BACKEND_ENDPOINTS.md
asyncio.gather( run_summarize_videos(), # 20개 영상 요약 run_comment_ecosystem_analysis() # 댓글 생태계 분석 )
결과:
video:{video_id}:summary(각 비디오)channel:{channel_id}:comment_ecosystem
run_creator_profiling() # 요약 데이터
결과:
channel:{channel_id}:creator_profile
scheduler.every().day.at("04:00").do(run_filtering)
결과:
channel:{channel_id}:filtering_result
상세 가이드: README_PIPELINE.md
# 통합 테스트 실행 python test_backend_integration.py # 메뉴: # 1. HTTP API 테스트 # 2. Redis Pub/Sub 테스트 # 3. 결과 확인 # 4. 데이터 정리
Backend → Redis 저장
↓
AI Agent 분석
↓
Redis 저장 (캐시)
↓
Backend API 호출
↓
MySQL 저장 (영구)
장점:
- ✅ Redis: 빠른 조회
- ✅ MySQL: 영구 저장, 관계형 쿼리
- ✅ 이중 저장으로 안정성 확보
# .env OPENAI_API_KEY=sk-... BACKEND_API_URL=http://localhost:3000 BACKEND_API_TIMEOUT=30
POST /api/v1/analyze-channel- 분석 시작GET /api/v1/analysis-status/{channel_id}- 상태 조회GET /api/v1/data-check/{channel_id}- 데이터 확인GET /api/v1/health- 헬스 체크
POST /api/v1/analysis/results- 분석 결과 저장POST /api/v1/analysis/filtering- 필터링 결과 저장POST /api/v1/analysis/status- 완료 알림
redis-cli ping
# PONG 확인.env파일의OPENAI_API_KEY확인- API 사용량 제한 확인
- Backend 서버 실행 확인
.env파일의BACKEND_API_URL확인
MIT License
문제 발생 시 이슈를 생성해주세요.