feat: v2 파이프라인 — 매일 2곡 다양한 장르 BGM 자동 생성/업로드
- daily_precache.py: Claude Code CLI 프리캐시 (날짜/계절/기념일 테마) - daily_scheduler.py: ACE-Step 음악 → FLUX 이미지 → 영상 렌더 → 큐 - upload_scheduled.py: auto_shorts 동일 큐 방식 업로드 - PRECACHE_GUIDE_MUSIC.md: 19개 장르, 감성 제목, 재생목록 자유 생성 - generate_image.py: --lowvram 제거, GPU VRAM 확인 추가 - config.py: @animily-music 토큰 경로 변경 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
144
docs/PIPELINE_V2.md
Normal file
144
docs/PIPELINE_V2.md
Normal file
@@ -0,0 +1,144 @@
|
||||
# Animily Music v2 파이프라인
|
||||
|
||||
> 매일 2곡 다양한 장르 BGM 자동 생성 → @animily-music 유튜브 업로드
|
||||
> 작성: 2026-05-25
|
||||
|
||||
---
|
||||
|
||||
## 크론 스케줄
|
||||
|
||||
| 시간 | 스크립트 | 설명 |
|
||||
|------|---------|------|
|
||||
| **00:30** | `daily_scheduler.py` | 프리캐시 → 음악 생성 → 이미지 생성 → 영상 렌더 → 큐 저장 |
|
||||
| **매시간** | `upload_scheduled.py` | upload_queue.json에서 현재 시간 건 업로드 (07:00, 15:00) |
|
||||
|
||||
---
|
||||
|
||||
## 파이프라인 흐름
|
||||
|
||||
```
|
||||
1. Claude Code CLI → precache/{날짜}.json (2곡 기획)
|
||||
- 날짜/계절/기념일/요일 기반 장르+테마 결정
|
||||
- PRECACHE_GUIDE_MUSIC.md 참조
|
||||
|
||||
2. ACE-Step (localhost:8001) → WAV 음악 생성
|
||||
- 3~5분, batch_size=1, thinking=True
|
||||
- 완료 후 ACE-Step 프로세스 kill (GPU 해제)
|
||||
|
||||
3. FLUX via ComfyUI (localhost:8189) → PNG 이미지 생성
|
||||
- 1344x768 (16:9), 신카이 마코토 스타일
|
||||
- TTS systemctl stop+disable 후 시작
|
||||
- 완료 후 ComfyUI kill
|
||||
|
||||
4. ffmpeg → MP4 영상 렌더링
|
||||
- 이미지 + Ken Burns + 워터마크(ANIMILY) + 음악
|
||||
|
||||
5. upload_queue.json → 큐 저장
|
||||
- track_001: upload_hour=7
|
||||
- track_002: upload_hour=15
|
||||
|
||||
6. GPU Cleanup
|
||||
- ACE-Step/ComfyUI/TTS 전부 kill
|
||||
- drop_caches, TTS service enable+start
|
||||
- auto_shorts 03:00 전 완료 보장
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 파일 구조
|
||||
|
||||
```
|
||||
/home/javamon/project/animily_music/
|
||||
├── daily_precache.py # Claude Code CLI 프리캐시 생성
|
||||
├── daily_scheduler.py # 메인 오케스트레이터
|
||||
├── upload_scheduled.py # 큐 기반 업로드 (매시간 크론)
|
||||
├── PRECACHE_GUIDE_MUSIC.md # Claude Code CLI 참조 가이드
|
||||
├── config.py # 설정
|
||||
├── generate_music.py # ACE-Step API (레거시, v1용)
|
||||
├── generate_image.py # FLUX ComfyUI (레거시, v1용)
|
||||
├── render_video.py # ffmpeg 렌더 (레거시, v1용)
|
||||
├── scheduler.py # v1 스케줄러 (레거시)
|
||||
├── upload_youtube.py # v1 업로드 (레거시)
|
||||
├── token_animily_music.pickle # @animily-music YouTube OAuth 토큰
|
||||
├── precache/ # 프리캐시 JSON
|
||||
├── upload_queue.json # 업로드 큐
|
||||
├── outputs/ # 임시 생성물
|
||||
├── logs/ # 로그
|
||||
└── prompts/ # 프롬프트 (레거시)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## YouTube 채널
|
||||
|
||||
| 항목 | 값 |
|
||||
|------|-----|
|
||||
| 채널명 | 애니밀리 뮤직 Animily Music |
|
||||
| URL | https://www.youtube.com/@animily-music |
|
||||
| ID | UCtT5K3-D9gAid7lT7XmrfvA |
|
||||
| 토큰 | token_animily_music.pickle |
|
||||
|
||||
---
|
||||
|
||||
## 재생목록 (자동 생성)
|
||||
|
||||
신나는 음악, 감성 음악, 잔잔한 음악, 집중 음악, 수면 음악, 카페 음악, 운동 음악, 드라이브 음악
|
||||
|
||||
---
|
||||
|
||||
## 장르 (19개)
|
||||
|
||||
로파이, 재즈, 클래식, EDM, 앰비언트, 어쿠스틱, 팝, 록, R&B, 펑크, 보사노바, 레게, 시네마틱, 블루스, 포크, 컨트리, 신스웨이브, 디스코, 가스펠
|
||||
|
||||
---
|
||||
|
||||
## GPU 리소스 관리
|
||||
|
||||
- ACE-Step: ~11GB (음악 생성 중만)
|
||||
- FLUX: ~33GB (이미지 생성 중만)
|
||||
- **동시 사용 금지** — 순차 실행 (ACE-Step → kill → FLUX → kill)
|
||||
- TTS: `sudo systemctl stop/disable qwen-tts.service` (FLUX 전)
|
||||
- 완료 후: `sudo systemctl enable/start qwen-tts.service`
|
||||
|
||||
---
|
||||
|
||||
## 출처 표기 정책
|
||||
|
||||
사용자가 BGM 사용 시 설명란에 출처 필수:
|
||||
```
|
||||
🎵 Music by 애니밀리 뮤직 (Animily Music)
|
||||
🔗 https://www.youtube.com/@animily-music
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ACE-Step API
|
||||
|
||||
| 항목 | 값 |
|
||||
|------|-----|
|
||||
| URL | http://localhost:8001 |
|
||||
| 시작 | `cd /home/javamon/ACE-Step-1.5 && source venv/bin/activate && python -m uvicorn acestep.api_server:app --host 0.0.0.0 --port 8001 --workers 1` |
|
||||
| Kill | `fuser -k 8001/tcp && pkill -9 -f acestep.api_server` |
|
||||
| 제출 | POST /release_task |
|
||||
| 폴링 | POST /query_result |
|
||||
| 다운로드 | GET /v1/audio?path=... |
|
||||
| 헬스 | GET /health |
|
||||
|
||||
---
|
||||
|
||||
## ComfyUI GPU 안정성 (2026-05-25 패치)
|
||||
|
||||
### 근본 원인
|
||||
1. TTS가 systemd Restart=always 서비스 → kill해도 10초 후 재시작
|
||||
2. MemAvailable ≠ GPU VRAM → nvidia-smi로 확인 필요
|
||||
3. 스케줄러 중복 실행 → GPU 프로세스 충돌
|
||||
|
||||
### 해결
|
||||
- TTS: `systemctl stop + disable` (Restart=always 우회)
|
||||
- GPU VRAM: `nvidia-smi --query-compute-apps` 로 프로세스 확인
|
||||
- 메모리 해제: `drop_caches` + 180초 대기 + 40GB 미만 시 포기
|
||||
- ComfyUI 시작 후 OOM 크래시 감지 (pgrep 생존 확인)
|
||||
|
||||
---
|
||||
|
||||
*마지막 업데이트: 2026-05-25*
|
||||
Reference in New Issue
Block a user