- 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>
4.5 KiB
4.5 KiB
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 패치)
근본 원인
- TTS가 systemd Restart=always 서비스 → kill해도 10초 후 재시작
- MemAvailable ≠ GPU VRAM → nvidia-smi로 확인 필요
- 스케줄러 중복 실행 → GPU 프로세스 충돌
해결
- TTS:
systemctl stop + disable(Restart=always 우회) - GPU VRAM:
nvidia-smi --query-compute-apps로 프로세스 확인 - 메모리 해제:
drop_caches+ 180초 대기 + 40GB 미만 시 포기 - ComfyUI 시작 후 OOM 크래시 감지 (pgrep 생존 확인)
마지막 업데이트: 2026-05-25