Communitygithub.com

sohamthebuilder/finance-story

製作一支60秒9:16的動畫故事短片,透過卡通比喻世界解釋金融、銀行或市場概念(如Sensex、Nifty、FPI、利率、通膨、EMI、IPO等),搭配印度口音英文旁白、音樂與輕柔音效,所有畫面皆以Remotion與story-animator管線程式繪製。無主持人。

finance-story 是什麼?

此技能用於建立以比喻世界為基礎的金融動畫短片,將抽象市場概念轉化為視覺故事。它依賴於story-animator管線,從`~/.claude/skills/story-animator/SKILL.md`及其參考資料中提取核心框架,但添加了特別適用於金融短片的用戶偏好。技能強制遵循嚴格的品牌指南,該指南定義了語調、8拍故事公式、調色板、字體、安全區域以及SEBI合規規則。生產工作流程分為兩個階段:首先,用戶批准提案,其中包含基於事實查證的腳本、聲音選項、故事板和封面設計;其次,實際使用Remotion渲染短片,包括與ElevenLabs和faster-whisper的整合。最終輸出針對Instagram Reels和YouTube Shorts進行了最佳化,包含可立即貼上的說明文字。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/sohamthebuilder/insta-studio/tree/HEAD/examples/finance-unboring

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Finance Story

一個金融概念以短篇動畫故事的形式呈現。一個可愛的比喻世界(例如,一個記分板是Sensex的教室)承載整個解釋。一位旁白講述這個故事,每一拍都與口語同步。這是story-animator管線,因此請先閱讀~/.claude/skills/story-animator/SKILL.md及其references/並遵循它們。此技能僅在其基礎上添加用戶對金融短片的偏好。

品牌指南優先。 在撰寫任何內容之前,請先閱讀/Users/sohambhattacharya/Documents/Personal/projects/story-animator/brand/BRAND.md。它設定了語調(簡單、人性化、無破折號、無分號、不正式的措辭)、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中,Take B說了「industries」而不是「investors」。

  5. 形狀和長度: 9:16,60秒(durationFrames: 1800)。Rameez說話速度約2.7詞/秒:132個詞用時49.5秒。因此,要寫約150–155個詞才能讓聲音填滿60秒。否則,最後約10秒將是歡呼聲+伴隨音樂的結尾卡,這已被用戶接受。

  6. 誠實的數字。 使用網路搜尋(市場數據使用擴展模式,兩個或更多來源)事實查證每個數字。在記分板上顯示真實數字(指數收盤價、變動點數),如果來源對某個數字有分歧則不顯示(在短片#1中,布倫特原油價格)。向用戶列出帶有連結的來源。市場數據(Sensex、Nifty、股價)可以是近期或舊的,但必須經兩個或更多來源驗證並附上確切日期(規則由用戶於2026-11-05更改)。經濟數據(repo利率、CPI、GDP)使用最新的官方數字及其日期。將每個數字保存在短片資料夾的sources.md中(BRAND.md 7.3)。

  7. 結尾卡(最後約7秒):一行總結概念(例如「Sensex:印度30家最大公司的班級平均」),一句相關的俏皮話,然後是「僅供教育用途。非投資建議。」以及一行包含日期和來源的文字。無真實公司標誌。

  8. 音效: 音樂加上3個細微的音效(一個輕柔的紙飛機嗖嗖聲、一個輕柔的金幣傾瀉聲、一個明亮的輕柔鈴聲),每個在關鍵詞之後立即放置。音樂:eleven_music_v2_5,錄製1次,俏皮的撥奏和馬林巴音色,其弧線跟隨故事(低谷部分有低潮,轉折時有上升,回報時有歡快的提升)。混音時,音樂gain_db設為約**-3.5**,sfx_bus_db設為**-13**。這樣使背景音量低於Rameez 16.8 dB;設為-9時,背景音量太低(22 dB)。

  9. 儲存與分享結尾(每個短片)。 旁白的最後一句話要求觀眾如果覺得有用就儲存並分享短片,並提及finance.unboring。根據主題調整,例如:「覺得有用嗎?存起來,下次有人說『Sensex漲了』時用上,並分享給還不懂的朋友。追蹤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. 事實查證每個數字(網路搜尋擴展模式,兩個或更多來源)。
  2. 發送一條訊息,包含四個部分供用戶確認:
    • 腳本: 三句話的主幹、代幣以及完整的旁白(約150詞)。旁白必須以儲存與分享的句子結尾(下方規則9)。
    • 聲音: 建議的聲音(預設為Rameez、RG0hCuGFvl2jxhd4LmtU),附上來自creative_list_voices的免費preview_url,以及根據主題可能需要的1-2個替代聲音及其預覽連結。
    • 故事板: 拍子表格(# / 旁白行 / 我們看到的畫面 / 相機),包括結尾卡。
    • 封面: 主題標籤、引發好奇的標題(標記金色詞彙),以及Mini和藝術元素的動作。 同時列出來源和成本(旁白:2次錄製約1,800點數,音樂:900點數,音效:每個約17點數,總計約2,750點數)。
  3. 停下來等待。 在用戶確認所有四個部分之前,不要花費任何點數且不要渲染任何內容。如果他們更改了某個部分,則回傳修改後的部分並再次等待。

關卡 2:製作(用戶確認後)

  1. 專案: cp -R ~/.claude/skills/story-animator/template ./<slug> 放在其他專案旁邊,執行npm install,並重用現有的faster-whisper虛擬環境(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裁切和手機動態消息的小尺寸(約360像素寬):主題和標題必須仍然可讀。
  6. 音效 → 混音 → 渲染 → ffprobe(1080×1920、h264 + aac、60秒)。發送短片和封面。報告聲音、花費的點數、測量結果和來源。請用戶觀看並聽一次。

輸出後:說明文字(總是,在同一則傳遞訊息中)

這些短片從**@finance.unboring**發布在Instagram(Reels)和YouTube(Shorts)。每完成一個短片,請在程式碼區塊中提供可直接貼上的文字:

  • Instagram說明: 一個鉤子行;3-5行簡短的解釋;一個儲存分享+追蹤@finance.unboring行;「數據來源:<來源,日期>。僅供教育用途。非投資建議。」;3-5個主題標籤,包括#financeunboring(Instagram限制貼文為5個標籤)。嚴格遵循BRAND.md第6節中的確切模板。
  • YouTube Shorts標題: 少於70個字元,以#Shorts結尾。
  • YouTube說明: 2-3行解釋,追蹤@finance.unboring,來源,免責聲明,以及4-6個主題標籤。

相關技能