AI & 자동화

사고를 기억하지 말고 스크립트로 만들어라 — 한 사이클 회고

사고를 기억하지 말고 스크립트로 만들어라 — 한 사이클 회고

같은 실수를 두 번 하면 그건 사람 문제가 아니라 시스템에 검사가 없는 것이다.

Claude Code 스킬 구조와 회귀 테스트

같은 실수를 두 번 했다면 그건 사람 문제가 아니라 시스템에 검사가 없는 것입니다. 한 사이클을 돌고 나서 업로드 절차와 무엇이 잘못됐는지, 그리고 그 사고들을 어떻게 스크립트로 바꿨는지 정리합니다.

업로드 — 제목·설명란·출처

제목은 훅 문장 그대로 씁니다. 이미 대본 단계에서 검증됐고, 첫 3초에 들리는 말과 제목이 같으면 시청자가 "내가 클릭한 그 영상"임을 즉시 확인합니다.

설명란은 접힌 상태로 두 줄만 보입니다. 그 두 줄에 훅과 반전을 같이 넣어 펼치게 만듭니다.

출처는 무료 원문 링크까지 답니다. 학술 주장을 다루는 채널은 여기서 신뢰가 갈립니다. 댓글에 "출처?"가 달리기 전에 막습니다. 서지사항은 반드시 검색으로 대조합니다 — DOI·연도·저널명을 기억으로 쓰지 않습니다. 하나만 틀리면 "출처를 달았는데 틀린" 최악이 됩니다.

합성 콘텐츠 고지

전 컷이 생성물이면 해당됩니다. 위치가 문제입니다 — 업로드 흐름의 '세부정보' 단계에서 기본으로 접혀 있습니다. 자세히 보기를 눌러야 변경된 콘텐츠 섹션이 나옵니다. 실제로 못 보고 올렸습니다.

게시 후에도 바꿀 수 있습니다.

YouTube 스튜디오 → 콘텐츠 → 동영상 → 세부정보 → 변경된 콘텐츠 → 예/아니요 → 저장

판단 기준은 "사실적인가"입니다.

화면고지
발광 도형·추상 렌더만불필요
실제로 촬영된 적 없는 사실적 장면(교실, 초원, 사물, 동물)필요
실존 인물·특정 사건 조작필요(애초에 만들지 않는다)

애매하면 고지합니다. 라벨은 펼친 설명란에만 뜨므로 손해가 거의 없고, 안 하면 유튜브가 직접 붙이거나 제재합니다. 게다가 플로우 클립에는 SynthID가 박혀 있어 식별도 가능합니다.

한 사이클 실적

항목
클립16개 · 재생성 0회
비용192크레딧 · 5,568원(예산과 일치)
완성본71.08초
내보내기4회 ← 유일한 비효율
공개2026-08-19

무엇이 잘못됐나

실수무엇을 배웠나
대본 수정 후 런북 재빌드를 두 번 놓침사람이 두 번 다 잡았다. 사람이 기억할 일이 아니다
대본이 이상하다는 보고에 파일부터 안 보고 사과원인은 크롬 자동 번역이었다. 파일은 멀쩡했다
✦ 워터마크를 편집기 탓으로 오진원본을 먼저 확인했으면 3분이면 끝났다
SRT 생성 시 .replace('.', ',')를 문자열 전체에 적용자막 본문의 마침표가 쉼표가 됐다
길이를 7% 줄이려다 어법을 깼다압축된 대본은 단어가 아니라 블록 단위로 줄인다
낭독 속도를 추정예산이 세 번 바뀌었다

크롬 자동 번역 사고

런북 HTML에는 영어 프롬프트가 한국어보다 많습니다. 크롬이 페이지 언어를 영어로 오판하고 한국어로 자동 번역하면, 원래 한국어인 나레이션까지 번역기를 한 번 더 통과해 문장이 깨집니다. 실제 변형입니다.

원문번역 후
착시표시
모서리분포
곤충심지어
대학생만 들여다봤다유일하게 봉사하는 봉사

복사 버튼은 DOM의 보이는 텍스트를 집습니다 — 번역된 상태에서 누르면 번역문이 복사됩니다. 파일을 아무리 고쳐도 소용없습니다. 대응은 모든 코드 블록에 translate="no" + notranslate, 페이지에 <meta name="google" content="notranslate">, 그리고 헤더에 경고 배너를 넣는 것입니다.

"대본이 이상하다"는 보고를 받으면 파일부터 grep 한다.

사고를 스크립트로 바꾸기

한 사이클을 돌고 스킬에 넣은 것들입니다.

스크립트무슨 사고를 막나
make_srt.py자동 캡션이 대본과 달라지는 것 · 어절 중간 줄바꿈
verify_export.py앞부분 유실 · 규격 오류 · 무음 · 끝부분 잘림
subtitle_contact_sheet.py자막 텍스트 변형
check_runbook.py대본 수정 후 재빌드 누락(mtime 비교)
export_cuts.py캡컷 트리밍 오차 · 이미지 키프레임 수작업
build_runbook.py산출물이 다 나와야 문서가 생기던 것 → 매 단계 갱신
gen_image.py · check_images.py이미지를 한 장씩 웹에서 뽑던 것

원칙은 두 개입니다. 첫째, 사람이 기억할 일을 만들지 않습니다. "고쳤으면 재빌드하기"는 지침이 아니라 검사여야 합니다. 둘째, 회귀 테스트를 남깁니다. 잘렸던 내보내기 파일을 지우지 않고 두면 verify_export.py가 그걸 잡는지 언제든 확인할 수 있습니다.

도구가 스스로 틀렸다고 말하게 만들기

만든 검사가 자기 버그를 드러낸 사례가 둘 있었습니다.

  • verify_export.pycuts/ 조각을 완성본으로 집었다 → 제외 목록에 cuts·images 추가
  • subtitle_contact_sheet.py가 고정 밴드를 써서 자막이 잘린 시트를 냈다 → 중앙값 기반 자동 감지로 교체. 처음엔 최소·최대를 모았는데 발광 배경 한 프레임 때문에 밴드가 화면 절반으로 벌어졌다

검사 도구도 검사 대상입니다. 통과했다고 안심하기 전에 "이게 진짜 그걸 보고 있나"를 한 번 묻습니다.

규칙이 실측에 깨진 사례

처음 쓴 규칙실측고친 규칙
이미지 움직임은 "3초에 6% 이내"105% 팬은 5초에 34px — 안 보임줌은 6%, 팬은 116%
1.2배속은 4.86 음절/초3편에서 6.68배속은 편마다 잰다
워터마크는 Ultra 아니면 못 끈다계정 메뉴에 토글이 있다요금제 게이팅 + 화면이 최종 판단

셋 다 내가 먼저 쓴 규칙이 틀린 경우입니다. 규칙을 쓸 때 "무엇을 재서 이 값이 나왔나"를 같이 적어 두면, 나중에 다시 재서 고칠 수 있습니다.

검사 도구도 검사 대상이다.

규칙을 쓸 때 "무엇을 재서 이 값이 나왔나"를 같이 적는다. 그래야 나중에 고칠 수 있다.

스킬 구조

스킬 넷이 인수인계로 이어집니다. shorts-imagen은 3편에서 새로 갈라져 나왔습니다 — 이미지 생성은 프롬프트 문법도 검수 항목도 비용 구조도 영상과 달라, shorts-factory 안에 두면 SKILL.md가 비대해집니다.

shorts-topic-scout → shorts-factory → 런북(계속 갱신) → 제작 지원·검수
   웹 조사·채점       기획~지시서                      캡컷·검수·업로드
                          ↕
                    shorts-imagen  (정물 컷을 API로)

설계 원칙은 Progressive Disclosure입니다.

내용로딩
name + description트리거항상
SKILL.md프로세스·판단 기준스킬 발동 시
references/도구별 상세그 단계에 도달했을 때
scripts/결정적 작업컨텍스트에 안 읽고 실행

SKILL.md는 173줄·127줄로 유지하고 세부는 전부 references로 내렸습니다. 스크립트는 읽지 않고 실행하므로 컨텍스트를 안 먹습니다.

가장 중요한 건 "왜"를 적는 것입니다. ALWAYS/NEVER 대문자보다 이유를 쓰면 엣지 케이스에서도 판단이 섭니다.

자동 캡션을 쓰지 않는 이유는 정확도가 아니라 출처다.

지침은 사람이 기억해야 하고, 검사는 기계가 한다.

다음 사이클

다음 편 소재는 이미 정해져 있습니다(최후통첩 게임, 10/10). 완벽한 1편보다 꾸준한 주기가 조회수를 만듭니다. 아쉬운 부분은 다음 편에서 고칩니다.


이 시리즈는 제가 실제로 만든 유튜브 쇼츠 한 편(완성본 보기)의 제작 기록입니다. 문화인류학·심리학 소재로 상식을 뒤집는 지식 쇼츠를 만듭니다.

발행 2026-08-19 · 최종 확인 2026-08-20(3편 반영)