trend-explainer-video:排行榜口播講解影片產線
以 C:/Users/<你的用戶名>/.workbuddy/skills/video-talkcraft(TalkCraft skill)為渲染引擎,本 skill 提供排行榜類題材的工程骨架、全鏈腳本、視覺定版與實戰排障。影片理論/通用閘門請見 TalkCraft 本體,本 skill 不重複。
產線步驟(指令與坑請見 references/pipeline.md)
- 抓快照:榜單頁一次性抓取(curl 走用戶代理),存
data/snapshot.md/.json作唯一口徑——排名/星數/簡介/語言只許出自這一次抓取,禁止編造。 - 口播稿
script.json:35 句定版結構 = 1 開場 + 10 項目 ×(名次句 + 詳單/總星句 + 怎麼用句 + 總星句)+ 3 尾段(收束/金句/CTA)。硬規矩:數字全漢字;每個項目開頭必報「第一名/第二名……」;每個項目加一句「怎麼用」旁白(動詞起頭,講用在哪/怎麼用/解決什麼)。開場直接點題「今天這份 GitHub 每週熱榜,前十名我一次講完」。 - 配音:
synth_voice.py(VOICE/RATE 頂部,edge-tts 需 HTTP_PROXY)→assemble_voice.py(full.wav + timestamps.json)→cp audio/full.wav remotion/public/narration.wav。 - 時間軸重建:
make_timing.py→gen_beats.py(含 anchors.json 生成)→gen_cues.py。三處錨表必須同步:gen_beats 的 REPO_ANCHORS、gen_cues 的 REPO_CFG、all.tsx 的 REPO_CFG,外加 scenes/index.ts 的 sceneFor(尾段 chart/quote/cta 鏡號因插句後移)。任何配音參數變動 = 全鏈重建,絕不只換音軌。 - 工程落地:從
assets/remotion-template/複製骨架;改src/data.ts(快照數據)、src/scenes/all.tsx的REPO_CFG/USES/STEPS/ICONS/DETAILS五張表 +RANK_LIST名次鏡表。其餘場景程式碼原樣複用。npx tsc --noEmit驗證。 - 渲染:
node <video-talkcraft>/scripts/render_shots.mjs --all --concat out/assembled.mp4 --audio out/full-mix.wav --mux out/v?.mp4(full-mix 按 timing 指紋自動重渲)。 - 機器閘(全綠才交付):beat_lint → motion_check(靜止+抖動)→ sfx_check solo+mix → workbench_contract_lint。閾值與 FAIL 處方請見 pipeline.md。
- 交付:loudnorm 兩遍(量測→線性歸一)→ delivery.mp4 → 重跑 sfx_check --mix → present_files。
- 封面:
gen_cover.py生成 1080×1920 豎屏通用封面(無具體項目,長期複用),產出 cover_vertical.png/.jpg。
本產線的差異化視覺(v16 定版,詳見 references/style-guide.md)
- 名次獨立頁
RankPage:念名次詞的鏡整屏渲染為獨立「第N名」頁(金色 240px 大字 + RANK #N + 倉庫名 + 星數 + 10 段進度條),不與項目內容同屏。 - 內容鏡三件套:
IllBg全屏插圖背景(blur30+暗化)+OgiCard動態插圖卡(EFFECT PREVIEW + Ken Burns + 光點 + 掃光)+DemoPanel終端/網格演示,配 USES 3 條(emoji)+DetailBlock詳解輪播。 - 怎麼用三步配圖鏡
HowScene:三步各一張StepIcon圖標配圖卡(漸變底 + 大 emoji + STEP 角標),STEPS/ICONS兩表驅動。 - Ambient 全屏環境動效:三道光帶錯相位橫掃,治 motion_check 靜止段(小卡/文字場景必加)。
- 暗色視覺:色板請見 style-guide.md;星數金色 #FFC94D、週增綠 #63E6A4。
高頻坑(詳見 references/pipeline.md)
- ImageGen 圖片生成可能持續 429 限流 → 圖標配圖用 emoji 圖標卡(StepIcon)、封面用 PIL 程序化(gen_cover.py),零成本穩定且貼切;服務恢復可換 AI 圖。
- motion_check 靜止段(freezedetect noise=0.003):小卡/靜態文字/模糊背景場景,慢 sin 動效救不了 → Ambient 三光帶錯相位橫掃(≥3 道,2 道有真空期)。
<Video>服務端渲染必炸 →OffthreadVideo+muted。- 素材 fps ≠ 成片 fps → motion_check 判「重複幀」;光流補幀用
minterpolate=mi_mode=blend。 - Windows:符號鏈接全被拒 → 複製目錄;ffmpeg 7+ 無
-vsync→-fps_mode passthrough。 - edge-tts 需代理:
HTTP_PROXY/HTTPS_PROXY=http://<你的代理>。 - 改 all.tsx 用 python 原子重寫(Windows EBUSY 競態會讓 Edit 假成功);bash heredoc 傳含反引號的 python 會被截斷 → 用 Write 寫 .py 再執行。
環境速查
- bash PATH 每次會話補:
PortableGit usr/bin+ffmpeg-bin;python 用 venv:C:/Users/<你的用戶名>/.workbuddy/binaries/python/envs/default/Scripts/python.exe;node 用託管版直跑;tsc 跑node_modules/typescript/lib/tsc.js(bin/tsc 被 fnm shim 劫持)。