Finance Story
金融のアイデアを短いアニメーションストーリーで伝えます。1つの可愛いアナロジーワールド(例えば、黒板がSensexの得点板になっている教室)が説明全体を担います。ナレーターが語り、すべてのビートが話し言葉に合わせられます。これはstory-animatorパイプラインです。まず~/.claude/skills/story-animator/SKILL.mdとそのreferences/を読み、それに従ってください。このスキルは、その上にユーザーの金融リールに関する好みを追加するものです。
まずブランドガイドを読んでください。 /Users/sohambhattacharya/Documents/Personal/projects/story-animator/brand/BRAND.md を何かを書く前に読んでください。このガイドは、トーン(シンプルで人間味があり、emダッシュ、セミコロン、堅苦しい表現は使わない)、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、1画面1数字のミニマルな見た目)を廃止しました。明示的に要求されない限り、それらを復活させないでください。
-
story-animatorの外観。柔らかくフラットな絵本スタイルの漫画ワールドで、可愛いキャラクター(丸いビーンボディ、
Faceによる大きな目)、1つの暖かい光源、穏やかなカメラワーク、Patrick Handの字幕を使います。色でストーリーを語ります:良い時は暖色、憂鬱な時は灰色がかった青、転機で再び暖色になります。 -
作品全体で1つのアナロジーワールド。すべての概念をその世界の何かにマッピングします:
- インデックスは壁の得点板や黒板で、実際の数字を表示;
- 企業は生徒で、大企業は大きな生徒;
- 外国マネー(FPI)は窓から飛び出したり戻ってくる紙飛行機;
- 石油は机の上の樽で、値段が下がると小さくなる。 ストーリーの形を保ってください:導入 → 問題(何か憂鬱なこと) → 転機(「すると…2つのことが変わった」) → 結果(数字が跳ね上がる) → 1行の教訓。離れて戻ってくるトークンオブジェクトを1つ選びます(紙飛行機)。
-
言語と声: 英語のナレーション、声は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秒は音楽に乗せた応援とクロージングカードになり、ユーザーはそれを承認しました。 -
正直な数字。 すべての数値をウェブ検索でファクトチェックしてください(市場データはmode extended、2つ以上のソース)。実際の数値(インデックスの終値、変動ポイント)を得点板に表示し、ソース間で一致しない数値は表示しないでください(リール#1ではブレント価格)。ソースをリンク付きでユーザーにリストしてください。市場データ(Sensex、Nifty、株価)は最近でも古くても構いませんが、必ず2つ以上のソースで検証し、正確な日付を添える必要があります(2026-11-05にユーザーがルール変更)。経済指標(レポ金利、CPI、GDP)は、日付付きの最新の公式数値を使用してください。すべての数値をリールフォルダ内の
sources.mdに保存します(BRAND.md 7.3)。 -
クロージングカード(最後の約7秒):概念を1行で(「Sensex:インドのトップ30社のクラス平均」)、関連するワンライナー、次に「教育目的のみ。投資助言ではありません。」と、日付付きの数値/ソース行。実際の企業ロゴは使用禁止。
-
サウンド: 音楽+3つの控えめな効果音(柔らかな紙飛行機のスウィッシュ、軽いコインのカスケード、明るく柔らかなチャイム)、それぞれキーワードの直後に配置。音楽:
eleven_music_v2_5、1テイク、遊び心あふれるピチカートとマリンバ、ストーリーに沿った弧を描く(憂鬱な部分では落ち込み、転機で盛り上がり、結果で喜びの高まり)。ミキシングは音楽gain_db約**−3.5**、sfx_bus_db−13。これにより、Rameezの下で背景は16.8 dBになりました。−9では22 dBで小さすぎました。 -
保存&共有で締める(毎回)。 ナレーターの最後の行で、視聴者にリールが役に立ったら保存して共有するよう促し、finance.unboringの名前を出します。トピックに合わせて調整します。例:「役に立ちましたか?次に誰かが『Sensexが上がった』と言った時のために保存して、まだ理解していない友達と共有してください。financeドットunboringをフォローしてください。」ナレーションではハンドルを「finance dot unboring」と書き、正しく発音されるようにし、クロージングカードでは概念行の下、免責事項の上に**@finance.unboring**と書きます。この行を約150語の予算に含めてください。
-
デザインされたカバー(毎回、2026-11-07のルール)。 リールのフレームをカバーに使わないでください。フレームはフィードで見栄えが悪く、開く理由になりません。すべてのリールには、独自の1080×1920カバーが付属し、(a) トピックを記載し、(b) リールが本当に答える質問やギャップで視聴者の好奇心をそそり、(c) Miniのリアクションと、このトピック用に描かれたグラフィックを表示します。ゴールドワード1つ、ヘッドラインは最大5単語、すべて3:4の中央領域内に収めます(BRAND.md 5.1)。
ワークフロー:2つのゲート、承認前は費用をかけない
ユーザーが入力を提供します:教えるコンセプト、フックアイデア、ストーリーアングル(オプションでニュース項目)。
ゲート1:提案(1メッセージ、クレジット消費なし)
- すべての数値をファクトチェック(WebSearch extended、2つ以上のソース)。
- ユーザーが確認するための4つのパートを含む1つのメッセージを送信します:
- スクリプト: 3文での概要、トークン、全文ナレーション(約150語)。ナレーションは保存&共有のライン(下記ルール9)で終わります。
- 音声: 提案する音声(デフォルトはRameez、
RG0hCuGFvl2jxhd4LmtU)と、creative_list_voicesからの無料preview_url、さらにトピックが異なる雰囲気を示唆する場合の1~2の代替案とプレビューリンク。 - ストーリーボード: ビートテーブル(# / ナレーション行 / 見えるもの / カメラ)、クロージングカードを含む。
- カバー: トピックタグ、好奇心をそそるヘッドライン(ゴールドワードをマーク)、Miniとアートが何をしているか。 また、ソースとコスト(ナレーション約1,800クレジット(2テイク)、音楽900、効果音各約17、合計約2,750)もリストします。
- 停止して待ちます。 ユーザーが4つすべてを確認するまで、クレジットを使わず、何もレンダリングしないでください。ユーザーが何かを変更した場合は、修正したパートを送り返し、再度待ちます。
ゲート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のクロップと小さな電話フィードサイズ(約360 px幅)を確認します。トピックとヘッドラインがまだ読める必要があります。 - サウンド → ミックス → レンダリング →
ffprobe(1080×1920、h264 + aac、60秒)。リールとカバーを送信します。音声、消費クレジット、測定内容、ソースを報告します。ユーザーに一度視聴するよう依頼します。
出力後:説明文(常に、同じ配信メッセージ内で)
リールは**@finance.unboring**からInstagram(リール)とYouTube(ショート)に投稿されます。完成したリールごとに、コードブロック内にコピー&ペースト可能なテキストを提供します:
- Instagramのキャプション: フックライン;3~5行の短い説明文;保存&共有+@finance.unboringをフォローする行;「データ:<ソース、日付>。教育目的のみ。投資助言ではありません。」;3~5個のハッシュタグ(#financeunboringを含む)(Instagramの投稿は5つまで)。BRAND.mdのセクション6の正確なテンプレートに従ってください。
- YouTubeショートのタイトル: 70文字未満、最後に#Shorts。
- YouTubeの説明: 2~3行の説明文、@finance.unboringをフォロー、ソース、免責事項、4~6個のハッシュタグ。