/minara-videoscript — Minara 비디오 스크립트
스크립트만 작성하며, 애니메이션은 포함하지 않습니다. 결과물은 하나의 마크다운 스크립트 문서와 정지 키프레임 이미지 폴더입니다. 운영자가 승인하면 다음 하위 스킬로 전달됩니다:
| 비디오 유형 | 하위 스킬 |
|---|---|
| 마케팅/런치/데모 영상 (코드로 그림 구성, UI 재구성 가능) | minara-video |
| 사용 사례/초보자 튜토리얼 (UI를 충실히 재구성) | minara-usecase-video |
| 운영자 자신의 화면 녹화에 자막+나레이션 오버레이 | minara-guide-video |
| 녹음된 나레이션을 잘라서 나레이션 트랙에 배치 | minara-voiceover (키프레임 시트의 Voiceover 및 Time 열을 읽음) |
| 음악/사운드 효과 | minara-music (이 문서의 음악 섹션 및 사운드 큐를 읽음) |
구조: 단일 장면 보충은 하나의 source.html에서 58개의 키프레임을 추출합니다. 전체 영화는 보통 610개의 장면으로 구성됩니다. 새 스크립트는 영어로만 작성합니다.
핵심 단위: 키프레임
스크립트는 키프레임의 시퀀스입니다. 키프레임은 시청자가 반드시 봐야 하는 순간의 정지 이미지 하나이며, 그 주변에서 일어나는 모든 내용이 옆에 기록됩니다. 모든 키프레임은 동일한 7개의 필드를 포함합니다:
| 필드 | 내용 |
|---|---|
| 이미지 | . 출처 태그: UI 코드 / Figma / AIGC. |
| 시간 | 정지 이미지가 나타내는 타임코드(40.5s)와 해당 범위(39.8–41.6s). |
| 지속 시간 | 해당 범위의 길이(초) (정지 + 이전 동작). |
| 그림 | 화면에 무엇이 있고 무엇이 움직이는지, 순서대로. 카메라 무브(있는 경우). |
| 나레이션 | 이 범위에서 말하는 대사, 또는 —. |
| 화면 텍스트 (花字) | 정확한 텍스트, 스타일, 위치, in/out 시간. 또는 —. 아래 규칙 참조. |
| 음악 | 이 범위의 BGM 에너지 + 정확한 시간의 사운드 큐. |
대략적인 기준: 영화 2~4초당 하나의 키프레임, 장면당 최소 하나. 무언가가 완료된 프레임(프롬프트가 입력된, 차트가 그려진, 알림이 도착한)을 선택하고, 동작 중간의 블러는 피합니다.
언어: 영어만 사용 (운영자, 2026-10-19)
- 스크립트 문서의 모든 내용은 영어로 작성: 제목, 메모, 흐름표, 키프레임 필드, 나레이션, 화면 텍스트, UI 복사본, 음악 노트, 미해결 질문. 중국어 번역 행, "中文对照" 열, 다른 언어는 없습니다. 키프레임 이미지 내의 텍스트에도 동일하게 적용됩니다.
- UI 복사본은 영어 제품 UI에 나타나는 대로 정확하게 인용합니다.
- 운영자는 중국어로 브리핑할 수 있습니다. 의미를 영어 스크립트로 번역합니다. 중국어로 작성하는 경우 채팅에서 중국어로 대화합니다. 문서만 영어입니다.
어조: 차분하고, 중립적이며, 자연스럽게
스크립트는 모델이 쓴 것이 아니라 사람이 쓴 것처럼 읽혀야 합니다. 차분하고 중립적으로: 무슨 일이 일어나는지 진술하고, 제품이 전달하도록 합니다.
- 모든 나레이션 대사를 소리 내어 읽어보세요. 광고, 슬로건 생성기 또는 보도 자료처럼 들리면 다시 작성하세요. 동료에게 말하지 않을 표현이라면 삭제하세요.
- 평범한 동사, 짧은 문장, 현재 시제. 축약형 사용 가능 (
it's,you'll). 레지스터 예시:Just ask./Backtest it./Minara builds the workflow./Then it keeps watching. - 중립적, 흥분하지 않음: 과장 형용사 없음, 느낌표 없음, 모두 대문자 없음, 이모지 없음.
- 금지 단어: exciting, powerful, seamless(ly), effortless(ly), revolutionary, game-changing, unlock, unleash, elevate, supercharge, empower, cutting-edge, next-level, robust, leverage, harness, journey, landscape, delve, transform(ative), "at your fingertips".
- 금지된 AI 패턴:
- "Not just X, but Y" / "It's not X. It's Y."
- 리듬을 위한 세 가지 나열 ("faster, smarter, safer")
- "Imagine…", "What if…", "In a world where…", "Say goodbye to…", "Meet your new…"
- 갈고리 역할을 하는 수사학적 질문
- 콜론 또는 대시 공개 ("One thing changed: everything.")
- 가짜 깊이를 추가하는 후행 -ing 절 ("…, giving you full control.")
- 중요성 부풀리기 ("a pivotal moment", "redefines how…")
- 전체 패턴 목록: AI 작성 패턴 목록 (예: Wikipedia "Signs of AI writing"). 전달하기 전에 모든 나레이션 대사와 모든 화면 텍스트를 이 목록과 대조하세요.
- 이익 약속 없음 ("guaranteed", "risk-free"). 백테스트 또는 수익이 나타나면 위험 경고 줄을 표시하세요 (예:
Past performance does not guarantee future results.). - 출처 자료에 없는 사실은 ⚠️로 표시하고 "미해결 질문"에 추가하세요. 지어내지 마세요.
워크플로우
- 입력 수집: 브리프, 스크린샷, 프론트엔드 코드 경로, Figma 링크, 기능 노트, 기존 컷, 음악 참고 자료(있는 경우). 추론할 수 없는 항목만 한 번에 하나의 결합된 질문으로 요청: 길이, 가로/세로, 플랫폼 (X / Discord / 웹사이트), 나레이션 유무, 영화 내 위치, 음악 분위기(운영자가 생각하는 것이 있는 경우).
- 프레젠테이션 선택 사항을 문서 상단에 고정하여 변경되지 않도록 함: 예시 케이스, 표면 (데스크탑/앱/웹), 시간대, 표시되지 않는 것. 아래 주제 규칙에 따라 케이스를 선택합니다.
- 먼저 텍스트를 초안 작성: 섹션 1 (전달할 내용), 사용자 흐름 및 UI 복사본, 장면 목록(타이밍 포함), 키프레임 목록(IDs, 시간, 그림, 나레이션, 화면 텍스트, 음악). 아직 이미지는 없음. 이렇게 하면 이미지 작업이 스토리를 주도하는 것을 방지합니다.
- 아래 경로를 사용하여 키프레임 이미지 생성,
docs/keyframes/<topic>/K1.png …에 저장. UI 프레임이 먼저 (무료이고 정확함); 크레딧이 소모되는 AIGC 프레임 전에 먼저 문의. - 문서 작성을 프로젝트의
docs/에 저장 (단일 장면:NN-script-scene-N-<topic>.md; 전체 영화:NN-script-<slug>.md).docs/가 없으면 프로젝트 루트. 링크하기 전에 모든 키프레임 PNG를 열고 Picture 필드와 대조 확인. - 아래 체크리스트로 자체 점검. 나레이션 단어 수와 타이밍을 계산하고, 추정하지 마세요.
- 운영자에게 전송: 파일 경로와 3~5줄 (길이, 장면 수, 소스별 키프레임 수, 나레이션 단어 수/실행 시간 비율, 한 줄의 음악 방향, 미해결 질문 수). 운영자는 스크립트를 편집하고 키프레임을 표시하며, 코드를 편집하지 않습니다. 승인 전에 애니메이션 없음. 정지 이미지는 승인 전에도 허용되지만, 움직임은 허용되지 않습니다.
- 승인 후: 전달. 하위 스킬은 이 문서의 키프레임 시간을 기반으로 초당 스크립트를 확장하며, 아무것도 다시 작성되지 않습니다.
minara-music은 Music 섹션에서cues.json을 빌드합니다. 검토 위원회를 위해minara-video의assets/storyboard-template.html에서storyboard.html을 생성합니다. AIGC 키프레임은 해당 AIGC 행에 매핑됩니다.
키프레임 이미지 만들기
세 가지 경로. 먼저 맞는 것을 사용하십시오. 스크립트는 혼합할 수 있으며, 각 키프레임은 사용된 경로를 명시합니다.
경로 A — UI 코드 (제품 UI인 경우 기본값)
프레임이 HTML로 그려지므로 복사본이 정확하고 프레임을 나중에 애니메이션에서 재사용할 수 있습니다.
assets/keyframes-source-template.html을docs/keyframes/<topic>/source.html로 복사합니다. 키프레임당 하나의<section class="k" id="K1">;?k=K1은 해당 프레임을 표시합니다.- 실제 UI에서 각 프레임 채우기: 프론트엔드 코드(컴포넌트, i18n 문자열) 또는 기존 HyperFrames 구성에서 복사본, 데이터 및 구조를 가져옵니다. 크게 다시 그리기: 본문 ≥28px, 제목 ≥48px, 주요 숫자 80–140px, 화면당 3–5개 요소, Geist만 사용, Minara 팔레트 (
#F2F2F2스테이지,#15171A/#222222/#FFFFFFUI,#B0B0B0보조, 녹색#07B56A상승/성공 전용, 빨간색#F75D5F하락 전용), 그라데이션 없음, 오른쪽 하단에 "Illustrative data". - 화면 텍스트(花字)를 프레임에 그려서 운영자가 실제 레이아웃을 검토할 수 있도록 합니다.
- 캡처:
출력은 2560×1440 (~/.claude/skills/minara-videoscript/scripts/shoot_keyframes.sh \ docs/keyframes/<topic>/source.html docs/keyframes/<topic> landscape K1 K2 K3portrait: 1440×2560)으로 2K 전달과 일치합니다. 스크립트는#k1도 전달하므로 이전 V2 소스 페이지(해시 선택)도 작동합니다. - 애니메이션이 이미 존재하고 키프레임이 그 안의 순간인 경우: 다시 그리는 대신 구성을 찾습니다. 프로젝트의 테스트 페이지에서
?t=<seconds>또는npm run snapshot -- <t1>,<t2>를 사용한 다음 PNG를K<n>.png로 복사합니다.
경로 B — Figma
디자인이 Figma에 프레임이 있는 경우(아직 코드에 없는 새 화면, 캠페인 레이아웃).
- 링크에서
fileKey및nodeId를 가져옵니다 (node-id=1-2→1:2).get_design_context전에 Figma 디자인-투-코드 지침을 로드합니다. get_screenshot을maxDimension: 2560으로 사용한 다음 curl로 URL을 다운로드하여docs/keyframes/<topic>/K<n>.png에 저장합니다.get_design_context/get_variable_defs를 사용하여 UI 복사본 테이블을 위한 정확한 복사본과 토큰을 가져옵니다.- Figma 프레임이 조밀한 데스크탑 화면인 경우 참조 전용입니다: 경로 A를 통해 크게 다시 빌드하고 소스로
Figma → UI 코드를 기록합니다.
경로 C — 스크린샷에서 AIGC
제품 UI가 아닌 프레임용: 오프닝 이미지, 은유, 휴대폰을 사용하는 사람, 환경, 분위기 샷. 제품 UI 또는 실제 복사본이나 숫자가 있는 항목에는 절대 사용하지 마십시오. 이러한 항목은 A 또는 B를 통해 처리합니다.
- 먼저 물어보십시오. 이미지 생성은 크레딧을 소모합니다 (Figma
generate_image는 Figma AI 크레딧 사용; Weave 모델은 견적 비용과 명시적 승인이 필요). 어떤 프레임, 어떤 모델, 비용을 말한 다음 기다립니다. - 도구가 허용하는 경우 모델에 스크린샷 또는 경로 A 프레임을 참조로 제공합니다. 그렇지 않으면 프롬프트에서 참조를 설명합니다.
- 프롬프트 규칙: 16:9 (또는 9:16), Minara 팔레트를 단어로 설명 (밝은 회색 스테이지, 거의 검은색 UI, 흰색, 성공에만 녹색), 깨끗하고 미니멀, 부드러운 일광, 그라데이션 없음, 보라색-분홍색-주황색 없음, 이미지에 텍스트, 문자, 숫자 또는 로고 없음 (모델이 왜곡함; 텍스트는 코드에서 추가), 밈 이미지 없음, 실제 인물의 초상이나 다른 브랜드 없음.
K<n>.png로 저장하고 정확한 프롬프트, 모델, 참조 이미지 및 날짜를docs/keyframes/<topic>/prompts.md에 기록하여 프레임을 재생성하거나 AIGC 샷을 만드는 동료에게 전달할 수 있도록 합니다.- 결과를 엽니다. 잘못된 텍스트, 잘못된 손, 잘못된 색상 또는 재고 AI 아트처럼 보이는 것은 거부합니다. 다시 생성하거나 경로 A 레이아웃으로 대체합니다.
화면 텍스트 (花字)
화면 텍스트는 UI 자체의 일부가 아닌 그림 위에 배치되는 모든 텍스트입니다: 캡션 라인, 제목, 주요 숫자, 종료 CTA.
-
허용: (1) 나레이션 대사 또는 그 일부(캡션 또는 강조); (2) 실제 UI 복사본을 꺼내서 확대한 것; (3) 운영자가 요청한 제목, 주요 숫자 또는 CTA. 그 외에는 없음. 주석 단어, 레이블 벽, 떠다니는 키워드 또는 기능 태그 없음. 개념을 설명해야 하는 경우 그림과 동작으로 보여줍니다.
-
나레이션 규칙 적용: 차분하고, 평범하며, 금지 단어 없음, 느낌표 없음, 문장 케이스.
-
각 항목을 다음과 같이 작성:
"Just ask."· 64px / 700 ·#15171A· 창 위 왼쪽 상단 · 12.4s에 in, 14.0s에 out · minaraSnap으로 24px 상승. -
선택할 스타일 (하나의 영화에서 일관성 유지):
스타일 사용 사양 캡션 나레이션 대사를 텍스트로 표시 40–48px / 500, 하단 중앙, 어두운 배경에 흰색 또는 밝은 배경에 #15171A, 상자 없음헤드라인 제목 또는 장면의 한 가지 주장 64–96px / 700, tracking −0.02em, 왼쪽 정렬 주요 숫자 샷의 요점인 숫자 120–200px / 700, 표 형식 숫자; 녹색/빨간색은 손익인 경우에만 CTA 종료 카드 56–72px / 700 + 제품 이름 또는 URL -
모션: minaraSnap으로 in (0.6–0.9s, 작은 상승 또는 0.96에서 스케일), ≤0.3s 페이드로 out. 각 항목은 소리내어 읽는 데 걸리는 최소 시간 이상 유지 (0.4s/단어, 최소 1.2s).
-
이모지 없음, 그라데이션 채우기 없음, 광택 없음, 윤곽선 또는 3D 텍스트 없음, 모두 대문자 없음.
음악 (BGM 스타일 및 사운드 큐)
문서는 minara-music에 필요한 모든 것을 제공하므로 음악은 스크립트와 함께 결정되며, 이후가 아닙니다.
- 영화 수준 브리프 (한 블록): 템포 (BPM, 기본값 120), 키 (기본값 A 단조; 밝은 곡의 경우 C 장조), 느낌을 1~2줄로 평범하게 설명 (
소프트 일렉트로닉, 따뜻한 패드, 가벼운 플럭 아르페지오, 보컬 없음.), 피해야 할 것 (EDM 드롭 없음, 트레일러 히트 없음, 로파이 크래클 없음, 보컬 컵 없음), 운영자가 제공한 경우 참조 트랙. 라이선스 트랙은 운영자만 제공합니다. - 키프레임별 에너지:
silent / intro / light / build / full / breakdown / climax / outro중 하나 (minara-music용어), 그리고 분위기에 대한 몇 마디. 에너지는 스토리를 따릅니다: 제품 이름 또는 런치 주장은climax; 개인정보 보호 또는 보안 비트는breakdown; 종료 카드는outro. - 사운드 큐: 가시적인 동작에만 사용되며 각각 정확한 시간 포함:
tap 35.0s,typing 32.1–34.6s (cps 18),success 45.0s,notify 45.2s,whoosh 47.3s,thud 43.2s,bell 0.4s. 유형은minara-musicsfx 목록입니다. - 나레이션이 있으면 음악이 덕킹됩니다. 나레이션이 있을 때 브리프에
duck under VO라고 말합니다.
스크립트 문서 템플릿
# 스크립트 | <주제>: <한 줄 요약> ← 전체 영화: "스크립트 | <영화 이름>"
> <장면 N / 전체 영화>의 현재 단일 스크립트.
> 목적: <장면 N 교체, XX–XXs / 새 영화>. 기존 컷은 이 스크립트가 승인될 때까지 변경되지 않습니다.
> 출처: <프론트엔드 코드 경로 / Figma 링크 / 스크린샷 경로 / 제품 문서>. ⚠️로 표시된 항목은 출처에 없으며 제품 확인이 필요합니다.
> **프레젠테이션 (고정)**: <케이스; 표면; 시간대; 표시되지 않는 것; 후속 질문 단계 유무>.
> **출력**: <2560×1440 또는 1440×2560>, 60fps. 키프레임: `docs/keyframes/<topic>/` (출처: `source.html`, AIGC 프롬프트: `prompts.md`).
## 1. 이것이 전달해야 할 내용
1. <시청자가 가장 먼저 기억해야 할 것>
2. … (최대 4개; 각각은 최소 하나의 키프레임에 매핑)
## 2. 사용자 흐름 및 UI 복사본
| 단계 | 사용자 동작 | UI 복사본 (정확) | 출처 |
(출처 = 코드 경로 / Figma 노드 / 스크린샷; 데모 프롬프트는 "(demo)"로 표시)
## 3. 키프레임 시트 (<총>s<, XX–XXs 교체>)
| 키 | 시간 | 지속 | 장면 | 그림 (짧게) | 나레이션 | 화면 텍스트 | 음악 | 이미지 출처 |
|---|---|---|---|---|---|---|---|---|
| K1 | 0.0–2.4s | 2.4s | S1 | 아바타가 중앙에 착지 | — | — | intro · bell 0.4s | UI 코드 |
(행당 하나의 키프레임; 범위는 연속적이며 합계가 총 시간이 됩니다. 이것은 하위 스킬이 읽는 테이블입니다.)
## 4. 장면 및 키프레임
### <장면 ID> | <장면 제목>
…
체크리스트 (자체 점검용)
전달하기 전에 다음을 확인하십시오:
| 확인 사항 | 방법 |
|---|---|
| 모든 출처 입력이 수집되었고, ⚠️ 항목이 표시됨 | 소스 링크, 스크린샷, 코드 경로 확인 |
| 프레젠테이션 선택 사항이 문서 상단에 고정됨 | 케이스, 표면, 시간대 등 확인 |
| 나레이션 대사에 금지 단어/패턴 없음 | 금지 목록과 대조, 소리내어 읽기 |
| 화면 텍스트에 금지 단어/패턴 없음 | 동일한 대조 |
| 모든 키프레임 이미지가 존재하고 Picture 필드와 일치 | 각 PNG 열어서 확인 |
| 이미지 출처 태그가 정확함 (UI 코드 / Figma / AIGC) | 태그 확인 |
| 키프레임 시간이 연속적이고 합계가 총 시간과 일치 | 계산 |
| 나레이션 단어 수가 예산/런타임에 맞음 | 단어 수 계산, 0.4s/단어 가정 |
| 음악 방향이 일관되고 에너지가 스토리 아크를 따름 | climax, breakdown, outro 등 확인 |
| 사운드 큐가 정확한 시간에 표시됨 | 각 시간 확인 (예: tap 35.0s) |
| UI 복사본이 제품 UI에 정확히 일치 | 프론트엔드 코드 / Figma와 대조 |
| 사용자 흐름이 완전하고 논리적임 | 각 단계가 다음으로 이어지는지 확인 |
| "Open questions" 섹션이 사실이 아닌 모든 내용을 포함 | ⚠️ 항목 확인 |
| 문서가 운영자에게 전송될 준비가 됨 (요약 줄 포함) | 3~5줄 요약 준비 |
예시 워크플로우: 단일 장면 보충 스크립트 (5~8 키프레임)
- 운영자가 말함: "Backtesting 페이지에 대한 보충 비디오 스크립트를 작성해 주세요. 몇 가지 스크린샷이 있습니다."
- 당신이 질문: "길이는 얼마나 되나요? 가로인가요 세로인가요? 나레이션이 있나요?"
- 운영자 응답: "15초, 가로, 나레이션 있음."
source.html에서 6개의 키프레임 초안 작성 (스크린샷에서 UI 복사본으로).shoot_keyframes.sh로 이미지 캡처.NN-script-scene-N-backtesting.md문서 작성.- 체크리스트 실행.
- 운영자에게 전송:
docs/04-script-scene-4-backtesting.md— 15초, 1 장면, 6 키프레임 (UI 코드), 45 나레이션 단어 (60% 런타임), 미니멀 일렉트로닉 음악, 2개의 미해결 질문.
일반적인 함정
- 출처를 추측하지 마십시오. 모든 UI 복사본은 실제 코드 또는 Figma와 대조하십시오. 확실하지 않으면 ⚠️를 추가하고 "Open questions"에 넣으십시오.
- 이미지 먼저? 텍스트 초안을 먼저 작성하십시오. 이미지는 나중에. 텍스트가 스토리를 주도해야 합니다.
- AIGC 남용하지 마십시오. UI 프레임에는 비싸고 덜 정확합니다. 실제로 비 UI 순간에만 사용하십시오.
- 모든 나레이션 대사를 소리내어 읽으십시오. 페이지에서 괜찮게 보여도 말로 들리면 나쁠 수 있습니다.
- 키프레임 이미지를 최종 문서에 링크하기 전에 확인하십시오. Picture 필드와 일치하는지 확인하십시오.
예시 키프레임 테이블 행
| 키 | 시간 | 지속 | 장면 | 그림 (짧게) | 나레이션 | 화면 텍스트 | 음악 | 이미지 출처 |
|---|---|---|---|---|---|---|---|---|
| K1 | 0.0–2.4s | 2.4s | S1 | 아바타가 중앙 빈 공간에 나타남 | — | — | intro · bell 0.4s | UI 코드 |
| K2 | 2.4–5.0s | 2.6s | S1 | 프롬프트가 입력됨 (1 char/10 f) | Just ask. | "Just ask." · 48px / 500 · 하단 중앙 · in 3.0s, out 4.8s · 0.6s 상승 | build · typing 2.5–4.8s (cps 18) | UI 코드 |
| K3 | 5.0–8.2s | 3.2s | S2 | 백테스트 결과 차트가 나타남. 카메라는 차트로 푸시 인. | Minara backtests the strategy. | — | climax · success 7.0s | UI 코드 |
| K4 | 8.2–11.0s | 2.8s | S2 | 통계가 아래에 표시됨. 수익률 강조 표시. 30% 수익률. | It shows you the stats. | "30%" · 140px / 700 · 초록색 #07B56A · 왼쪽 중앙 · in 8.8s, out 10.6s · 0.9s 스케일 0.96 | full | UI 코드 |
| K5 | 11.0–13.5s | 2.5s | S3 | 화면이 확대되어 'Backtest again' 버튼을 보여줌. | Try another one. | "Backtest again" · 40px / 500 · 버튼 위 · in 11.5s, out 13.0s | light | UI 코드 |
| K6 | 13.5–15.0s | 1.5s | S3 | 앱 로고와 'Try Minara'가 있는 종료 화면. | — | "Minara" + "Try it" · 각각 72px / 700 · 중앙 · in 13.8s, out 15.0s | outro · bell 14.5s | UI 코드 |
문제 해결
| 문제 | 해결 방법 |
|---|---|
shoot_keyframes.sh 실패 | source.html이 올바른 형식인지 확인. 템플릿을 다시 복사하여 시작. |
| 이미지 품질이 낮음 | 해상도가 2560×1440인지 확인. 더 큰 글꼴 크기로 다시 그리기. |
| Figma 링크가 작동하지 않음 | 올바른 fileKey와 nodeId 확인. Figma에서 링크를 다시 복사. |
| AIGC 이미지에 텍스트가 포함됨 | 텍스트가 없는 다른 모델로 재생성하거나 재시도. 필요시 경로 A로 대체. |
| 나레이션 단어 수가 예산을 초과함 | 대사를 단축하거나 운영자에게 예산 재협의 요청. |
| 키프레임 시간이 중복됨 | 범위가 연속적인지 확인. 겹치는 시간 수정. |
