Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

minmings111/MEDI_AI_aica

Repository files navigation

YouTube 채널 분석 AI 시스템

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 # 환경 변수 예시

🚀 설치 및 실행

1. 환경 설정

# 패키지 설치
pip install -r requirements_pipeline.txt
# 환경 변수 설정
cp .env.example .env
# .env 파일 수정:
# - OPENAI_API_KEY
# - BACKEND_API_URL

2. Redis 실행

# Linux/Mac
redis-server
# Docker
docker run -d -p 6379:6379 redis

3. AI 서비스 실행 (세 가지 방법 중 선택)

방법 1: Redis Queue (가장 권장) ⭐

# AI Queue Worker 시작 (계속 실행)
python analysis_queue_worker.py
# Backend에서 작업 추가만 하면 자동 실행!
# redis-cli LPUSH analysis:queue '{"channel_id":"UC..."}'

장점:

  • ✅ 작업 보장 (Worker 다운되어도 작업 유실 없음)
  • ✅ 재시작 시 미처리 작업 자동 처리
  • ✅ 여러 Worker 동시 실행 가능 (부하 분산)

방법 2: HTTP API

# AI 분석 서비스 시작
python analysis_service.py
# Backend에서 호출:
# POST http://localhost:8000/api/v1/analyze-channel
# {"channel_id": "UC..."}

방법 3: Redis Pub/Sub

# AI 워커 시작 (백그라운드)
python analysis_worker.py
# Backend에서 이벤트 발행:
# redis-cli PUBLISH channel:analysis:requests '{"channel_id":"UC..."}'

4. 스케줄러 실행 (선택적)

# 매일 4시 자동 필터링
python scheduler_filtering.py

🔌 Backend 연동

Backend가 준비할 것

  1. ✅ Redis에 다음 데이터 저장:

    • youtube:channel:{channel_id}:top20_videos
    • video:{video_id}:transcript
    • video:{video_id}:comments
  2. ✅ Backend API 구현:

    • POST /api/v1/analysis/results - 분석 결과 저장
    • POST /api/v1/analysis/filtering - 필터링 결과 저장
    • POST /api/v1/analysis/status - 완료 알림
  3. ✅ 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


🔄 분석 파이프라인

1차 병렬 처리 (동시 실행)

asyncio.gather(
 run_summarize_videos(), # 20개 영상 요약
 run_comment_ecosystem_analysis() # 댓글 생태계 분석
)

결과:

  • video:{video_id}:summary (각 비디오)
  • channel:{channel_id}:comment_ecosystem

Creator Profiling (20개 요약 완료 후)

run_creator_profiling() # 요약 데이터

결과:

  • channel:{channel_id}:creator_profile

필터링 (매일 4시 자동)

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

📝 주요 API Endpoints

AI 서비스 (analysis_service.py)

  • POST /api/v1/analyze-channel - 분석 시작
  • GET /api/v1/analysis-status/{channel_id} - 상태 조회
  • GET /api/v1/data-check/{channel_id} - 데이터 확인
  • GET /api/v1/health - 헬스 체크

Backend API (구현 필요)

  • POST /api/v1/analysis/results - 분석 결과 저장
  • POST /api/v1/analysis/filtering - 필터링 결과 저장
  • POST /api/v1/analysis/status - 완료 알림

🐛 트러블슈팅

Q: Redis 연결 실패

redis-cli ping
# PONG 확인

Q: OpenAI API 에러

  • .env 파일의 OPENAI_API_KEY 확인
  • API 사용량 제한 확인

Q: Backend API 호출 실패

  • Backend 서버 실행 확인
  • .env 파일의 BACKEND_API_URL 확인

📄 라이선스

MIT License


📧 문의

문제 발생 시 이슈를 생성해주세요.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /