소개
재미나이 API도 연동해놓았지만, Typecast API 연결이 자꾸 실패되고 유료로 구매하라고 해서 클로드AI (파이썬) 확장 프로그램을 우선 사용, 실사 사진 이미지 업로드하여 기초 영상 만들고 (음성은 빠진 상태에서) 스터디장님 자료 보고 복습하면서 영상 만들었습니다.
진행 방법
첫번째 시도 : 파이썬 활용하여 기초 영상 만들기 (실사 이미지 5컷 학습)
강아지와 비둘기 숏폼 영상을 생성하는 Python 코드를 만들어줘. 이미지, 자막, BGM을 합쳐서 mp4 파일로 출력하게 해줘.
🎬 숏폼 영상 스크립트
기본 정 보 (이미지 기반 자동 분석)
주제: 집에 침입한 비둘기 vs 비숑 강아지
타겟: 전연령 (펫 + 동물밈 팬)
플랫폼: 틱톡 / 유튜브 쇼츠
길이: 30초
분위기: 반전 + 웃긴
🎬 제목
"우리 집에 강아지가 두 마리?? 근데 한 마리가 이상해…"
🧠 스토리 (대본)
[0-3초] — 후킹
거실에 혼자 앉아있는 하얀 비숑 풀샷
자막: "오늘도 평화로운 우리 집 🐶"
[3-10초] — 복선
강아지가 뭔가를 빤히 쳐다봄
카메라가 천천히 강아지 시선 방향으로 패닝
자막: "근데… 쟤 왜 저러지?"
[10-20초] — 반전 1
비둘기가 거실 한복판에 서 있는 풀샷 등장
자막: "????? 강아지가 두 마리????"
0.5초 정지 → 비둘기 클로즈업
[20-27초] — 반전 2 (밈 폭발)
강아지 머리 + 비둘기 몸 합성 사진 등장 (실제 촬영한 그 사진)
자막: "AI가 만들어낸 최악의 실수"
[27-30초] — 엔딩 훅
비둘기가 문틈 사이로 쏙 들어가는 장면
자막: "저 녀석… 다음에 또 온다" 🐦두번째 시도 : Claude AI 요청대로 사진 이미지 경로에 저장, BGM 없이 영상 만들어보기
이미지 저장했음. BGM은 빼고 영상 완성해줘
MP4 생성 성공입니다. 이제 실제 이미지를 넣으면 됩니다.
다음 단계 — 이미지 배치
사진들을 아래 경로에 저장해 주세요:
경로 내용
projects/dog_pigeon/images/01_dog.jpg 강아지 혼자 앉아있는 장면
projects/dog_pigeon/images/02_dog_stare.jpg 강아지가 뭔가 쳐다보는 장면
projects/dog_pigeon/images/03_pigeon.jpg 비둘기 거실 풀샷
projects/dog_pigeon/images/04_hybrid.jpg 강아지+비둘기 합성 사진
projects/dog_pigeon/images/05_door.jpg 문틈으로 들여다보는 비둘기
BGM은 projects/dog_pigeon/bgm/bgm.mp3 에 넣으면 자동으로 합성됩니다.
이미지 배치 후 다시 실행:
uv run python generate_video.py세번째 시도 : 스터디장님 교재 보면서 파이프라인 Agent 세팅
유튜브 숏폼 자동화 파이프라인 설계
프로젝트 정보
주제: 까까모리 길들이기
장르: 코믹
길이: 30초 / 씬 5개 × 평균 6초
1. 에이전트 구성
# 에이전트 역할 입력 출력
1 producer 전체 파이프라인 조율, 비용·품질 게이트 주제/설정 실행 계획
2 story-writer 30초 코믹 스토리, 씬 5개 구조, 제목 주제 씬 목록 (JSON)
3 character-designer 까까모리 외형·성격, 배경(세트) 상세 설정 씬 목록 캐릭터/배경 프로필
4 scene-director 씬별 나레이션 문장, 카메라 구도, 감정 태그, 이미지 프롬프트 씬 목록 + 캐릭터/배경 씬 디렉션 5개
5 image-creator Gemini Imagen API 호출 → 씬 이미지 씬 디렉션 이미지 5장
6 audio-creator Typecast TTS API 호출 → 나레이션 음성 씬 디렉션 오디오 5개
7 video-editor 이미지 + 오디오 + 자막 합성 → MP4 이미지 + 오디오 ep01.mp4
2. 에이전트별 스킬(도구)
producer → (스킬 없음, 오케스트레이션만)
story-writer → gemini-text (Gemini 2.0 Flash)
character-designer → gemini-text (Gemini 2.0 Flash)
scene-director → gemini-text (Gemini 2.0 Flash)
image-creator → gemini-image (Imagen 3)
audio-creator → typecast-audio (Typecast TTS)
video-editor → episode-video (moviepy + FFmpeg)
3. 실행 순서 및 병렬 처리
┌─────────────────────────────────────────────────────────────────┐
│ Phase 1 — 기획 (순차, ~30초) │
│ │
│ producer ──→ story-writer ──→ character-designer │
│ (씬 5개 구조) (캐릭터+배경 설정) │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Phase 2 — 연출 (순차, ~20초) │
│ │
│ scene-director │
│ 씬1: 나레이션 + 카메라 + 감정태그 + 이미지 프롬프트 │
│ 씬2: ... │
│ 씬3: ... │
│ 씬4: ... │
│ 씬5: ... │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Phase 3 — 에셋 생성 ★ 병렬 처리 ★ (~60초) │
│ │
│ image-creator │ audio-creator │
│ 씬1 이미지 │ 씬1 나레이션 │
│ 씬2 이미지 │ 씬2 나레이션 ← 씬 단위로도 병렬 가능 │
│ 씬3 이미지 │ 씬3 나레이션 │
│ 씬4 이미지 │ 씬4 나레이션 │
│ 씬5 이미지 │ 씬5 나레이션 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Phase 4 — 편집 (순차, ~30초) │
│ │
│ video-editor │
│ 이미지5 + 오디오5 + 자막 → ep01.mp4 │
└─────────────────────────────────────────────────────────────────┘
4. 병렬 처리 상세
구간 병렬 여부 설명
Phase 1: story → character 순차 character-designer가 스토리 결과를 필요로 함
Phase 2: scene-director 순차 씬 간 연속성(복선/감정 흐름) 유지 필요
Phase 3: image vs audio 병렬 ★ 서로 의존 없음 — 동시 실행
Phase 3: 씬1~5 이미지들 병렬 ★ API rate limit 내에서 동시 요청
Phase 3: 씬1~5 오디오들 병렬 ★ API rate limit 내에서 동시 요청
Phase 4: video-editor 순차 모든 에셋 완성 후 시작
5. 씬 구조 (30초 코믹)
씬1 [0-5초] 후킹 — 까까모리 등장, 황당한 첫 행동 (임팩트)
씬2 [5-12초] 전개 — 길들이기 첫 시도 → 처참히 실패
씬3 [12-20초] 고조 — 방법을 바꿔보지만 상황 악화
씬4 [20-27초] 반전 — 뜻밖의 역전 (까까모리가 오히려 사람을 길들임)
씬5 [27-30초] 엔딩훅 — "2화에서 계속..." 자막 + 궁금증 유발
6. 산출물 구조
projects/
└── kkamori/
├── story.json ← story-writer 출력
├── characters.json ← character-designer 출력
├── scenes/
│ ├── scene_01.json ← scene-director 출력 (씬별)
│ └── ...
├── images/
│ ├── scene_01.jpg ← image-creator 출력
│ └── ...
├── audio/
│ ├── scene_01.mp3 ← audio-creator 출력
│ └── ...
└── output/
└── ep01.mp4 ← video-editor 최종 출력결과와 배운 점
초기에는 파이썬을 활용해서 기초 영상을 만들어 보는 것도 도움이 된다.
이미지를 생성하는데 너무 오래 걸려서 보유하고 있는 이미지를 활용해서 제작중인데, 이후에는 이미지를 조금 더 많이 학습시켜야 할듯
Typecast API 연결에 계속 문제가 있어서 Claude AI가 추천한 Google TTS 사용 (테스트 중)
도움이 필요한 부분이 있나요?
claude ai를 처음 사용해보고 있어서 전체적인 흐름 이해가 어렵습니다.
교재를 기반으로 스터디장님의 전체적인 시연을 한번 보고 싶습니다.
여러 과정 중 (시행 착오 부분은 좀 줄이더라도) 가장 효율적이었던 절차 정도를 설명해주시면 큰 틀의 이해도가 높아질 것 같습니다.