# Animily Music 프로젝트 계획 > 반려동물 음악 유튜브 롱폼 자동 생성 파이프라인 --- ## 개요 | 항목 | 값 | |------|-----| | 서버 | 192.168.0.46 (AI 서버) | | 프로젝트 경로 | `/home/javamon/project/animily_music/` | | 음악 생성 | ACE-Step 1.5 (localhost:8001) | | 이미지 생성 | FLUX via ComfyUI (localhost:8188) | | 영상 합성 | ffmpeg | | 업로드 | YouTube Data API (롱폼) | | 크론탭 | 매주 토요일 02:00 (주석 처리 상태) | | 기존 코드 | 절대 수정 금지 (완전 독립 프로젝트) | --- ## 음악 생성 전략 ### ACE-Step 제한 - 1회 최대 생성: **10분 (600초)** - 세그먼트 방식으로 긴 곡 구성 ### 길이별 구성 | 영상 길이 | 음악 생성 | 방식 | |----------|----------|------| | **2시간 (기본)** | 10분 × 12세그먼트 = ~119분 | 크로스페이드 이어붙이기 | | 6시간 | 2시간 음악 × 3회 반복 | ffmpeg loop | | 12시간 | 2시간 음악 × 6회 반복 | ffmpeg loop | ### 세그먼트 이어붙이기 규칙 - 12개 세그먼트 각각 약 10분 (595초) 생성 - 세그먼트 간 5초 크로스페이드 → 약 119분 완성 - 동일 key/BPM 유지, caption만 미세 변주 (단조로움 방지) - 마지막 세그먼트는 자연스러운 페이드아웃 --- ## 영상 구성 ### 화면 | 요소 | 위치 | 상세 | |------|------|------| | 배경 이미지 | 전체 화면 | FLUX 생성 (1920×1080, 16:9) | | Ken Burns 효과 | 전체 | 미세한 줌인/패닝 (정지 느낌 방지) | | **워터마크** | **우측 상단** | 영상 처음부터 끝까지 상시 표시 | ### 워터마크 상세 | 항목 | 값 | |------|-----| | 텍스트 | **ANIMILY** | | 위치 | 우측 상단 (x=w-tw-80, y=40) | | 폰트 | ONE Mobile OTF Bold (`/usr/share/fonts/truetype/ONE_Mobile_Bold.otf`) | | 폰트 크기 | 36 (롱폼 16:9 기준) | | 색상 | white @ 40% 투명도 | | 그림자 | black @ 30%, offset (1,1) | | 표시 시간 | **영상 전체 (처음부터 끝까지 상시)** | #### ffmpeg 워터마크 필터 ``` drawtext=text='ANIMILY':fontfile=/usr/share/fonts/truetype/ONE_Mobile_Bold.otf:fontsize=36:fontcolor=white@0.4:x=w-tw-80:y=40:shadowcolor=black@0.3:shadowx=1:shadowy=1 ``` > 참고: 기존 쇼츠(1080x1920 세로)는 fontsize=30, x=w-tw-25, y=25 > 롱폼(1920x1080 가로)은 비율에 맞게 조정 ### 이미지 스타일 - **화풍**: 신카이 마코토 스타일 - **주제**: 반려동물 + 자연 풍경 (평화로운 분위기) - **해상도**: 1920×1080 (16:9 가로) - **영상당 1장** 생성 (썸네일 겸용) ### FLUX 프롬프트 예시 ``` makoto shinkai style, dreamy golden hour sky with layered clouds, a peaceful meadow with a sleeping puppy curled up in soft grass, warm sunlight filtering through trees, detailed sky gradients, soft bokeh, cinematic wide shot composition, 8k quality, no text, no watermark ``` --- ## 유튜브 업로드 설정 ### 메타데이터 | 항목 | 값 | |------|-----| | 카테고리 | 음악 (10) | | 공개 설정 | 즉시 공개 (public) | | 재생목록 | **뮤직큐우** (`PLr8dPYZT-hCUjL-OgPxJdF81Dvn_g8Vbg`) | ### 제목 형식 ``` 🐕 강아지가 좋아하는 음악 2시간 | 수면음악, 분리불안 완화 [과학적 검증] 🐱 고양이가 편안해지는 음악 6시간 | 퍼링 주파수 기반 [수면, 휴식] 🐾 반려동물 힐링 음악 12시간 | 솔로 피아노, 스트레스 해소 ``` ### 설명 (description) ``` {title} 🎵 저작권 프리 음악 (Copyright Free) 본 음악은 AI로 생성된 저작권 프리 음악입니다. 개인/상업적 용도 모두 자유롭게 사용하실 수 있습니다. 출처 표기 없이 자유롭게 사용 가능합니다. 🎵 Copyright Free Music This music is AI-generated and copyright-free. Free to use for any personal or commercial purpose. No attribution required. ━━━━━━━━━━━━━━━━━━━━━━━━ 🔬 과학적 근거 • University of Glasgow + Scottish SPCA (2017): 레게/소프트록에서 개 스트레스 최소 • Through a Dog's Ear (2008): 50-60 BPM 솔로 피아노에서 70%+ 진정 반응 • Snowdon & Teie (2015): 고양이는 퍼링 주파수(25-50Hz)에 긍정 반응 ━━━━━━━━━━━━━━━━━━━━━━━━ 🐾 반려동물 행동교정 플랫폼 애니밀리 📲 앱 다운로드: 앱스토어/구글플레이에서 '애니밀리' 검색 🌐 https://conimals.co.kr/ 🤖 AI 생성 음악 (ACE-Step 1.5) #반려동물음악 #강아지수면음악 #고양이음악 #펫힐링 #저작권프리 #dogmusic #catmusic #petrelaxation #copyrightfree #royaltyfree ``` ### 고정 댓글 ``` 🎵 저작권 프리 음악입니다! 개인/상업적 용도 모두 자유롭게 사용하세요. 출처 표기 불필요, 다운로드 자유 ✅ 🎵 This is copyright-free music! Free for personal and commercial use. No attribution needed ✅ ``` --- ## 프로젝트 구조 ``` /home/javamon/project/animily_music/ ├── config.py # 설정 (API URL, 경로, 채널 정보) ├── generate_music.py # ACE-Step API → 12세그먼트 생성 + 크로스페이드 ├── generate_image.py # FLUX (ComfyUI API) → 신카이 마코토 이미지 ├── render_video.py # 이미지 + 음악 + 워터마크 → ffmpeg 영상 ├── upload_youtube.py # YouTube Data API 롱폼 업로드 + 고정댓글 ├── scheduler.py # 메인 오케스트레이터 ├── prompts/ │ ├── dog_music.json # 강아지 음악 프롬프트 (과학 기반) │ ├── cat_music.json # 고양이 음악 프롬프트 (퍼링 기반) │ └── image_prompts.json # FLUX 이미지 프롬프트 (신카이 스타일) ├── outputs/ # 임시 생성물 (영상 완성 후 정리) ├── logs/ ├── token_animily.pickle # YouTube OAuth token ├── requirements.txt └── venv/ ``` --- ## 모듈별 역할 ### generate_music.py 1. 프롬프트 로드 (dog/cat 랜덤 or 스케줄) 2. ACE-Step API에 10분 세그먼트 12개 순차 요청 3. 각 세그먼트 동일 key/BPM, caption만 변주 4. pydub로 5초 크로스페이드 이어붙이기 5. 최종 ~119분 WAV 출력 ### generate_image.py 1. FLUX 프롬프트 로드 (신카이 마코토 + 반려동물) 2. ComfyUI API (localhost:8188) 호출 3. 1920×1080 이미지 1장 생성 4. 썸네일용 리사이즈 (1280×720) 별도 저장 ### render_video.py 1. ffmpeg: 이미지 → Ken Burns 효과 (미세 줌/패닝) 2. 워터마크 "ANIMILY" 우측 상단 오버레이 3. 오디오 합성 4. 6시간/12시간은 2시간 영상을 ffmpeg concat으로 반복 5. 출력: MP4 (H.264 + AAC) ### upload_youtube.py 1. YouTube Data API v3 (OAuth2) 2. 영상 업로드 (public, 카테고리: 음악) 3. 재생목록 추가/생성 4. 고정 댓글 작성 (저작권 프리 안내) ### scheduler.py 1. 콘텐츠 종류 결정 (강아지/고양이/혼합, 길이) 2. generate_music → generate_image → render_video → upload 3. 완료 후 outputs/ 정리 4. 로그 기록 --- ## 크론탭 ```bash # 반려동물 음악 롱폼 (매주 토요일 02:00) - 비활성 # 0 2 * * 6 cd /home/javamon/project/animily_music && /home/javamon/project/animily_music/venv/bin/python scheduler.py >> /home/javamon/project/animily_music/logs/cron.log 2>&1 ``` --- ## GPU 리소스 충돌 방지 - 기존 auto_shorts 스케줄: 01:01 (프리캐시) → 03:00 (영상 생성) - animily_music: **토요일 02:00** → auto_shorts와 시간 겹침 없음 (토요일만) - ACE-Step과 FLUX/ComfyUI는 순차 실행 (동시 사용 시 OOM) - 순서: ACE-Step 음악 생성 → ACE-Step 종료 → ComfyUI FLUX 이미지 → 종료 → ffmpeg 렌더 --- ## 콘텐츠 스케줄 (주 1회) | 주차 | 대상 | 길이 | 비고 | |------|------|------|------| | 1주 | 강아지 수면음악 | 2시간 | 솔로 피아노 | | 2주 | 고양이 릴렉스 | 2시간 | 퍼링 앰비언트 | | 3주 | 강아지 분리불안 | 6시간 | 소프트 레게 | | 4주 | 반려동물 종합 | 12시간 | 하프 + 피아노 | → 4주 사이클 반복, 프롬프트 변주로 매번 다른 곡 --- ## 의존성 (requirements.txt) ``` pydub google-auth google-auth-oauthlib google-api-python-client requests Pillow ``` --- ## 참고 - 과학적 근거 상세: [PET_MUSIC_GENERATION.md](PET_MUSIC_GENERATION.md) - 기존 쇼츠 파이프라인: `/home/javamon/project/auto_shorts/` (수정 금지) - ACE-Step 문서: `/home/javamon/ACE-Step-1.5/README.md` --- *작성: 2026-04-21*