Communitygithub.com

madhavsomani/animation-skills

Madhav 的「案件檔案」調查解說風格:將紀錄片式的證據室氛圍,轉化為適用於 Reels / Shorts / YouTube 的格式(炭色背景、白色發光照片卡、撕裂姓名標籤、黑暗街道路徑圖與紅色路線、白色黏土 3D 立體模型、附真實來源的證詞引言卡、紅色日期戳、腳註標記、襯線章節標題),搭配平靜的旁白與持續的暗環境配樂。適用於科技事件、漏洞、外洩、醜聞或歷史故事的解說影片。

animation-skills 是什麼?

此技能提供一個完整的「案件檔案」調查解說影片創作框架,專為 Reels、Shorts 與 YouTube 等短/長影片平台設計。它定義了從故事架構、視覺風格(炭色基底、紅色證據標記、襯線字體、撕裂邊緣照片卡、3D 立體模型與系統地圖)到音訊設計(持續暗環境配樂、克制音效)的完整藝術指導與實作工具組。此技能必須在 `animated-video`(Remotion)技能內部執行,並保留其審核關卡與四階段 QA(技術、事實、創意、所有權)。它提供可複製的範本與程式碼套件(`template/`),但強調每個故事都需重新設計方法與套件,而非直接複製既有作品的鏡頭。此技能特別適合用於解釋攻擊如何發生、漏洞成因或安全事件的影片,並內含一個 55-60 秒的「教育型安全事件」變體,引導創作者從事件概述、影響範圍、技術原理到防護措施,逐步建構清晰且有根據的敘事。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/madhavsomani/animation-skills/tree/HEAD/skills/case-file-explainer

在你喜歡的 AI 中提問

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

說明文件

Case File 解說器

一場以證據為核心呈現的調查:誰、何地、何時,以及記錄說了什麼,並用一個紅色強調色永遠標示「這就是證據」。張力來自冷靜的克制:沒有誇張的詞語,沒有快速的剪輯。取而代之的是一個永不停止漂移的鏡頭、一個永不靜默的配樂,以及與旁白精準對應的事實呈現。

請在 cstack animated-video 技能(Remotion;請先閱讀該技能)內部執行,並保留其審核關卡、完整品質交付以及四個獨立的 QA 狀態(技術、事實、創意、所有權)。此技能增加了藝術指導、鏡頭語言、音訊配方以及一個可運作的套件。

  • 可複製的工作範例:template/(30 秒的 xz 後門示範:src/kit/casefile.tsx = 套件,src/scenes/* = 每種鏡頭類型一個場景,audio/score.py = 配樂)。截圖:../../docs/case-file-explainer/。

每個故事都需重新設計。複製方法與套件,而不是 xz 影片的鏡頭。

**清晰度優先。**我們的第二個 Case File(一個 PHP 遠端程式碼執行故事)雖然看起來很精美,但難以理解。對於任何解釋某事如何運作的影片,請使用 decode-explainer 技能(概念階梯、先以玩具模型呈現、螢幕上顯示圖例、每張螢幕一個想法、定義後再使用術語、字型尺寸 ≥ 44 px)進行規劃,並僅將此技能用於證據室的外觀與調查節奏。

1. 故事:調查主軸

調查性故事只有在利害關係真實且每一項主張都有出處時才有效。

  • 鉤子(0-3 秒): 異常現象,以帶有數字的事實陳述(「他的登入慢了半秒」)。第 0 幀是封面:一個襯線標題加上證據物件,永遠不是黑色。
  • 追蹤(中間): 透過地點和人物跟隨證據。每個節奏持續 2-4 秒:日期戳,然後是人物卡,接著是地圖上的路線,最後是被發現的物件。
  • 揭露: 關鍵揭露時刻。音樂消退,一件紅色物品點燃。
  • 記錄: 一張證詞卡,引用真實的主要來源(電子郵件、證詞、報告),下方附有作者和日期,以及一個腳註編號。從不虛構引述;將重構標記為「重構」。
  • 結尾: 一個襯線標題,將鉤子重新陳述為判決(「半秒。」),一條紅色分隔線和案件編號。保持,然後有目的地淡出。僅在創作者需要時加入口頭 CTA;如果有 CTA,則須完整說出。
  • 短格式:30-45 秒,4-6 個鏡頭。長格式(YouTube):使用「Chapter I」襯線標題卡劃分章節。
  • 在事實呈現在螢幕上之前,將每個事實及其來源和驗證狀態放入 NOTES.md。事實決定影片內容。

教育型變體(安全事件):此格式的預設

使這些內容具有教育意義:幫助人們理解這是什麼、為什麼發生以及他們可以做什麼來保護自己。主軸(約 55-60 秒,6 個鏡頭):

  1. 封面/鉤子: 日期戳、襯線事件名稱、嚴重性戳記和 CVE 標籤,在第 0 幀時全部可見。
  2. 規模: 為何重要(影響多少網路或用戶),附有來源統計數據和腳註。
  3. 這是什麼: 一個管線圖,顯示漏洞存在的位置(網際網路、網頁伺服器、引擎、應用程式)。請求沿紅色路線行進,故障的階段變紅,並出現後果(例如陌生人的 shell 提示)。在螢幕上定義術語(「shell = 伺服器上的命令列」)。
  4. 為何發生: 根本原因以白色黏土 3D 隱喻呈現(記憶體如同積木:半完成的堆疊、釋放的幽靈積木帶有殘留指標),加上一張 3 行良性程式碼卡(malloc/free)。
  5. 時間軸 + 現實檢查: 帶有日期的圖釘(最舊的受影響程式碼、首次攻擊、洩漏、修補程式),然後是一張來自主要來源的證詞卡,用以保持風險比例感。
  6. 保護: 一個「如何檢查」的終端機(php -v 和修復版本),一個按 VO 時間排列的編號檢查清單,以及一個關於邊緣情況的頁尾(EOL 版本,WAF 僅作為權宜之計)。
  7. 判決 + CTA: 一個兩行襯線判決和一個儲存/追蹤 CTA。

教育安全:從概念上解釋攻擊類別。永遠不展示 payload、請求主體、偏移量或逐步的利用方式。說明修復方法以及如何驗證。

2. 外觀(藝術聖經)

元素規則
基底炭色 #0d0d0e,帶有柔和的徑向亮部;始終保留暗角與精細顆粒
強調色一種紅色 #ff2d2a,始終發光(三重文字陰影 + 光暈)。紅色 = 證據:路線、異常、嫌疑、關鍵字。其他皆無顏色
內容單色:米白 #f2f0ea,暗淡 #8d8b86;檔案照片為黑白
字型襯線標題(Source Serif 4 700);打字機主體/標籤(Courier Prime 700);數據/日期戳(IBM Plex Mono 700,字母間距大寫)
照片卡黑白照片,白色邊框帶有輕微撕裂邊緣,白色發光;角色行以大寫等寬字體呈現;黑色姓名標籤帶有撕裂的白色邊緣。未知人物 = 模糊卡片,文字為「NO KNOWN PHOTOGRAPHS」
系統地圖深色街道地圖,由細灰色線條、一些較粗的主幹道和彎曲的高速公路組成,巨大的字母間距襯線區域浮水印(「D E B I A N」);路徑以發光的紅色繪製,帶有白色箭頭;圖釘為帶有指標的姓名標籤
立體模型白色黏土 3D 模型(three.js):淺灰色地面上的霧面白色積木,柔和的陰影,霧氣。一件紅色物體在點燃時會照亮其周圍環境
引言卡大型襯線引用標記,白色分隔線,以等寬字體打出的文字,關鍵字為紅色,下方為來源行和日期
日期戳紅色發光時鐘 +「FRIDAY, MARCH 29, 2024」+ 一行上下文資訊
腳註每當螢幕上出現有來源的主張時,在右上角以暗淡等寬字體顯示 [n]

9:16 的安全區域:將內容保持在 x 60-960 和 y 240-1440 之間。字幕位於 y 約 1470,以等寬字體顯示在深色標籤上,關鍵字為紅色。切勿將其放置在臉上。

3. 動態

  • 盡量減少硬切。 這個基調的長篇紀錄片在十分鐘內只會進行少數幾次剪輯。鏡頭透過內容連結:潛入紅色戳記,它變成地圖的起點;潛入地圖的紅色節點,它變成紅色的 3D 方塊。
  • 鏡頭永不停止: 緩慢推近(每個鏡頭 5-8%),拉出以揭示背景,以及沿路線移動的平移。每個動作都需緩入緩出;以對數空間進行縮放。
  • 卡片以阻尼彈簧效果彈出(縮放 0.82 到 1);標籤下降 18 px 到位;文字逐字打出。
  • 紅色路線以旁白的速度繪製:箭頭在說到某個單詞時到達對應的節點。
  • 每 1.5-3 秒改變一些內容,並在說出相應單詞的 2 幀範圍內完成變化。

4. 音訊配方

  • 配樂永不停止。 在前 5 分鐘內沒有低於 -45 dB 的靜音。一個小調的暗環境無人機/墊音;純音樂開場(長格式約 12 秒,Reels 約 0 秒)。
  • 旁白在上,音樂約低 10 dB。 根據 VO 包絡進行閃避(側鏈風格)。在 VO 間隙為 0.6 秒或更長時增強音樂,並在揭露詞之前將其淡出。
  • 長格式目標:約 -16 LUFS 整合,LRA 約 6 LU。平靜且密集,而非動態。Reels 交付目標為 -14 LUFS / -1.5 dBTP。
  • 音效稀疏且物理: 打字時的打字聲,卡片和標籤落下時的輕微重擊聲,路線繪製時的數據雜音,揭露時的次低音下降,判決時的玻璃叮噹聲或鈴聲。
  • 聲音: 一個冷靜、低沉、平穩的旁白:簡短的直述句,事實後停頓。優先使用創作者自己的錄音;使用語音克隆需要花費審批。TTS 替代品僅限草稿使用,且必須標示。
  • 範例中的 audio/score.py 根據單詞時間建構整個配樂和混音。

5. 工作流程

  1. 事實和來源放入 NOTES.md;取得腳本和節奏表的批准(animated-video 關卡 1)。
  2. 錄製 VO,然後產生 words.json(Whisper 或 TTS 詞邊界);在 audio/fix_words.py 中修正 token 分割。
  3. 在 src/lib.ts 中根據 cue() 定義幕次;使用同一個提示點以 audio/score.py 建構配樂。
  4. 複製 src/kit/casefile.tsx 和場景模式;使用 snap.sh 渲染關鍵幀版(關卡 2:風格幀/關鍵幀)。
  5. 以 --scale=1.3333333333333333(1440x2560)渲染,然後進行兩次 loudnorm 到 -14 LUFS,H.264 High,CRF 14,maxrate 24M,yuv420p 有限範圍,BT.709 標籤,faststart。
  6. QA:完整解碼、黑幀偵測、響度、聯絡表、每個轉場周圍的密集幀,以及對 VO 執行 Whisper。分別報告 4 個 QA 狀態。

構建第一個時發現的問題

  • 使用 edge-tts 運行完整腳本速度很慢(180 字 88 秒)。使用 scripts/tts_lines.py(每行一次 TTS 呼叫,可控間隔,"|" 開始一個章節),然後使用 scripts/squeeze.py(縮短超過 0.45 秒的停頓並重新映射單詞時間):68.6 秒變為 58.5 秒。

  • cue("Before")、cue("PHP") 和其他重複的單詞會導致問題。使用兩個單詞的短語,或傳遞 nth。

  • 在 3D 全景鏡頭中,單行積木會使畫面顯得空曠。添加後排(z = -1.6, -3.2, -4.8)以增加深度。

  • 將相機停留在一個錯誤的位置,直到下一個節拍約 6 幀前。過早移動會導致主體在句子中間移出畫面。

  • 疊加卡必須在螢幕上顯示至少 1.5 秒。讓它從較早的單詞開始,而不是最後一個。

  • 透過共享瀏覽器,導航可能會落在當前活動的分頁,包括使用者自己的分頁。請先選擇您自己的分頁。

  • edge-tts 將 "March 2024" 作為一個詞邊界返回。在 chunk() 之前將其分割,否則字幕會出錯。

  • cue("It") 和其他重複的單詞需要 nth,或使用更長的短語(cue("It had"))。

  • 自發光紅色立方體加上光暈效果會導致顏色爆炸成橘色/黃色。將自發光保持在 0.5 或以下,基礎顏色為深色(#b8120c),場景光暈為 0.5。

  • 在直向 3D 中,塔必須位於卡片區域(y 300-750)和字幕(y 1470)之間。對於一個 6 單位高的模型,將相機拉回約 23 單位。

  • 終端機上的 HTML 縮放會在大約 1.12 倍後裁剪其邊緣。縮放到讀數,而不是角落。

  • 寬度超過約 300 px 的地圖節點標籤會超出畫面。將其居中於節點下方。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相關技能