證據解說員(語音備忘錄 → 1分鐘垂直影片附證明)
基於「馬拉威人如何無外匯取得Visa卡」(2026年11月11日)實作:一段4分15秒的Android語音備忘錄 → 一部60.4秒的TikTok影片,包含10個網頁作為證據、Bridge的自家架構圖、9個標誌、4個「咔鏘」音效。範例檔案位於 assets/examples/visa-cards/(腳本 + 外行檢查、剪輯清單、拍攝任務、完整 video.json、貼文文案、聯絡表)。
語音備忘錄 ─► 轉錄 + 分段 ─► 腳本 + 外行檢查(檢查點) ─► 剪輯語音(驗證邊界) ─► 節奏 + 文字
│
└► 證據:目標區域截圖 · 標誌 · 文件中的圖表
│
video.json 時間線(場景、縮放、戳記、術語卡、咔鏘、圖表步驟)
│
音效 + 背景音樂 + 混音 ─► 含安全區域的靜態幀 ─► 渲染 ─► 驗證
設定
SK=~/.claude/skills/evidence-explainer
zsh $SK/scripts/new_explainer.sh "<音訊檔案>" .context/<slug> # 約1-3分鐘;顯示磁碟剩餘空間
cd .context/<slug> # 所有腳本從此目錄執行 (W)
需要 ffmpeg、Python 3 + numpy + Pillow、Node 20+、Chrome(Playwright 驅動已安裝的 Chrome)、whisper.cpp 及 ggml-medium.en.bin 在 ~/.cache/whisper.cpp 中(scripts/setup_whisper.sh 會建置它;可透過 WHISPER_DIR 覆蓋路徑)。腳手架會在 remotion/ 中執行 npm i,或當 EXPLAINER_NODE_MODULES 指向一個現有目錄時,複製現有的 node_modules(APFS 寫入時複製,約0位元組)。視覺風格為「開發模式」(src/brand.ts:點狀網格、Space Mono字型、青/黃/琥珀色);處理代號/網站來自 video.json。
階段(到位時請參閱參考文件)
| # | 階段 | 閱讀文件 | 工具 |
|---|---|---|---|
| 1 | 從 sent.txt 撰寫節拍腳本,然後執行外行檢查 | references/01-script-and-lay-check.md | — |
| 2 | 在驗證的邊界上將語音剪輯至 ≤ 60 秒、調整節奏、字幕 | references/02-voice-cut.md | islands_labels.txt、dips.py、tx.sh、cut.py、voice.sh、words.py |
| 3 | 證據:截圖 + 目標區域、標誌、文件圖表 | references/03-evidence.md | shoot.mjs、logo_tools.py、logo.mjs、register_image.py |
| 4 | remotion/src/video.json 中的時間線 | references/04-video-json.md | 引擎 src/Explainer.tsx |
| 5 | 音效:點擊聲、咔鏘聲、背景音樂、混音 | references/05-sound.md | sfx_mix.py、score.py |
| 6 | 使用 TikTok 安全區域預覽、渲染、驗證 | references/06-render-verify.md | remotion/stills.mjs、sheet.py、verify.sh |
腳本確認後的快速路徑:
python3 $SK/scripts/cut.py cut.json && zsh $SK/scripts/voice.sh 1.18 "名稱, 品牌, 術語"
python3 $SK/scripts/words.py word_fixes.json
node $SK/scripts/shoot.mjs shoot_jobs.json shots && cp shots/*.png remotion/public/shots/ && cp shots/shots.json remotion/src/shots.json
python3 $SK/scripts/logo_tools.py sync # 擷取標誌後執行
# 撰寫 remotion/src/video.json,然後:
python3 $SK/scripts/sfx_mix.py path/to/music.mp3 # 或 `none`
(cd remotion && npx tsc -p . && node stills.mjs 45,300,...) && python3 $SK/scripts/sheet.py stills --zones
(cd remotion && npx remotion render src/index.ts Explainer ../out/<slug>.mp4 --codec=h264 --crf=18 --audio-codec=aac --audio-bitrate=192k)
zsh $SK/scripts/verify.sh out/<slug>.mp4
60秒的完整渲染約需40秒;每次緩存後,靜態幀約需1秒。
內部風格(來自創作者對第一部影片的審查 — 除非另有指示,否則保持此風格)
- 全螢幕B-roll。 截圖填滿1080×1920幀(無瀏覽器卡片);鏡頭從廣角開始,然後放大到證明該論點的行數,同時螢光筆劃過該行。左上角會有
https://domain的窄藥丸標籤和黃色// evidence: …標記。 - 標誌以相機快門聲出現(白色卡片,略微傾斜,縮小彈入,白色閃光)。顯示更多標誌:每個被提及的公司都會出現一次其標誌。
- 每次成功交易時發出「咔鏘」聲(帳戶建立、收到款項、錢包充值、付款批准),並附帶綠色 ✓ 晶片和圓環。
- 為外行人設計的架構圖。 一個圖表(你 → 應用程式 → 基礎設施 → 卡片),節點中包含標誌,逐步建構(「步驟1 · 註冊」…),節點之間有標籤的封包傳輸。僅在放大到其白話文字框時才顯示提供者自己的開發者圖表,從不顯示完整圖表。
- 撰寫腳本後自問:這會讓使用該產品的外行人更清楚還是更困惑? 在構建前修正每個「困惑」點(術語卡、更簡單的標籤、無程式碼風格)。將檢查結果記錄在腳本檔案和摘要中。
- 字幕固定於底部:文字框的底部邊緣固定在幀底部上方400像素處(略高於TikTok的使用者名稱/說明區塊),2行頁面向上擴展,並避開右側的操作欄。
- 開場先有鉤子(大型點陣文字 + 觀眾的提問覆蓋在第一個證據上,模糊處理),結尾有行動呼籲(標誌鏈回顧、關注、帳號、按鈕、網站)。
- 音樂是輕柔的背景(score.py BASE −26 LUFS):戲劇性的大聲配樂經測試為「過於大聲且惱人」。
檢查點(暫停並詢問,附帶建議)
- 腳本 + 外行檢查在剪輯任何內容之前:節拍表(他說什麼 → 螢幕上顯示什麼)以及混淆/澄清表。
- 無法驗證的主張(例如「應用程式X使用提供者Y」):保留在他的話語中,螢幕上的標籤用「例如」/「一個例子」措辭,並標記它們。
- 渲染前:使用
--zones參數預覽每個新元素的靜態幀。 - 發布前:標誌授權(CC BY/BY-SA 需要註明出處)、有保留的主張(「最可能」保持可見)、Whisper誤聽的名稱(即使他說錯了,字幕使用正確拼寫)。僅在要求時才上傳。
工作原則
- 證據重於斷言:每個事實性節拍都有一個頁面來證明,即時擷取,並放大到該行。優先使用主要來源(公司新聞室、官方文件、監管機構/中央銀行、應用程式的商店頁面)而非部落格。記錄頁面未說的內容(Bridge的國家表格 = 哪些人可以入駐,而非卡片可用性)並相應標註。
- 僅在驗證的邊界上剪輯:能量區塊 + 對分低谷(
tx.sh),絕不使用Whisper的單詞時間(它們在手機音訊上可能漂移達數秒)。重新轉錄最終剪輯和渲染檔。 - 術語卡簡短具體:「穩定幣 = 數位美元,1 USDC ≈ $1」、「KYC = 你註冊時所做的身份證+自拍檢查」、「API = 讓應用程式使用X的插頭」。
- 縮放限制:1200像素的手機截圖在縮放1.0時填滿幀(它已經裁剪了大約36像素的邊緣);段落可承受 ≤ 1.3的縮放,短目標(一行程式碼、一個表格行)可達1.8–2.0。檢查反白顯示的單詞和任何關鍵欄位(例如貨幣)是否保持在幀內。
- 驗證,然後報告:持續時間(影片 vs 音訊)、−14 LUFS / 峰值 ≤ −1、渲染檔的完整轉錄、咔鏘聲 ≥ +5 dB 相對於語音、你已查看過的聯絡表。在不收聽的情況下,按標籤說明你選擇的音樂。
最終摘要格式
交付物路徑 + 長度;聯絡表圖片;螢幕上顯示的內容,逐節拍(簡短);外行檢查結果;「發布前檢查」(未驗證的主張、授權、保留語、誤聽的名稱);維護事項(工作目錄、磁碟空間、重新渲染成本、要編輯的檔案)。