阿江
返回工具箱

我整理的 · Skills / 视频制作

口播视频 B-roll · 10 套动画模板

给初剪好的口播视频加整屏 B-roll / MG 包装。先在线试 10 套模板的构图、动效与声音,再交给 Agent 按字幕制作、用 Remotion 渲染 4K。

安装与使用

安装后,把初剪视频、SRT 字幕和希望包装的时间段交给 Agent,指定在线预览里喜欢的模板 ID。先确认预览,再渲染 4K;配套音效与配乐按字幕时间命名交付。制作需要 Python 3、Node.js 与 FFmpeg;在线预览直接打开即可。

来源 / 维护者:阿江 / NanmiCoder

npx skills add NanmiCoder/ajiang-vibe-coding-skills --skill ajiang-video-broll

10 套模板,在线挑一套

打开完整预览 ↗

点击封面即可看动态效果。支持切换配色、拖动时间轴、回放单个动效,以及试听音效和配乐。选好后,把模板 ID 告诉 Agent。

纸白信号橙模板预览播放预览 ↗

纸白信号橙

paper-signal

适合:产品发布、功能清单、步骤流程、数据结论、观点总结这类信息密度高、需要干净利落的口播。不适合:情绪化吐槽、搞笑段子、需要大量手绘或可爱感的内容。

贴纸波普模板预览播放预览 ↗

贴纸波普

sticker-pop

适合:讲痛点 → 踩坑 → 方案、工具翻车、Agent 出错、流程对比、轻松吐槽向的教程,画面热闹、有“白板拼贴”的手作感。不适合:严肃的数据结论、发布会式的高级感、需要克制留白的观点段落。

暖雾模板预览播放预览 ↗

暖雾

warm-haze

适合:产品演示、功能讲解、上手教程这类温和、讲“好用”的口播,画面像在真实产品界面里漫游。不适合:快节奏盘点、强对比、需要情绪冲击的段落,动效慢而柔,压不住快剪。

孔版印刷模板预览播放预览 ↗

孔版印刷

riso-print

适合:轻松、有趣的工具介绍和盘点——三五个要点逐个过、A 对 B、一个大数字结论,口播节奏偏快。不适合:严肃评测、数据密集的对比表、需要长段文字的说明,满屏花纹会抢走注意力。

昭和海报模板预览播放预览 ↗

昭和海报

showa-poster

适合:强观点、重磅发布、“颠覆/翻车/新”这类能用一两个字点题的口播段,节奏要硬、要有仪式感。不适合:轻松闲聊、温和教程、需要大量文字或多张截图并列说明的段落。单字卡的字可用 data.glyph 指定。

复古旭日模板预览播放预览 ↗

复古旭日

retro-sunburst

适合:里程碑、破纪录、版本发布、年度榜单、感谢粉丝、欢庆向的结尾,内容是“几个成果 + 一个大数字”。不适合:严肃观点、技术细节拆解、负面翻车或需要冷静对比的段落(满屏纸屑会显得轻佻)。

黑白薄荷模板预览播放预览 ↗

黑白薄荷

mint-switch

适合:工作原理、几步走、流程拆解、Agent / 自动化 / 开发工具类讲解,节奏偏冷静、偏“产品说明书”。不适合:吐槽、情绪段落、需要大量并列对比的内容(同一时间只聚焦一个步骤)。

彩卡拼贴模板预览播放预览 ↗

彩卡拼贴

color-cards

适合“它能做什么”式的盘点:功能枚举、案例墙、一个工具出几种成果(2–5 个条目最好,每条一句短名 + 一张截图)。不适合抽象论证、长段落解释、对比打分和严肃数据(色块太糖果,压不住严肃话题)。

便签复盘模板预览播放预览 ↗

便签复盘

sticky-audit

适合:流程拆解、排查复盘、逐项验收、前后对比这类“从乱到有序”的口播,偏理性、工程感。不适合:情绪化、需要大图冲击力的开场或纯氛围段落,画面以小卡片和终端为主,图片不会很大。

包豪斯几何模板预览播放预览 ↗

包豪斯几何

bauhaus-grid

适合讲结构和方法:拆模块、列原则、“一个系统由几部分组成”、设计 / 架构 / 工作流类话题;条目 2–5 个、名字短。不适合情绪化的吐槽、强烈对比冲突,或需要大量文字说明的内容(版面是网格,字多就挤)。

Skill 原文与下载

下载全部 Skills(含模板、脚本与预览引擎)
ajiang-video-broll / SKILL.md
---
name: ajiang-video-broll
description: 给已经初剪好的口播视频(B 站科技评测、教程、AI 工具演示、观点类)做整屏 B-roll / MG 包装片段。输入 SRT 字幕(母版视频一般在同目录)和要包装的时间段;从 10 套模板(纸白信号橙为主选,另有贴纸波普、黑白薄荷、暖雾、便签复盘、孔版印刷、昭和海报、复古旭日、彩卡拼贴、包豪斯几何;每套有自己的版式、构图、动效编排、配色、音效和配乐)里选一套,先出一个和成片同一套引擎的 claude.ai 预览页(同步口播、可拖动、叠头像字幕检查)给用户确认,再用 Remotion 渲染 4K,配主题拟音和配乐(比口播低 16 dB),按 SRT 毫秒时间命名交付,用来直接替换剪辑时间线上对应的视频轨。用户提到"给视频做包装 / B-roll / MG 动画 / AE 效果 / Remotion 片段 / 根据字幕做动画 / 换个主题风格"时使用。
license: MIT
---

# 口播视频 B-roll / MG 包装(Remotion)

把初剪视频里的几个段落(开场、功能总结、结尾)做成**整屏 16:9 的动画页面**,用户直接拿去盖住时间线上的视频轨,再自己叠头像和字幕。

**架构一句话**:场景写一次(`broll/scenes.js`,字符串 HTML + `data-a` 声明式动画 + 语义音效),由 `broll-core.js` 逐帧渲染;预览页和 Remotion 跑的是同一份代码,所以用户在预览里确认的就是成片。模板(版式与动效编排 / 配色 / 字体 / 音色 / 配乐)是可替换的一层:场景只写内容(`use` + `data`),换模板就是换一整套构图和节奏,见 [主题预设](references/themes.md)。

## 输入

| 输入 | 是否必需 | 说明 |
|---|---|---|
| SRT 字幕 | **必需** | 初剪的口播字幕 |
| 母版视频 / 口播 mp3 | 自动找 | SRT 同名文件。读帧率、分辨率、总帧数;截一帧量头像和字幕位置;切口播给预览同步 |
| 时间段 | 可选 | 用户写法一般是 `HH:MM:SS` 或 `分:秒:帧`。没给就自己推荐;按字幕边界吸附 |
| 主题 | 可选 | 用户在主题库里选过就用;同一期沿用上一段;都没有就在预览里给 2–3 套 |
| 素材 | 可选 | 官网 / 产品页(ego-browser 抓)、用户自己的 AI 生成视频、截图。优先用真实素材 |

缺的都按默认处理。只有两种情况要问:找不到 SRT,或者母版是非整数帧率。分辨率、帧率能读出来的不问;网页默认 ego-browser;收尾默认淡出。

## 流程

1. **读懂字幕,定段落。** 按 [读字幕与选段](references/srt-and-segments.md):`srt_segments.py list` 通读,写 200 字以内的理解,整理勘误表,识别品牌、收集 logo(lobehub)。区间吸附到字幕边界,列一张“为什么这样切”的表。
2. **建工程。**
   ```sh
   python3 <skill>/scripts/init_project.py --srt <X.srt> --video <X.mov> --out <视频目录>/broll-remotion \
     --seg "00:00:00-00:36:22=标题" ... --theme paper-signal [--from <上一段工程>]
   ```
   `--theme` 走 B-roll 架构,生成 `src/segments.json`(唯一时间数据源)、替换对照表、每段口播、`src/broll/theme.lock.json`、`broll/scenes.js` 起步文件、静音占位混音,并跑一遍字体和 build。同一期的后续段落一律 `--from`(软链 node_modules、沿用主题和字体)。
3. **量头像和字幕。** 从母版截一帧,量出头像圆和字幕那一行(1920 坐标),写进 `broll/overlay.json`(预览页的叠加开关读它)。版面照常铺满,只让文字和关键信息避开这两处。414 期实测:头像圆 x1523–1858 y55–395,字幕行 x410–1510 y905–965,内容区约 90,110 → 1830,920。
4. **备素材。** 视频片段 `extract_clips.py`(预览 mp4 + 成片帧序列),截图、logo 放 `broll/assets/`(build 会同步到预览和 Remotion);还没生成的内容用 `sketchify.py` 做成铅笔分镜,等口播讲到再换成彩色原片。
5. **写场景 → 预览页。** 按 [预览页](references/preview-page.md) 写 `broll/scenes.js`:每页一件事,用 `cue:'字幕原文'` 锚时间,音效写在场景的 `sfx` 里。然后:
   ```sh
   python3 <skill>/scripts/fetch_fonts.py <工程>
   python3 <skill>/scripts/build_broll.py <工程> --preview
   ```
   本地截图自检(`#s=段&t=秒`),然后用 Artifact 发布 `preview/index.html`(`root=<工程>/preview`,`files` 用 `preview/files.json` 里的列表),把链接给用户。没有 Artifact 工具时(比如在 Codex 里),在 `<工程>/preview` 下运行 `python3 -m http.server`,把本地地址给用户。**这是唯一一个停下来等确认的点。** 修改就重发同一个 file_path,链接不变。
6. **确认后一路做到交付。** 按 [Remotion 制作](references/remotion-build.md):
   ```sh
   python3 <skill>/scripts/build_broll.py <工程> --remotion
   <venv>/python <skill>/scripts/broll_audio.py <工程>
   node scripts/stills.mjs seg0:0,300,900 && python3 scripts/sheet.py ...   # 看拼图
   npm run render
   ```
7. **交付。** 按 [交付](references/delivery.md):`check_delivery.py <工程> --copy-to <素材目录>/B-roll成片`。回复里列文件、说明验证过什么、没验证什么(**没有试听**要明说)。

## 硬约束

- **整屏,不缩画面。** 画面永远铺满 16:9,第 0 帧就是完整舞台。头像和字幕只是叠加:只避开实测的头像圆和那一行字幕,不留大块安全区,不缩成小窗。
- **主题不用默认石墨粉橙。** 默认用主选纸白信号橙,或按选题从 [主题库](references/themes.md) 的 10 套里挑;同一期各段沿用同一套主题、变体、音色和响度。logo 从 lobehub 取,保留品牌色。
- **画面要有真实内容。** 官网截图、作品、真实数字、用户的 AI 片段;只有大字和标签会被嫌“单调”;抽象比喻换成具体对照。
- **确认之后一路做完。** 不再停下来写方案;用户催过“让你干活啊”。
- **声音:主题拟音 + 配乐,比口播低 16 dB,真峰值 ≤ -14 dBFS。** 不用 boom、冲击、下坠、故障。成片里不含口播(用户明确要求时例外)。见 [声音](references/audio.md)。
- **一份时间数据。** 区间来自 `segments.json`;场景用 `cue:'字幕原文'` 锚定;音效写在场景里,build 导出时间线,配乐计划跟着场景走。不手写帧号。
- **帧数和命名精确。** 每段帧数等于区间长度;文件名 `{序号}_{标题}_{SRT起}~{SRT止}_字幕{a}-{b}.mp4`,精确到毫秒;附替换对照表。只交 MP4。
- **文案克制。** 只写口播说过的结论,力度一致;示意性的画面(滑杆、进度条、时钟)在交付时说明是比喻。
- **如实验收。** 脚本只能证明帧数、命名、响度;画面要自己看拼图;声音没试听就说没试听。

## 资源

| 路径 | 作用 |
|---|---|
| `assets/themes/<id>/{theme.json,theme.css,layouts.js}` | 10 套模板(`_archive/` 是没选上的候选和旧预设) |
| `assets/engine/broll-core.js` · `base.css` | 逐帧引擎和组件结构(预览 + Remotion 共用) |
| `assets/engine/preview-shell.html` · `Broll.tsx` | 预览页外壳;Remotion 组件 |
| `assets/gallery/` | 主题库页面:本地预览 `serve.py`;构建 `build.py <out>`(发布 Artifact 用);单套模板自检 `qa.py <id> <out> [--stress]` |
| `assets/starter/` | Remotion 工程模板(TSX 组件库 mg.tsx / stage.tsx 只在强定制的对比段落用) |
| `scripts/srt_segments.py` · `init_project.py` | 字幕通读 / 区间数据;建工程(`--theme`、`--from`) |
| `scripts/build_broll.py` | scenes.js + 主题 → 预览页 / Remotion engine.js、style.ts、timeline、clips |
| `scripts/extract_clips.py` · `sketchify.py` · `fetch_fonts.py` | 视频帧序列;铅笔分镜;字体子集 |
| `scripts/audio_lib.py` · `broll_audio.py` · `theme_demo_audio.py` | 音色库 + 配乐;成片混音;主题库试听 |
| `scripts/check_delivery.py` | 交付检查 + 拷贝 |
| `references/pitfalls.md` | 用户原话纠正和技术坑,**动手前读一遍** |

返回工具箱