---
name: jimliu-history-video
description: "把历史录音、演讲、访谈、广播或档案影像做成观众看得懂的成片：先用几分钟讲清这个人、那个时代、这次讲话为什么要紧，再放完整的原声（原文与译文字幕、分章节）。讲法与画面由手上的材料定（只有录音还是有影像、照片多少、单语还是双语），不套模板；当时的照片、新闻片、报刊、地图与当事人的原声优先，生成的图只画没有真人的示意。只给录音配字幕、排版面走 subtitle-workflow；讲一个历史话题、没有一段要完整放的原声时走 explainer-video 或 clip-montage。"
license: "NOASSERTION"
metadata:
  decimalai-skill-id: "6078145d-5e2d-4c97-b4b8-9b2c299a416e"
  decimalai-version-id: "cc5f67a3-b9bd-4eb6-9d2d-d2c935c1ca4e"
  decimalai-version: "1"
  decimalai-body-sha256: "d47df3d14d5a79a4a1cb8390bba3fea4400dc958ecb7db258642dbf477dc69ec"
  decimalai-name: "jimliu/history-video"
  decimalai-format: "1"
  decimalai-invocation: "model"
  decimalai-category: "design-media"
  decimalai-source: "https://app.decimal.ai/s/jimliu-history-video@1/SKILL.md"
---
# 历史视频

一段几十年前的录音直接放，多数观众一分钟就走：不知道说话的是谁、当时发生了什么、这番话为什么要紧。历史视频是两部分：前面几分钟的**背景**，让观众很快弄明白人物、处境和这次讲话的分量；后面是**完整的原声**，配原文与译文字幕、分好章节。背景不是一堂课，也不是一页页幻灯片：它要让观众在最短的时间里**看见**那个处境，然后带着它去听原声。

本 skill 给判断、手法与工具，不给模板。同一批材料里，这一期是 1920 年代只有录音的演讲，下一期是有新闻片的战时讲话，再下一期是一位作家的访谈：讲法、画面的主干、色板与版式都该不一样。系列感交给固定的东西（署名、水印、音色、片头的位置、交付物，写在 `BRAND.md`），不交给同一套版式。

1. 认清是不是这种片子，问齐缺的（第 1、2 节）。
2. 证据先行：录音、讲稿、照片、影像、背景事实，各带出处与许可（第 3 节，细则 `references/sources.md`）。
3. 按证据定讲法与画面（第 4 节，手法清单 `references/forms.md`）。
4. 写片头稿，一句一个画面动作（第 5 节）。
5. 做：正片先成型，片头按段做、补在正片前面（第 6 节）。
6. 审片、烘焙、导出、交付（第 7 节）。

用户只给一句话（「把某某那次演讲做成历史视频」）时，先查后问，写一页简报请用户确认再动手（第 8 节，细则 `references/brief.md`）。

## 1. 是不是这种片子

- 核心是一段**要让观众完整听完的原始声音或影像**：演讲、广播、访谈、讲座、会议、庭审、新闻片。原声只是点缀、主要在讲一个历史问题的，是讲解片（`explainer-video`）或解说混剪（`clip-montage`）。
- 只要字幕与版面（录音配声波、照片、章节副标题），不要背景介绍：照 `subtitle-workflow` 与 baocut 说明书 workflows 页的「音频做成视频」做。本 skill 叠在它之上：正片照那条路做，背景照这里做。
- 做过的旧版（v1 只有正片）要出新版时，在旧版视频的副本上补片头，旧版不动。

## 2. 问齐缺的

能查到、能推断的不问，缺的合成一轮问：

- 哪段录音（链接、文件或视频库里的哪部），成片语言；原话的语言和成片语言不同时出双语字幕。
- 背景多长：缺省 2–5 分钟，按要讲清的事定，装不下先删。正片不剪原声，只在用户同意后去掉开头结尾的空白、档案馆的报幕。
- 有没有已做好的正片（转写、校对过的字幕视频）。
- 用户点名的风格、禁忌、要强调或回避的内容。
- **品牌**：署名、水印、角标、音色、命名规则、交付物清单，照用户这条消息、项目的 `BRAND.md`、全局的 `BRAND.md` 的先后来，那里写了的不再问，没写的不发明。会话里自动带着；命令行面用 `library_list`（`library` 为 `brand`）找品牌文件再读。品牌库是空的时，在交付目录所在的仓库或用户给的目录里找 `BRAND.md`，找不到就问；不拿本机的或缺省的音色顶替品牌规定的音色。
- **称谓与名称**：尊称、纪年、有争议的机构名与地名，照用户或 `BRAND.md` 的规定；没有规定时用中性、可核实的写法（人名、公历日期、机构的通行简称），拿不准就问，不替用户选立场。

## 3. 证据先行

动手写稿之前先把材料找齐，写进工作目录的 `research.md` 与 `sources.json`：

- **录音本身**：馆藏机构、目录号、日期、地点、时长、许可。核对是哪一次讲话：同一个人常有多次，标题与日期容易张冠李戴，用当时的报道或讲稿对一遍。
- **讲稿**：当时登载的文本（报刊、会议记录、文集）作校对依据；转写以录音为准，译文自己逐句翻（`translate-subtitles`），交付时注明是 AI 辅助、有没有人工校对。
- **背景事实**：观众必须知道的四件事：这个人是谁；那时的处境；为什么讲这次话、对谁讲；讲完以后怎样。每条两个来源，数字、日期、头衔都核实；拿不准的不写，或在稿子里标明。
- **画面**：当时的照片（人物、地点、事件）、新闻片、报刊版面、文件与手稿、地图数据。每一件记下来源页面、作者或机构、日期、许可；许可不清的不用，或请用户决定。
- 某一拍找不到任何画面：换讲法，改用代码画的地图、时间线、数字，或生成一张**没有真人**的示意图并在画面上标明。

找哪里、怎么判断许可、`sources.json` 怎么写：用 `skills_read` 读本 skill 的 `references/sources.md`。

## 4. 按证据定讲法与画面

这一节最要紧。

- **不是幻灯片**：标题加要点停在屏幕上、旁白在念，就是幻灯片，换底色、加粒子救不了它。每一拍旁白对一个画面动作：照片在推、地图上的线在走、报纸标题一行行显出来、数字在长、原声的字一个个亮。卡片是压在画面上的一层，不是底。
- **主干由材料定**：先看手上最有分量的是什么，片头就以它为骨，其余穿插：

| 手上最有分量的 | 片头的骨 | 常见穿插 |
| --- | --- | --- |
| 当事人的影像、新闻片 | 影像本身：铺满或画中画，旁白压在上面 | 地图定位置，日期与人名的下横栏 |
| 只有录音，照片多 | 照片：推拉、局部放大、几张排成一面墙、照片落到桌上 | 地图、时间线、原话引文 |
| 只有录音，照片少（年代早） | 代码画的图形：地图与路线、时间线、报刊标题、文献、数字 | 仅有的一两张照片留给封面与最关键的一拍 |
| 作家、学者的讲话 | 文字：手稿、书影、引文逐句出现，版面安静 | 故居、城市的老照片 |
| 会议、外交、战事中的讲话 | 地图与各方关系：位置、航线、战线、日期 | 当时的报纸头条、当事各方的照片 |

- **视觉语言从年代与人物来**：1920 年代的铅字与新闻纸，1940 年代的新闻片与电报，1950 年代的印刷海报……按 `video-production` 第 2 节写一段风格说明（色板的色值、字体、质感、动效节奏），这一期的所有场景照它。不沿用上一期的色板与版式。
- **看得清、分得出轻重，也要好看**：观众里有近视、老花的人，正片又一放几十分钟。字号与对比度的下限、字的分级与归组照 `video-production` 画面设计细则的第 4.1–4.3 节（用 `skills_read` 读 `video-production`，再按它「画面设计」一条读）；风格说明里写明有几级字（每级的像素、字重、颜色）、每个颜色给谁用，再写场景与正片版面。这类片子常见的毛病：章节摘要、图说当成小字，排成 30 px 上下的灰字；全片一族楷体、一种强调色，年份、地名、标签与字幕分不出轻重；配图框、馆藏号、许可一直占着画面，要读的字反而挤在一边。年代感从纸色、字形与质感来，不靠把字缩小、调淡。反过来，好看和看得清一样要紧：字放大了，留白和版面就跟着重新设计。不要每样都放大、塞满一屏，也不要删到只剩一条字幕带。
- **开头**：第 0 帧就是一张完成的封面（人物的照片、名字、场合、年份；平台常拿第一帧当缩略图），关掉声音也看得懂是谁。前 15 秒内让原声出来一句，原话逐词点亮、下面配译文，这是最好的钩子。
- **原声穿插**：背景里放当事人的一两句原话（从正片的录音里取），放在讲到那件事的地方，比旁白转述有力。
- **结尾**：最后一拍把观众交给原声（「下面是这次讲话的完整录音」），画面落到正片第一帧的样子，不跳。
- **真实与示意分开**：真人只用真实的照片与影像，不生成、不「修复」、不上色冒充原片；生成的图只画没有真人的场景、物件与示意，画面上标「AI 生成示意」（用成片语言写）。地图只画陆地轮廓，战线、占领区、航线标为示意，不画有争议的国界。

各种表现手法适合什么、怎么在代码画面里做、哪些会让烘焙退回逐帧截图：用 `skills_read` 读本 skill 的 `references/forms.md`。

## 5. 写片头稿

- 按段写，一段一个画面主意（20–40 秒），每段回答观众的一个问题。四件事（谁、处境、为什么讲、后来）都要讲到，顺序自定：钩子可以先放原声，「后来」可以压在最后一句。
- 口语、短句，一句一行，一行一个画面节拍；每句的画面动作写成稿子里的备注行，这就是分镜。
- 事实带出处，不评价立场，不煽情，不替当事人说没说过的话；引用原话照录音。
- 专名第一次写全称，之后用简称；外文人名、地名第一次出现时给原文。
- 配音：音色照 `BRAND.md`；没有时按 `narration` 选，全片一个音色。语速与字数按 `narration` 第 1 节估。
- 稿子就是字幕：年份、数字写阿拉伯数字，配完第一段先听 TTS 读得对不对，读错的才改写法。

## 6. 做

正片在前，片头在后：正片定了，片头才知道交到哪里。

- **正片**：已有字幕视频时先复制一份，新版在副本里做。先用 `baocut export <旧版> --kind portable --format baocut --dir <目录>` 打成便携包（素材全在包里，旧版的素材有多大，包就有多大），再用 `baocut videos import-package <包> --name <新名>` 打开成新视频。没有字幕视频时照 `subtitle-workflow` 做：转写、按讲稿校对、翻译、双语字幕、分章（`video-chapters`）。
- **老录音先修**：录音比片头旁白低 10 dB 以上、底噪听得见、讲者与提问的人忽大忽小时，不等用户提，先在文件上滤掉杂音、拉平、提响，再换进视频；开头的空白剪到一秒左右，片头说完「下面是完整录音」就该有声音。混音里的音量上限 4 倍，拉不上来，还会把底噪一起放大。做法、参数（网上转来的有损文件为什么先不降噪），以及处理后要量的时间差：用 `skills_read` 读本 skill 的 `references/old-recordings.md`。
- **片头**用 `production-scripts` 的脚本（用 `skills_read` 读 `production-scripts`）：配置里写 `prepend`（带一章 `chapter`，例如「背景」），片头按段配音、对齐、写场景代码打包；`assemble.mjs` 在第 0 帧腾出整个片头，正片的画面、声音、字幕与章节一起后移（`--dry` 先打印这一步）。两件事要先想好：正片里写成文字的章节序号（`01`）因为多了一章会都加一，要保留原序号就换成每章一段的静态文字；片头的原声引用按响度量过，正片录音沿用旧音量，两边差几个分贝时调正片录音片段的音量，切过去才不会突然变小；调到上限还差，就照上一条修录音。正片的角落水印从正片起点开始，片头上没有：`BRAND.md` 要角标时给片头另放一条，颜色按片头的底色选；片头最后一拍换了底色，就分成两段，各用各的颜色。字幕不逐字高亮，用 KTV：念到哪里，哪里的颜色变深，颜色跟这期配色走。片头旁白字幕在配置的 `captions.style` 里给 `fontColor`（没念到）与 `sungColor`（念过），正片字幕用 `setCaptionStyle` 改：`style` 写 `textMotion: {"karaoke": {"color": …}}`，颜色取正片底色上的强调色，当前词跟着换成 none（写法见 `motion-graphics` 的 audio-backdrop 参考第 4 节「字幕的念到效果」），两边一个手法。
- **原声引用**：`clips.json` 里只有声音的片段：`asset` 写正片录音的素材 ID，`after` 把它放在段尾、`hold` 留出它的长度，`words: true` 与 `said`（原话）、`text`（译文）；`quotes.mjs` 对出逐词时间，`build.mjs` 写进这一段的 `TIMING.clips`，场景照它点亮每个词。
- **新闻片与照片**：视频片段照 `clips.json` 放成铺满或画中画，画中画框的位置在 `TIMING.clips[].box`，场景在框下画底板、框旁写说明。
- **出处**：`sources.json` 一份；`sources.mjs` 查漏、写 `sources.csv`；画面上的出处行从 `TIMING.credits` 取，不在场景里另写一遍。
- **正片的版面**：旧版没有版面、不合 `BRAND.md`，或过不了第 4 节「看得清、分得出轻重，也要好看」时（先把旧版抽几帧缩小看一遍，见 `references/self-check.md` 第 1 节），在正片的时间线上重新排；排什么、怎么排，按这期的材料与风格说明定，做法见 baocut 说明书 workflows 页的「音频做成视频」。四件事常出错：
  - 字的轻重：几十分钟里观众一直在读的是字幕，它是主文（56 px 上下，字号 28 左右；双语时原文那一行小一级、颜色浅一些，和译文一块排在字幕带里）；章节标题与摘要、图说是要读的（40 px 以上，字号 20 以上），出处与计时最轻（28 px 以上，字号 14 以上）。章节标题、章节号这些整章不动的字，不比字幕更抢眼；整段正片都不变的人名、职务、日期、地点，又比随章节换的章节名轻。这一章没有配图，就不留空框。
  - 正片封面、底图、片尾卡这类整幅的图，放在最底下那条视觉轨上首尾相接。片头最后一段与正片之间用溶解时，编辑器的实时层画不出代码包上的溶解（要包的预渲染，烘焙后才有），那一秒是黑的。不为它改画面，烘焙后再看。
  - 画面上的章节摘要、图片说明，一行能放的全角字按「框宽 ÷ 字的像素 − 1」估。BaoCut 的字号是像素的一半：字号 20（40 px）、框宽 960 px，一行 23 个字。逐条查行首的标点、落单的一个字、拆到两行的人名与书名，改字避开。
  - 正片字幕要另用一种样式时，先用 `setCaptionStyle` 给正片字幕定好，再跑 `captions.mjs`。正片字幕还没有自己的样式文档时，`captions.mjs` 建旁白样式会把它一起挂上，两边就成了一个样子。
- **片尾与声明**：旧版片尾卡与发布文案里的总说明（配图的许可、AI 用在哪里）是按旧版的材料写的。片头加了 CC BY 照片、AI 图或 AI 旁白，就把片尾、说明与发布文案的声明一起改到和 `sources.json` 对得上。片尾卡是截图做的，就改它的 HTML，再用 `baocut compositions preview <视频> --path <片尾卡目录> --at 0` 截成图，用 `replaceItemAsset` 原地换图。
- **字体**：`fonts.mjs` 按稿子与场景里的字裁子集；定稿后改字会让引用这些字体的段全部重烘，改用已有的字更省。稿子或场景加了字，先重跑 `fonts.mjs` 再打包；`build.mjs` 报 `fonts lack …` 就是子集里缺字，烘焙会退回截图。
- 代码画面的规则在 `video-production` 的代码场景细则（单个画布、每帧清屏、不读回像素、不用 `filter` 与 `letterSpacing`）。这类片子最常撞上的是照片上叠了好几层半透明层、中文字体排年份，细则第 2.1 节写了怎么避开，烘焙才走得了指令。场景的骨架与地图数据用 `skills_read` 读 `production-scripts`，拷它的 `scene-kit/`（`references/forms.md` 第 3 节）。

## 7. 审片、烘焙、导出、交付

- **先请用户审**：片头 `assemble.mjs --live` 摆上去、正片排好以后，先自己照自检清单的第 1 节看一遍（用 `skills_read` 读本 skill 的 `references/self-check.md`），改掉看到的问题，再用 `baocut web review --video <videoId>` 把审片页开在宿主的浏览器里（本机装的字体审片页也能用，和导出一致），整条链接交给用户，说清请用户重点看哪里。`baocut --help` 把 `web` 列在本机管理命令下，但 `web review` 只开审片页、不改设置，照常跑。**用户说可以之前不烘焙、不导出**；改哪段只重做哪段，再请用户刷新。
- **用户要自检时**：用户说了自己查过就导出（「自检后直接导出」「不用等我确认」），审片链接照给，不停下等回复：照自检清单的三节（烘焙前、烘焙后、导出后）查全，接着烘焙、导出、交付；用户看后有意见再改、重新导出。要剪掉讲话以外的开头结尾（空白、报幕）照样先问（第 2 节）。
- 烘焙先用 `assemble.mjs --bake ops` 试：指令烘焙几秒一段；画不出的段列出来，按代码场景细则改，改不了的（照片滤镜多的）不带 `--bake ops` 退回逐帧截图，1080p 每秒两三帧，在进度更新里告诉用户要等多久（不等回复）。
- 导出成片：`--purpose deliverable`，带 `--loudness`（缺省 -16 LUFS；同一系列各期用同一个值）。几十分钟、带声波这类每帧现画的层时，导出每秒只有二十帧上下，五十分钟的片子要一个多小时：放在后台跑，先估好时间写进报告。导出后照自检清单第 3 节抽帧、量响度、查字幕。成片写在 `--dir` 给的目录里；那块盘空间不够时导出以 `EXPORT_INSUFFICIENT_SPACE` 拒绝，就导到空间够的盘上，再拷进交付目录。字幕导出成片语言（片头旁白加正片译文）与原话语言两份：片头每段旁白各是一份字幕文档，用 `production-scripts` 的 `srt.mjs` 逐份导出、按语言合并。一行的宽度照旧版字幕给 `--max-chars`。
- 烘焙中换下来的旧代码包与替身没有引用了，交付前用 `assets prune` 列出，确认都是自己换下来的再用 `removeAssets` 删掉记录；用户导入的素材不动。
- 交付物（`BRAND.md` 有清单就照它）：成片、字幕文件、`sources.csv`、说明（原声出处、字幕与译文怎么来的、AI 用在哪里）、讲稿原文、译稿、片头解说稿、发布文案（`titles-and-description`，章节时间按成片的章节）。讲稿原文以录音为准：用校对过的正片字幕按句拼、按章分段，附一张存疑表，列出拿不准的字词、在成片的哪里、猜的是什么。片头解说稿里的画面备注（`@` 行）按场景代码或导出的帧重写：做的过程中画面一改再改，稿子里的备注常常没跟上。
- 报告写明：哪些段退回了截图烘焙、哪些事实与译文没经人工核对、没做的检查。

## 8. 从一句话到简报

用户常常只说一句话。这时先查：录音在哪、是哪一次讲话、人物与时代的基本事实、能找到哪些画面；再把第 2 节的缺项一轮问齐；然后写一页**简报**给用户确认：材料清单（带许可）、片头时长与分段、选定的主干与一段风格说明、钩子用哪句原声、出处与许可的风险、交付物。简报就是这期的提示词：用户改一改就能交给任何一个会话去做，下一期照同样的方法另写一份，不复制上一期的风格。

问什么、简报写哪些项、几种材料情况下的简报示例：用 `skills_read` 读本 skill 的 `references/brief.md`。
