- 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>
145 lines
4.5 KiB
Markdown
145 lines
4.5 KiB
Markdown
# 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*
|