클로드로 영상 자동화 도전기 1편

소개

이번 스터디 동안 크게 두가지 축을 가져가고 싶었는데,

하나는 "완전한 자동화"

하나는 "나만의 스토리 만들기" 였습니다!

이번에는 "완전한 자동화" 측면에서 도전했었던 내용을 소개하려고 합니다.

자동화를 쓰기 위해서, 여러 테스트를 해봤습니다.

첫째, 영상 만드는 일에서 오로지 클로드 코드로만 소통을 시도해봤습니다 (향후 자동화를 위헤) 실화 소재를 쇼츠로 만드는 채널을 운영해보기 위해서, 컷 순서를 바꾸거나 자막 한 줄을 고치려고 매번 편집 툴을 열고 타임라인을 만지는 게 진짜 병목이었습니다. 그래서 영상 한 편 = 폴더 하나 + cuts.json 파일 하나로 정의하고, 자막·줌 모션·전환·실화 인증컷 붙이기까지 전부 ffmpeg 스크립트가 하도록 만들었습니다. 이제 대본을 고치는 건 JSON을 고치는 일이고, 명령어 한 줄이면 mp4가 다시 나옵니다.

(다만, 사실 여러번 수정이 필요하긴 합니다⋯ 우선 괜찮게 나올때까지 클로드를 두드려보기로)

둘째, 그 파이프라인을 "내 책상 앞에서만 돌아가는 것"에서 꺼냈습니다. 맥미니를 홈서버로 두고 Tailscale로 묶은 다음, 앱들을 한 페이지에서 켜고 끄는 통합 허브를 만들었습니다. 지금은 밖에서 폰으로 허브에 들어가 제작 콘솔을 켜고, 아이디어를 넣어두고, 렌더를 돌립니다. (조금 다듬어야하지만)

진행 방법

어떤 도구를 사용했고, 어떻게 활용하셨나요?

Tip: 사용한 프롬프트 전문을 꼭 포함하고, 내용을 짧게 소개해 주세요.

Tip: 활용 이미지나 캡처 화면을 꼭 남겨주세요.

Tip: 코드 전문은 코드블록에 감싸서 작성해주세요. ( / 을 눌러 '코드 블록'을 선택)

목적: 기획·대본·코드 작성

도구: 클로드 코드

────────────────────────────────────────

목적: 픽셀아트 이미지

도구: 힉스필드 Nano Banana Pro (1k) +

트레이드마크 캐릭터 레퍼런스

────────────────────────────────────────

목적: 영상 조립 (자막·줌·전환·인증컷)

도구: ffmpeg (전부 로컬, 추가 비용 0원)

────────────────────────────────────────

목적: 제작 관리

도구: 자체 Flask 콘솔

────────────────────────────────────────

목적: 원격 접속·앱 관리

도구: Tailscale + 자체 통합 허브

1) 영상 한 편 = 폴더 하나

story_shorts/

├── app.py 관리 콘솔(Flask) — 아이디어 목록함 + 영상 트래커

├── run.sh 콘솔 실행 (포트 5071 고정)

├── data/store.json 아이디어·영상 원본 데이터

├── pipeline/ ★ 공용 제작 엔진 (프로젝트 폴더를 인자로 받음)

│ ├── build_segments.py 컷 → 세그먼트 (자막 릴레이 병합)

│ ├── render_overlays.py 자막 오버레이 생성

│ ├── build_auth_frames.py 실화 인증 프레임 생성

│ ├── mix_sfx.py / gen_motion.py

│ └── assemble.sh 본편 + 인증컷 → 최종 mp4

├── style/STYLE_GUIDE.md 비주얼 스타일 + 확정 프롬프트 템플릿

└── projects/

├── 001_발레리/

│ ├── cuts.json ← 제작의 핵심 설정 (이 파일이 곧 영상)

│ ├── auth.json 실화 인증 컷(실제 사진·출처)

│ └── images/ segments/ auth/ *.mp4

├── 014_실화_133일뗏목표류/

├── 017_실화_태국동굴소년팀/

└── ... (현재 20개 폴더)

핵심은 pipeline/이 프로젝트 폴더를 인자로 받는 공용 엔진이라는 점입니다. 편이 늘어도 코드는 하나입니다.

2) cuts.json — 이 파일 하나가 영상입니다

실제 001번(발레리) 편의 앞부분입니다.

{

"channel": "",

"title": ["집강아지가 야생에서", "529일 살아남은 방법"],

"fps": 30,

"dur": 1.4,

"cuts": [

{ "sub": "이 강아지는", "img": "cut01_hook_v3.png", "dur": 1.3 },

{ "sub": "호주 캠핑장에서 도망쳐", "img": "cut01_hook_v3.png", "dur": 1.4 },

{ "sub": "그대로 실종됐음", "img": "cut01_hook_v3.png", "dur": 1.8 },

{ "sub": "몸무게 4kg", "img": "cut02_home.png", "dur": 1.2 },

{ "sub": "평생 집에서만 자란", "img": "cut02_home.png", "dur": 1.3 },

{ "sub": "미니 닥스훈트였음", "img": "cut02_home.png", "dur": 1.4 },

{ "sub": "**뱀과 독수리**가 우글거리는", "img": "cut03_wild.png", "dur": 1.5 }

]

}

3) 조립 — ffmpeg 한 줄

# 사용: pipeline/assemble.sh <프로젝트 폴더> <출력 이름>

ㄴ 이런 형태로 영상이 떨어지도록 만들었습니다.

# 1) 본편 세그먼트 (자막 릴레이 병합 + 컷별 줌 모션)

# 2) 실화 인증 컷 — 실제 사진에 천천히 줌인

폴백을 넣어둔 게 은근히 중요했습니다. 크로스페이드는 세그먼트 길이·해상도가 조금만 어긋나도 터지는데, 그때마다 작업이 멈추면 반복 제작이 안 됩니다. 실패하면 조용히 하드 concat으로 떨어져서 어쨌든 mp4는 나오게 해뒀습니다.

결과와 배운 점

배운 점과 나만의 꿀팁을 알려주세요.

과정 중에 어떤 시행착오를 겪었나요?

도움이 필요한 부분이 있나요?

앞으로의 계획이 있다면 들려주세요.

- 프로젝트 폴더 20편 축적. 편이 늘어도 새로 짜는 코드는 없고, 매번 하는 일은 cuts.json 쓰기 + 이미지 생성뿐입니다. (사실 20편 전부 다 손봐야하긴 합니다.. ㅎ)

- 앱 20여 개가 허브 한 페이지에 모였고, 폰에서 켜고 끌 수 있게 됐습니다.

배운 점 1 — 비용은 모델이 아니라 해상도가 좌우합니다 🍯

같은 Nano Banana Pro인데 1k = 2크레딧, 2k = 47크레딧입니다. 23배 차이입니다. 그런데 픽셀아트는 오히려 1k가 더 잘 나옵니다(굵은 픽셀이 살아서). 지금은 전부 1k 고정이고, 2k는 썸네일처럼 단 한 장이 중요할 때만 씁니다.

원화로 환산하면 이렇습니다.

한국어로 다른 숫자가 표시된 테이블 스크린샷

배운 점 2 — 자막은 잘게 쪼개고, 그림은 아껴 씁니다

"이 강아지는 / 호주 캠핑장에서 도망쳐 / 그대로 실종됐음" 처럼 한 호흡에 읽히는 길이로 쪼개고, 같은 그림을 재사용합니다. 벤치마크 채널을 실측해보니 2.9초/컷 수준으로 자막이 넘어가더군요. 컷을 늘리려고 이미지를 더 뽑을 필요가 없다는 걸 알고 나서 제작 속도와 비용이 동시에 좋아졌습니다.

앞으로의 계획

  • 우선 작업하던 자동화를 마무리 지어서 유튜브 채널에 실제 올려보는게 1목표 (스터디 내에)

  • 수업을 진행하면서, suno 등 새로운 툴을 적용하여 영상을 만들어보는 것이 2목표

  • 저만의 스토리를 가진 것으로 실제 드라마 기획처럼 짧은 쇼츠형 영상을 만들어보는 것이 3목표 입니다!

목표가 많네요,,

도움 받은 글 (옵션)

참고한 지피터스 글이나 외부 사례를 알려주세요.

(내용 입력)

1
밀어주고 끌어주는

온·오프라인 AI 스터디

AI로 어디까지 할 수 있는지
직접 확인하실 분만 신청하세요.