LESSON 07

내 주제로 대본과 컷 계획 쓰기

new_episode.py, 대본 구조, 카드, PLANS 블록

오늘의 목표

new_episode.py로 새 편 뼈대를 만들고, 잘 먹힌 대본 구조를 따라 script_v2를 채우고, top10_plan.py에 PLANS 블록을 직접 씁니다.

예상 소요 시간 약 60분

내 컴퓨터:

Code 탭에서 이렇게 시키세요

기본 방법: 클로드 데스크탑 앱의 Code 탭. 키트 폴더(clay-episode-kit)를 프로젝트 폴더로 열고, 아래 프롬프트를 붙여 넣어 클로드에게 시킵니다. 클로드가 명령을 실행하거나 파일을 바꾸려고 권한을 물으면, 무엇을 하려는지 읽고 허용합니다(모르겠으면 "이게 뭐 하는 거야?"라고 되물어 보세요). 끝나면 '③ 결과 확인'을 눈으로 확인합니다. 명령어를 직접 치는 방법은 맨 아래 '터미널로도 할 수 있어요' 에 접어 두었습니다.

이 단계는 clay-episode 스킬의 "대본 쓰기"와 "컷 계획 쓰기" 절을 내 주제에 그대로 적용하는 것입니다. 전체를 손으로 쓰기보다, 소재를 주고 Claude Code 가 구조에 맞춰 초안을 뽑게 한 뒤 사실만 검토하는 게 빠릅니다. 4강에서는 이미 쓰인 예시 계획을 검사만 했지만, 이번에는 대본과 계획 자체를 만듭니다.

프롬프트 7-1 · 대본 채우기

① 준비 (사람이 먼저)

  • 어디서: 키트 폴더에서 데스크탑 앱 Code 탭을 열고 이 폴더를 프로젝트 폴더로 고릅니다
  • new_episode.py 로 뼈대를 미리 만들어둡니다(따라하기 1)
  • 주제·키워드를 미리 정해 둡니다(예: 화산 / 마그마·분화구·용암·화산재)

② 스킬 (붙여 넣기)

#14 프롬프트 7-1🟡 중급

clay-episode 스킬을 읽고, data/longform/volcano.json 의 script_v2 를 채워줘. 주제는 "화산은 왜 터질까", 키워드는 마그마·분화구·용암·화산재 네 개. 대본은 훅→반응→전환→핵심→키워드 4개→반전→복습→콜백 순서(23~28줄)로 쓰고, 화자 태그 [[child]]/[[adult]]/[[friend]] 를 붙여줘. script_v2.cards 에 키워드 4개의 카드도 같이 채워줘. 단정적인 의학·안전 약속 문구는 넣지 마. 다 쓰면 대본 전체를 보여주고 멈춰 — 사실 관계(화산 폭발 원리)는 내가 직접 검토한 뒤 컷 계획은 따로 시킬게.

③ 결과 확인

  • 클로드가 권한을 물으면 어떤 명령·파일인지 읽고 허용했는지(모르는 것은 허용 전에 물어봅니다)
  • 대본이 훅→반응→전환→핵심→키워드 4개→반전→복습→콜백 8단계 구조를 따르는지
  • 사람이 확인해야 할 체크포인트: 원리 설명(예: 화산 폭발 원리)이 사실과 맞는지 내가 직접 읽고 검토합니다 — 컷 계획은 대본이 확정된 뒤 7-2 로 따로 시킵니다.

프롬프트 7-2 · 컷 계획(PLANS 블록) 쓰기 — 컷과 줄 배정

용어: PLANS 블록은 scripts/top10_plan.py 안에 적는 "이 편의 컷 설계도"입니다. 이 단계에서는 컷 10~12개와 대본 줄 배정(new·map)만 먼저 쓰고, 썸네일(thumb)은 7-3 에서 따로 합니다.

① 준비 (사람이 먼저)

  • 7-1 의 대본이 확정돼 있어야 합니다(사실 검토 완료)
  • 어디서: 키트 폴더에서 데스크탑 앱 Code 탭을 열고 이 폴더를 프로젝트 폴더로 고릅니다

② 스킬 (붙여 넣기)

#15 프롬프트 7-2🔴 고급

clay-episode 스킬을 읽고, 편 키 volcano 의 컷 계획을 scripts/top10_plan.py 에 PLANS['volcano'] 로 추가해줘. 이번에는 new(컷 10~12개)와 map(대본 줄 전부에 컷 키 배정)만 쓰고, thumb 은 임시로 PLANS['rainbow'] 것을 복사만 해 둬. 기존 PLANS['rainbow'] 를 참고 패턴으로 쓰되, 사람이 나오는 컷은 반드시 {C2}/{MP}/{F2} 같은 kit.config.json 의 캐릭터 상수로만 묘사해(직접 "a boy" 식으로 쓰지 마). 다 쓰면 컷 키와 담당 줄 번호를 표로 보여주고 멈춰 — 썸네일과 검사는 7-3 으로 따로 시킬게.

③ 결과 확인

  • 클로드가 권한을 물으면 어떤 명령·파일인지 읽고 허용했는지(모르는 것은 허용 전에 물어봅니다)
  • 표에서 대본 1~마지막 줄이 빠짐없이 어떤 컷에든 배정돼 있는지 눈으로 훑습니다
  • 사람이 확인해야 할 체크포인트: PLANS 블록의 new 딕셔너리에 사람 묘사가 {C2} 같은 상수가 아니라 직접 텍스트("a boy", "a girl")로 새어 들어가지 않았는지 코드를 눈으로 한 번 읽습니다.

프롬프트 7-3 · 썸네일 쓰고 검사 통과

① 준비 (사람이 먼저)

  • 7-2 가 끝나 컷 표를 확인했어야 합니다
  • 썸네일 헤드라인 두 줄(합쳐 14자 이하)을 미리 생각해 둡니다. 예: 「화산은」/「왜 터져?」

② 스킬 (붙여 넣기)

#16 프롬프트 7-3🔴 고급

clay-episode 스킬을 읽고, PLANS['volcano'] 의 thumb=TH(...) 를 volcano 에 맞게 고쳐줘. a 는 헤드라인 두 줄(합쳐 14자 이하, 둘째 줄 폰트 120px 이상), b 는 어른이 문서를 든 모습과 키워드 패널, c 는 얼굴 클로즈업과 단색 배경으로. 다 쓴 다음 top10_plan.py → cutplan_check.py 를 돌려서 10.0점 나올 때까지 반복해줘. 점수를 지어내지 말고 스크립트 출력 그대로 알려줘. "10.0점 통과"가 나오면 멈춰 — 다음 단계(Flow 제출)는 내가 시킬게.

③ 결과 확인

  • 클로드가 권한을 물으면 어떤 명령·파일인지 읽고 허용했는지(모르는 것은 허용 전에 물어봅니다)
  • cutplan_check 가 실제로 "10.0점 통과"를 출력했는지 화면을 직접 봅니다
  • 헤드라인 두 줄이 합쳐 14자 이하인지 내가 직접 글자 수를 셉니다

대본 구조 — 2328줄, 2분2분 30초

순서줄 수내용
1 훅1아이의 엉뚱하거나 절실한 질문
2 반응2어른 한 줄, 친구 한 줄 — 살짝 틀린 추측이면 더 좋음
3 전환1「같이 볼까요?」(나레이터)
4 핵심1~2원리 한 문장
5 키워드3~6키워드 하나에 한 줄 「키워드. 한 줄 뜻.」 + 사이사이 아이·친구 리액션
6 반전1~2흔한 오해 바로잡기 / 조심할 점
7 복습2키워드 나열 「A, B, C. 다 ○○.」
8 콜백11번 질문에 대한 아이의 한 줄 답

규칙

  • 줄 앞에 화자 태그 [[child]] [[adult]] [[friend]] (목소리 선택용, 자막에는 안 나감). 태그 없는 줄은 나레이터입니다.
  • 한 줄 = 한 문장~두 문장, 7초 이내. 어려운 말은 바로 다음 줄에서 아이 말로 풀어줍니다.
  • 밝고 안전하게: 무섭거나 어두운 묘사, 의료·성적·등급 약속은 쓰지 않습니다.
  • JSON 한 줄 형식: {"ch": 0, "i": 7, "text": "굴절. 빛이 물방울에서 휘어져요.", "g": 7} (i 와 g 는 같은 줄 번호).

카드

5번 키워드 줄에는 화면에 뜨는 카드를 답니다. script_v2.cards 배열에 추가합니다.

{ "line": 7, "title": "마그마", "subtitle": "땅속 녹은 돌이에요" }

컷 계획 — PLANS 블록

(이 블록은 프롬프트 7-2·7-3 으로 클로드가 씁니다. 아래는 클로드가 무엇을 어떻게 쓰는지, 내가 결과에서 무엇을 확인할지 알려 주는 설명입니다.)

scripts/top10_plan.py 를 열어 def build 바로 위에 PLANS['volcano'] = dict(new={...}, map={...}, thumb=TH(...)) 블록을 추가합니다. PLANS['rainbow'](4강에서 쓴 예시 블록)를 복사해서 고치는 게 가장 빠릅니다.

new — 컷 10~12개

  • 사람이 나오는 컷은 scene(), 사물만 보이는 컷은 diagram() 함수를 씁니다.
  • 사람은 반드시 {C2} {MP} {DP} {F2} {GRM} {TEACH} 로만 씁니다. "a boy", "children" 같이 직접 쓰면 검사에서 떨어지고, 통과해도 컷마다 다른 사람이 나옵니다. 상수만 쓰고 직접 묘사하지 않습니다.
  • 한 컷 = 한 동작 + 한 장소. 카메라는 "gentle slow push in" 정도. 6초에 다 보여야 합니다.
  • 금지: 어두운 말(dark, night, scary…), 사물 위 글자·로고·간판(Flow 가 가짜 글자를 그립니다), 사람 수 애매한 표현(many children).
'Nvo_ask': scene(f"{C2} pointing at a small clay volcano model asking {MP} with wide curious eyes, in a bright clay classroom."),
'Nvo_magma': diagram("glowing warm orange clay magma bubbling gently inside a cutaway of a clay mountain, bright pastel colors."),

map — 대본 줄 1..N 전부에 컷 키

이웃한 줄이 같은 컷을 써도 됩니다. 「같이 볼까요?」·핵심 원리 줄은 diagram 컷이 어울립니다. 줄마다 1:'Nvo_ask', 2:'Nvo_mom', … 처럼 적거나, 연속된 줄은 dict.fromkeys 로 몰아 쓸 수 있습니다.

map={**dict.fromkeys(range(1,3), 'Nvo_ask'), **dict.fromkeys(range(5,7), 'Nvo_magma'), ...}

thumb=TH(...) — 썸네일 3종

TH(a_flow, a_head, panel, b_flow, b_head, doc, c_flow, c_bg, c_head) 순서로 9개 인자를 줍니다.

  • a: 아이 미디엄샷(오른쪽에 배치) — 헤드라인 두 줄, 합쳐 14자 이하, 둘째 줄(빨간 박스) 폰트 120px 이상: [['화산은', 88, 'WHT'], ['왜 터져?', 150, 'BOX']]
  • b: 어른이 문서·물건을 든 모습({LT} 로 왼쪽 배치), panel 은 키워드 두 줄 ['화산', '땅속의 비밀', 'right'], doc 은 {'title': '과학 관찰 일기', 'rows': [3줄], 'hl': 강조줄}
  • c: 얼굴 클로즈업, c_bg 는 단색 문구("bright sunny yellow")

값들은 상수만 조합하고 {C2} 같은 상수를 직접 새로운 인물 묘사로 바꾸지 않습니다.

한자 편은 옵션 (더 해보기 · 선택)

한자 어원 편을 만들 때만 kit.config.json 의 topic.kind 를 "hanja" 로 바꿉니다. 카드는 ["漢字", "훈음"] 형태, 대본 4번 자리에 「글자 풀이 — …라고 풀어요」 1~2줄이 들어가고, 썸네일 panel 은 ['漢字', '한글음', 'right'] 가 됩니다. examples/sample_episode.json 이 그 예시이고, 나머지 절차는 지금까지와 같습니다.

터미널로도 할 수 있어요

위 프롬프트가 하는 일을 직접 명령으로 치고 싶을 때 보세요. 운영체제 탭(Windows·macOS)에 맞는 명령을 씁니다.

따라하기 1: 새 편 뼈대 만들기
python scripts/new_episode.py volcano --word "화산"
python3 scripts/new_episode.py volcano --word "화산"

data/longform/volcano.json 이 생깁니다. --word 는 이 편의 주제어입니다. 이제 script_v2.lines 를 채웁니다.

🧪 실습

  • data/longform/volcano.json 을 열어 대본을 소리 내어 처음부터 끝까지 읽어 본다 — 7초 안에 읽히지 않는 줄, 어려운 낱말이 풀리지 않은 줄에 표시한다
  • 대본의 사실(화산 폭발 원리)을 믿을 만한 자료(백과사전·교과서)와 하나 이상 직접 대조한다
  • PLANS['volcano'] 의 컷 키와 담당 줄 표에서 줄이 빠지지 않았는지 확인한다
  • 썸네일 헤드라인 글자 수를 세어 14자 이하임을 확인한다
  • cutplan_check 의 "10.0점 통과" 화면을 직접 본다 — 통과 전에는 Flow 로 보내지 않는다(컷 하나 10크레딧)

오늘의 체크리스트

  • data/longform/volcano.json 의 script_v2 가 구조 8단계를 따른다
  • PLANS['volcano'] 를 top10_plan.py 에 추가했다
  • cutplan_check 가 "10.0점 통과"를 출력한다
  • 썸네일 헤드라인이 14자 이하다

다음 강의

8강에서 여러 편을 묶어 제출·다운로드·업로드하는 시리즈 운영 방법을 다룹니다.