Victor

[연재] 연재를 쇼츠로 (1) 62편을 만들고 56편을 갈아엎다

연재 · 2026-09-09

다 만들어놓고, 56편을 버렸습니다

 

7월 25일 저녁이었어요. out/ 폴더에 mp4 파일이 쉰 몇 개 쌓여 있었습니다. 그날 저녁 6시 9분에 제작 리스트를 열어 보니 오프닝 다섯 편만 빼고 전부 ✅ 표시가 붙어 있었어요. 이제 유튜브에 올리기만 하면 되는 상태였습니다.

 

그런데 올리기 전에 한 번 쭉 넘겨보다가 손이 멈췄어요. 화면에 아무것도 안 나오고 있었거든요.

 

정확히 말하면 뭔가는 나오고 있었습니다. 화면 아래쪽 CRT 모니터 칸에 이런 게 떠 있었어요.

 

제일 무서운 것
  AI는 애매한 자리를 지어내서 메꾼다
  · 모른다고 말하지 않는다
  · 그럴듯해서 티도 안 난다

 

 

글자를 예쁘게 깎아서 검은 화면에 얹은 것. 저는 이걸 '요약 카드'라고 불렀습니다. 그리고 쉰 몇 편이 거의 다 이런 식이었어요. 위에서는 카톡 대화가 오가고, 아래 화면에는 그 대화를 요약한 글자판이 떠 있는 구조요.

 

정보는 다 맞습니다. 틀린 말이 하나도 없어요. 그런데 볼 이유가 없더라고요. 소리를 끄고 봐도 되고, 화면을 안 봐도 자막만 읽으면 되는 영상이었습니다. 저 카드를 보려고 세로 화면을 붙잡고 있을 사람이 있을까를 생각하니 답이 안 나왔어요.

 

그날 저녁 6시 38분에 대본 파일을 통째로 백업해두고, 56편을 처음부터 다시 만들기로 했습니다. 이 글은 그 두 시간에 대한 이야기예요.

 

 

왜 쇼츠였나

 

그때 홈페이지에 연재 글이 여섯 편 올라가 있었습니다. 왜 만들기로 했나, 하드웨어는 뭘 썼나, 계산기를 만들다 뭘 겪었나, 서버 없이 어디까지 되나, 사진 정리 봇, 그리고 안 쓰게 된 것들. 한 편 한 편이 꽤 길었어요.

 

문제는 이 글을 읽어줄 사람이 없다는 거였습니다. 도메인을 연결한 게 며칠 전이라 검색 유입이 사실상 0이었거든요. 글이 아무리 있어도 들어오는 문이 없으면 없는 거나 마찬가지죠.

 

그래서 문을 하나 더 내보기로 했습니다. 긴 글 여섯 편을 쪼개서 짧은 영상 예순 편쯤으로 만들자는 계획이었어요. 쇼츠는 검색이 아니라 피드로 사람이 흘러들어오니까, 색인이 안 붙은 초기에도 시작할 수 있는 통로였습니다.

 

형식은 이렇게 잡았어요. 화면을 위아래로 나눠서, 위는 카톡 대화창, 아래는 CRT 모니터입니다. 저와 클로드가 주고받는 대화가 위에서 흘러가고, 그 대화가 가리키는 실제 화면이 아래에 뜨는 구조요.

 

 

이건 갈아엎은 뒤의 화면입니다. 위에서 "근데 배우자 0개월인데 왜 450만원이야?"라고 물으면, 아래 모니터에 그 버그가 있던 실제 함수가 뜹니다. 이 한 편(3-1)만은 처음부터 이렇게 만들어놨었어요. 그래서 더 뼈아팠습니다. 되는 걸 이미 알고 있었으면서 나머지 쉰여섯 편은 쉬운 길로 갔던 거니까요.

 

예순 편을 손으로 편집할 수는 없잖아요

 

영상 편집 프로그램으로 예순 편을 만드는 건 애초에 무리였습니다. 한 편을 30초라 쳐도 자막 넣고 화면 바꾸고 하다 보면 편당 한두 시간은 갈 텐데, 예순 편이면 몇 주짜리 일이에요.

 

그래서 대본만 쓰면 영상이 나오는 방식으로 만들었습니다. make_scene.py라는 파일 하나가 엔진이고, 편마다 '이 순서로 진행해라'를 적은 목록을 넘기면 그대로 그려서 mp4로 뽑아줍니다.

 

목록에 들어가는 명령은 이런 것들이에요.

 

명령하는 일
say카톡 말풍선 하나를 띄운다 (누가 · 무슨 말 · 몇 초)
type상대가 입력 중이라는 점 세 개
hold그 화면 그대로 몇 초 멈춘다
img / shot아래 모니터에 실제 스크린샷을 띄운다
zoom그 스크린샷의 한 부분을 확대해서 짚는다
code_set / code_edit코드를 띄우고, 한 줄을 타이핑해서 고친다
text글자 카드를 띄운다

 

여기서 문제가 된 게 맨 아래 text였습니다. 다른 명령은 전부 진짜 재료가 있어야 써요. 스크린샷이 없으면 img를 못 쓰고, 실제 코드가 없으면 code_set을 못 씁니다. 그런데 text는 아무 재료 없이도 써집니다. 제목 한 줄과 항목 몇 줄만 적으면 그럴듯한 화면이 나와요.

 

만들기 제일 쉬운 게 text였고, 그래서 쉰여섯 편이 거기로 몰렸습니다.

 

세어보니 이랬어요

 

갈아엎기 전 대본과 지금 대본을 나란히 놓고, 화면에 뭐가 떴는지를 세어봤습니다.

 

 

56편에 요약 카드가 56개. 실제 화면이라고 부를 만한 건 통틀어 세 군데였어요. 그것도 사진 한 장을 고정으로 놓고 부분만 확대한 거라 매번 같은 그림이 나왔습니다. 코드도 세 군데 있긴 했는데, 열어보니 제가 손으로 지어낸 흉내였어요. 이런 식이었습니다.

 

def classify(photo):
    scores = {c: 유사도(c) for c in 넷}
    best = max(scores)
    return best if 확신 else '기타'

 

실제로 도는 코드가 아니에요. "이런 느낌이겠죠?"를 코드처럼 적어놓은 거죠. 저장소 어디를 뒤져도 이런 줄은 없습니다.

 

한 편을 예로 보여드릴게요. 계산기 편의 3-2, "첫 명령은 '만들어줘'가 아니라 뭘 뺄지 정하기"라는 편입니다. 갈아엎기 전 대본이 이랬어요.

 

 

열두 줄입니다. 그중 화면과 관련된 건 딱 한 줄, text로 시작하는 카드 하나예요. 나머지는 전부 말풍선입니다. 그러니까 이 영상은 처음부터 끝까지 화면이 두 번밖에 안 바뀌는 영상이었습니다. 검은 화면 → 카드 → 끝.

 

카드가 왜 안 되는지, 뒤늦게 깨달은 것

 

처음엔 그냥 "심심하네" 정도로 생각했어요. 그런데 왜 심심한지를 따져보다가 좀 뜨끔했습니다.

 

요약 카드는 제가 지어낸 것이거든요. 대화 내용을 제가 다시 정리해서 예쁘게 적은 겁니다. 화면에 뜬 글자와 저 사이에 아무것도 없어요. 근거가 없다는 뜻입니다.

 

이 연재에서 제가 계속 하는 얘기가 있죠. AI에게 자료를 애매하게 주면 빈자리를 그럴듯한 걸로 메꾼다는 거요. 매장 사진 몇 장 주고 리뷰를 시켰더니 "직원이 외국어로 말하니 화면에 한국어 자막이 떴다"는 없는 장면을 써낸 적이 있었습니다. 실제로는 화면이 넓어서 타이핑이 편하다는 시연이었는데요.

 

제가 카드로 하고 있던 게 정확히 그거였습니다. 화면이라는 빈자리를 진짜 재료 대신 그럴듯한 요약으로 메꾸고 있었어요. 앞에 보여드린 그 카드, "AI는 애매한 자리를 지어내서 메꾼다"고 적힌 그 카드조차 지어낸 화면이었다는 게 좀 웃기죠.

 

그래서 규칙을 한 줄로 다시 적었습니다.

 

대사는 다듬어도 화면·코드는 실측만. 요약 카드로 알맹이를 때우지 않는다.

 

실제 재료는 이미 다 있었어요

 

다행히 재료를 새로 만들 필요는 없었습니다. 연재 글 여섯 편을 쓰면서 스크린샷을 이미 다 찍어놨거든요. 글에 넣으려고 찍어둔 것들이요.

 

찍어둔 장수뭐가 들었나
클로드에게 처음 시킨 것13장계산기 화면 · engine.js · 테스트 · git log
도구 하나가 나오기까지10장사진봇 설계문서 · git log · 테스트
서버 없이 어디까지 되나12장배포 로그 · 댓글 · 빌드 출력 · 문법검사
왜 만들기로 했나12장네이버 블로그 · 홈 · 도구들
무엇으로 만드나 (하드웨어)6장맥미니 · 아이패드 · 외장 SSD · 도킹
안 쓰게 된 것들10장리포트 · 정지 이력 · 커밋 수

 

합쳐서 63장. 그래서 엔진에 폴더를 알파벳 한 글자로 등록해두고, 대본에서 ["img", "A06"]처럼 부르면 A폴더의 06번 사진이 뜨게 만들었습니다.

 

 

이게 바뀐 대본이에요. 같은 3-2편입니다.

 

 

열두 줄이 스물두 줄이 됐어요. 그리고 img · shot · zoom이 들어갔습니다. 화면에는 이런 게 뜹니다.

 

 

계산기를 만들 때 제일 먼저 쓴 설계 문서 원본입니다. 요약이 아니라 그날 그대로예요. 그리고 대화가 "지자체 지원금은 왜 빼?"로 넘어가는 순간, 문서의 그 부분을 확대해서 짚습니다.

 

 

'제외 (YAGNI)' 항목이 문서에 실제로 적혀 있는 게 보이죠. 카드로 만들었으면 제가 "지자체 지원금은 뺐습니다"라고 적었을 자리인데, 이제는 문서가 직접 말합니다. 이 차이가 생각보다 큽니다. 보는 사람이 "진짜네" 하고 넘어갈 수 있어요.

 

코드는 진짜 커밋에서만

 

코드 화면도 같은 원칙으로 다시 만들었습니다. 재료를 어디서 가져왔는지를 아예 파일 맨 위에 적어놨어요. 나중에 제가 봐도 출처를 알 수 있어야 하니까요.

 

 

커밋 번호가 다섯 개 적혀 있죠. 6+6 버그를 고친 커밋, 점검 7건을 반영한 커밋, 슬라이더, 예정일, 그리고 '생후 Infinity개월'을 잡은 커밋입니다. 영상에 나가는 코드는 전부 저기서 떠온 거예요.

 

예를 들어 계산기 설계 문서에서 출처가 엇갈리던 대목 — 대상 자녀 연령이 어떤 안내엔 만 8세, 어떤 안내엔 만 12세로 돼 있던 그 문제 — 은 이렇게 나갑니다.

 

 

uncertain: true라고 코드에 그대로 적어놓은 실제 줄입니다. "모른다"를 코드에 남긴 자리요. 대화가 "안 그러기로 했어. '모른다'를 코드에 그대로 남겼어"로 넘어가는 순간에 저 줄이 타이핑되면서 붙습니다.

 

사진 정리 봇 편은 그날 밤 git log를 그대로 띄웠어요.

 

 

21시 10분, 21시 48분, 22시 14분. 사진 2만 6천 장이 전부 '기타' 폴더로 간 걸 발견하고 고친 그 밤의 기록입니다. 카드에 "전부 기타로 갔다"고 적는 것과, 그날의 커밋 시각이 화면에 뜨는 건 무게가 다르더라고요.

 

만들다 터진 것 — 한글이 □ 로 나왔어요

 

여기서 한 번 걸렸습니다. 코드 화면에 쓰는 글꼴은 코딩용 등폭 글꼴(Menlo)인데, 이 글꼴에는 한글 글자가 없어요. 그래서 주석에 한글을 쓰면 그 자리가 전부 네모(□)로 나갔습니다. 위 화면의 // 출처 엇갈림 같은 줄이 통째로 깨지는 거죠.

 

코드 주석을 영어로 바꾸면 간단하지만, 그러면 보는 사람이 못 읽습니다. 주석을 없애면 왜 그 줄이 중요한지가 안 보이고요. 그래서 한 줄 안에서 글꼴을 섞어 그리도록 고쳤습니다.

 

 

하는 일은 단순해요. 한 줄을 받으면 글자를 훑으면서 '영문·기호 덩어리'와 '한글 덩어리'로 잘라내고(_runs), 덩어리마다 다른 글꼴로 그린 다음 그린 만큼 가로 위치를 밀어줍니다(mtext). 한글은 2픽셀 내려서 그려요. 두 글꼴의 기준선이 미묘하게 안 맞아서 그냥 그리면 한글만 붕 떠 보이거든요.

 

글자 폭을 재는 함수(mlen)도 같이 만들어야 했습니다. 타이핑 커서를 줄 끝에 놓으려면 그 줄이 몇 픽셀인지 알아야 하는데, 글꼴이 섞여 있으면 한 글꼴로는 못 재니까요.

 

53분 만에 62편

 

재료를 다 붙이고 나서, 편 묶음별로 나눠서 대본을 갈아끼웠습니다. 계산기 편 13개를 저녁 7시 16분에, 사진봇 편 12개를 7시 28분에, 정적 사이트 편 12개를 7시 35분에, 나머지 19개를 7시 47분에요. 마지막으로 각 묶음의 첫 편이 될 오프닝 다섯 편을 7시 56분에 새로 넣었습니다.

 

그리고 전부 다시 렌더했어요. 저녁 7시 4분에 첫 편이 나오고, 7시 57분에 마지막 편이 나왔습니다. 62편, 53분, 81.5MB.

 

갈아엎기 전지금
편수5662
요약 카드56개8개
실제 화면3군데110군데
실제 코드3군데 (지어낸 것)21군데 (실제 커밋)
한 편 길이평균 24.4초

 

편 길이는 눈에 띄게 늘었습니다. 대본에 적힌 시간만 더해도 12초대에서 22초대가 됐고, 실제로 뽑힌 영상은 평균 24.4초예요. 제일 짧은 게 20.1초, 제일 긴 게 31.5초. 62편을 다 이으면 25분짜리가 됩니다.

 

왜 길어졌냐면, 화면이 생기니까 말이 붙더라고요. 카드를 띄워놓고 2초 멈추는 것과, 문서를 띄우고 → 잠깐 보여주고 → 특정 부분을 확대해서 짚고 → 그걸 두고 한마디 더 주고받는 건 걸리는 시간이 다릅니다. 3-2편은 대사가 다섯 마디에서 여덟 마디로 늘었어요. 마지막에 "만들 수 있냐는 내 몫, 뭘 안 만들지는 네 몫이야" 같은 마무리 한 줄이 새로 붙었고요.

 

남긴 카드 8개는 전부 비유·결론·목록입니다. 실제 화면으로 보여줄 수 있는 게 없는 자리요. 1년 유지비가 도메인 값 10.46달러뿐이라는 얘기 같은 건 스크린샷으로 찍을 게 없잖아요. 그런 자리만 남겼습니다.

 

그래서 맞는 판단이었나

 

그날 밤에 여섯 편을 유튜브에 올렸고, 다음 날 아침에 확인해봤습니다. 올린 지 12시간쯤 지난 시점이었어요.

 

조회수
3-1 계산기 만들다 6+6 버그 잡기1,981
1-2 계산기 규칙 정리부터가 사람 몫413
1-1 도구를 열댓 개 만들었는데 나만 보고 있었다96
1-5 / 1-3 / 1-43 / 1 / 0

 

솔직히 말하면 이 표로는 "카드를 뺀 게 효과가 있었다"를 증명 못 합니다. 여섯 편 다 갈아엎은 뒤 버전이라 비교군이 없거든요. 대신 다른 게 보였어요. 제일 잘 돈 편이 버그 이야기였습니다. 계산기가 배우자 0개월인데 450만원을 뱉은 그 편이요. 소개하는 편(1-1, 1-3, 1-4)은 거의 안 돌았습니다.

 

3-1은 그 뒤로도 계속 돌았습니다. 8월 20일 기준으로 2,675회, 올린 지 610시간(약 25일)이 지난 시점이에요. 같은 연재 갈래의 다른 편들과 견주면 이렇습니다 — 연재 편 평균이 6시간 시점 430회, 24시간 531회입니다. 3-1은 12시간 만에 1,981회였으니 평균의 서너 배로 시작한 셈이에요.

 

여기서 솔직하게 적어둘 게 있습니다. 시청 지속률이나 유입 경로 같은 건 제 기록에는 없습니다. 저희가 매시간 남기는 건 조회·좋아요·댓글 수까지예요. 그래서 "왜 잘 돌았나"는 추측이고, 확인된 건 "잘 돌았다"까지입니다. 굳이 말하자면 제일 잘 돈 편이 소개가 아니라 사고 이야기였다는 것, 그거 하나가 자료로 남습니다.

 

그래서 순서를 바꿨습니다. 소개부터 차례대로 나가던 걸, 실제로 뭔가 터진 이야기부터 나가게요. 이 얘기는 다음 편에서 자동 업로드를 붙이면서 같이 다루겠습니다.

 

그리고 이 글을 쓰다가 하나 더 걸렸어요

 

이번 회차에 넣을 장면을 고르려고 62편을 다시 넘겨보다가, 남겨둔 카드 하나에서 이게 나왔습니다.

 

 

번호가 전부 네모입니다. 대본에는 라고 적혀 있어요. 그런데 화면에 쓰는 글꼴(Hahmlet)에 동그라미 숫자 글자가 없습니다. 없는 글자를 그리라고 하면 빈 네모가 나오는데, 그게 그대로 렌더돼서 나갔어요.

 

확인해보니 다섯 글자가 전부 똑같은 폭·똑같은 모양으로 그려지고 있었습니다. 다 같은 '없음' 표시였던 거죠. 앞에서 코드 화면의 한글 깨짐은 잡았는데, 카드 화면 쪽은 같은 병이 있는 줄도 몰랐습니다. 코드는 글꼴을 섞어 그리도록 고쳤지만 카드는 안 건드렸으니까요.

 

이 편은 이미 유튜브에 공개로 올라가 있습니다. 아직 안 고쳤어요. 1.로 바꾸거나 카드 쪽에도 같은 혼용 렌더를 붙이면 되는데, 그러면 다시 렌더하고 다시 올려야 합니다. 다음에 그 묶음을 손볼 때 같이 처리하려고 남겨뒀어요.

 

굳이 이걸 적는 이유가 있습니다. 저는 이 프로젝트에서 "화면은 실측만"이라는 규칙을 세웠는데, 정작 그 화면이 제대로 그려졌는지는 재생해 봐야만 알 수 있다는 걸 또 확인했거든요. 대본에는 이라고 멀쩡히 적혀 있어요. 엔진도 오류를 안 냅니다. 렌더도 성공으로 끝나고요. 어디에도 빨간불이 안 들어옵니다. 사람이 영상을 재생해서 눈으로 보기 전까지는 아무도 모르는 종류의 고장이에요.

 

사람은 어디에 남았나

 

이번 편에서 AI가 한 일과 제가 한 일을 갈라보면 이렇게 됩니다.

 

AI가 한 일 — 엔진을 짰습니다. 5분할 화면 배치, 말풍선 애니메이션, CRT 주사선, 캐릭터 포즈 전환, 글꼴 섞어 그리기, ffmpeg으로 묶어내기. 이걸 저 혼자 만들었으면 몇 달 걸렸을 거예요. 편마다 대본을 짜 넣는 손도 같이 덜었고요.

 

제가 한 일 — 세 가지였어요.

 

첫째, 다 만든 걸 버리기로 한 결정. 이건 넘길 수가 없는 자리입니다. 쉰여섯 편이 이미 다 뽑혀 있었고, 올리기만 하면 되는 상태였어요. "이 정도면 됐다"와 "이건 아니다" 사이에는 기준이 없습니다. 있는 건 그걸 재생해 보는 사람뿐이에요.

 

둘째, 화면의 재료를 어디서 가져올지 정한 것. 카드로 때울 것이냐 실제 스크린샷을 붙일 것이냐는 기술 문제가 아니라 규칙 문제였습니다. 규칙을 "실측만"으로 못 박고 나니까 그다음은 거의 기계적으로 굴러갔어요. 스크린샷 폴더 여섯 개를 등록하고, 커밋 번호를 파일 맨 위에 적고, 편마다 어느 사진의 어느 좌표를 쓸지 정하고. 오래 걸린 건 판단이었지 작업이 아니었습니다.

 

셋째, 재생해서 눈으로 보기. 네모로 나간 번호를 잡은 건 코드를 읽어서가 아니라 영상을 틀어서였어요. 검사로 못 잡는 종류의 고장이 있고, 이 프로젝트는 그런 게 특히 많습니다. 화면이 결과물이니까요.

 

한 줄로 줄이면 이렇습니다. 만들 수 있냐는 AI 몫이고, 이게 볼 만한가는 사람 몫이더라고요. 공교롭게도 갈아엎은 뒤의 3-2편 마지막 대사가 그 말입니다. "만들 수 있냐는 내 몫, 뭘 안 만들지는 네 몫이야."

 

다음 편에서는 이 62편을 유튜브에 매일 자동으로 올린 이야기를 하겠습니다. 자동으로 만들고 자동으로 줄 세웠는데, 나가는 문 하나만 일부러 사람 손에 남겨둔 이유가 있었어요.

 

#AI로사이트만들기 #휴먼인더루프 #유튜브쇼츠 #쇼츠만들기 #쇼츠자동화 #영상자동화 #숏폼제작 #파이썬 #ffmpeg #Pillow #코드로영상만들기 #클로드 #클로드코드 #바이브코딩 #1인개발 #개인개발자 #사이드프로젝트 #맥미니 #victorhouse #블로그운영 #콘텐츠제작 #유튜브채널운영 #스크린샷 #폰트깨짐 #한글폰트 #등폭폰트 #육아휴직계산기 #정적사이트 #깃로그 #재작업

댓글

    로그인 없이 쓰는 대신, 등록한 댓글은 직접 지울 수 없습니다. 지워야 할 댓글은 옆의 신고를 눌러주세요.
    네이버 블로그글 원문 보러가기 →유튜브 쇼츠만드는 장면 20초로 보기 →
    관리자 Victor · 문의는 우상단 신고·제안으로 남겨주세요.
    글과 화면은 정적 파일로 만듭니다. 댓글과 조회수만 외부 데이터베이스에 저장합니다 — 개인정보처리방침

    오류 신고 · 제안

    관리자 Victor에게 전달됩니다