1. 소개
영화·드라마 기획과 제작을 본업으로 하고 있어서, 이 자동화 과정이 실무에서 어디까지 쓸 수 있는지가 궁금한 수강생입니다.
[1주차 글] AI 영상 자동화 파이프라인 구축기 — 고양이 이미지 생성에서 시작한 시행착오 기록
(https://www.gpters.org/nocode/post/ai-video-automation-pipeline-dKVUbgznY4VKPuW)
1주차에서는 파이프라인을 쪼개고, 고양이 영상으로 첫 테스트를 돌리고, prompt_builder가 호출되지 않는 버그를 잡는 과정까지를 다뤘다. 이번 글은 그 이후 이야기다.
1주차의 핵심 교훈은 "단계를 쪼개놓으면 문제를 빠르게 특정할 수 있다."였다.
2주차에는 쪼개진 파이프라인 위에서 실제로 42초 티저 영상을 완성하고, 피드백 관리 시스템을 만들기까지의 시행착오 과정을 다루고 있다.
지표
1주차
2주차
프로젝트
테스트영상
웹소설 티저
장르 드라마 씬 생성
애니메이션 티저(42초 내외)
완성 영상
8초 내외 씬별 영상
42초 Pixar 티저
최종 작업 후 자동화 영상 - 10초 실사 테스트
총 실비용
Veo 쿼터 소진 + API $40
fal.ai $3.25
2. 사용 도구
1주차에서 Claude Code + Gemini API + Veo를 사용했다.
2주차에서 달라진 점 :
도구
변화
Claude Code (Opus 4.6)
동일. 단, VS Code 확장으로 전환하여 터미널과 통합 사용
Python + moviepy/FFmpeg
영상 합성 등
Gemini API
Vertex AI(*비용 절감을 위해 GCP 크레딧 185만원)로 전환.
Veo
1주차에는 Veo만 단일 사용했으나 2주차에는 타 영상모델과 병행 사용
fal.ai (신규)
Kling 3.0 Pro, Grok 멀티모델 비교를 위함 사용
Google Lyria 3 (신규)
AI BGM 생성. 곡당 $0.08
주의점 : GCP에 185만원 크레딧이 있었는데, 정책상의 이유인지 Vertex AI에서 이미지 모델 접근 불가 + Veo 다운로드 미지원 + Lyria 미지원이었다. 같은 Google이어도 서비스마다 접근 권한이 다르다. (결국 해결하지 못했습니다.)
3. 진행 과정
2주차에서의 목표
2주차에는 1주차에 구축한 파이프라인을 실제 완성 단계까지 진행을 해보고, 다시 전체 파이프라인을 점검하는 것을 목표로 했다.
그 과정에서 *사전에 추가한 부분은 아래 내용이다.
1주차에서 Veo의 경우 실제 이미지 레퍼런스를 지정해도, 영상 중간에 실사 이미지로 바뀌는 이슈가 있었다. 이와 관련하여 우선 Veo 대신 fal.ai(Kling/Grok) 경유하도록 세팅했다.
수업 스터디장님의 도움으로, 기존 멀티 에이전트가 제대로 작동하지 않는다는 것을 재차 확인 — 에이전트 기능 재세팅, 기타 실행 중 불필요하게 토큰이 소모되는 과정 점검, 추후 클립 영상 합본을 위한 리모션 설치
프로젝트명 : 구두 신은 강아지의 모험 (애니메이션)
먼저, 제작할 애니메이션에 관한 간단한 콘셉트를 잡았다.
"장화 신은 고양이 시리즈처럼, <구두 신은 강아지> 애니메이션을 제작하려고 해. 이를 위한 스킬을 순서대로 진행시켜줘."
위 대화를 시작으로, 아래 스킬의 과정을 진행했다.
스킬 호출 구조
사용자 입력 (자연어)
│
▼
Claude Code (Opus)
│
├─ 키워드 매칭 ─→ SKILL.md의 description 필드
│ "대본 써줘" → script-writer
│ "BGM 붙여" → sound-mixer
│ "클립 합쳐" → video-assembler
│
▼
SKILL.md 로드 → Claude가 스킬 내 규칙대로 동작
│
├─ [순수 프롬프트형] Claude가 직접 텍스트 생성
│ 예: script-writer, script-collab-system
│
├─ [코드 실행형] Python 스크립트 호출
│ 예: reallife-image → core/agents.py
│ gemini-shortdrama-imagegen → core/generate.py
│
└─ [FFmpeg 실행형] 셸 명령 조합
예: video-assembler, sound-mixer
다만, 개인적으로 주요하게 고민했던 점은 영상 스킬 시행 전, 대본 단계에서 오류를 줄이자는 것이었다. 우선 퀄리티 있는 영상을 위해선 해당 부분에 관하여, 사용자의 의도가 얼마나 반영되는지가 평가 항목이었기에, 사전 준비가 가장 중요하다는 판단이었다.
따라서 처음 대본을 쓰는 과정에서 여러 번의 대화를 나눴다. 이후 아래와 같은 형식의 작품 전체 기획안 및 씬별 영상화 대본, 파이프라인 과정시 주안점 등이 생성됐다.
위와 같은 작품 브리프 보고서가 나왔다. 복잡해보이지만, 실제론 스토리흐름에 관한 사용자와의 대화를 기반으로 작품의 톤앤매너, 주요 흐름 등을 파악하고, AI가 전체 보고서를 작성해준 것이다. 위와 같은 요소를 위해, 개인적으론 첫 스킬인 script-writer 스킬과의 대화가 중요하단 생각이 들었다.
실제 사용했던 기획 단계(script-writer) 구조 예시
┌─────────────────────────────────────────────────────┐
│ script-collab-system │
│ │
│ IN: 기획안 / 대본 초고 / "이거 어때?" │
│ DO: 작가 관점 피드백 → PD 관점 피드백 → 종합분석 │
│ OUT: 피드백 리포트 (강점, 약점, 수정 제안) │
│ │
│ 4단계: 피드백 → 분석 → 사용자 판단 → 최종수정 │
└─────────────────────────────────────────────────────┘
│ 확정된 기획
▼
┌─────────────────────────────────────────────────────┐
│ script-writer │
│ │
│ IN: 확정 기획 / 시놉시스 / 포맷 지정 │
│ DO: 포맷 자동 전환 (숏폼/드라마/영화/뮤지컬) │
│ OUT: 씬별 대본 (.md) │
│ + 캐릭터 바이오그래피 (문학적 내면 독백) │
│ + 인물관계도 │
└─────────────────────────────────────────────────────┘
│ 씬별 대본
▼
┌─────────────────────────────────────────────────────┐
│ animation-script-writer (script-writer 내 모드) │
│ │
│ IN: 씬별 대본 │
│ DO: 8~15초 클립 단위로 분할 │
│ OUT: 클립 대본 (5레이어 분리) │
│ [VISUAL] 화면 묘사 │
│ [CAM] 카메라 앵글/무빙 │
│ [SFX] 효과음 │
│ [MUS] BGM 지시 │
│ [SUB] 자막/대사 │
└─────────────────────────────────────────────────────┘영상 클립 생성 단계
1주차에 구축해둔 파이프라인을 바탕으로, 이미지 레퍼런스를 생성했고, 이후 대본에 맞는 씬 이미지를 생성하는 과정을 거쳤다. (톤앤매너, 조명, 구도 등이 반영된 결과물 - 1주차 참고)
아래는 시행착오를 통한 개인적인 생각을 담은 글이니 자유롭게 참고해주시기 바랍니다.
- 캐릭터 일관성을 위해서, 캐릭터 시트를 만들기
원하는 캐릭터를 6~9장, 정면/측면 등 카메라 앵글을 바꾼 다각도로 생성했다. 필요하면 의상 레퍼런스까지 함께 만들어서 별도 폴더에 분류해뒀다. 이후 영상화 단계에서 씬을 만들 때 이 시트를 참고하게 하고, 동일성 비교까지 수행했다. 일치하지 않으면 에이전트가 재생성 여부를 물어보는 구조가 유용했다.
- 목표한 영상에 맞는 핵심 장면별 씬 모으기
이후엔 씬을 생성하고, 일관성 여부 등을 판독하고, 클립을 생성한 장면 흐름별로 넘버를 붙이는 과정이다. 42초 내외 티저 영상을 목표로 했기에, 10씬 내외의 장면을 모았다. 물론 넘버나 폴더 분류는 AI 스킬에 세팅을 해두면 분류해준다.
- 단일 생성 영상 길이는 5초 정도가 일관성 유지에 좋음
5초를 넘으면 캐릭터 변형이 심해졌다. 이어서 연장하려면, 영상의 마지막 프레임을 캡쳐해서 다음 클립의 입력 이미지로 그대로 넣었다. "이 장면에 이어지는 영상을 만들어줘"라고 하면 자연스럽게 연결됐고, 원하면 "다른 앵글로 자연스럽게 전환해줘"도 가능했다. 5초 클립을 연결하는 방식이 8초 한방보다 결과물이 훨씬 안정적이었다.
위와 같은 방법을 통해서 씬별 클립을 생성했다. 퀄리티있는 영상읋 원한다면 여기선 육안으로 확인하는 것이 필요하다. AI에게 해당 영상 판독을 시킬 수 있으나, 오류 판독률이 낮았다. (개인적인 욕심을 위해선 시간 투자가 필요합니다. 😅 )
최종적으론 완성 클립을 위해, 연결이 필요한 씬 2개 정도를 추가 생성했고 클립 생성을 마무리했다.
편집 및 사운드
사실 이번 영상 생성 중 가장 번거롭다고 느낀 부분이다. 실제 영상 편집 및 사운드 믹싱의 과정처럼, 퀄리티 향상을 위해선 많은 시간이 소모된다. 또 AI 자동화 구조를 통해선 섬세한 조정이 어렵고, 실무 툴에 비해 번거로웠다.
아래는 시행착오를 통한 개인적인 생각을 담은 글이니 자유롭게 참고해주시기 바랍니다.
- 사운드 파이프라인은 사실 실제 작업에서도 가장 까다로운 부분이었다.
퀄리티를 높이려면 아직은 사람이 하는 섬세한 작업이 더 나았다. 음악 생성을 제외하면, 편집과 배치도 직접 하는 게 더 빨랐다. 다만 이 경우 사운드 트랙을 영상 타임라인에 맞게 생성해서 붙여달라고 하면 됐다. 추가 보이스나 SFX를 요청하면 기존 음원이 안 바뀌고 레이어로 쌓였다.
- 구글 제미나이가 지난주부터 음원 생성을 지원한다.
영상을 넣고 분위기에 맞게 생성해달라고 하면 해줬다. 하지만 짧게 샘플을 달라고 해도 계속 길게 생성했고, 인물 보이스 같은 구체적 요구는 퀄리티가 아직 부족했다. 그럼에도 비용 부분에서 메리트가 있었고, 영상 클립을 넣고 분석을 시키면 영상 전체에 사운드를 넣어준다. 이를 통해서 일부 좋은 부분을 잘라서 쓸 수 있었다.
사운드를 영상에 맞게, 세부 편집을 하기 위해선 기존 실무 툴이 훨씬 편 하다고 느꼈다. 다만, 이번 과정에선 AI 파이프라인 내에서 해결을 목표로 했기에, 다른 방법을 고민했다.
(1) 기존 영상 클립을 편집 추출할 때 무음 버전을 생성
(2) 클립별 타임라인 시트를 만들어달라고 함
(3) 원하는 타임라인 구간에 음원, 보이스 등을 편집해서, 레이어를 쌓아가며 편집
결국 기존 편집툴을 활용법과 같이 위 과정을 거쳤다. 의외의 지점은 실제 툴처럼, 같은 음원도 어느 구간에서는 사운드가 작아지거나 커지는 등의 효과도 가능하다.
(예시 : 3초 구간~6초 구간은 소리가 10%에서 서서히 커지게 해줘. )
- 사운드 파이프라인 전체 흐름
``` [클립 대본 JSON] ├─→ fal.ai (Kling/Grok) ──→ 영상 클립 (.mp4, 무음) ├─→ ElevenLabs / Maya1 ──→ 효과음 + 대사 (.wav) ├─→ Google Lyria 3 ──→ BGM (.wav) └─→ 대본 JSON → 자막 추출 ──→ 자막 파일 (.srt) │ ▼ sound-mixer (트랙별 WAV → amix) │ ▼ video-assembler (영상 + 오디오 합성) │ ▼ 최종 숏폼 영상 (.mp4) ```위 과정은 최종 생성 후 AI에게 파이프라인 브리프를 시킨 것이다.
3. 프로젝트 결과
마법 구두를 신은 코기 (The Dog Who Wore the Magic Slippers)
원제 : 구두신은 강아지의 모험
영제 : The Dog Who Wore the Magic Slippers
항목
내용
포맷
숏폼 애니메이션 (1분 × 90화)
스타일
Pixar/Disney 3D
장르
힐링 어드벤처 / 판타지
대사
없음 (표정 + 사운드 디자인)
타깃
전 연령 (코어: 반려동물을 키우는/키웠던 10~30대)
줄거리
아기가 태어나고 사랑을 잃어간다고 느끼던 '코기.' 어느 날 정체불명의 마차가 아기를 데려간다. 절망한 코기 앞에 떨어진 낡은 구두 한 켤레. 구두를 신은 순간, 잊힌 동물들의 세계가 열린다.
코기는 그곳에서 알게 된다 — 이름을 불러주는 것은 가장 큰 사랑 중 하나라는 걸.
티저 (완성)
42.62초 / 12클립 + 크레딧 + 포스터 / BGM 12트랙 믹싱 / Kling 3.0
4. 전체 과정 정리
1단계: 기획 ("이거 어때?")
사용자: "구두신은 강아지의 모험, 이 기획 어때?" │ ▼ script-collab-system 자동 호출 │ ├─ 작가 피드백: "서사 엔진이 없음, 갈등 부재" ├─ PD 피드백: "숏폼 타깃이면 훅이 더 빨라야" └─ 종합: "전면 재설계 필요" │ ▼ 사용자 판단 → 3번 재설계 끝에 확정
2단계: 대본 ("대본 써줘")
사용자: "확정된 기획으로 티저 대본 써줘" │ ▼ script-writer 자동 호출 │ ├─ 숏폼 포맷 감지 → 클립 단위 분할 └─ 5레이어 분리 (VISUAL/CAM/SFX/MUS/SUB) │ ▼ 24클립 대본 산출 (W곡선 감정선, 복선 8쌍)
3단계: 이미지 ("씬 이미지 만들어줘")
사용자: "이 대본으로 씬 이미지 생성해줘" │ ▼ reallife-image 호출 → Python 스크립트 실행 │ ├─ 프로듀서 (Gemini Flash) → 키워드 추출 ├─ 장면감독 (프로듀서 결과 참조) → 배치/소품 ├─ 사진전문가 (↑ 누적 참조) → 카메라/조명 └─ 아트디렉터 (전원 참조) → 최종 프롬프트 │ ▼ gemini-shortdrama-imagegen 호출 │ └─ Gemini API → 씬별 PNG 이미지 생성
4단계: 영상 ("영상으로 만들어줘")
사용자: "Kling으로 영상 생성해줘" ← 모델 선택(비용) 확인 후 │ ▼ core/generate.py → fal_image_to_video() │ └─ fal.ai 경유 → Kling 3.0 / Grok │ ▼ 씬별 MP4 클립 (각 5초)
5단계: 조립 ("클립 합쳐줘")
사용자: "12개 클립 이어붙여줘" │ ▼ video-assembler 자동 호출 │ ├─ 각 클립 트림 (-an, 1280x720, 24fps) ├─ filelist.txt → concat → video_only.mp4 └─ ⚠ 오디오 스트림 없음 확인
6단계: 사운드 ("BGM 붙여줘")
사용자: "이 BGM을 5~16초에 적용해"
│
▼
sound-mixer 자동 호출
│
├─ track_01.wav (원본 사운드, 풀 길이)
├─ track_02.wav (BGM, 5~16초 구간만)
├─ track_03.wav (SFX, 23초 지점)
└─ amix → mixed_audio.wav
│
▼
video-assembler
│
├─ video_only.mp4 + mixed_audio.wav 합성
├─ 크레딧/포스터 붙이기 (filter_complex)
└─ MANIFEST.md 작성
│
▼
FINAL_FINAL/ 폴더에 저장 완료5. 영상 완성 후 피드백
실제 영상 제작 후 아래 내용을 추가했다. 이유는 최종 클립 이후, 대화가 압축됐더니 추가 수정이 어려웠다. 실제론 씬 하나를 1.5초 늘리는 단순한 작업이었는데, 대화가 압축되고 나니 AI가 관련 정보를 제대로 읽지 못했다. 그러다보니 음원이 깨지고, 다른 영상 소스를 읽어왔다.
그래서 FINAL을 만들 때마다 전용 폴더에 소스를 전부 모으고, MANIFEST라는 매핑 문서를 남기도록 했다. 이는 다음 수정 때, 그 문서만 읽으면 뭘 어디서 바꿔야 하는지 바로 알 수 있게 강제하기 위함이었다.
따라서 해당 스킬에는 최종 영상을 생성했다는 특정 실행어가 발동될 경우, 영상 내 타임라인 별 적용된 소스, 음원 등을 구분해서 정리시키고, 관련 소스 폴더를 모으도록 했다.
아래는 이후의 과정 :
수정 시 ("10번 클립 늘려줘")
사용자: "10번 클립 1.5초 늘려줘" │ ▼ video-assembler │ ├─ MANIFEST.md 읽기 → 타임라인 즉시 파악 ├─ FINAL_FINAL_FINAL/ 생성 ├─ 소스 복사 → 10번만 re-trim ├─ 오디오: 변경 구간만 무음 처리 └─ 재조립 → 새 MANIFEST 작성
6. 앞으로의 계획
1주차 때 목표했던 부분처럼, 실무에서 적용을 위한 가능성을 확인한 부분이 있다. 다만, 해결이 필요한 부분도 보였다.
그럼에도 불구하고.
2주 동안 느낀 건, 파이프라인이 한 번 돌아가기 시작하면 속도가 붙는다는 것이다. 1주차에 쪼개놓은 구조 위에서 2주차의 작업이 가능했고, 2주차에 만든 RENDER_STYLES나 FINAL 관리 체계가 3주차의 기반이 된다. 매주 쌓이는 구조가 그 다음 작업의 출발점이 된다.
7. 마무리
이 프로젝트에서 가장 많이 한 일은 코드를 쓴 것이 아니다.
"이건 왜 안 되지?"라고 묻고, "이 단계에서 정보가 빠졌구나"를 발견하고, "이 구조로 바꾸면 되겠다"를 설계한 것이다. 실행은 AI가 했지만, 방향을 정하고 문제를 특정하는 건 사람의 몫이었다. 요지는 그 부분을 위한 구체적인 개선안을 묻고 논의하는 것이 중요하단 점이다.
이러한 점에서 이 과정이 실제 제작 현장과 닮아 있다는 걸 계속 느꼈다. 프리프로덕션(기획·대본·캐릭터)이 부실하면 촬영장에서 고생하는 것처럼, AI 영상도 앞단계가 부실하면 뒷단계에서 계속 되돌아온다. 도구가 AI로 바뀌었을 뿐, 제작의 원리는 같았고, 이 지점이 파이프라인 구축의 틀이 됐다.