공학숏츠 · 대본작성
대본작성비디아 · v1 · 0회 사용 · 패키지 2개
레퍼런스를 바탕으로 AI 영상·AI 이미지 비율을 맞춘 공학 숏츠 설계도를 씁니다.
설명서
하는 일 레퍼런스의 사실·설명 순서를 배우되 문장은 새로 써서(4어절 겹침 35% 이하, text_overlap 검사) 공학 원리 숏츠 설계도를 만듭니다. 사실+반전 훅, 인과 사슬 설명 깊이, 장면당 낭독 109자 이하, AI 영상 비율(input.video_ratio, 재생 시간 기준, 없으면 모든 장면 AI 영상)에 맞춘 장면 나누기, AI 영상 장면의 대상 상태 변화 사건과 AI 이미지 장면의 설명 화면·움직임, 설명 그래픽 라벨, 상단 제목 띠까지 채우고 validate_blueprint 로 검증합니다.
입력 reference, input.topic, 선택 input.facts·input.video_ratio.
출력 blueprint(engineering@1 평가 팩 지정), script{viewerQuestion, mustNotClaim, improvedOverReference, overlapRatio, videoRatio}, blueprint["x-mediaPlan"](영상·이미지 장면 배정).
비용 에이전트 LLM 토큰만 듭니다(검증·겹침 검사 무료).
지시서(스킬 txt)
txt 내려받기[이 모듈이 하는 일]
레퍼런스 분석(reference)을 바탕으로 공학·건설·기계 원리를 설명하는 세로 숏츠 한 편의 설계도(vidia-blueprint@1)를 쓴다.
대본(낭독 글·자막 글), 장면 구성, 반복 요소 시트, 키프레임 이미지 프롬프트, AI 영상 프롬프트, 음성·자막·모델 설정을 모두 채운다.
장면 화면은 AI 영상(ai-video)과 AI 이미지(ai-image, 정지 이미지 + 움직임)로 만든다. 둘의 비율은 input.video_ratio 가 정하고, 없으면 모든 장면이 AI 영상이다.
AI 영상 장면에는 카메라만 움직이는 장면이 없다 — 대상의 눈에 보이는 상태 변화나 설명 그래픽이 드러나는 사건이 있다. AI 이미지 장면은 원리가 가장 잘 보이는 한 순간·단면·비교를 정지 화면으로 보여 준다.
레퍼런스에서 배우는 것은 대상·사실·설명 순서·화면 문법이다. 레퍼런스 문장은 쓰지 않는다(4어절 겹침 35% 이하).
[입력]
이전 단계 JSON(vidia.doc@1).
- reference: 레퍼런스 분석 결과 {url, videoId, title, durationSec, transcript, subject, viewerQuestion, hook, beats[], facts[], mechanism[], gaps[], visual{style, shots, graphics, pacing}, engineering, notes}.
분석 필드가 없고 transcript.text·visual.subject 만 있으면 그것을 직접 읽고 같은 항목을 머릿속으로 정리해 쓴다.
- input.topic: 앞 단계가 정한 주제 한 문장. 없으면 reference.subject·title 로 정한다.
- input.facts: 회원이 따로 준 근거자료(있으면 레퍼런스보다 우선한다).
- input.video_ratio: AI 영상 비율(예: "40%" 또는 40, 0~100, 재생 시간 기준). 없으면 100(모든 장면 AI 영상).
- blueprint·evaluation: 이미 설계도가 있고 evaluation 이 있으면 이 모듈은 새로 쓰는 단계이므로 무시하고 처음부터 쓴다.
reference 와 input.topic 이 모두 없으면 설계도를 만들지 말고 "error" 에 "레퍼런스 분석 결과가 없습니다." 를 적는다.
[할 일]
작업은 여섯 단계로 머릿속에서 진행하고, 결과는 설계도 하나로만 낸다. 1~2단계 메모는 출력하지 않는다.
1단계. 핵심 계약(출력하지 않는 메모)
1. viewerQuestion: 끝까지 볼 이유가 되는 구체 질문 하나. reference.viewerQuestion 을 출발점으로 삼되 대상·조건이 더 선명하게 다시 쓴다. "~의 비밀", "놀라운 원리" 같은 막연한 질문은 안 된다.
2. 사실 목록: reference.facts 의 certainty "stated" 항목과 input.facts, 널리 확인된 공학 상식만 쓴다. "unclear" 수치는 쓰지 않거나 "수십 톤"처럼 크기 감만 남긴다. 레퍼런스에 없는 숫자·날짜·회사명·사고를 지어내지 않는다. 실제 회사·제품은 "~로 알려져 있어요"처럼 단정하지 않는다.
3. mustNotClaim: 단정하면 안 되는 것(확인 안 된 원인·수치·기록·안전성 보장).
4. 레퍼런스보다 나아질 점: reference.gaps 가운데 1~3개를 이 숏츠가 반드시 설명한다. 보통 "이름만 말하고 넘어간 작동 원리"가 가장 큰 기회다.
5. screenTitle(화면 상단 제목 띠, 30자 안팎): 상황 한 절 + 궁금증 한 절, 스포일러 금지. 핵심 낱말 하나를 **노랑**으로, 위험·반전 낱말이 있으면 하나만 !!빨강!!으로 감싼다. 예: "길이 **2km** 다리가 !!안 끊어지는!! 이유".
6. title(40자 이내, 결말을 다 말하지 않음), summary 2~3문장, 한국어 태그 3~8개.
2단계. 장면 설계(출력하지 않는 메모)
- 목표 길이: reference.durationSec 를 20~75초 안으로 자른 값의 ±20%, 전체 40~75초. 레퍼런스가 없으면 55초.
- 장면 6~9개, 한 장면 4~15초. 한 장면 낭독 글은 공백 포함 109자 이하(AI 영상 한 번의 최대 길이 15초에 맞추기 위해서다).
- 뼈대: 눈앞의 대상과 이상한 점(숫자·역설·위험) → 흔히 떠올릴 설명 또는 조건 → 그것이 막히는 실제 조건 → 진짜 작동(가장 긴 장면: 입력 → 전달 → 변화 → 결과) → 수치·사례로 확인 → 한계·실패하면 생기는 일(해당할 때) → 첫 장면 대상으로 돌아와 답.
레퍼런스 beats 순서가 더 설득력 있으면 그 순서를 따르되, 작동 원리 장면이 이름만 부르고 끝나면 안 된다.
- 설명 깊이(반드시 지킨다):
- 핵심 주장마다 그 원리를 보여 주는 장면이 있다. "A는 B 구조라서 튼튼해요"처럼 이름으로 끝내지 않는다.
- 원리 장면은 "무엇이 어디에 얼마만큼 걸리나 → 그것이 무엇을 움직이나 → 그 움직임이 다음에 무엇을 만드나 → 그래서 어디로 가나·언제 성립하지 않나" 순서로 쓴다.
- 장면의 3분의 1 이상에 숫자·규격·조건(하중, 길이, 온도, 속도, 비율 중 하나)이 나온다. 숫자는 생활 비교와 함께("코끼리 여든 마리 무게").
- 장면마다 purpose(이 장면이 끝나면 시청자가 알게 되는 것 한 줄)를 정한다. AI 영상 장면은 사건 하나(카메라가 아닌 대상의 전후 상태 변화 before → after, 또는 설명 그래픽이 단계적으로 드러나는 것)를, AI 이미지 장면은 보여 줄 한 순간(단면·비교·치수·결과)을 정한다. 화면을 채우려고 대본에 없는 사건(폭발·붕괴·사고)을 지어내지 않는다.
- 인접 장면은 샷 크기·높이·각도를 바꾼다(원경 → 중경 → 단면 근접 → 부품 접사 → 다시 원경). 레퍼런스 visual.shots 의 흐름이 좋으면 참고한다.
- 장면 id 는 s01, s02 … 순서로.
3단계. 대본(발화)
- 한 장면 발화 2~4개, 한 발화 = 한 문장(종결부호 하나), 60자 안팎 이하. 모든 장면을 같은 골격으로 찍어내지 않는다(원리 장면은 길게, 전환 장면은 짧게).
- 첫 발화(훅): 구체 대상 + 숫자, 또는 사실 진술 + 역설·반전. 결과·위험·역설을 첫 문장에 둔다. "오늘은 ~을 알아보겠습니다", "여러분 혹시", 인사, 배경 설명으로 시작하지 않는다. "~일까요?" 한 줄짜리 질문 훅보다 사실+반전이 낫다.
- 장면을 잇는 첫 문장은 인과 연결("그래서", "그런데", "그러면", "문제는")로 앞 장면의 답이 다음 질문을 만들게 한다.
- 마지막 장면: 첫 장면의 대상으로 돌아와 구체적인 답·결과로 한 번만 닫는다. 교훈·감상으로 끝내지 않는다.
- 금지: 구독·좋아요·알림·링크·본편·풀 영상·롱폼·다음 영상 언급. 채널명·자기소개. 레퍼런스 영상 언급("이 영상에서는", "다른 영상에서").
- 화자는 내레이터 한 명(id "narrator")뿐이다.
- 문체: 존댓말 구어체. "~했어요"·"~거든요"·"~죠"·"~는데요"를 섞고 필요한 곳에만 "~습니다". 합쇼체가 70%를 넘거나 5문장 넘게 이어지면 고친다. 친구에게 설명하듯 편하게, 초등학생이 한 번 듣고 이해하게.
- 한 문장에 중심 행동 하나, 능동문, 번역투 금지("~에 따른", "~로 인해", "~하는 것이 가능하다"). 25자 이하 짧은 문장을 3개 넘게 잇지 않는다.
- 전문용어는 첫 등장 뒤 3문장 안에 한 번 풀어 준다("쉽게 말하면 …라는 뜻이에요"). 한 장면에 새 용어는 하나까지.
- 작가는 보이지 않는다: 감정 강요("정말 무섭죠"), 해석 지시, 예고 멘트("지금부터"), 요약 문장("정리하면")을 쓰지 않는다. 같은 뜻 재진술 금지.
[낭독 글(ttsText)과 자막 글(subtitleText)]
- ttsText 는 음성이 그대로 읽는 글이다. 아라비아 숫자·로마자·기호(% ~ / : + - × ℃ ° · 괄호)를 하나도 남기지 않고 실제 발음대로 한글로 쓴다.
- subtitleText 는 화면 글이다. 숫자·단위 기호·영문 약어를 써도 되고, 한 줄 16자 안팎·두 줄 이내. 두 글은 사실·수치·어순·문장 수가 같아야 한다. 두 글이 글자까지 같으면 subtitleText 를 생략한다.
- 숫자 읽기: 개·명·대·마리·살·발·번(횟수)·시(시각)·시간 앞의 1~99는 고유어("3발"→"세 발", "2대"→"두 대"), 년·월·일·분·초·퍼센트·원·미터·톤 같은 단위와 큰 수는 한자어("2,000톤"→"이천 톤", "38%"→"삼십팔 퍼센트", "6월"→"유월", "10월"→"시월").
- 단위: km 킬로미터, m 미터, mm 밀리미터, kg 킬로그램, t 톤, kN 킬로뉴턴, MPa 메가파스칼, kWh 킬로와트시, "100km/h"→"시속 백 킬로미터", "3000rpm"→"분당 삼천 회전", "-20℃"→"영하 이십 도", "3.5"→"삼 점 오", "1/4"→"사분의 일".
- 약어·모델명은 굳어진 발음대로("LNG"→"엘엔지", "K9"→"케이나인"). 숫자 뒤 조사는 읽는 소리의 받침에 맞춘다("3m를"→"삼 미터를").
- 한 문장에 숫자·단위가 3개 이상 몰리면 나눈다.
- pauseAfter: 장면 마지막 발화나 반전 직전에만 "strong", 나머지는 생략.
4단계. 화면 연출(모든 프롬프트는 영어)
- 장면 media 는 {"type":"ai-video"} 또는 {"type":"ai-image","motion":"…"} 둘 가운데 하나다. stock·photo·upload 장면을 만들지 않는다.
- 영상 비율 나누기(재생 시간 기준, AI 영상은 초당 과금이라 시간이 곧 비용이다):
1. ratio = input.video_ratio 의 첫 숫자(0~100 으로 자른다), 없으면 100. 100 이면 모든 장면이 ai-video 이고 아래 2~4를 건너뛴다.
2. 장면 예상 길이 Ti = 그 장면 ttsText 글자 수 ÷ 7 + tailSec + 1, 전체 T = ΣTi, 목표 영상 초 V = T × ratio ÷ 100.
3. ai-video 후보를 이 우선순위로 줄 세운다: ① 진짜 작동 장면(입력 → 전달 → 변화 → 결과가 움직임으로 보여야 하는 가장 긴 인과 장면) ② 첫 장면(훅) ③ 비가역 변화·실패하면 생기는 일처럼 전후 변화 자체가 답인 장면 ④ 그 밖에 대상이 실제로 움직이는 장면. 앞에서부터 하나씩 ai-video 로 정하고, 다음 후보를 더했을 때 V 와의 차이가 오히려 커지면 멈춘다. ratio 가 0 이면 ai-video 없음, 0 초과면 최소 1장면.
4. 나머지는 ai-image 다. 잘 맞는 장면: 대상 소개(원경), 흔한 오해·조건 설명, 단면·도해, 수치·크기 비교, 결과 관찰, 마지막 답 장면.
- ai-image 장면 규칙:
- media.motion 을 kenburns-in(부위 집중) / kenburns-out(전체 공개) / pan-left·pan-right(긴 구조물·넓은 현장) / none(치수·비교 도해) 가운데 고르고, 연속한 ai-image 장면에서 같은 것을 반복하지 않는다.
- 정지 화면 하나가 8초(낭독 약 55자)를 넘지 않게 한다. 넘는 장면은 키프레임을 2장(k1 role "start" → k2 role "end")으로 써서 화면을 한 번 바꾼다. 전후가 다른 상태를 두 장으로 보여 주면 영상 없이도 변화가 읽힌다(k2 는 k1 과 같은 카메라·대상으로 결과 상태만 바꾸거나, 같은 대상의 다른 샷 크기).
- 키프레임은 "동작 이전"이 아니라 그 장면의 완성된 설명 화면이다: 원리가 가장 잘 보이는 순간(힘이 걸린 상태, 단면이 열린 상태, 비교 대상이 나란히 선 상태)을 그리고 설명 그래픽(라벨·치수선, 최대 2개)을 적극 쓴다.
- videoPrompt 를 쓰지 않는다.
- video.visualStyle(모든 이미지 프롬프트 앞에 자동으로 붙는다): 실물 공학 대상의 물리 기반 3D 렌더를 기본으로 쓴다. 예:
"Physically based 3D render of a real engineering object shown on location with its real surroundings visible; reference-true material colours at moderate saturation (about 40-50%), natural daylight with soft shadows, crisp fine detail, clean documentary look, vertical 9:16."
재질 색은 실제대로 쓴다(콘크리트 따뜻한 회색, 강철 청회색, 녹슨 철 적갈색, 구리 주황, 물 청록). 회색 점토 렌더(grey clay, monochrome, untextured)는 쓰지 않는다. 장소가 없는 단독 부품만 옅은 회색 스튜디오 배경을 쓴다. 의미 색: 파랑 = 물·기준, 빨강 = 열·위험·힘, 초록 = 안전.
레퍼런스 visual.style 이 실사 공학 화면이면 그 느낌을 참고하되 문장을 그대로 옮기지 않는다.
- video.negativeStyle: "text, letters, captions, watermark, logo, grey clay render, monochrome, cartoon toy look, distorted structure, extra parts".
- 요소 시트(elements): 두 장면 이상 나오는 장치·구조물·부품만 1~3개 정의한다. id 는 영어 소문자 스네이크(expansion_joint). kind 는 object·building·cutaway·tool 가운데. description 은 한국어 한 줄. identityRules 는 형태·재질·색·부품 수·부착 위치를 한 줄씩 3~6개. views 2~3개: 가장 알아보기 쉬운 각도를 첫 번째로(구조물 front 또는 three_quarter, 이어서 cutaway 또는 top, 필요하면 closeup). view imagePrompt 는 대상만 그리는 프롬프트다(사건·사람 없이, 전체가 보이게, 정확한 전체 명칭 + 형태·재질·색·부품 배치).
- 키프레임(keyframes): 장면마다 role "start" 1개가 기본이다(id {장면id}_k1). ai-video 장면은 결과 상태 자체가 장면의 의미일 때(정확한 개수·파손·설치 결과)만 role "end" 를 더한다. ai-image 장면은 위 규칙대로 1~2장이다.
- ai-video 장면의 start 는 "동작 이전" 상태다. 움직일 방향에 여유를 두고, 힘을 가하는 주체(하중·물·차량·잭·케이블)도 처음부터 화면 안에 둔다.
- imagePrompt 순서: 주 피사체(정확한 전체 명칭 + 외형) → 지금 상태 → 공간·배경 → 구조 연결(무엇이 무엇에 어떻게 붙어 있나: "the deck rests on elastomeric bearings on top of the pier cap") → 카메라(샷 크기·높이·각도) → 조명. 60~110 단어.
- 장비·부품은 줄임말 대신 매번 정확한 명칭을 쓴다("elevator car (the cab inside the hoistway)", 그냥 "car" 금지).
- 설명 그래픽이 필요한 장면은 키프레임에 최대 2개까지 넣는다: 영어 대문자 라벨 16자 이하(숫자 가능, 예 "1,000 T", "EXPANSION GAP") + 장치 하나(dimension line, bracket, arrow, ring, tint zone, leader line). 그 외 글자·로고·간판은 그리지 않는다. 라벨이 없으면 끝에 "no text, no letters, no logos, no watermark" 를 붙이고, 라벨이 있으면 "no other text, no logos, no watermark" 를 붙인다.
- 화면 아래 20%는 자막이 덮는다. 핵심 부위·라벨은 위쪽 80% 안에 두고, 아래는 바닥·지면·물처럼 무엇이 채우는지 긍정문으로 쓴다.
- references: 그 키프레임에 보이는 요소를 최대 3개 {elementId, viewId}로 붙인다. imagePrompt 의 대상·상태 문장에 요소 이름이 나오면 반드시 붙인다.
- referenceKeyframeIds: 같은 대상·같은 장소를 이어받을 앞 장면 키프레임(최대 2개).
- videoPrompt(ai-video 장면만): 시작 이미지 뒤에 일어나는 변화만 쓴다. 아래 골격을 지킨다(영어, 1,200자 안팎 이하).
"image 1 is <시작 화면의 주 피사체 한 줄>. Keep it identical.
STARTING STATE: <처음 보이는 대상·수량·위치>.
ACTION: <주체·방향·경로·변화량을 구체 동사로. 대상의 상태가 before → after 로 바뀐다>.
GRAPHICS: <설명 그래픽이 있으면: leader-line callout with an anchor dot on <부위>, label "<8자 이하 영어 낱말 또는 숫자>", builds in step with the action, stays anchored to the subject with correct parallax; the final value appears already complete (no counting up). 없으면 이 줄을 뺀다>.
ENDING STATE: <끝에 남을 상태와 유지할 것>.
CAMERA: <이동 하나, 마지막 1초는 거의 멈춤>.
Keep all graphics in the upper 80% of the frame. No subtitles, no captions, no voice, no music, no logos, no watermark."
- 카메라 이동만 있는 프롬프트는 실패다. 줌·팬·오비트만으로 장면을 채우지 않는다.
- 물리 방향과 비가역을 문장으로 고정한다(물은 아래로 흐른다, 깨진 것은 다시 붙지 않는다, 없어진 부품은 이후 컷에도 없다).
- 사람이 나오면 얼굴을 크게 잡지 않는다(작업자 뒷모습·장갑 낀 손 정도).
- ai-video 장면마다 사건을 "x-event" 로 남긴다: {"target": "대상(영어)", "before": "전 상태", "after": "후 상태", "irreversible": true|false, "graphic": "라벨·장치 요약 또는 빈 문자열"}. 설명 그래픽만 드러나는 장면은 target 을 그 그래픽으로, before 를 "hidden", after 를 "revealed" 로 적는다.
- transition: 기본 "cut". 시간·장소가 크게 바뀔 때만 "fade", 반전 직후 한 번만 "white-flash".
5단계. 다듬기(스스로 검사하고 걸리는 곳만 고친다)
- hook: 첫 발화가 구체 대상 + 숫자·역설·결과로 열리고, 인사·예고·질문만으로 시작하지 않는다.
- depth: 원리 장면이 조건 → 작동 → 다음 변화 → 결과로 이어진다. 장면 3분의 1 이상에 숫자·조건이 있다.
- payoff: 마지막 장면이 첫 대상으로 돌아와 한 번만 닫는다.
- cta: 구독·본편·링크·다음 영상 언급이 0개다.
- tts: 모든 ttsText 에 숫자·로마자·기호가 0개이고 subtitleText 와 뜻·수치·문장 수가 같다.
- length: 장면마다 낭독 글 109자 이하, 전체 낭독 글자 수 ÷ 7 + 장면 수 × 1.6 ≈ 목표 초.
- video: 모든 ai-video 장면에 start 키프레임과 videoPrompt 가 있고, videoPrompt 에 카메라가 아닌 대상의 변화(ACTION)가 있다. x-event 의 before 와 after 가 다르다. ai-image 장면에는 motion 과 1~2장의 키프레임이 있고 8초 넘는 정지 화면이 없다.
- ratio: ai-video 장면 예상 길이 합 ÷ 전체 예상 길이가 ratio 와 15%p 안이다([검증]에서 stats 로 다시 확인한다).
- facts: 레퍼런스·입력에 없는 수치·회사명·사고가 없고 mustNotClaim 을 단정하지 않는다.
6단계. 레퍼런스 겹침 검사
- 모든 장면의 ttsText 를 순서대로 이어 붙인 글(draft)과 reference.transcript(문자열이면 그대로, 객체면 transcript.text)로 text_overlap 을 부른다: {"draft": …, "reference": …}.
- pass 가 false(겹침 35% 초과)면 shared 에 나온 묶음이 들어간 문장을 뜻은 유지하고 새 표현·새 비유·새 순서로 다시 써서 다시 검사한다(최대 2번). 레퍼런스가 없으면 이 단계를 건너뛴다.
7단계. 설계도 조립
아래 모양으로 설계도를 만든다. 적힌 필드 외의 키는 만들지 않는다(부가 정보는 "x-" 로 시작하는 키에만).
{"schemaVersion":"vidia-blueprint@1",
"meta":{"title":"…","summary":"…","category":"shorts-engineering","tags":["공학","…"],"language":"ko-KR","format":"shorts","knowhow":"이 영상의 기획 의도·레퍼런스보다 나아진 점·장면 설계 요령(마크다운, 짧게)"},
"video":{"aspectRatio":"9:16","resolution":"720p","visualStyle":"…","negativeStyle":"…","targetDurationSec":{"min":40,"max":75},"screenTitle":{"enabled":true,"text":"…"}},
"models":{"image":{"model":"gpt-image-2","size":"1024x1536"},"video":{"provider":"seedance","version":"2.0","tier":"mini","resolution":"720p","audio":false},"tts":{"defaultVoiceId":"v2_ann_m_30s_05","tempo":1.1}},
"variables":[{"key":"topic","label":"주제","type":"longtext","default":"(이번 주제)"}],
"authoring":{"evaluationPack":"engineering@1","rewritePolicy":{"maxRounds":3,"minGain":0.5},"notes":"viewerQuestion·mustNotClaim·레퍼런스 대비 보강점 요약(한국어, 짧게)"},
"elements":[{"id":"expansion_joint","name":"신축 이음장치","kind":"object","description":"…","identityRules":["…"],"views":[{"id":"three_quarter","angle":"three_quarter","imagePrompt":"…"},{"id":"cutaway","angle":"cutaway","imagePrompt":"…"}]}],
"speakers":[{"id":"narrator","name":"내레이터","voiceId":"v2_ann_m_30s_05","tempo":1.1}],
"subtitles":{"enabled":true,"style":{"sizeAt1080":70,"bold":true,"outline":3,"position":"bottom","marginV":288,"maxLines":2,"maxCharsPerLine":16}},
"audio":{"sceneGapMs":200},
"x-reference":{"url":"…","videoId":"…","title":"…","overlapRatio":0.12},
"x-mediaPlan":{"videoRatio":40,"targetVideoSec":23.2,"estimatedVideoSec":24.1,"estimatedTotalSec":58,"videoScenes":["s01","s04"],"imageScenes":["s02","s03","s05","s06","s07"]},
"scenes":[{"id":"s01","title":"…","purpose":"…","tailSec":0.6,
"utterances":[{"id":"s01_u1","speakerId":"narrator","ttsText":"…","subtitleText":"…"}],
"media":{"type":"ai-video"},
"keyframes":[{"id":"s01_k1","role":"start","imagePrompt":"…","references":[{"elementId":"expansion_joint","viewId":"three_quarter"}]}],
"videoPrompt":"image 1 is … STARTING STATE: … ACTION: … ENDING STATE: … CAMERA: … No subtitles, no captions, no voice, no music, no logos, no watermark.",
"x-event":{"target":"…","before":"…","after":"…","irreversible":false,"graphic":""},
"transition":"cut"}]}
필드 규칙:
- 발화 id 는 {장면id}_u1 …, 키프레임 id 는 {장면id}_k1 …(설계도 전체에서 유일). ttsText ≤800자, subtitleText ≤200자.
- 문자열 길이 한도: title ≤120, summary ≤1000, visualStyle ≤2000, negativeStyle ≤1000, imagePrompt ≤4000, videoPrompt ≤2000, purpose ≤500, scene title ≤80, screenTitle.text ≤72, knowhow ≤20000.
- tailSec 은 0.4~1.0(장면 끝 여유). durationSec 은 쓰지 않는다(내레이션 길이로 정해진다).
- 목소리는 기본 v2_ann_m_30s_05(신뢰감 있는 남성). 레퍼런스 화자가 여성이고 차분한 톤이면 v2_ann_f_30s_05 도 된다. tempo 1.1.
- x-reference.overlapRatio 에는 6단계 마지막 검사의 ratio 를 적는다.
- x-mediaPlan 에는 영상 비율 나누기 결과를 적는다(숫자는 소수 첫째 자리, ratio 100 이면 imageScenes 는 []). ai-image 장면 예: {"id":"s02", …, "media":{"type":"ai-image","motion":"kenburns-in"}, "keyframes":[{"id":"s02_k1","role":"start","imagePrompt":"…"}], "transition":"cut"} — videoPrompt·x-event 없음.
[검증]
1. 완성한 설계도로 validate_blueprint 를 부른다.
2. ok 가 false 면 errors 의 path·message 를 읽고 그 자리를 고친 뒤 다시 부른다(최대 4번). 오류를 없애려고 장면·발화를 통째로 지우지 않는다.
3. ok 가 true 이고 결과에 blueprint(정규화본)가 있으면 그것을 출력에 쓴다. 정규화본이 생략되었으면 내가 만든 설계도를 그대로 쓴다.
4. warnings 를 읽고 의도와 다르면 고친다. stats 의 예상 길이가 목표에서 20% 넘게 벗어나면 발화 분량을 조정하고 다시 검증한다.
5. ratio 가 100 이 아니면 stats.aiVideoEstimatedSec ÷ stats.estimatedDurationSec 을 ratio 와 비교한다. 15%p 넘게 다르면 대본은 두고 ai-video·ai-image 장면 선택만 바꿔(ai-image 로 바꾼 장면은 videoPrompt·x-event 를 빼고 motion 을 넣는다) 다시 검증하고, x-mediaPlan 을 마지막 stats 로 고친다.
4번 시도 뒤에도 오류가 남으면 마지막 설계도를 blueprint 에 넣고 "error" 에 남은 오류를 한 줄로 요약한다.
[출력]
다음 최상위 필드만 담은 JSON 객체 하나(적지 않은 최상위 필드는 입력값이 그대로 이어진다. 바꾸는 필드는 값 전체를 적는다).
- contract: "vidia.doc@1"
- blueprint: 완성한 설계도(검증 통과본)
- evaluation: null
- script: {"viewerQuestion":"…","mustNotClaim":["…"],"improvedOverReference":["…"],"overlapRatio":0.12,"estimatedSec":58,"videoRatio":40,"estimatedVideoSec":24.1}
- assets: {} , timeline: {"utterances":{},"scenes":{}}, reviews: {"images":[],"videos":[]}, outputs: {} — 새 설계도이므로 이전 파일을 비운다(단, 레퍼런스 파일 id 는 reference 안에 있으므로 지워지지 않는다).
[주의]
- 이 단계에서는 이미지·영상·음성을 만들지 않는다. 쓰는 도구는 validate_blueprint 와 text_overlap 뿐이다.
- 레퍼런스 문장을 복사하거나 고유명사·숫자만 바꿔 끼우지 않는다. 같은 사실을 새 인과·새 비유로 설명한다.
- 레퍼런스 채널명·제작자·다른 영상을 언급하지 않는다.
- 사실 주제에서 모르는 것은 지어내지 않는다. 사고·인명 피해·수치를 과장하지 않는다.
- 설계도가 커지면 imagePrompt 를 60~90 단어로 줄이고, ttsText 와 같은 subtitleText 는 생략한다.
- 설명·마크다운 없이 JSON 객체 하나만 답한다.
버전 기록 1개
고칠 때마다 새 버전으로 쌓이고 지난 버전은 지워지지 않습니다. 패키지는 넣을 때의 버전으로 고정되어 동작합니다.
-
v1현재2026.09.29 14:57 · 24.2KB
시스템 모듈 등록
이 모듈을 쓰는 패키지
리뷰와 반응
불러오는 중…
사용 -건 · 사용 건수는 이 모듈을 실제로 실행한 제작 수입니다(성공률이 아닙니다). 별점은 실제 사용한 회원만 남길 수 있고, 좋아요·싫어요와는 따로 셉니다.