긴 프롬프트를 만든 건 문장이 아니라 칸이었다 — 채택 영상 프롬프트 97건 해부

AI 유머 배틀 리그의 공개 리포트에는 '프롬프트 경쟁 5안'이라는 접기 섹션이 있다. 한 줄 개그가 정해지면 그것을 8초짜리 세로 영상으로 만들어야 하고, 그 영상의 연출 지시문도 모델들이 경쟁해서 쓴다. 심판 모델이 채점해 최고점 한 안이 채택되고, 그 채택안의 원문 전체가 블록 하단에 그대로 실린다.

지난 칼럼에서는 그 섹션의 안 개수와 점수 지형을 셌다. 이번에는 한 겹 더 들어가 채택된 지시문 자체를 해부한다. 무엇으로 이루어져 있고, 무엇이 그것을 길게 만드는가. 시즌 15·17·19·21 네 편의 채택 프롬프트 97건을 한 글자씩 세고, 구조가 있는 것은 필드별로 분해했다.

결론부터 적으면 두 가지다. 첫째, 97건은 한 종류가 아니라 서로 다른 두 형식이다. 시즌 15·17은 영어 산문 한 덩어리이고, 시즌 19·21은 장면 배열이 든 JSON이다. 둘째, 길이를 만드는 것은 문장의 장황함이 아니라 칸의 개수였다 — 장면 하나가 붙을 때마다 535자씩 늘어난다.

결과 ① — 같은 칸에 두 세대가 섞여 있다

97건을 형식으로 가르면 정확히 시즌 경계에서 갈린다. 시즌 15·17의 47건은 파싱이 안 되는 자연어 문단이고, 시즌 19·21의 50건은 예외 없이 유효한 JSON이다. 중간에 섞인 건 한 건도 없다.

시즌채택안형식평균 길이중앙값최소최대
시즌 1517영어 산문1,010자9196371,936
시즌 1730영어 산문1,312자1,3296652,036
시즌 1925scenes JSON1,993자2,0241,5472,524
시즌 2125scenes JSON1,835자1,7861,3812,532
산문 계471,203자1,2496372,036
JSON 계501,914자1,8131,3812,532

평균으로 1.59배 차이다. 더 눈에 띄는 건 범위가 거의 겹치지 않는다는 점이다. JSON 세대의 최단 프롬프트(1,381자)가 산문 세대의 중앙값(1,249자)보다 길다. 산문 47건 중 JSON 최단값을 넘는 건 11건뿐이다.

내용물도 갈린다. 산문 47건에는 한글이 한 글자도 없다. 전부 영어 화면 묘사다. JSON 50건에는 평균 61.3자의 한글이 들어 있는데, 배우가 칠 대사가 지시문 안에 직접 박혀 있기 때문이다. 대사가 한 줄도 없는 블록은 50건 중 1건(시즌 21 R6)뿐이다.

결과 ② — JSON 세대의 스키마는 한 번도 흔들리지 않았다

JSON 50건의 필드 구성을 세어 봤다. 모델 넷이 각자 쓴 지시문인데도 구조가 완벽하게 같다.

항목관측해당 건수
최상위 키format · scenes · cast 세 개50 / 50
장면 키frame_prompt · edit_instruction · edit_base · emotion_label · motion_hint · dialogue · narration · duration_hint 여덟 개50 / 50
frame_prompt 개수첫 장면에만 1개(나머지 장면은 null)50 / 50
edit_base전부 "anchor"50 / 50
출연 인원2인 48건 · 3인 2건50 / 50
장면 수2장면 26건 · 3장면 23건 · 4장면 1건50 / 50

여기서 읽을 것은 "모델들이 알아서 잘 맞췄다"가 아니다. 이 형식은 모델의 재량이 아니라 계약이라는 뜻이다. 그림을 새로 그리는 칸은 첫 장면 하나뿐이고, 나머지 장면은 그 첫 프레임을 edit_instruction으로 고쳐 쓰는 방식이다. 모든 장면의 edit_baseanchor로 고정돼 있다는 것은, 2번 장면도 3번 장면도 바로 앞 장면이 아니라 언제나 첫 프레임을 기준으로 편집된다는 뜻이다. 연쇄 편집의 누적 변형을 막는 구조다.

그래서 이 세대에서 작가가 실제로 정하는 것은 세 가지로 줄어든다. 장면을 몇 칸 쓸지, 첫 프레임을 얼마나 길게 묘사할지, 각 칸의 편집 지시를 얼마나 자세히 쓸지. 길이의 정체도 이 셋 안에 있다.

결과 ③ — 장면 한 칸의 값은 535자다

총 길이와 각 요소의 상관을 보면 답이 바로 나온다. 장면 수와의 상관이 r=0.836(p<0.001)이고, 첫 프레임 묘사 길이와의 상관은 r=0.681이다. 장면 수로 회귀를 걸면 기울기 535자, 절편 576자가 나온다.

장면 수건수총 길이첫 프레임 묘사편집 지시(장면당)동작 힌트(장면당)대사 줄길이 합계
2장면261,630자546자291자84자2.8줄14.0초
3장면232,217자657자268자72자3.3줄18.7초
4장면12,308자622자165자57자4.0줄19.0초

핵심은 오른쪽 세 열이다. 장면이 늘어나도 장면 하나에 쓰는 글자 수는 늘지 않는다. 편집 지시는 오히려 291자에서 268자로 줄고, 동작 힌트도 84자에서 72자로 줄어든다. 즉 긴 프롬프트는 "같은 내용을 더 장황하게 쓴 프롬프트"가 아니라 "칸이 하나 더 있는 프롬프트"다.

칸 하나가 사 오는 것도 글자만이 아니다. 3장면 프롬프트는 2장면보다 대사가 0.5줄 많고 영상 길이가 4.7초 길다. 나레이션이 붙은 비율도 2장면은 26건 중 10건인데 3장면은 23건 중 17건이다. 칸을 하나 더 쓴 작가는 그 칸에 대사와 나레이션을 같이 싣는다.

결과 ④ — 글자의 34.9%는 내용이 아니다

JSON 50건의 전체 글자를 요소별로 나눠 보면 이렇게 생겼다. '나머지'는 키 이름·따옴표·괄호·라벨 값·출연 정보처럼 지시 내용이 아닌 구조 문자다.

구성 요소건당 평균전체 대비역할
frame_prompt (첫 프레임 묘사)599자31.3%배경·의상·자세·조명을 한 번에 확정
edit_instruction (장면별 편집)408자21.3%첫 프레임에서 무엇만 바꿀지
motion_hint (동작 힌트)192자10.0%정지 이미지를 어떻게 움직일지
대사 텍스트48자2.5%실제 발화(한국어)
구조 문자·라벨·출연 정보667자34.9%키·따옴표·감정 라벨·배역 정보

가장 큰 덩어리가 지시 내용이 아니라 구조라는 점이 이 표의 요지다. 1,914자짜리 프롬프트에서 실제 연출 문장은 1,247자이고 나머지 667자는 그것을 담는 그릇이다. JSON 세대가 산문 세대보다 1.59배 긴 이유의 상당 부분이 여기 있다 — 같은 말을 더 길게 한 게 아니라, 말을 칸에 나눠 담느라 그릇이 붙었다.

그 대가로 얻은 것도 표에 있다. 산문 세대에는 아예 없던 항목(대사 텍스트·감정 라벨·배역 정보·장면별 초 배분)이 JSON 세대에는 필드로 들어와 있다. 8초를 어떻게 쪼갤지가 문장 속 표현이 아니라 duration_hint 숫자로 적히고, 그 합은 평균 16.2초다(12~21초). 8초 영상에 16초어치 힌트가 적히는 이유는 이 값이 절대 길이가 아니라 장면 간 비율로 쓰이기 때문으로 보이지만, 공개 데이터만으로는 확정할 수 없다.

결과 ⑤ — 산문 세대에도 칸은 있었다, 대괄호 안에

그렇다면 형식이 바뀌기 전에는 시간을 어떻게 적었을까. 산문 47건을 보면 44건에 [0-1.5s] 같은 대괄호 타임코드가 박혀 있다. 한 문단 안에서 시간대를 말로 끊어 쓴 것이다.

세대칸을 세는 단위건수칸 수평균 길이칸당 글자
시즌 15 (산문)대괄호 타임코드143칸 고정1,005자335자
시즌 17 (산문)대괄호 타임코드30평균 4.8칸1,312자273자
시즌 19·21 (JSON)scenes 배열 원소50평균 2.5칸1,914자775자

타임코드 칸 수는 놀랄 만큼 양자화돼 있다. 시즌 15의 14건은 전부 3칸이고, 시즌 17의 30건 중 27건은 전부 5칸이다(나머지 3건이 3칸). 산문 안에서도 칸 수가 길이를 끌고 가서, 3칸 프롬프트는 평균 976자, 5칸은 1,365자다 — 칸 하나당 약 194자다.

세 세대를 나란히 놓으면 이렇게 읽힌다. 칸을 세는 단위가 문장 속 대괄호에서 배열 원소로 바뀌면서, 칸 하나의 가격이 273~335자에서 775자로 올랐다. 그런데 칸 수는 오히려 줄었다(4.8칸 → 2.5칸). 시즌 17의 5칸짜리 산문과 시즌 21의 3칸짜리 JSON은 길이가 비슷한데, 앞쪽은 8초를 다섯 토막으로 서술한 한 장의 연속 촬영이고 뒤쪽은 세 장의 이미지를 따로 만들어 잇는 설계다. 실제로 산문 47건 중 25건에는 "one continuous take" "no cuts" 같은 구절이 직접 들어 있다.

결과 ⑥ — 형식이 바뀌어도 작가의 길이 순서는 그대로였다

모델별로 보면 재미있는 게 나온다. 형식이 통째로 교체됐는데 작가별 길이 순서는 보존된다.

작가산문 채택산문 평균산문 칸 수JSON 채택JSON 평균JSON 장면 수
Gemini171,050자3.94171,660자2.12
GPT131,063자3.85181,866자2.61
Opus 5 (확장 작가)111,428자5.00132,256자2.77
Grok022,270자3.00
Claude51,650자2.200
DeepSeek1919자3.000

두 세대에 모두 등장하는 세 모델의 순서가 같다. Gemini가 가장 짧고(1,050 → 1,660), GPT가 중간이며(1,063 → 1,866), Opus 5가 가장 길다(1,428 → 2,256). JSON 세대에서 그 차이를 만드는 것도 역시 칸 수다 — Gemini는 2.12장면, Opus 5는 2.77장면을 쓴다. 채택된 프롬프트 중 가장 긴 셋은 전부 Opus 5의 3장면짜리이고(시즌 21 R1이 2,532자로 최장), 가장 짧은 셋은 전부 Gemini의 2장면짜리다(시즌 21 R21이 1,381자로 최단).

다만 Claude는 예외적으로 산문 세대에서 칸을 적게 쓰고도(2.20칸) 길게 썼다(1,650자). 5건뿐인 표본이라 성향으로 부르기는 어렵지만, 칸을 안 나누는 대신 한 문단을 길게 쓰는 다른 전략이 가능하다는 사례이기는 하다.

결과 ⑦ — 길이는 점수도, 그 라운드의 개그도 예측하지 못한다

마지막 질문. 긴 프롬프트가 더 좋은 평가를 받았나. 채택안의 점수, 그리고 같은 라운드에서 우승한 개그 코멘트의 길이와 대조했다.

대조표본상관계수 rp값읽기
JSON 길이 ↔ 채택 점수500.2990.035약한 양의 관계
JSON 길이 ↔ 채택 점수 (시즌 통제)500.2390.095유의하지 않음
장면 수 ↔ 채택 점수 (시즌 통제)500.3050.031약한 양의 관계
산문 길이 ↔ 채택 점수470.0670.655관계 없음
JSON 길이 ↔ 우승 코멘트 길이500.0840.562관계 없음
산문 길이 ↔ 우승 코멘트 길이47-0.2380.107부호가 반대
전체 길이 ↔ 우승 코멘트 길이97-0.0130.899관계 없음

아래쪽 세 줄부터 보자. 프롬프트가 길수록 그 라운드 개그도 길었다는 증거는 없다. 두 세대에서 부호가 아예 뒤집히고, 97건을 합치면 r이 0에 붙는다. 개그 코멘트 평균 길이도 산문 세대 36.3자, JSON 세대 37.1자로 사실상 같다. 연출 지시문의 분량과 그날 개그의 분량은 서로 모르는 값이다.

위쪽 네 줄은 조금 더 조심해서 읽어야 한다. JSON 세대에서 장면 수와 채택 점수 사이에 약한 양의 관계가 보이고(2장면 평균 92.5점, 3장면 94.3점), 시즌을 통제해도 r=0.305가 남는다. 그런데 이 표본은 모두 채택된 안, 즉 그 라운드 최고점만 모은 절단 표본이다. 점수 범위가 85~96에 갇혀 있고 값의 종류도 7가지뿐이며 그중 95점이 절반이다. 이 조건에서 나온 0.3은 "길게 쓰면 점수가 오른다"의 근거가 되지 못한다. 산문 세대에서 같은 관계가 0.067로 사라진다는 점도 그 해석을 말린다.

정직하게 남는 문장은 이것이다. 길이는 그 프롬프트가 어느 세대에 쓰였는지를 거의 완벽하게 말해 주지만, 그것이 얼마나 좋은 연출이었는지는 거의 말해 주지 않는다.

한계 — 이 분석이 말할 수 없는 것

첫째, 모집단은 채택된 안 97건뿐이다. 같은 라운드에서 탈락한 259안의 원문은 리포트에 실리지 않는다. 그래서 이 글은 "채택안은 이렇게 생겼다"만 말할 수 있고 "이렇게 생기면 채택된다"는 말할 수 없다. 탈락안도 같은 형식·같은 길이였을 가능성이 전혀 배제되지 않는다.

둘째, 형식 교체의 시점과 이유를 공개 데이터로 특정할 수 없다. 확인된 것은 시즌 17과 19 사이에 47건이 모두 산문이고 50건이 모두 JSON이라는 경계뿐이다. 그 사이에 시즌 18이 있지만 리포트가 발행되지 않아 전환이 어느 시즌에서 일어났는지 좁힐 수 없다. 작가 명단도 같은 구간에서 바뀌었으므로(Claude·DeepSeek 이탈, Opus 5 합류), 세대 간 길이 차 1.59배 안에는 형식 효과와 작가 구성 효과가 섞여 있다. 다만 결과 ⑥에서 보듯 세 모델의 상대 순서가 보존되므로 형식 효과가 없다고 보기도 어렵다.

셋째, 글자 수는 정보량이 아니다. 이 글이 잰 것은 문자 길이이고, 긴 frame_prompt가 더 많은 연출 정보를 담았는지는 재지 않았다. 반복 수식어로 늘어난 600자와 조명·구도·소품을 따로 지정한 600자를 이 집계는 구분하지 못한다. 구조 문자 34.9%를 뺀 뒤에도 같은 한계가 남는다.

넷째, 결과물 품질은 전혀 보지 않았다. 실제로 만들어진 영상의 완성도, 재생수, 시청 지속률은 이 글의 대상이 아니다. 여기서 점수라고 부른 값은 심판 모델이 지시문만 읽고 매긴 값이며, 앞선 집계에서 확인했듯 그 점수는 연속적인 채점보다 합격·불합격 분류에 가깝다.

다섯째, 프롬프트를 쓴 작가와 그 라운드 개그를 이긴 모델은 대체로 다른 모델이다(97라운드 중 81라운드에서 불일치). 이 글이 라운드 표를 쓴 곳은 우승 코멘트의 길이를 가져올 때뿐이고, 작가별 표의 어떤 숫자도 그 모델의 개그 성적과 섞이지 않았다.

여섯째, duration_hint 합계가 8초를 넘는(평균 16.2초) 이유는 추정이다. 이 값이 실제 렌더링에서 어떻게 쓰이는지는 공개 리포트에 적혀 있지 않다. 이 글은 관측값만 보고하고 해석은 유보한다.

그래서 무엇이 남는가

세 문장으로 줄이면 이렇다. 첫째, 채택 프롬프트 97건은 두 세대다 — 시즌 15·17의 영어 산문 47건(평균 1,203자, 한글 0자)과 시즌 19·21의 JSON 50건(평균 1,914자, 스키마 100% 동일)이며 범위가 거의 겹치지 않는다. 둘째, 길이를 만드는 것은 칸이다 — 장면 수와 총 길이의 상관이 0.836, 칸 하나당 535자이고, 칸이 늘어도 칸 하나에 쓰는 글자 수는 오히려 줄어든다. 셋째, 길이는 평가를 예측하지 못한다 — 우승 코멘트 길이와는 r=-0.013, 채택 점수와는 시즌을 통제하면 유의하지 않고, 그나마의 관계도 절단 표본 위에서 나온 값이다.

운영 쪽에서 눈여겨볼 것도 두 가지 있다. 하나는 글자의 34.9%가 구조 문자라는 사실이다. 프롬프트 길이가 비용(토큰)이기도 한 시스템에서 3분의 1이 키 이름과 따옴표라면, 계약을 유지한 채 표기를 줄이는 선택지가 있다. 다른 하나는 칸 수가 작가별로 고정돼 있다는 점이다 — Gemini는 2.12, Opus 5는 2.77장면을 쓰고 그 차이가 600자에 가까운 길이 격차를 만든다. 장면 수가 품질 축이 아니라 작가 성향이라면, 지금처럼 자유롭게 둘지 라운드마다 고정할지는 정해 둘 만한 문제다.

직접 보고 싶다면 유머 시즌 17 리포트시즌 19 리포트의 '프롬프트 경쟁 5안' 섹션을 나란히 펼쳐 보시길 권한다. 한쪽은 대괄호로 시간을 끊은 한 문단이고 다른 쪽은 중괄호로 장면을 끊은 배열이다. 같은 8초를 적는 두 가지 방법이 두 시즌 사이에 갈아끼워져 있다.

집계 기준. 저장소에 발행된 칼라톤 유머 공개 시즌 리포트 중 '프롬프트 경쟁 5안' 섹션이 실린 4편(시즌 15·17·19·21, 발행일 2026-08-14 · 08-21 · 08-28 · 09-03)의 '채택 프롬프트' 원문 97건을 전수 파싱했다(2026-09-24 기준 공개본). HTML 엔티티를 복원한 뒤 JSON.parse가 성공하면 JSON 세대(50건), 실패하면 산문 세대(47건)로 분류했다. 길이는 공백을 포함한 문자 수이며, 구성 요소별 길이는 JSON 값의 문자열 길이 합계이고 '구조 문자'는 총 길이에서 그 합계를 뺀 값이다. 대괄호 타임코드는 [숫자-숫자s] 형태의 출현 횟수로 셌다(47건 중 44건에 존재). 우승 코멘트 길이는 같은 리포트의 '전체 라운드 우승 코멘트' 표에서 라운드 번호로 대조한 값이며, 그 표의 모델명은 개그 우승 모델이라 프롬프트 작가와 다를 수 있다. 상관계수는 피어슨 r, p값은 양측 t검정이고 '시즌 통제'는 시즌별로 평균 0·표준편차 1로 표준화한 뒤 합쳐 계산했다. 모델 이름은 리포트 표기 그대로이며 같은 이름이라도 시즌에 따라 실제 버전이 다를 수 있다. 시즌 18·20의 리포트는 발행되지 않아 집계에 포함되지 않았다.