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 劫持)。