# 宣传视频材料包 ## 已经渲好的成片 | 文件 | 规格 | 用途 | |---|---|---| | `assets/video/demo-9x16-sound.mp4` | 1080×1920 · 41.6s · H.264 + AAC | 抖音 / 小红书 / 视频号 | | `assets/video/demo-16x9-sound.mp4` | 1920×1080 · 41.6s · H.264 + AAC | B站 / YouTube / 公众号 | | `assets/video/subtitles.srt` | UTF-8 BOM,时间轴与成片逐帧对齐 | 字幕轨 | | `assets/video/sheet.png` / `sheet-16x9.png` | 联络表(每 2.6s 一帧) | 快速检查画面 | **这是"动态图形渲染",不是录屏。** 画面由 `tools/video/scene.html` 按插件真实的文案、 版式、节奏(每脚 700ms、断裂后 650ms 弹窗)重绘,由无头 Edge 逐帧截图后编码; 数字用的是示例会话(15m27s / 628 KB / 1,733 N)。所以它**不会**暴露你的真实会话内容—— 这对录屏恰恰是优点,但你得知道它不是 APP 的实拍像素。 想要"实拍感",把第 2 镜(app 示意)和面板那两段换成真实录屏即可,其余段落可以直接留用。 ## 素材与工具 | 文件 | 用途 | |---|---| | `assets/cover-16x9.png` | 1920×1080 封面(B站 / YouTube / 公众号) | | `assets/cover-9x16.png` | 1080×1920 封面(抖音 / 小红书 / 视频号) | | `tools/make-covers.py` | 封面生成器,改文案重跑即可 | | `tools/video/timeline.mjs` | **唯一时间轴**:视频帧和 SRT 都从它生成 | | `tools/video/scene.html` | 场景页,暴露 `window.__seek(state)` | | `tools/video/render.mjs` | 无头 Edge 逐帧渲染 + ffmpeg 编码 | | `tools/video/sfx.py` | 音效合成(脚落"嗒"、断裂冲击、定版和弦) | 重新生成: ```bash FFMPEG=/path/to/ffmpeg node tools/video/render.mjs --w 1080 --h 1920 --name demo-9x16 FFMPEG=/path/to/ffmpeg node tools/video/render.mjs --w 1920 --h 1080 --px 0.8 --cardw 1120 --name demo-16x9 python tools/video/sfx.py ffmpeg -i assets/video/demo-9x16.mp4 -i assets/video/sfx.wav -c:v copy -c:a aac -b:a 192k demo-9x16-sound.mp4 ``` `--encode-only` 可以复用已渲好的帧,只重跑编码(约 5 秒而不是 3 分钟)。 --- ## 一、开拍前:把随机锁死 动画里"断在第几脚"是伪随机(种子 = 会话 id + 第几次自检),**不锁就没法重拍**—— 第二条会换一个断点,剪辑对不上。 在 DevTools Console 里跑一行,然后刷新页面: ```js localStorage.setItem('dsh-brake-pedal.lock', '3') // 锁死断在第 3 脚 ``` 其它档位: ```js localStorage.setItem('dsh-brake-pedal.lock', '5') // 锁第 5 脚 localStorage.setItem('dsh-brake-pedal.lock', 'none')// 只演"未复现" localStorage.removeItem('dsh-brake-pedal.lock') // 恢复伪随机 ``` 改完**刷新页面**即可,不用重启宿主、不用改配置文件,**画面上不留任何痕迹**。 每次点开前 console 会打一行 `[dsh-brake-pedal] roll #0 (localStorage 锁定) -> 第 3 脚断裂`,录之前扫一眼就知道对不对。 > `localStorage` 锁是客户端逻辑,**刷新页面就生效**(宿主不用重启)。 > 也可以改 profile 配置(`~\.dsh\profiles\desktop\cordis.patch.yml` 里给 `dsh-brake-pedal` 加 > `config: { breakAt: 3 }`),但那条走宿主,**要重启 DeepSeek Harness** 才生效——录视频时不如 localStorage 顺手。 **挑一个"数字好看"的会话**:面板上的运行时长和日志体积来自真实会话日志, 用**跑了一阵子的会话**(比如几十分钟、日志几百 KB)比刚开的新会话更有说服力, 踏板力也会相应高一点。本材料包里的示例数字是「15m27s / 628 KB / 1,733 N」。 ## 二、录制前检查清单 - [ ] 锁定断点(上面那行命令) - [ ] **准备一个干净的会话**:不要用你真实工作的会话,里面会有真实项目内容 - [ ] **输入框清空**,否则字幕会带出你的草稿 - [ ] 关掉其它浮动插件(右下角那颗宠物会抢画面)—— 大肥鱼可以在插件页临时关掉 - [ ] 窗口拉到目标比例;竖版建议把窗口宽度压窄,别录完再硬裁 - [ ] **弹窗底部那行 `数据源:会话 session-xxxx…` 要遮**:后期加马赛克,或者裁掉 - [ ] 关掉系统通知 / 微信 / QQ - [ ] OBS:60fps,CQP 18–20,音频 48kHz ## 三、60 秒竖版分镜 节奏是"5 秒钩子 → 6 秒铺垫 → 6 秒爆点 → 10 秒展开 → 30 秒解释与收尾"。 括号里是**必须单独补录的 B-roll**,剪辑时当插入镜头用。 | # | 时间 | 画面 / 操作 | 字幕(同 SRT) | 声音 | |---|---|---|---|---| | 1 | 0:00–0:05 | 屏幕右下角踏板特写,光标移上去(**B-roll:胶囊 3 秒特写**) | AI 工作台上,我唯一不敢让它失效的按钮。 | 轻底噪,无音乐 | | 2 | 0:05–0:09 | 点开 → 面板展开,第 1 脚 ✓ 落下 | 它先做一次制动系统自检。 | 每落一脚一声轻"嗒" | | 3 | 0:09–0:12 | 第 2 脚 ✓ | 第 1 脚、第 2 脚,都好。 | 同上 | | 4 | 0:12–0:17 | **第 3 脚 ✕ 砰 —— 支架断裂**,面板转红、轻微抖动(**B-roll:这一帧单独截出做缩略图**) | 第 3 脚。 | **金属脆响 + 低频砰**,峰值 −3dB | | 5 | 0:17–0:22 | 停 0.4 秒不要动,让弹窗自己浮出来 | 然后它给你一份情况说明。 | 音乐进来,压抑的弦乐 | | 6 | 0:22–0:27 | 缓推到右上角 `虚构段子` 角标 | 注意,它自己标着是虚构的。 | 音乐持续 | | 7 | 0:27–0:34 | 手指移到 `会话已运行 15m27s`、`会话日志 628 KB` | 这两个数是真的,来自这次会话。 | 念白停 0.5 秒 | | 8 | 0:34–0:41 | 指小字 `踏板力为推导值 ← …` | 踏板力是从它们推出来的,所以它标着"推导值"。 | 音乐渐弱 | | 9 | 0:41–0:46 | 点 `继续运行`,面板收起回右下角 | 最要紧的一句: | 静音 0.3 秒 | | 10 | 0:46–0:52 | 大字幕占屏 | 它一根手指都没碰过真正的停止键。 | 音乐重音 | | 11 | 0:52–0:57 | 点 `未复现模式` → 六脚全过 → 结论"本次未复现"(**B-roll:这段单独录**) | 没出事的时候,它讽刺得更准。 | 轻快收尾音 | | 12 | 0:57–1:00 | 定版:封面同款构图 + 插件名 | 虚构段子 · 与任何厂商无关 | 音乐收 | **旁白稿(约 130 字,念完正好 55 秒)** > AI 工作台上,我唯一不敢让它失效的按钮,就是这个停止键。 > 它先做一次制动系统自检——第 1 脚、第 2 脚,都好。 > 第 3 脚。 > 然后它给你一份情况说明。注意,它自己标着是虚构的。 > 这两个数是真的,来自这次会话;踏板力是从它们推出来的,所以它标着"推导值"。 > 最要紧的一句:它一根手指都没碰过真正的停止键。 > 没出事的时候,它讽刺得更准。 ## 四、横版 90 秒(B站 / YouTube,可选) 在竖版基础上加两段: - **0:40–0:55 设计规矩**(贴屏幕文字,不用念): `1 从不拦截停止动作` / `2 数字不编,取不到就标"演示数据"` / `3 烂了就消失,只写 console` - **0:55–1:15 代码特写**:`BREAK_ODDS = [0.12, 0.26, 0.24, 0.16, 0.10, 0.12]` + 那句 `种子 = 会话 id + 第几次自检`,配"断点每次重掷,但同一个会话可复现"。 - 结尾加一屏:安装方式 `node tools/install.mjs`。 ## 五、后期要点 - **音效点**:断裂那一帧(0:12)是整个视频唯一的"响",别在别处加音效抢它。 - **缩略图**:用 `assets/cover-16x9.png`,或者从第 4 镜截一帧红的也行——但封面上的字必须能看清。 - **字幕安全区**:竖版底部留 15%,抖音的 UI 会吃掉。 - **别加"官方""实测""评测"这类词**,字幕和标题都不要。这个视频是整活,不是测评。 - 弹窗里那行会话 id 记得遮。 ## 六、发布文案 **标题(挑一个,都不要出现任何品牌名)** 1. AI 工作台里装了颗刹车踏板,第 3 脚就断了 2. 给我的 AI 助手做了个制动自检:6 脚,第 3 脚断 3. 我给自己写了个会断的刹车——但它从不碰真正的停止键 4. 断在第几脚是摇出来的:一个跑在 AI 工作台里的段子 5. 你工作台右下角,多了一颗制动踏板 6. 6 脚全力制动测试(这是个彩蛋,不是评测) **简介(竖版视频用短版)** > 给 DeepSeek Harness 写的一个彩蛋插件:右下角一颗踏板,点开做 6 脚全力制动测试, > 支架随机断在第 2–6 脚,弹出一份虚构通报。 > 面板上的运行时长和日志体积是真的,踏板力是从它们推导的,界面上标着"推导值"。 > 最重要的一点:它从不拦截你的停止键,一次都没有。 > 虚构段子,不指向任何真实企业、产品或事件。 **标签** `#DeepSeekHarness` `#DSH插件` `#AI工具` `#程序员日常` `#彩蛋` `#开发工具` `#整活` **置顶评论(必发)** > 说明一下:这是个**虚构段子**,文案是原创的官僚体,不引用任何真实声明, > 界面里也没有任何厂商名。不指向任何真实企业、产品或事件,也不构成任何安全评价。 > 插件本身从不接管、不拦截、不延迟任何停止动作。 ## 七、合规红线(自己别往里加戏) 1. **视频里不出现任何真实品牌名**——标题、字幕、简介、评论、标签,一处都不要。 2. **不把弹窗和某台车并置**(不要把车图、事故新闻截图、品牌 logo 剪进去)。 3. **不说"实测""官方口径""某车同款"**,说"一个段子"。 4. **不说这个插件能"帮你停"**——它的卖点恰恰是不碰停止键。 5. 免责声明**留在视频里**(第 12 镜)**且置顶评论再发一遍**。 这几条做到了,这个视频的性质就是"开发者自嘲 + 插件演示",而不是在指认谁。 做不到,风险跟你把品牌名写进标题是一样的。