---
name: youtube-doctor
description: YouTube BGM Auto 시스템의 셋업 상태를 진단한다. .env.local, client_secret.json, token.pickle, ffmpeg, venv, 필수 환경변수, API 키 유효성을 점검하고 누락된 항목별 해결 절차를 출력한다. 사용자가 "환경 점검해줘", "셋업 확인", "/youtube-doctor", "왜 안 돼" 같이 요청할 때 발동.
---

# YouTube BGM Auto 환경 진단

## 무엇을 하는가

시스템이 동작할 준비가 됐는지 점검하고, 막힌 곳을 친절하게 안내한다.

## 점검 절차

아래 명령들을 차례로 실행해 각각 결과를 한 줄로 보고하고, 마지막에 종합 진단을 출력한다.

```bash
cd /Users/gaebalai/Workspace2/youtube-bgm-auto

# 1. .env.local 존재
test -f .env.local && echo "✓ .env.local 있음" || echo "✗ .env.local 없음 → cp .env.local.example .env.local"

# 2. PIXABAY_KEY 값이 채워졌나
test -f .env.local && grep -q "^PIXABAY_KEY=.\+" .env.local && echo "✓ PIXABAY_KEY 설정됨" || echo "✗ PIXABAY_KEY 비어있음"

# 3. client_secret.json
CSEC=$(grep "^GOOGLE_CLIENT_SECRET_PATH=" .env.local 2>/dev/null | cut -d= -f2- | sed "s|^~|$HOME|")
CSEC=${CSEC:-$HOME/Desktop/client_secret.json}
test -f "$CSEC" && echo "✓ client_secret.json 있음 ($CSEC)" || echo "✗ client_secret.json 없음 ($CSEC) → Google Cloud Console에서 다운로드"

# 4. token.pickle (OAuth 인증 완료 여부)
test -f token.pickle && echo "✓ token.pickle 있음 (이전에 인증 완료)" || echo "△ token.pickle 없음 → 최초 실행 시 브라우저로 인증 필요"

# 5. ffmpeg 설치
which ffmpeg > /dev/null && echo "✓ ffmpeg 설치됨 ($(ffmpeg -version 2>&1 | head -1))" || echo "✗ ffmpeg 없음 → brew install ffmpeg"

# 6. venv 가상환경
test -d venv && echo "✓ venv 디렉토리 있음" || echo "△ venv 없음 → python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txt"

# 7. IMAGE_PROVIDER / REPLY_PROVIDER 설정 확인
if [ -f .env.local ]; then
    IP=$(grep "^IMAGE_PROVIDER=" .env.local | cut -d= -f2-)
    RP=$(grep "^REPLY_PROVIDER=" .env.local | cut -d= -f2-)
    echo "ℹ IMAGE_PROVIDER=${IP:-gpt-image-1(기본)}"
    echo "ℹ REPLY_PROVIDER=${RP:-template(기본)}"
fi

# 8. config.py 가 정상 로드되는지(가벼운 import 테스트)
[ -f venv/bin/activate ] && source venv/bin/activate
python3 -c "import config; print(f'✓ config.py OK (IMAGE={config.IMAGE_PROVIDER}, REPLY={config.REPLY_PROVIDER})')" 2>&1 | tail -5
```

## 결과 해석

각 줄 앞 기호:
- `✓` 정상
- `✗` 반드시 해결해야 동작 안 함
- `△` 선택 사항(처음 실행 시 자동으로 해결되는 경우 포함)
- `ℹ` 정보 표시

## 자주 막히는 곳

| 증상 | 원인 | 해결 |
|---|---|---|
| `invalid_grant` | OAuth 토큰 만료/취소 | `upload.py` 가 자동 재인증 진행(브라우저 열림) |
| `client_secret.json` 없음 | OAuth 클라이언트 미발급 | Google Cloud Console → OAuth 클라이언트 ID(데스크톱) 만들기 |
| 썸네일 적용 안 됨 | YouTube 본인 확인 미완 | YouTube Studio → 설정 → 채널 → 전화번호 인증 |
| `ffmpeg: command not found` | ffmpeg 미설치 | `brew install ffmpeg` |
| launchd 무시됨 | Mac 수면 상태 | 시스템 설정 → 잠자기 안 함 |
| Pixabay 이미지 못 받음 | API 키 미설정 or 시간당 상한 초과 | `.env.local` 의 `PIXABAY_KEY` 확인, 잠시 대기 |
