# 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*