Communitygithub.com

sohamthebuilder/finance-story

60초 9:16 애니메이션 스토리 릴을 제작합니다. 금융, 은행, 시장 아이디어(센섹스, 니프티, FPI, 기준금리, 인플레이션, EMI, IPO 등)를 만화 비유 세계를 통해 설명하며, ElevenLabs 영어(인도 억양) 내레이터, 배경 음악 및 부드러운 효과음을 포함합니다. 모든 프레임은 Remotion과 story-animator 파이프라인을 사용해 코드로 그려집니다. 진행자는 등장하지 않습니다.

finance-story란 무엇인가요?

이 스킬은 금융 개념을 60초 분량의 매력적인 애니메이션 스토리로 변환합니다. 하나의 일관된 만화 비유 세계(예: 센섹스를 점수판으로 하는 교실)를 사용하여 복잡한 아이디어를 직관적으로 전달합니다. 내레이터(Rameez, 인도 영어 억양)가 이야기를 들려주며, 모든 비트가 음성에 맞춰 정확히 배치됩니다. 이 스킬은 story-animator 파이프라인 위에 구축되므로 먼저 해당 SKILL.md와 참조 파일을 읽고 따라야 합니다. 또한 브랜드 가이드(BRAND.md)를 우선 적용하여 음성, 8비트 스토리 공식, 색상, 폰트, 자막 형식, SEBI 안전 규칙을 준수합니다. 진행자는 사용하지 않으며, 이전 'finance-reel' 스타일(자라 음성, 힌글리시, 화면당 하나의 숫자)은 폐기되었습니다. 작업은 두 단계(제안 → 승인 후 제작)로 진행되며, 승인 전에는 크레딧이 소모되지 않습니다. 모든 수치는 웹 검색을 통해 두 개 이상의 출처로 사실 확인되며, 출처는 `sources.md`에 저장됩니다. Instagram 및 YouTube Shorts 게시를 위한 캡션과 설명도 함께 제공됩니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/sohamthebuilder/insta-studio/tree/HEAD/examples/finance-unboring

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

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 카메라, 클로징 카드를 보여줍니다.

사용자 선호도 (피드백 기반)

  1. 진행자 없음. 호스트나 화면 하단에 말하는 캐릭터를 절대 그리지 마세요. 사용자는 이전 "finance-reel" 진행자 스타일과 모든 규칙(Zara 음성, Hinglish, 화면당 하나의 숫자 최소화)을 폐기했습니다. 요청하지 않는 한 다시 가져오지 마세요.

  2. Story-animator 스타일. 부드럽고 평평한 동화책 만화 세계, 귀여운 캐릭터(둥근 콩 몸체, Face를 통한 큰 눈), 하나의 따뜻한 광원, 부드러운 카메라 움직임, Patrick Hand 자막. 색상이 이야기를 전달합니다: 좋은 시기에는 따뜻함, "우울한" 시기에는 회색-파랑, 전환점에서 다시 따뜻함.

  3. 전체 영화에 하나의 비유 세계. 모든 개념을 그 세계의 무언가에 매핑하세요:

    • 지수는 벽에 있는 점수판이나 칠판이며, 실제 숫자를 보여줍니다.
    • 회사는 학생이고, 큰 회사는 더 큰 학생입니다.
    • 외국 자금(FPI)은 창문 밖으로 날아가고 다시 들어오는 종이비행기입니다.
    • 유가는 책상 위의 통으로, 유가가 싸지면 줄어듭니다. 스토리 형태를 유지하세요: 설정 → 문제(무언가 우울함) → 전환("그런데... 두 가지가 바뀌었습니다") → 해결(숫자가 올라감) → 한 줄 요약. 떠났다가 돌아오는 토큰 객체 하나를 선택하세요(종이비행기).
  4. 언어 및 음성: 영어 내레이션, 음성 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"라고 말했습니다.

  5. 형태 및 길이: 9:16, 60초 (durationFrames: 1800). Rameez는 초당 약 2.7단어를 말합니다: 132단어가 49.5초를 차지했습니다. 따라서 음성으로 60초를 채우려면 약 150~155단어를 쓰세요. 그렇지 않으면 마지막 약 10초는 음악에 맞춘 환호 + 클로징 카드가 되며, 사용자가 이를 수락했습니다.

  6. 정직한 숫자. 모든 수치는 웹 검색(시장 데이터의 경우 확장 모드, 2개 이상의 출처)으로 사실을 확인하세요. 실제 수치(지수 종가, 변동 포인트)를 점수판에 표시하고, 출처가 일치하지 않는 수치는 표시하지 마세요(릴 #1의 Brent 가격). 출처를 사용자에게 링크와 함께 나열하세요. 시장 데이터(센섹스, 니프티, 주가)는 최근 또는 과거일 수 있지만, 두 개 이상의 출처로 확인되고 정확한 날짜가 포함되어야 합니다 (사용자가 규칙 변경, 2026-11-05). 경제 수치(기준금리, CPI, GDP)는 최신 공식 수치와 날짜를 사용하세요. 모든 숫자는 릴 폴더의 sources.md에 저장하세요(BRAND.md 7.3).

  7. 클로징 카드 (마지막 약 7초): 개념을 한 줄로("센섹스: 인도 30대 기업의 학급 평균"), 관련 한 줄 요약, 그 다음 "교육 목적으로만 제공됩니다. 투자 조언이 아닙니다." 및 날짜가 포함된 수치/출처 줄. 실제 회사 로고는 사용하지 마세요.

  8. 사운드: 음악 + 3개의 미묘한 효과음(부드러운 종이비행기 스윗, 가벼운 동전 떨어지는 소리, 밝고 부드러운 차임), 각각 키워드 직후에 배치합니다. 음악: eleven_music_v2_5, 1테이크, 장난기 있는 피치카토와 마림바, 스토리를 따라가는 호(우울한 부분에서 하강, 전환에서 팽창, 해결에서 즐거운 상승). 믹스는 음악 gain_db 약 −3.5, sfx_bus_db −13. 이렇게 하면 배경이 Rameez 아래 16.8dB가 됩니다; -9에서는 너무 조용했습니다(22dB).

  9. 저장 및 공유 엔딩 (모든 릴). 내레이터의 마지막 줄은 시청자에게 릴을 저장하고 공유할 것을 요청하며 finance.unboring을 언급합니다. 주제에 맞게 조정하세요. 예: "도움이 되셨나요? 다음에 누군가 '센섹스가 올랐어'라고 말할 때를 위해 저장하고, 아직 이해하지 못한 친구와 공유하세요. finance dot unboring을 팔로우하세요." 내레이션에서는 핸들을 "finance dot unboring"으로 작성하여 정확히 발음되도록 하고, 클로징 카드에는 @finance.unboring으로 개념 줄 아래, 면책 조항 위에 표시합니다. 이 줄을 약 150단어 예산에 포함시키세요.

  10. 디자인된 커버 (모든 릴, 2026-11-07 규칙). 릴의 프레임을 커버로 절대 제공하지 마세요. 프레임은 피드에서 매력적으로 보이지 않으며 열어볼 이유를 제공하지 않습니다. 모든 릴은 자체 1080×1920 커버와 함께 제공되며, (a) 주제를 명시하고, (b) 릴이 실제로 답하는 질문이나 격차로 시청자를 궁금하게 만들며, (c) Mini의 반응과 이 주제에 맞게 그려진 그래픽을 보여줍니다. 금색 단어 하나, 헤드라인 최대 5단어, 모든 것은 3:4 중간 영역 안에 있어야 합니다(BRAND.md 5.1).

워크플로우: 두 개의 게이트, 승인 전에는 지출 없음

사용자가 입력을 제공합니다: 가르칠 개념, 훅 아이디어, 스토리 각도 (그리고 선택적으로 뉴스 항목).

게이트 1: 제안 (메시지 하나, 크레딧 소모 없음)

  1. 모든 수치를 사실 확인하세요(WebSearch 확장, 2개 이상의 출처).
  2. 사용자가 확인할 수 있도록 네 부분으로 구성된 하나의 메시지를 보내세요:
    • 대본: 세 문장으로 된 주요 줄거리, 토큰, 전체 내레이션(약 150단어). 내레이션은 저장 및 공유 줄로 끝납니다(아래 규칙 9).
    • 음성: 제안된 음성(기본 Rameez, RG0hCuGFvl2jxhd4LmtU)과 creative_list_voices의 무료 preview_url, 그리고 주제가 다른 느낌을 암시하는 경우 1~2개의 대안과 미리보기 링크.
    • 스토리보드: 비트 표 (# / 내레이션 줄 / 보이는 것 / 카메라), 클로징 카드 포함.
    • 커버: 주제 태그, 호기심 유발 헤드라인(금색 단어 표시), Mini와 아트가 하는 일. 또한 출처와 비용(내레이션 약 1,800크레딧(2테이크 기준), 음악 900, 효과 각각 약 17, 총 약 2,750)을 나열하세요.
  3. 멈추고 기다리세요. 사용자가 네 부분을 모두 확인할 때까지 크레딧을 사용하거나 렌더링하지 마세요. 사용자가 무언가를 변경하면 수정된 부분을 다시 보내고 다시 기다리세요.

게이트 2: 제작 (사용자 확인 후)

  1. 프로젝트: cp -R ~/.claude/skills/story-animator/template ./<slug>을 다른 프로젝트 옆에 실행하고, npm install하고, 기존 faster-whisper venv를 재사용하거나(ln -s ../sensex-class-average/.venv .venv) 새로 만드세요. SHAPES["9:16"]를 설정하세요.
  2. 음성 → 타이밍 → story.ts (SUBS, CUES, CAM), story-animator 단계 4-5 참고.
  3. 그리기: 비유가 적합할 때 examples/sensex-classroom/Film.tsx에서 시작하고, 그 조각들(Room, WindowPane, SunShaft, Board, Bean, Desk, Plane + arcAt, Confetti, Card)을 재사용하세요. 그렇지 않으면 같은 스타일로 새 세계를 만드세요.
  4. 콘택트 시트를 모든 비트에서 만들고 다음을 수정하세요:
    • 9:16에서 피사체를 자막 위에 유지하세요. 와이드 샷의 카메라 cy는 세계 y 478–790의 행에서 약 560이었습니다. cy 520에서는 자막이 앞줄에 위치했습니다.
    • 프레임의 절반을 절대 비워 두지 마세요. 칠판 클로즈업에서는 캐릭터를 그 아래에 계속 보이게 유지하세요(항상 화면에 있으며, 갑자기 나타나는 대신 큐에 맞춰 "안녕" 반동을 합니다).
    • 9:16에서 보이는 세계는 약 607/z × 1080/z입니다. "50명" 순간에는 z ≈ 0.58로 당기세요.
  5. 커버: 릴 프로젝트 자체 세계와 캐릭터로 그리거나, brand/studio/src/templates/reel.tsx의 ReelCover를 새 아트로 확장하세요. out/cover.png로 렌더링하세요. 3:4 크롭과 작은 폰 피드 크기(약 360px 너비)를 확인하세요: 주제와 헤드라인이 여전히 읽혀야 합니다.
  6. 사운드 → 믹스 → 렌더링 → ffprobe (1080×1920, h264 + aac, 60초). 릴과 커버를 보내세요. 음성, 소모된 크레딧, 측정된 항목, 출처를 보고하세요. 사용자에게 한 번 시청하고 들어보라고 요청하세요.

출력 후: 설명 (항상, 같은 전달 메시지에서)

릴은 Instagram(Reels)과 YouTube(Shorts)의 @finance.unboring에서 게시됩니다. 완성된 릴과 함께 코드 블록에 붙여넣을 수 있는 텍스트를 제공하세요:

  • Instagram 캡션: 훅 라인; 35줄의 간단한 설명; 저장-공유 + @finance.unboring 팔로우 줄; "데이터: <출처, 날짜>. 교육 목적으로만 제공됩니다. 투자 조언이 아닙니다."; 35개의 해시태그 (#financeunboring 포함) (Instagram 게시물 제한 5개). BRAND.md 섹션 6의 정확한 템플릿을 따르세요.
  • YouTube Shorts 제목: 70자 미만, #Shorts로 끝나야 함.
  • YouTube 설명: 23줄의 설명, @finance.unboring 팔로우, 출처, 면책 조항, 46개의 해시태그.

관련 스킬