한 줄 요약 — Remotion(코드로 영상을 만드는 React 도구)으로 치앙마이 Day13 여행 쇼츠를 처음부터 끝까지 편집했다. 중간에 "Studio에서 고친 자막이 통째로 날아가는" 사고를 두 번 겪었고, 공식 문서를 근거로 구조를 고쳐서 저장 기능을 살려냈다.

무엇을 만들었나
세로 9:16 (1080×1920), 약 73초짜리 여행 쇼츠. 소스는 여행 중 찍은 휴대폰 영상 9개 + 사진 7장.
완성 영상: youtube.com/shorts/3MnNU1mNsxs
Claude에게 말로 시켜서 붙인 기능들:
풀스크린 릴스 레이아웃 — 영상이 화면을 꽉 채우고, 📍장소 핀과 자막이 그 위에 얹히는 구조. 4:5 크롭 안전영역(y=285~1635) 안에 모든 텍스트 배치
씬 구성 — 아침 죽 → 점심 → 카페 → 마사지 → 저녁(핫팟·치킨·계란찜) → 불독 → 고양이 → 배웅 → 엔딩, 총 13개 씬
BGM 2종 — 잔잔한 메인 곡(CC BY) + 불독 오토바이 컷 전용 힙합 비트. 동물 영상 구간은 원본 소리가 들리게 BGM 자동 음소거
효과음 합성 — 엔딩 "끝" 뱃지의 쿵! 소리와 지출 태그의 동전 띠링 소리를 ffmpeg 사인파 합성으로 직접 제작 (저작권 무관)
지출 태그 — 장소마다 "-90밧 (약 4,100원)" 식의 형광색 필기체 태그가 효과음과 함께 팝업. 금액은 내 네이버 블로그 글에서 Claude가 직접 찾아서 산출
필기체 스티커 문구 — "진짜 짱맛! 강력추천!", "뒷다리 커엽♥️" 같은 포인트 문구를 원하는 시점·위치에 배치
재미있었던 부분: 지출 금액 추정을 시키자 Claude가 내 블로그의 치앙마이 글 59개를 목록에서 찾아내서, 각 장소 후기의 "90밧", "300밧", "1000밧도 안 나왔다" 같은 문장을 근거로 표를 만들어줬다. 영상 속 마사지샵 가격판 사진까지 읽어서 교차검증했다.
제작 과정 타임라인
이틀에 걸쳐 진행했다. 전부 Claude Code와의 대화로만 작업했고, 내가 직접 만진 건 Studio 미리보기와 인스펙터뿐이다.
Day 1 — 기획과 초안 (저녁 2시간)
소스 던지기 —
chiangmai_video폴더에 촬영본을 넣고 "쇼츠로 만들만한 내용을 뽑아달라"고 요청. Claude가 파일들을 훑어보고 하루 일정을 타임라인 순으로 재구성레퍼런스 전달 — 그날 갔던 장소들의 내 블로그 후기 4개 + 예전에 편집해둔 쇼츠 링크. "이것과 비슷한 스타일로" 한 마디로 톤이 잡혔다
편집안 합의 — "영상 위주로, 사진은 꼭 필요한 1~2장만, 길이 1분 30초, 마사지는 4초만" 같은 굵직한 결정만 내가 하고 씬 배치는 Claude가 제안
초안 제작 — 자막 문구는 내가 직접 쓸 거라 빈칸으로 두고 뼈대만 먼저
Day 2 — 본편집과 렌더링 (오후 반나절)
레이아웃 수정 — 위아래가 잘려 나오던 소스를 9:16 풀스크린으로
에셋 교체·소리 전환 — 필요 없는 컷 제거, dinner 사진을 hotpot 영상으로 교체, 치킨·계란찜 사진 추가, hotpot 묵음, 동물 영상은 원본 소리 유지
BGM 추가 — 메인 곡 + 불독 오토바이 컷엔 힙합 비트. 처음 받은 펑크가 마음에 안 들어 "힙합 랩하는 것 같은 BGM 있어?"로 교체
저장 안 되는 문제 수정 — 인스펙터에서 쓴 자막이 두 번 날아간 사고 (아래 별도 섹션)
자막 다듬기 — 장소 핀·자막 크기 키우고, 필기체 포인트 문구를 원하는 프레임에 배치
4:5 안전영역 검증 — 모든 텍스트가 4:5 크롭 범위 안에 들어오는지 프레임 캡처로 확인
지출 태그 추가 — 블로그 근거로 장소별 지출 추정, 형광 필기체 태그 + 동전 효과음. 색상은 빨강 → 형광주황 →
#2af7e8순으로 눈에 띌 때까지 교체렌더링 — CLI로 최종 렌더링. 73초, 1080×1920, 186MB
사고: 인스펙터에서 고친 자막이 날아갔다
Remotion Studio 오른쪽 Props 패널(인스펙터)에서 자막을 고치던 중, Claude가 코드를 수정하자 화면이 새로고침되면서 입력 중이던 문구가 전부 사라졌다. 더 억울했던 건 두 번째 사고 — Ctrl+S를 눌렀고 "저장됨" 팝업까지 봤는데, 파일에는 한 글자도 기록되지 않았다.
원인 (공식 문서로 확인)
Remotion Docs — Cannot save default props
Studio의 저장 버튼은 소스 코드의 defaultProps를 직접 고쳐 쓰는(codemod) 방식인데, 작동 조건이 까다롭다.
<Composition>이 루트 파일(src/Root.tsx)에 직접 있어야 한다 — 우리는 별도 파일에 분리되어 있어서 추출 실패defaultProps가 변수 참조 없는 인라인 객체 리터럴이어야 한다 — 우리는defaultProps={{ captions: CAPTIONS }}처럼 변수로 연결되어 있었다저장 전까지 패널 수정값은 메모리에만 존재한다 — 자동저장 없음. 코드가 바뀌어 핫리로드되면 그냥 증발
추가로 발견한 함정: 여러 줄 자막 입력을 위해 zTextarea()를 쓸 때 .describe("라벨")을 붙이면 안 된다. Remotion이 textarea 여부를 description 자리에 심어둔 내부 표식으로 판별하는데, describe가 그걸 덮어써서 도로 한 줄 입력칸이 된다.
해결
<Composition>을 Root.tsx로 옮기고 defaultProps를 전부 인라인 리터럴로 풀었다 → 이후 Ctrl+S가 실제로 파일에 기록되는 것을 확인자막 필드는
zTextarea()만 쓰고 라벨은 코드 주석으로 대체 → 패널에서 엔터 줄바꿈 가능git 저장소를 만들어 변경마다 스냅샷 → 이후로는 뭐가 날아가도 복구 가능
실제로 던진 질문들
세션 기록에서 뽑은 실제 요청 목록. 전문 용어 없이 전부 일상어로 말했다
기획 단계
"영상편집을 하기 위해서 내가 해야 할 것들을 안내해줘"
"내가 가진 파일들을 스토리에 맞춰 어떻게 편집할지 먼저 논의해보자. 이날 하루 있었던 일들을 타임라인 순으로 정리해줘"

"영상 위주로 배치하되 사진은 필요한 것 1~2개만. 길이 1분 30초 정도로"
도구 사용법을 모를 때
"왜 스튜디오에서는 바로 자막 수정할 수가 없어?"
"자막에서 엔터 치고 싶으면 어떻게 해?"
"'진짜 짱맛!' 위치 옮기고 싶은데 어떻게 하면 돼?"
"Studio에서 재생해볼 때 너무 느린데 어떻게 하지?"
문제가 터졌을 때
"인스펙터 저장했는데 왜 또 날아갔어. 캡션 내가 적은 거 다 날아갔잖아 ㅠㅠ"
"'Can't save default props: Could not find or extract defaultProps' 이게 schema 쪽에 적혀 있는데 이것 때문 아니야?" ← 에러 메시지를 그대로 복붙
"비디오에 원래 있는 영상 소리는 어디 갔어?"
"W8 카페 영상 자리에 불독 영상이 들어가 있어. 잘못 교체된 듯. 확인해줘"
편집 지시 (말로 하는 컷 편집)
"cheers 영상은 제거해줘. 자막은 장소 핀 바로 아래로 위치 변경"
"고양이랑 불독 영상에는 BGM 빼줘. hotpot 영상은 묵음 처리"
"펑크 BGM 마음에 안 들어. 힙합 랩하는 것 같은 BGM 있어?"
"치킨·계란찜은 가로 사진 같은데 위아래 공간 남아도 되니까 좌우가 너무 잘리지 않게 스케일 조절해줘"
"불독 영상 46초부터 '왜 이렇게 신남?' 자막 넣어줘. 필기체로. 그 전에 44초부터 강아지 엉덩이 위쪽에 '뒷다리 커엽♥️' 추가"
"마지막에 '끝'은 엄청 크게 가운데에. 효과음 쿵! 하는 소리 넣어주고"
"4:5 범위 안에 텍스트가 다 들어와 있는지 확인하고 넘어가면 조금씩 조정해줘"
콘텐츠 소재를 맡길 때
"렌더링 전에 각 장소에서 쓴 비용 정리하고 싶은데, 내가 줬던 블로그 글 기반으로 얼마 들었을지 유추 가능해?"
"각 위치마다 '-90밧(약 4,100원)' 이렇게 지출 효과음이랑 같이 넣어줘. 화면 전환되면 없어지게 하고"
"W8 폐업했대. 거기에 필기체로 '근데 여기 폐업함!' 추가해줘"
결과와 배운 점
결과
소스 촬영본만 있던 상태에서 자막·BGM·효과음·지출 정보까지 들어간 73초 쇼츠 완성, CLI로 최종 렌더링
자막 저장 파이프라인이 "패널에서 수정 → Ctrl+S → 코드에 기록"으로 안정화
이후 편집 요청("자막 키워줘", "이 구간 BGM 빼줘")은 전부 말로 처리 가능한 상태
배운 점
1. "화면에 보인다"와 "저장된다"는 완전히 다른 문제다. 강의자료를 따라 만들면 화면은 빨리 나온다. 하지만 실제 작업 도구가 되려면 사람이 고친 값이 보존되는지를 따로 검증해야 한다. 이번엔 그 검증을 안 하고 쓰다가 자막을 두 번 날렸다.
2. 소재가 부족하면 AI가 내 아카이브를 뒤지게 하라. 지출 정리는 내 기억이 아니라 내 블로그 글이 근거가 됐다. 이미 기록해둔 자산이 있으면 AI가 그걸 소스로 쓸 수 있다.
3. 기획 내용을 기반으로 파일을 미리 선택하고 자막을 미리 정한채로 그걸 remotion 에 넘긴다면 훨씬 더 편집이 수월할 것으로 보인다. studio 에서 수정하면 프로그램이 무거워 재생도, 수정도 훨씬 오래 걸린다. 그래서 미리 위 내용을 정해둔다면 토큰도 훨씬 절약될 것이다.
영상을 효과적으로 만들기 위한 팁
소스를 폴더에 몰아넣고 선별은 AI에게 — "쇼츠로 만들만한 내용 뽑아줘" 한 마디면 파일명·촬영시각 기준으로 하루 타임라인이 나온다
레퍼런스 링크 2개면 스타일 설명이 끝난다 — 이전에 만든 쇼츠 + 블로그 후기. "이거랑 비슷하게"가 형용사 열 개보다 정확하다
자막·핀은 4:5 안전영역(y=285~1635) 안에 — 9:16으로 만들어도 인스타 피드에선 4:5로 잘린다. 마지막에 프레임 캡처로 전수 검증
현장음이 살아야 하는 컷은 BGM을 빼라 — 동물 영상, 대화 컷은 원본 소리가 콘텐츠다
구간 전용 BGM으로 리듬 전환 — 웃긴 컷에만 힙합 비트를 얹는 식의 전환이 쇼츠 문법에 맞다
효과음은 ffmpeg 사인파 합성으로 자급자족 — "쿵!", "띠링" 정도는 직접 합성하면 저작권 걱정이 없다
정보 오버레이는 효과음과 함께 짧게 — 화면 전환 시 사라지게 하고, 색은 실제 프레임 캡처로 확인하며 고를 것
필기체 포인트 문구는 감정 리액션 용도로 — 시청자 댓글 같은 문구가 영상에 사람 냄새를 입힌다
미리보기가 느리면 렌더링으로 판단 — Studio 재생은 실시간이 아니다
에러 메시지는 그대로 복붙 — "저장이 안 돼"보다 원문이 문제 해결을 10배 빠르게 한다
바로 써먹을 수 있는 프롬프트
Remotion으로 쇼츠 편집 프로젝트를 만들고 있어.
자막을 Studio에서 수동으로 수정한 뒤, 다시 열어도 수정값이 유지되게 만들고 싶어.
Remotion의 "Cannot save default props" 문서 기준으로 현재 구조를 점검해줘.
확인할 것:
1. <Composition>이 src/Root.tsx에 직접 있는지
2. defaultProps가 변수 참조 없는 인라인 객체 리터럴인지
3. 여러 줄 자막 필드에 zTextarea()를 쓰되 .describe()를 붙이지 않았는지
4. 수정 → 저장 → 파일 반영 → 렌더링까지 실제로 한 번 검증제작 방법을 스킬로 만들었다
이번 제작 과정을 6단계로 세분화해서, 각각을 Claude Code 스킬(my-video/.claude/skills/)로 저장했다. 다음 여행 쇼츠부터는 "쇼츠 기획해줘" 한 마디면 이 절차대로 굴러간다.
스킬 | 하는 일 | 핵심 노하우 |
|---|---|---|
| 소스 폴더 → 타임라인 스토리 기획 | 블로그·이전 쇼츠 레퍼런스를 먼저 요청, 자막은 빈칸으로 |
| 풀스크린 레이아웃 + 4:5 안전영역 배치 | y=285~1635 안에 모든 텍스트, 프레임 캡처로 전수 검증 |
| BGM 배치·구간 음소거·효과음 합성 | 현장음 컷은 BGM 뮤트, 효과음은 ffmpeg 사인파 자급자족 |
| 블로그 근거 지출 태그 오버레이 | 금액은 추측 금지·블로그 문장 근거, 색은 프레임 위에서 검증 |
| 자막 저장 파이프라인 유지 | Root.tsx 인라인 defaultProps, zTextarea에 describe 금지, 코드 수정 전 저장 확인 |
| 최종 렌더링·결과물 검증 | 실패 시 concurrency 낮춰 재시도, ffprobe로 길이·오디오 확인 |
스킬로 만들어두니 이번에 두 번 겪은 "자막 증발 사고" 같은 함정이 다음 프로젝트에서는 시작 전에 규칙으로 적용된다. 사례글이 곧 재사용 가능한 도구가 된 셈이다. 그리고 이 스킬은 remotion 이 설치된 폴더에 귀속되어 거기서만 사용할 수 있다. 만약 전체적으로 사용하고 싶다면 더 큰 claude 폴더에 skill이 들어가 있어야 한다.
처음에는 조금 오래 걸렸지만 이제 스킬로 만들어 뒀으니 비슷한 형태의 영상은 바로 편집할 수 있을 것 같다. 다만 생각보다 토큰이 많이 들어서, 이걸 아낄 방법을 찾아봐야겠다.
