Finance Story
금융 아이디어를 짧은 애니메이션 스토리로 전달합니다. 하나의 귀여운 비유 세계(예: 점수판이 센섹스인 교실)가 전체 설명을 담당합니다. 내레이터가 이야기를 들려주고, 모든 비트는 음성에 맞춰집니다. 이것은 story-animator 파이프라인입니다. 그러므로 ~/.claude/skills/story-animator/SKILL.md와 그 references/를 먼저 읽고 따르세요. 이 스킬은 그 위에 금융 릴에 대한 사용자 선호도를 추가합니다.
먼저 브랜드 가이드를 읽으세요. /Users/sohambhattacharya/Documents/Personal/projects/story-animator/brand/BRAND.md를 쓰기 전에 읽으세요. 음성(간단하고 인간적이며, em-dash나 세미콜론, 격식 없는 표현 없음), 8비트 스토리 공식, 팔레트, 폰트, 안전 영역, 자막 형식 및 **SEBI 안전 규칙(섹션 7)**을 설정합니다. 이 파일과 다른 부분이 있으면 가이드가 우선합니다. 릴 템플릿(커버, 훅 카드, 텍스트 라인, 큰 숫자, 실제 용어, 엔드 카드)은 brand/studio/src/templates/reel.tsx에 있습니다. 해당 비트에 이를 복사하거나 가져오고, finance-social 스킬을 사용하여 릴 커버를 렌더링하세요.
승인된 참조 영화(2026-11-04, "이건 좋았음")는 examples/sensex-classroom/ (Film.tsx, story.ts, audio_cues.json)에 있습니다. 새 영화를 만들기 전에 읽으세요. 비유 세계, 점수판, 콩 캐릭터, 토큰, 9:16 카메라, 클로징 카드를 보여줍니다.
사용자 선호도 (피드백 기반)
-
진행자 없음. 호스트나 화면 하단에 말하는 캐릭터를 절대 그리지 마세요. 사용자는 이전 "finance-reel" 진행자 스타일과 모든 규칙(Zara 음성, Hinglish, 화면당 하나의 숫자 최소화)을 폐기했습니다. 요청하지 않는 한 다시 가져오지 마세요.
-
Story-animator 스타일. 부드럽고 평평한 동화책 만화 세계, 귀여운 캐릭터(둥근 콩 몸체,
Face를 통한 큰 눈), 하나의 따뜻한 광원, 부드러운 카메라 움직임, Patrick Hand 자막. 색상이 이야기를 전달합니다: 좋은 시기에는 따뜻함, "우울한" 시기에는 회색-파랑, 전환점에서 다시 따뜻함. -
전체 영화에 하나의 비유 세계. 모든 개념을 그 세계의 무언가에 매핑하세요:
- 지수는 벽에 있는 점수판이나 칠판이며, 실제 숫자를 보여줍니다.
- 회사는 학생이고, 큰 회사는 더 큰 학생입니다.
- 외국 자금(FPI)은 창문 밖으로 날아가고 다시 들어오는 종이비행기입니다.
- 유가는 책상 위의 통으로, 유가가 싸지면 줄어듭니다. 스토리 형태를 유지하세요: 설정 → 문제(무언가 우울함) → 전환("그런데... 두 가지가 바뀌었습니다") → 해결(숫자가 올라감) → 한 줄 요약. 떠났다가 돌아오는 토큰 객체 하나를 선택하세요(종이비행기).
-
언어 및 음성: 영어 내레이션, 음성 Rameez | Documentary Narrator (
RG0hCuGFvl2jxhd4LmtU, 인도-영어 억양), 모델eleven_v4, 2테이크. 약어는 점을 찍어 표기(F.P.I.s)하고 숫자는 단어로 씁니다("twelve hundred and twenty-five"). 가벼운 태그만 사용하세요:[excited],[curious],[warm, storytelling],[softly],[building],[brightly],[delighted],[warmly]. 두 테이크 모두--model medium으로 받아쓰고 모든 단어를 말하는 테이크를 유지하세요. 릴 #1에서 테이크 B는 "investors" 대신 "industries"라고 말했습니다. -
형태 및 길이: 9:16, 60초 (
durationFrames: 1800). Rameez는 초당 약 2.7단어를 말합니다: 132단어가 49.5초를 차지했습니다. 따라서 음성으로 60초를 채우려면 약 150~155단어를 쓰세요. 그렇지 않으면 마지막 약 10초는 음악에 맞춘 환호 + 클로징 카드가 되며, 사용자가 이를 수락했습니다. -
정직한 숫자. 모든 수치는 웹 검색(시장 데이터의 경우 확장 모드, 2개 이상의 출처)으로 사실을 확인하세요. 실제 수치(지수 종가, 변동 포인트)를 점수판에 표시하고, 출처가 일치하지 않는 수치는 표시하지 마세요(릴 #1의 Brent 가격). 출처를 사용자에게 링크와 함께 나열하세요. 시장 데이터(센섹스, 니프티, 주가)는 최근 또는 과거일 수 있지만, 두 개 이상의 출처로 확인되고 정확한 날짜가 포함되어야 합니다 (사용자가 규칙 변경, 2026-11-05). 경제 수치(기준금리, CPI, GDP)는 최신 공식 수치와 날짜를 사용하세요. 모든 숫자는 릴 폴더의
sources.md에 저장하세요(BRAND.md 7.3). -
클로징 카드 (마지막 약 7초): 개념을 한 줄로("센섹스: 인도 30대 기업의 학급 평균"), 관련 한 줄 요약, 그 다음 "교육 목적으로만 제공됩니다. 투자 조언이 아닙니다." 및 날짜가 포함된 수치/출처 줄. 실제 회사 로고는 사용하지 마세요.
-
사운드: 음악 + 3개의 미묘한 효과음(부드러운 종이비행기 스윗, 가벼운 동전 떨어지는 소리, 밝고 부드러운 차임), 각각 키워드 직후에 배치합니다. 음악:
eleven_music_v2_5, 1테이크, 장난기 있는 피치카토와 마림바, 스토리를 따라가는 호(우울한 부분에서 하강, 전환에서 팽창, 해결에서 즐거운 상승). 믹스는 음악gain_db약 −3.5,sfx_bus_db−13. 이렇게 하면 배경이 Rameez 아래 16.8dB가 됩니다; -9에서는 너무 조용했습니다(22dB). -
저장 및 공유 엔딩 (모든 릴). 내레이터의 마지막 줄은 시청자에게 릴을 저장하고 공유할 것을 요청하며 finance.unboring을 언급합니다. 주제에 맞게 조정하세요. 예: "도움이 되셨나요? 다음에 누군가 '센섹스가 올랐어'라고 말할 때를 위해 저장하고, 아직 이해하지 못한 친구와 공유하세요. finance dot unboring을 팔로우하세요." 내레이션에서는 핸들을 "finance dot unboring"으로 작성하여 정확히 발음되도록 하고, 클로징 카드에는 @finance.unboring으로 개념 줄 아래, 면책 조항 위에 표시합니다. 이 줄을 약 150단어 예산에 포함시키세요.
-
디자인된 커버 (모든 릴, 2026-11-07 규칙). 릴의 프레임을 커버로 절대 제공하지 마세요. 프레임은 피드에서 매력적으로 보이지 않으며 열어볼 이유를 제공하지 않습니다. 모든 릴은 자체 1080×1920 커버와 함께 제공되며, (a) 주제를 명시하고, (b) 릴이 실제로 답하는 질문이나 격차로 시청자를 궁금하게 만들며, (c) Mini의 반응과 이 주제에 맞게 그려진 그래픽을 보여줍니다. 금색 단어 하나, 헤드라인 최대 5단어, 모든 것은 3:4 중간 영역 안에 있어야 합니다(BRAND.md 5.1).
워크플로우: 두 개의 게이트, 승인 전에는 지출 없음
사용자가 입력을 제공합니다: 가르칠 개념, 훅 아이디어, 스토리 각도 (그리고 선택적으로 뉴스 항목).
게이트 1: 제안 (메시지 하나, 크레딧 소모 없음)
- 모든 수치를 사실 확인하세요(WebSearch 확장, 2개 이상의 출처).
- 사용자가 확인할 수 있도록 네 부분으로 구성된 하나의 메시지를 보내세요:
- 대본: 세 문장으로 된 주요 줄거리, 토큰, 전체 내레이션(약 150단어). 내레이션은 저장 및 공유 줄로 끝납니다(아래 규칙 9).
- 음성: 제안된 음성(기본 Rameez,
RG0hCuGFvl2jxhd4LmtU)과creative_list_voices의 무료preview_url, 그리고 주제가 다른 느낌을 암시하는 경우 1~2개의 대안과 미리보기 링크. - 스토리보드: 비트 표 (# / 내레이션 줄 / 보이는 것 / 카메라), 클로징 카드 포함.
- 커버: 주제 태그, 호기심 유발 헤드라인(금색 단어 표시), Mini와 아트가 하는 일. 또한 출처와 비용(내레이션 약 1,800크레딧(2테이크 기준), 음악 900, 효과 각각 약 17, 총 약 2,750)을 나열하세요.
- 멈추고 기다리세요. 사용자가 네 부분을 모두 확인할 때까지 크레딧을 사용하거나 렌더링하지 마세요. 사용자가 무언가를 변경하면 수정된 부분을 다시 보내고 다시 기다리세요.
게이트 2: 제작 (사용자 확인 후)
- 프로젝트:
cp -R ~/.claude/skills/story-animator/template ./<slug>을 다른 프로젝트 옆에 실행하고,npm install하고, 기존 faster-whisper venv를 재사용하거나(ln -s ../sensex-class-average/.venv .venv) 새로 만드세요.SHAPES["9:16"]를 설정하세요. - 음성 → 타이밍 →
story.ts(SUBS,CUES,CAM), story-animator 단계 4-5 참고. - 그리기: 비유가 적합할 때
examples/sensex-classroom/Film.tsx에서 시작하고, 그 조각들(Room, WindowPane, SunShaft, Board, Bean, Desk, Plane +arcAt, Confetti, Card)을 재사용하세요. 그렇지 않으면 같은 스타일로 새 세계를 만드세요. - 콘택트 시트를 모든 비트에서 만들고 다음을 수정하세요:
- 9:16에서 피사체를 자막 위에 유지하세요. 와이드 샷의 카메라
cy는 세계 y 478–790의 행에서 약 560이었습니다. cy 520에서는 자막이 앞줄에 위치했습니다. - 프레임의 절반을 절대 비워 두지 마세요. 칠판 클로즈업에서는 캐릭터를 그 아래에 계속 보이게 유지하세요(항상 화면에 있으며, 갑자기 나타나는 대신 큐에 맞춰 "안녕" 반동을 합니다).
- 9:16에서 보이는 세계는 약 607/z × 1080/z입니다. "50명" 순간에는 z ≈ 0.58로 당기세요.
- 9:16에서 피사체를 자막 위에 유지하세요. 와이드 샷의 카메라
- 커버: 릴 프로젝트 자체 세계와 캐릭터로 그리거나,
brand/studio/src/templates/reel.tsx의ReelCover를 새 아트로 확장하세요.out/cover.png로 렌더링하세요. 3:4 크롭과 작은 폰 피드 크기(약 360px 너비)를 확인하세요: 주제와 헤드라인이 여전히 읽혀야 합니다. - 사운드 → 믹스 → 렌더링 →
ffprobe(1080×1920, h264 + aac, 60초). 릴과 커버를 보내세요. 음성, 소모된 크레딧, 측정된 항목, 출처를 보고하세요. 사용자에게 한 번 시청하고 들어보라고 요청하세요.
출력 후: 설명 (항상, 같은 전달 메시지에서)
릴은 Instagram(Reels)과 YouTube(Shorts)의 @finance.unboring에서 게시됩니다. 완성된 릴과 함께 코드 블록에 붙여넣을 수 있는 텍스트를 제공하세요:
- Instagram 캡션: 훅 라인; 3
5줄의 간단한 설명; 저장-공유 + @finance.unboring 팔로우 줄; "데이터: <출처, 날짜>. 교육 목적으로만 제공됩니다. 투자 조언이 아닙니다."; 35개의 해시태그 (#financeunboring 포함) (Instagram 게시물 제한 5개). BRAND.md 섹션 6의 정확한 템플릿을 따르세요. - YouTube Shorts 제목: 70자 미만, #Shorts로 끝나야 함.
- YouTube 설명: 2
3줄의 설명, @finance.unboring 팔로우, 출처, 면책 조항, 46개의 해시태그.