Files
animily_music/docs/PROJECT_PLAN.md
javamon 37d13be48d 초기 프로젝트 구성: 반려동물 음악 롱폼 자동 생성 파이프라인
- ACE-Step 1.5 음악 생성 (과학적 근거 기반)
- FLUX 이미지 생성 (신카이 마코토 스타일)
- ffmpeg 영상 렌더링 (워터마크 포함)
- YouTube Data API 롱폼 업로드
- 프롬프트 및 문서 포함
2026-04-21 15:41:20 +09:00

8.4 KiB
Executable File
Raw Permalink Blame History

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. 로그 기록

크론탭

# 반려동물 음악 롱폼 (매주 토요일 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
  • 기존 쇼츠 파이프라인: /home/javamon/project/auto_shorts/ (수정 금지)
  • ACE-Step 문서: /home/javamon/ACE-Step-1.5/README.md

작성: 2026-04-21