Files
local-cal/.claude/skills/huashu-design/assets/director-notes-samples/launch-film-30s-sample.md
2026-05-24 21:03:49 -04:00

1714 lines
78 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# v5 · "Markdown is the new typewriter."
> Director's Notes for the **huashu-md-html v2.0** launch film
> 30 seconds · 1920×1080 · 25 fps · no voiceover
> Director: huashu-design (acting as Apple-tier launch film director)
> Composer: TBD (target: Max Richter / Ólafur Arnalds / Jóhann Jóhannsson minimal-cinematic register)
> Color base: ivory white #FAFAF6 · ink #1A1A1A · terracotta #C2410C
> Type: Newsreader (display + body) · JetBrains Mono (interface) · Noto Serif SC (中文)
---
## 目录
- [Part I · Director's Statement](#part-i--directors-statement)
- [Part II · Visual System](#part-ii--visual-system)
- [Part III · Story Arc](#part-iii--story-arc)
- [Part IV · Shot-by-Shot Storyboard](#part-iv--shot-by-shot-storyboard)
- [Part V · Production Manifest](#part-v--production-manifest)
---
# Part I · Director's Statement
## 1.1 这不是一支「功能介绍片」
绝大多数 SaaS 升级视频都犯同一个错——把镜头当成 PPT。打开 → 6 个功能滑过 → logo + slogan → 结束。每一秒都在「展示」,没有一秒在「讲」。观众离开时记住的不是产品,而是「又一个看着像 AI 做的页面」。
**这支片不要做这个**
我们要讲一个故事。故事只有一行:
> **「md 是源代码,万物是产物。」**
这不是 slogan是世界观。Markdown 不是「一种轻量级文档格式」——它是写作的源头。一切下游的形式html、docx、pdf、epub都是从这同一个源头派生出的产物。huashu-md-html v2.0 把这条产物链从 4 条延长到 6 条——但延长的不是「功能列表」,是**源头的影响力半径**。
如果观众看完这支片只记住一件事,我希望那件事是:「原来 md 才是源代码」。功能列表能记多少都是 bonus。
## 1.2 视觉语言的语境对话
每一部好的宣传片都在跟一组前作对话。我希望这支片对话的语境是:
**Apple — "Designed by Apple in California" (2013)**
那支片子是我心目中科技公司宣传片的天花板。导演 Mark Romanek 做对了三件事:
1. **纯白底 + 衬线字体**——告诉观众这是一支「关于设计的设计」,不是 demo
2. **慢拍**——每一句话的字幕都比观众阅读速度慢半拍,强迫观众停留
3. **Jony Ive 的旁白几乎像耳语**——不是兜售,是分享
我们这支片**没有 voiceover**,所以前两个原则要被 typography 和 timing 强化到 200%。
**Apple Silicon Launch Films (M1 / M2 / M3, 2020-2024)**
这一系列短片教会我**typography 也能跳舞**。"M1" 三个字符可以从消失、到出现、到放大、到旋转、到爆炸成尘埃、再到重组——观众看着一个 logo 在 30 秒里成为一支舞剧的主角。
**这支片的 hero 不是产品 UI是 `md.` 这两个字符 + 一个橙色句点**。它要在 30 秒里成为舞剧主角。
**Anthropic 品牌语言2024-2026**
Anthropic 把「赤陶橙 + 衬线 + 几何抽象」做成了 AI 公司的反 slop 样板。它告诉行业:你可以是科技公司,但你也可以看起来像 Penguin Classics 出版的一本哲学小书。
我们继承这套色彩。但要做得**更克制**——Anthropic 偶尔用纯赤陶橙作大色块;我们的赤陶橙永远只作 accent占总画面 < 8% 面积剩下 92% 留给象牙白和墨黑
**Penguin Classics1947 起Romek Marber 1961 grid 之后)**
Penguin 教会我**typography 的勇敢**。一本书的封面可以是大字号衬线 + 一条黑横线 + 没有插图——读者反而会停下来
25-29 秒的 slogan reveal 借这个语言**ONE SOURCE.** **SIX FORMS.** 不是装饰文字」,它们就是画面本身
**Pentagram (Paula Scher / Michael Bierut)**
Pentagram 的招牌是**信息建筑**——文字和文字之间的距离文字和边界的距离文字层级之间的字号比都不是凭直觉」,是数学
我们的网格系统Part II.3来自这一传统
**Kenya Hara《白》(2008)**
Hara 写过:「白不是颜色是一种感受性。」(白は色彩ではなく感受性なのだ
这支片的真正主角不是 `md.`是包围它的**那片象牙白**。每一个 shot 都要留出至少 60% 的负空间负空间不是还没填满」,是内容本身
**Massimo Vignelli — Modernism in design**
Vignelli 8 字格言:「If you can design one thing, you can design everything.」(能设计好一件东西你就能设计好一切
我们的设计系统不允许这一镜临时加一种字体」「这一镜临时加一个圆角值」。所有 12 shots 共享同一套 5 个色值3 种字体4 easing curves
## 1.3 观众画像
三类观众按重要性排
**主受众 A · 已使用 v1 的 huashu-md-html 老用户(约占 60% 流量)**
他们打开片子是为了知道升级了啥」。我们对他们的承诺30 秒之内你必须明确知道——
- 新增能力 5md 出版级 PDF
- 新增能力 6md 标准 EPUB
- 这两个能力的视觉品质比想象中更高不是我用 wkhtmltopdf 也能搞级别
Shot 08 Shot 09 3 必须有「★ NEW标签 + destination card 上必须能看到印厂裁切标记」「Apple Books frame这类**看得见的专业级细节**——让老用户秒懂这不是凑数功能是正经做了的」。
**次受众 B · 听说过 huashu-md-html 但没用的 AI Native 创作者(约 25%**
他们关心的是这个 skill 跟我有什么关系」。我们对他们的承诺30 秒之内你必须意识到——
- 你写文章 / 做调研 / 做白皮书时**md 应该是你的 source of truth**
- 6 种下游格式一次命令解决
Shot 04any md要让他们看到 PDF/DOCX/PPTX/XLSX/HTML 一起被 md 吸收——这是源头思维的视觉具象化
**外受众 C · 完全不熟悉的设计师 / 编辑 / 出版人(约 15%**
他们看到的是一支漂亮的科技短片」,不一定 follow up我们对他们的承诺30 秒之内你必须留下印象——
- 这家做的东西**有出版社品位**
- 跟你过去看到的 AI 工具不一样
整支片的反 AI slop 自检Part II.7就是为他们做的任何紫渐变emoji 图标SVG 手画人物——一律不出现
## 1.4 节奏哲学
苹果宣传片的节奏不是匀速的它是**慢拍 加速 顶峰 缓收**的曲线详见 Part III 情绪曲线图)。
具体到这支片
- **0-3s 慢拍**观众进入typography 一个字符一个字符地呼吸
- **3-6s 第一加速**md 字符诞生6 个文件 cards 鱼贯飞入
- **6-22s 第二加速段**6 capability 一气呵成每个 3 秒不松手
- **22-26s 顶峰**slogan 双行 reveal所有 chrome 同步律动
- **26-30s 缓收**capability map 慢慢淡入最后一秒留给品牌印章 + 极弱的 piano 残响
**关键决策** 22 秒是这支片的高潮点不是第 29 )。29 秒是 resolution22 秒是 climax这两个不要混
## 1.5 这支片**不**做的事(反 AI slop 自检)
按重要性排
| 不做 | 原因 |
|------|------|
| 不用紫渐变 | 训练语料里科技感的万能公式2026 年看是 cyber slop |
| 不用 emoji 作图标 | 不专业就用 emoji 的病 |
| 不画 SVG 人物 / / 抽象人形 | AI 画的 SVG 人物永远五官错位比例诡异 |
| 不用 Inter/Roboto/Arial display | 太常见 system fonts |
| 不用赛博霓虹 / 深蓝底 #0D1117 | GitHub dark mode 美学的烂大街复制 |
| 不堆 effectsblur/glow/particle| 一个 effect 出现两次就是装饰三次就是 slop |
| 不用 Lorem ipsum | 每一段假文都用真正能读的内容md is the source. Anything else is product.」这种 hook |
| 不用 stock photo | 整支片不出现任何真实照片it's about typography, not lifestyle |
| 不画进度条 + 时间码 + 版权署名条 | 这些是 player chrome不是 content chrome——会和外部播放器撞 |
| 不让 md 字符在每个 scene 都长得一样 | 它要在 12 镜里有 12 种状态但保持同一个核心字形 |
## 1.6 一句话定位
> **"Markdown is the new typewriter."**
>
> A 30-second film about source-of-truth thinking, made for designers who write and writers who design.
---
# Part II · Visual System
## 2.1 完整色板
不是 3 10 每一色都有**功能定义**不是好看就用」)。
```
名称 HEX 作用 占画面比例上限
─────────────────────────────────────────────────────────────────────
Ivory paper #FAFAF6 主底色(象牙白,一抹温度) 60-70%
Mist #F2EDE4 次级背景层card 阴影下的微暗) < 15%
Mica #E6E1D6 细线 / 分隔符 / 卡片边框 < 5%
Smoke #6B6B6B 次级文本 / metadata < 5%
Cinder #3D3530 次级深色(深褐黑,不是纯黑) < 10%
Ink #1A1A1A 主黑 / 主文本 20-25%
Charred #2A2620 极深褐黑(封面卡专用) < 5%
Terracotta #C2410C 主 accentAnthropic 调) 5-8%
Terra Hot #E55D21 高光 variant仅 NEW 标签亮起一瞬)< 1%
Terra Deep #8B2D08 阴影 variant赤陶橙投影 < 1%
```
**铁律**
- 任何一镜不出现以上 10 色之外的颜色。**没有这一镜临时加点冷灰」**。
- 赤陶橙系Terracotta + variants三色合计占画面 < 10%否则视觉过载
- 任何文本只能用 4 色之一Ink / Cinder / Smoke / Terracotta
## 2.2 字体系统
```
字号层级 字体 weight 用途 字距 (em)
────────────────────────────────────────────────────────────────────────────────────
Display XXL Newsreader 700 slogan 顶字200px -0.035
Display XL Newsreader 700 capability number48px -0.020
Display L Newsreader 600 hero md 字符300-480px -0.040
Display M Newsreader 600 chapter title (32-44px) -0.015
Body L Newsreader 400 essay 正文 (18-22px) 0
Body M (zh) Noto Serif SC 500 中文 sub-line (20-26px) +0.04
Italic Newsreader italic 400 引语、副标 +0.01
Mono S JetBrains Mono 500 标签 / capability counter +0.18
Mono XS JetBrains Mono 700 NEW / version chip (11-14px) +0.22
Caret (block 3px wide) — typing cursor —
```
**字体加载策略**
- Google Fonts 预连接 `<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>`
- 单一 `<link>` 请求合并所有 weights减少 round-trip
- 录制 MP4 前必须 `document.fonts.ready` 完成才开始计时Stage 已实现
## 2.3 网格系统
**主画布**1920 × 1080
**外边距safe zone**80px 上下左右
**主内容区**1760 × 920
**12-column grid**column-width = 132pxgutter = 16px
**Baseline grid**8px 基础律所有 vertical position 必须是 8 的倍数除非有特殊视觉理由)。
**黄金分割锚点**
- 1/3 线y = 360
- 1/3 线y = 720
- 中线y = 540hero md 默认 anchor
- 黄金分割上y = 412
- 黄金分割下y = 668
**关键安全区**
- 顶部 60px chrome 元素区capability counter, version chip
- 底部 60px watermark / metadata
- 中央 800×600 区域主内容禁区每一镜的 hero 元素必须落在此区域内
## 2.4 动画系统
**Easing 库** 4 禁用其他
```
名称 曲线公式 用途
──────────────────────────────────────────────────────────────────
expoOut 1 - 2^(-10t) 默认 ease90% 的入场用这个)
overshoot cubic-bezier(0.34, 1.56, 0.64, 1) NEW 标签弹出 / 按钮浮现
linear t 底色 fade / paper texture 移动
expoIn 2^(10(t-1)) 退场 ease10% 的出场用这个)
```
**Duration 字典**
```
事件类型 持续时间 备注
────────────────────────────────────────────────────────
字符 stagger 30-50ms 打字效果 / slogan 字符依次出现
小元素入场 300ms file card / pill / chip
中元素入场 500ms destination card / capability number
hero 元素入场 700-900ms md 字符 morph
slogan 字符入场 800ms "ONE SOURCE." 整体
scene 之间过渡 300ms 重叠 cross-dissolve + scale
退场 200-300ms 出场永远快于入场
```
**Stagger 法则**
- 多元素同时进场时相邻元素 delay 30-80ms不是 0也不超过 100ms
- 6 pill 进场累计 stagger 250ms每个 50ms
- slogan 字符进场累计 stagger 280ms每个 ~30ms × 10 字符
**Scene 之间过渡**
- 永远是 **cross-dissolve + soft scale**不切换硬切
- 上一镜在末尾 300ms opacity 1 0, scale 1 0.96
- 下一镜在开头 300ms opacity 0 1, scale 1.04 1
- 两镜重叠 300ms在时间轴上 Sprite end 比下一镜 start 0.3s
## 2.5 Chrome 元素(贯穿全片)
这些是 **持续在画面里的小东西**提供这是一支完整的片子的感觉
**Chrome A · top-left · capability counter00-22s**
```
┌─────────────┐
│ ● CAP·01 │ pulse dot (terracotta) + label
│ ●●●●○○○○○ │ 6-dot progress (filled = current)
└─────────────┘
```
- 字体JetBrains Mono 12pxletter-spacing 0.24em
- 颜色Ink for label, Terracotta for current dot, Mica for upcoming dots
- 动画每次切 scene 下一个 dot 从空心 实心500ms expoOut
**Chrome B · top-right · version chip02-30s**
```
╔═════════════════════════╗
║ ● HUASHU-MD-HTML · v2.0 ║
╚═════════════════════════╝
```
- 字体JetBrains Mono 13px Boldletter-spacing 0.22em
- 颜色Terracotta dot + Ink label
- 入场02s 时整体 fade-in 600ms
- pulse dot 4 秒做一次极弱呼吸opacity 1 0.6 1, 1500ms ease-in-out
**Chrome C · bottom-center · timeline ticker07-22s**
```
any→md ━━━━●━━━━━━━━━━━━ md→html ─ html→md ─ md→docx ─ md→pdf ─ md→epub
```
- 字体JetBrains Mono 11pxletter-spacing 0.18em
- 当前 capability Terracotta + bold其他用 Smoke
- 一条横线连接 6 个名字进度点(●)随时间从左滑到右
- 入场07s 时整条 fade-in 500ms
**Chrome D · bottom-right · watermark持续**
```
CREATED BY HUASHU-DESIGN
```
- 字体JetBrains Mono 10pxletter-spacing 0.24em
- 颜色rgba(26,26,26,0.32)
- 完全静态不动
**Chrome E · 极淡 paper texture持续**
- SVG 噪点 + 极慢的 0.3% scale 呼吸
- opacity 0.04
- 录像时几乎看不见但能让画面有呼吸
## 2.6 音频系统
### BGM 走向30 秒分段曲线)
```
强度
│ ╱╲
1│ ╲╲
╲╲
0└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30s
│ │ │ │ │ │
入场│ 弦乐进 │ 节奏律动加入 │ 顶峰 │ decay
piano swell
```
**层级(每层 30 秒持续,强度变化由 envelope 控制)**
- **L0 · Room tone**00-30s极弱 background noise给画面不死寂的呼吸感
- **L1 · Piano single note**00-08s单一钢琴音持续敲击 1.2 秒一次慢慢累积
- **L2 · Piano arpeggio**03-22s钢琴琶音入场拾起节奏的感觉
- **L3 · Cello drone**08-22s低频弦乐铺底重量
- **L4 · Pulse**15-22s极弱 sub-kick4/4 节奏不是 dance beat cinematic pulse
- **L5 · String swell**22-26s整组弦乐 swell up climax
- **L6 · Decay + reverb tail**26-30s所有层级 decay留下钢琴 + reverb
**风格目标**Max Richter *On the Nature of Daylight* + Ólafur Arnalds *Re:member* + Jóhann Jóhannsson *Orphée*
### SFX 字典
```
Cue 时间 类型 音量
────────────────────────────────────────────────────────────────────
keyboard click 00.5-02.0 keypress × 12 -18dB每次 30ms
cursor blink 02.0-02.8 subtle tick -28dB
md morph swell 02.8-03.2 soft whoosh + bloom -16dB
file card whoosh × 6 05.5-08.0 short whoosh -20dB每次 200ms
absorb / ink drop 08.0-08.4 "absorb" splash -16dB
paper rustle 08.5-09.0 paper turn -22dB
chime: capability 02 → 09.0 single chime tone -18dB
chime: capability 03 → 12.0 single chime tone -18dB
chime: capability 04 → 15.0 single chime tone -18dB
chime: NEW (05) 18.0 double chime + glow -14dB
chime: NEW (06) 21.0 double chime + glow -14dB
build sweep 22.0-22.6 ascending sweep -10dB
impact (slogan ONE) 22.6 deep impact -8dB
impact (slogan SIX) 23.4 deep impact -8dB
pen flourish 24.0-24.4 pen on paper -22dB
final stamp / sign-off 29.0-29.5 ink stamp -14dB
```
**SFX 频段隔离**防止互相打架
- BGM 占低频 (40Hz-2kHz)
- SFX whooshes / chimes 占中高频 (2kHz-8kHz)
- SFX impacts 占低频 sub (40Hz-120Hz) BGM cello 重叠但 BGM 同时 duck -3dB
## 2.7 反 AI slop 自检表per-shot
每一镜在执行前必须过这个 checklist
```
□ 没有紫色(任何饱和度)
□ 没有圆角卡片 + 左 border accent 的组合(除了 destination card 的诚实 mica border
□ 没有 emoji 作为图标
□ 没有 SVG 画的人物 / 抽象人形
□ 没有未在 Part II.1 色板里的颜色
□ 没有 Inter / Roboto / Arial 作为 display
□ 字距、行高、字号都来自 Part II.2 字体系统(没有「凭手感」加的值)
□ vertical position 是 8 的倍数(除了刻意的视觉理由)
□ 赤陶橙在本镜占画面 < 10%
□ 这一镜有至少一处「pause 暂停时值得截图」的细节120% 签名)
□ 上一镜到这一镜的过渡是 cross-dissolve + scale不是硬切
□ 本镜结束时为下一镜做了视觉「让位」(不是「全画面填满到最后」)
```
---
# Part III · Story Arc
## 3.1 三幕结构
**ACT I · SET-UP (00.0 — 06.0s)**
观众进入画面问题被提出什么是 source of truth
- SHOT 01 (0.0-1.5s) · BLANK PAGE
- SHOT 02 (1.5-3.0s) · THE CURSOR
- SHOT 03 (3.0-5.0s) · THE TRANSFORMATION
- SHOT 04 (5.0-6.0s) · 进入 gathering ACT II 重叠
**ACT II · ESCALATION (06.0 — 22.0s)**
答案展开md 是源头它向外辐射 6 条产物链
- SHOT 04 (5.0-8.5s) · GATHERINGany md
- SHOT 05 (8.5-11.5s) · FIRST FLOWERmd html
- SHOT 06 (11.5-14.5s) · REVERSE FLOWhtml md
- SHOT 07 (14.5-17.5s) · PUBLISHER GRADEmd docx
- SHOT 08 (17.5-20.5s) · NEW · PRINTmd pdf
- SHOT 09 (20.5-22.5s) · NEW · EBOOKmd epub ACT III 重叠 0.5s
**ACT III · PAYOFF (22.5 — 30.0s)**
主题升华slogan 出现品牌印章
- SHOT 10 (22.5-24.0s) · THE CONVERGENCE
- SHOT 11 (24.0-26.5s) · ONE SOURCE.
- SHOT 12 (26.5-29.0s) · SIX FORMS.
- SHOT 13 (29.0-30.0s) · SIGN-OFF
## 3.2 情绪曲线
```
情绪强度
│ ╔═══╗
│ ╔══╝ ╚══╗
│ ╔═════╝ ╚══╗
│ ╔═══╝ ╚══╗
│ ╔══╝ ╚══╗
│ ╔═══╝ ╚════════╗
│ ╔═════╝ ╚══╗
│ ╔═════╝ ╚══
│ ╔════╝
│══╝
0──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──>
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30s
│ │ │ │ │ │ │ │ │
blank cursor morph gather cap 02-04 cap 05/06 ★ slogan slogan sign-off
ONE SIX
──────►
PEAK 24.5s
```
**关键 emotional beats**
- **02.0s**第一个 keyboard click 观众进入
- **03.0s**md 字符诞生 第一次awe
- **08.0s**6 个文件 cards 收拢进 md 原来 md 是源第一次 click
- **18.0s**第一个 NEW 标签出现 老用户
- **22.5s**所有 chrome 收拢准备进入 Act III tension build-up peak
- **24.5s**SIX FORMS. 落地 emotional climax
- **30.0s**md 印章静静停留 resolution
---
# Part IV · Shot-by-Shot Storyboard
每一镜的格式
```
SHOT NN · NAME
[TIMECODE] | FUNCTION
[VISUAL] 画面构图
[TYPE] 排版精确 spec
[ANIM] 每元素 in/out/easing/delay
[AUDIO] music beat + SFX cue
[CHROME] 四角元素状态
[ANTI-SLOP] 通过的自检项
[WHY] 承接 + 推进
```
---
## SHOT 01 · "BLANK PAGE"
**[TIMECODE]** 00.00 01.50s (1.5s) `|` **FUNCTION** 开场引观众进入一个时间
**[VISUAL]**
整个 1920×1080 Ivory paper #FAFAF6。**画面里什么都没有**。
唯一的存在一层极淡的 paper textureSVG 噪点 + 0.3% scale 极慢呼吸几乎看不见但赋予画面这是一张真的纸的潜意识
构图完全空这是 Kenya Hara 意义上的」——不是还没画」,内容本身」。
**[TYPE]** 无文本
**[ANIM]**
- 0.00s · paper texture opacity 0 0.04500ms linear
- 0.50-1.50s · 整个画面 hold无动作让观众的眼睛适应这个白
- 1.40-1.50s · 画面中央偏左x=860, y=540开始浮现一个 cursor 的位置透明下一镜才显形
**[AUDIO]**
- BGM: room tone 进入 (300ms fade-in to -38dB)
- SFX:
**[CHROME]** 全部隐藏Chrome A/B/C/D/E 都还没显形
**[ANTI-SLOP]**
- 没有 logo没有Loading...」、没有任何品牌前置
- 没有渐变没有 effects
- 这一镜的pause-and-looksignature画面有质感paper texture但绝不抢戏
**[WHY]**
苹果 "Designed by Apple in California" 也是这样开场——给空白一个时间它告诉观众这部片需要你慢下来」。如果开场就堆 logo chrome观众的注意力被分散后面 30 秒都收不回
1.5 秒是这支片最重要的 1.5 秒之一
---
## SHOT 02 · "THE CURSOR"
**[TIMECODE]** 01.50 03.00s (1.5s) `|` **FUNCTION** typewriter 诞生第一个内容
**[VISUAL]**
画面中央偏左x=860, y=540一个垂直的黑色 block3px × 56px, Ink #1A1A1A开始闪烁这是 cursor
闪烁两次0.7s 一周期 × 2cursor 后面开始逐字出现 `# markdown.md`字体 JetBrains Mono 56px颜色 Ink #1A1A1Aletter-spacing -0.01em
每打一个字符键盘 click 音响一次打完最后一个字符13 个字符总计cursor `.md` 之后继续闪烁 1
**[TYPE]**
- Text: `# markdown.md`
- Font: JetBrains Mono 500 weight
- Size: 56px
- Color: Ink #1A1A1A
- Letter-spacing: -0.01em
- Position: horizontal center, y = 540baseline文字 vertical center 略低于此
**[ANIM]**
- 01.50s · cursor block opacity 0 1 (200ms)
- 01.50-01.85s · cursor blink 第一次off 200ms / on 200ms
- 01.85-02.20s · cursor blink 第二次
- 02.20-02.85s · 13 个字符 staggered 出现每个间隔 50ms 650ms 完成每个字符各自 fade + 1px slide-down (180ms expoOut)
- 02.85-03.00s · cursor 在末尾再 blink 一次最后一次标志输入完成
**[AUDIO]**
- BGM: piano 第一音敲击 at 01.50s (-22dB)
- SFX: keyboard click × 13 (每字一次, -18dB, 30ms each)
- SFX: 最后一次 cursor blink 200ms 静默给下一镜 morph 让位
**[CHROME]** 仍隐藏
**[ANTI-SLOP]**
- cursor 不是 sci-fi 闪烁不是 0.1s 极快闪烁 macOS terminal cursor 节奏的真实模拟
- typing 不是字符一次性出现」,是真的有节奏的打字
- font JetBrains Mono不是 Courier Menlo 这种系统默认 mono
- pause-and-look signaturecursor 3px 宽度不是 2px 4px)—— 一个非常精确的细节懂行的人会注意到这是真实 terminal 设计的
**[WHY]**
这一镜是 setup 的核心**markdown 不是一个名词它是一个动作**——它是敲击键盘把字符变成结构这件事本身
cursor 是写作的最小单位从一个 cursor 开始源代码的诞生
下一镜的 morph 就建立在这个观众已经接受我们在写 markdown的前提上
---
## SHOT 03 · "THE TRANSFORMATION"
**[TIMECODE]** 03.00 05.00s (2.0s) `|` **FUNCTION** 揭示 hero`# markdown.md` morph hero `md.`
**[VISUAL]**
03.00 `# markdown.md`56px mono开始向中央收拢放大变形
**morph 过程**详细解构
- 03.00-03.30s300ms`# markdown.md` `#` `arkdown` 部分淡出opacity 1 0同时 `m` `d.md` `md` 部分留下
- 03.30-04.10s800ms留下的 `md` mono 字体 morph Newsreader serif 56px 放大到 480px Ink 变成 Ink不变色位置不变仍在画面中央)。
- 04.10-04.80s700ms `md` 字符的右下角一个 Terracotta 句点 `.` 浮现fade-in + scale 0.6 1 + overshoot easing)。
- 04.80-05.00s200ms句点正式 settlehero 完整下方 30px 出现一条 320px 宽的赤陶橙细线terracotta accent rule, 2px thick从中心向两端展开
**结束帧**`md.`Newsreader 600 weight, 480px, Ink with Terracotta dot+ 下方一条赤陶橙细线画面其他全空
**[TYPE]**
- Text: `md.``md` Ink, `.` Terracotta
- Font: Newsreader 600 weight
- Size: 480px (display L)
- Letter-spacing: -0.04em
- Color: `m`+`d` Ink #1A1A1A, `.` Terracotta #C2410C
- hero 中线y = 540水平垂直居中
- accent rule 下方 30pxwidth 320px 0 长成
**[ANIM]**
- 03.00-03.30s · `#` `arkdown` `md`中段淡出 (opacity 1 0, expoOut)
- 03.30-04.10s · `md` morphfontFamily 切换fontSize 56 480weight 500 600800ms expoOut注意 morph 不是 abrupt 切换而是 ghost 残影叠加 + scale up + opacity 切换
- 04.10-04.80s · `.` 入场 (700ms overshoot, scale 0.6 1)
- 04.80-05.00s · accent rule width 0 320px (300ms expoOut)
**[AUDIO]**
- BGM: piano 第二音 at 03.00s (-20dB), 第三音 at 04.20s (-18dB) piano 累积
- SFX: 03.00-03.20s soft whooshmorph 开始时, -16dB
- SFX: 04.10s subtle bloom句点出现的瞬间, -20dB
- SFX: 04.80s short paper rustleaccent rule 展开, -22dB
**[CHROME]**
- 04.50s · Chrome Bversion chip top-right开始浮现 (fade-in 600ms)
- 形态`● HUASHU-MD-HTML · v2.0`
- terracotta dot, mono text, Ink color
- 进入位置top: 78px, right: 80px
- 仍隐藏Chrome A, C, Evisible only 06s
**[ANTI-SLOP]**
- morph 不是淡出 + 淡入的廉价 transition是真正的字符变形 ghost 残影叠加
- 句点是 hero 签名细节」(120% 做到的那个Terracotta 句点小如指甲但是这部片的视觉锚点**所有后面的镜头里这个句点都保留为 hero 标识**
- accent rule 不是装饰 hero base line——它在 Shot 11 slogan 那里会再次出现建立首尾呼应
- pause-and-look signature480px Newsreader 'md' 的字距 -0.04em m d 之间几乎贴合但不接触这是 Newsreader 这个字体在大字号时的招牌质感
**[WHY]**
这是 hero shot后面 25 秒整部片的主角」(`md.`在此诞生
morph 的设计哲学** mono serif是从我在打字我在写作的隐喻**。mono typewriterserif publishingmd 同时是两者——它在键盘上敲但它是 publishing 的源代码
下一镜进入 ACT IIhero 已经站住了——它会被推到画面上方让出空间给物质化的产物」。
---
## SHOT 04 · "GATHERING" (any → md)
**[TIMECODE]** 05.00 08.50s (3.5s) `|` **FUNCTION** CAPABILITY 01 揭示万物 md建立md 是源的世界观
**[VISUAL]**
05.00shero `md.` 从画面中央y=540向上滑到 y=280 1/4 高度位置同时缩小到 220px
随后画面下半部y=520 ~ y=900 区域出现 6 张文件 cards按顺序从画面外下方 y=1140飞入沿一条隐形的抛物线轨迹向 md hero 收拢
6 cards 的设计**每张都是真实文件类型的迷你 demo不是 fake bar lines**
```
.pdf │ 双栏布局 + 页眉 "doc.pdf" + 页码 "— 12 —" + 几行真实排版的小文字
.docx │ heading "On Markdown" + 副标 italic + 6 行段落 ascii
.pptx │ 标题 "MD AS SOURCE" + 一个简化的 bar chart 占位
.xlsx │ 6×4 的 spreadsheet 网格 + 一些数字
.epub │ Apple Books 风的页面 + 章节标题 "Chapter 01"
.html │ 一个浏览器 chrome三个圆点 + URL bar "example.com"+ 标题 + 段落
```
每张 card 尺寸 130×180px白底 + Mica 边框 + 24°右上角 fold
**飞行轨迹**从下方 y=1140 出发沿抛物线向 md hero 「.」位置 x=960+50, y=280+90汇聚。中段在画面中部时6 cards 排成扇形每相邻两张间隔 220px最终所有 6 张被 md 吸收」(scale 1 0.5 + opacity 1 0同时 position 收拢到一个点)。
吸收时机 05.60s 开始每隔 0.18s 一张 launch每张飞行 1.1s 后被吸收最后一张 absorb 完成时间约 07.60s
吸收完成后07.60-08.20s下方 60px 处出现 tagline:「万物 md」(中文衬线36pxInkitalic
08.20-08.50s · 整体 hold准备进入 Shot 05
**[TYPE]**
- hero `md.`缩小到 220px SHOT 03 字体规格
- 6 cards 内部排版JetBrains Mono 12-14px for labels, Newsreader 12-16px for content
- tagline万物 md」:Noto Serif SC 36px italic + 中间的 Newsreader italic + Terracotta
- 顶部 Chrome A 文字JetBrains Mono 12px
**[ANIM]**
- 05.00-05.30s · hero md 缩放 + 上移300ms expoOut
- 05.30s · Chrome A capability counter 入场CAPABILITY · 01 显示第一个 dot 实心
- 05.60-07.60s · 6 cards 依次发射每张 launch delay = 5.60 + i × 0.18s, 飞行 1.1sabsorb at launch+1.1
- 07.60-08.20s · tagline万物 md入场fade-in 400ms + slight y slide 12px 0
- 08.20-08.50s · hold
**[AUDIO]**
- BGM: piano arpeggio L2 进入 at 05.00s-26dB -20dB 渐入
- SFX: file card whoosh × 6每张 launch 时一次每次 200ms-20dB
- SFX: absorb / ink drop最后一张 card 被吸收时-16dB
- SFX: paper rustletagline 入场时-22dB
**[CHROME]**
- Atop-left capability counter: ON, 显示 `CAPABILITY · 01`, 第一个 dot 实心
- Bversion chip: ON, 持续显示
- Ctimeline ticker: OFF (会在 SHOT 05 入场)
- Dwatermark: ON, 永远 ON
- Epaper texture: ON
**[ANTI-SLOP]**
- 6 cards 不是 emoji 也不是图标**有内部内容的迷你 demo**——每张都 readable
- 飞行轨迹是抛物线重力感不是直线电脑感
- 收拢时是吸收」(scale + position 同时收不是叠加
- 没有给 md 字符任何 glow particle effects不需要解释md 在吸收」,观众自己看得懂
- pause-and-look signature每一张 card 在飞行中段 pause 都能读出来这是个 PDF / 这是个 DOCX」——这就是 120% 做到的细节
- tagline 「→」而不是to」, markdown 自己的字符
**[WHY]**
这是 ACT II 的开门镜如果观众看完这 3.5 秒没意识到md 是源」,后面的镜头就白做了
3.5 秒里有 3 micro-narrative beats
1. hero 让位md 上移)—— 暗示我让位给我的产物们
2. 6 个产物现身 —— 揭示我能收的东西
3. 全部归位回 md —— 但他们最终都是 md
下一镜进入 md html 的正向流动——观众已经接受md 是源」,现在 ready to seemd 怎么变」。
---
## SHOT 05 · "FIRST FLOWER · HTML" (md → html)
**[TIMECODE]** 08.50 11.50s (3.0s) `|` **FUNCTION** CAPABILITY 02第一次正向输出建立 ScenePipeline 模式后续 5 镜共用此结构)。
**[VISUAL]**
08.50shero `md.` 从中心上方位置滑到画面左侧x=480, y=540尺寸保持 220px
同时画面右侧 (x=1400, y=540) 出现一个 destination card模拟Tufte CSS 风的 essay html」。
destination card 设计**真实可读的内容不是 bar lines**
```
┌─────────────────────────────────┐
│ │
│ On Markdown │ ← Newsreader 600, 32px, Ink
│ AN ESSAY · 2026 │ ← Mono 11px, 0.18em, Smoke
│ ▬▬▬ │ ← Terracotta rule 60×3px
│ │
│ md is the source of truth. │ ← Newsreader 400, 18px, line-height 1.7
│ Anything else is product. │
│ We write once. Publish six │
│ ways. The river forks; the │
│ spring stays the same. │
│ │
│ ─ huashu, 2026.05.11 │ ← italic 14px, Smoke
│ │
│ article.html · TUFTE THEME │ ← Mono 10px, 0.18em, Smoke (bottom)
└─────────────────────────────────┘
宽 480px × 高 560px
白底 + Mica border + 24° 角折
```
md 字符与 destination card 之间用一条 terracotta 细线连接 md dot 出发向右生长 380px箭头 head 触达 card 左边界线上方 30px 处显示 labelmd html」(JetBrains Mono 14px Terracottaletter-spacing 0.14em)。
09.80s Chrome Ctimeline ticker首次入场固定在 y=1000
**[TYPE]**
- visual description 内嵌
- labelmd html字号 14px Mono BoldTerracottaletter-spacing 0.14em
- destination card 顶部 chapter title Newsreader 600, 32px, Ink
- destination card 底部小印 mono 10px Smoke 0.18em
**[ANIM]**
- 08.50-08.80s · hero md center-top 滑到 left-mid300ms expoOut
- 08.80-09.10s · arrow line md.dot 起点向右生长300ms expoOut, 0 380px
- 09.10s · arrow head 浮现200ms overshoot
- 09.20-09.40s · labelmd html入场fade-in + 8px y slide-down, 300ms expoOut
- 09.40-10.10s · destination card 整体入场700ms expoOut, scale 0.85 1 + opacity 0 1
- 10.10-10.80s · destination card 内部 staggered 入场title (400ms delay 0) 副标 metadata (delay 200ms) terracotta rule (delay 400ms) 6 行正文 (each delay 60ms cascade) 签名 (delay 1000ms) bottom mono (delay 1100ms)
- 10.80-11.50s · hold + 微观呼吸 (整体 scale 1 1.005 1, 600ms ease-in-out infinite, 但本镜只播放半个周期)
**[AUDIO]**
- BGM: cello drone L3 入场 at 09.00s (-30dB -24dB)
- SFX: chime: capability 02 at 09.00s (-18dB)
- SFX: paper rustlecard 入场时, -22dB
- SFX: micro ticks每行文字 staggered 入场时, -26dB each
**[CHROME]**
- A: 推进到 `CAPABILITY · 02`, 第二个 dot 实心
- B: ON
- **C: 首次入场** at 09.80s`any→md ━━━━●━━━━━ md→html ─ html→md ─ md→docx ─ md→pdf ─ md→epub`进度点 位于第二格上方
- D: ON
- E: ON
**[ANTI-SLOP]**
- destination card On Markdownessay 内容是真的可读的英文哲学小段不是 Lorem ipsum
- article.html · TUFTE THEME这个小印是pause 时能读出来的细节签名
- 没用任何 glow particle 强调md html 的转换—— typography 和构图自己讲清楚
- arrow line 不是 dashed dotted避免网页教程 1.5px 实线 Terracotta
- pause-and-look signaturedestination card 顶部的AN ESSAY · 2026副标用了 Newsreader small caps OpenType feature0.18em 字距——是这一镜的 120% 细节
**[WHY]**
这是 ScenePipeline 模式的首次建立后续 5 capability shots 都会按这个结构推进
1. md 在左destination 在右
2. arrow + label 在中间
3. destination card 内部 staggered 入场每个 card 都有 6-8 个文字层级
4. card 内容是真实可读的不是 fake bar lines
观众看到第二次SHOT 06就会理解这个模式看到第六次SHOT 09会有又来一次但这次是 NEW的感觉——这正是 ACT II 的节奏设计
---
## SHOT 06 · "REVERSE FLOW · MD" (html → md)
**[TIMECODE]** 11.50 14.50s (3.0s) `|` **FUNCTION** CAPABILITY 03反向归档html md建立双向流概念
**[VISUAL]**
cross-dissolve 进入前一镜的 destination card 11.50-11.80s 内缩小退场到右下角新的 destination card这次显示 markdown 源代码从右侧入场
新的 destination card 设计**深底 markdown source 视图** SHOT 05 的浅底 html 形成视觉对比)。
```
┌─────────────────────────────────┐
│ │ ← 背景 Charred #2A2620
│ # On Markdown │ ← Terracotta, mono 14px
│ │
│ An essay · 2026 │ ← Smoke, mono 14px
│ │
│ > md is the source. │ ← italic Smoke, mono 14px
│ > Anything else is **product**. │ `**product**` 高亮 mica + bold
│ │
│ - 1 source │ ← mono 14px Smoke
│ - 6 forms │
│ - ∞ outputs │
│ │
│ essay.md · CLEAN MARKDOWN │ ← bottom Mono 10px Smoke
└─────────────────────────────────┘
480×560px, Charred 底, 顶部 24° 角折是 Cinder
```
arrow direction 反向从右侧 destination card 向左 md 字符方向 Terracotta 线 + 箭头 head 指向左)。label 改为html md」。
**关键差异点** SHOT 05 形成 visual rhyme
- destination 在右md 在左 SHOT 05
- arrow direction 反向visual: 我们在归档/拉回来
- card 是深底视觉对比强调这是 source
**[TYPE]**
- 全卡片内部都是 JetBrains Mono 14px
- markdown 语法元素配色`#` 标题 Terracotta`>` 引用 italic Smoke`**bold**` Mica + bold列表 dash Smoke
- bottom mono 10px Smoke
**[ANIM]**
- 11.50-11.80s · 上一镜 card 退场 右下角, fade out+ md 字符保持
- 11.80-12.10s · arrow line 反向生长这次从右向左, 300ms expoOut
- 12.10s · arrow head指向左浮现
- 12.20-12.40s · labelhtml md入场
- 12.40-13.10s · destination card 入场 SHOT 05 入场逻辑
- 13.10-13.80s · markdown 内部 6 staggered 入场每行 100ms delay
- 特殊 micro-detail每一行入场时模拟 typewriter——line character-by-character cascade reveal让观众感觉到这是 markdown 写出来的过程」)
- 13.80-14.50s · hold
**[AUDIO]**
- BGM: 持续 L1+L2+L3 layers
- SFX: chime: capability 03 at 12.00s (-18dB)
- SFX: paper rustle (12.40s)
- SFX: 每行入场时极弱 keyboard click ticker-26dB each, 100ms apart
**[CHROME]**
- A: 推进到 `CAPABILITY · 03`第三个 dot 实心
- B: ON
- C: 进度点 滑到htmlmd位置
- D: ON
- E: ON
**[ANTI-SLOP]**
- 这是整支片唯一的深底镜头——刻意制造视觉对比让观众知道这是 source code」,不是又来一个 destination
- markdown 内部的 syntax highlighting 用的颜色不是 cyber 配色不是 VS Code Dark+ 那种是出版社配色Terracotta + Smoke + Mica
- essay.md · CLEAN MARKDOWN底部小印 pause-and-look signature
- 反向 arrow 不是U-turn 曲线」,是直线 + 反向箭头——保持结构一致性
**[WHY]**
这一镜的真正作用不是 capability 03」,**告诉观众这条管道是双向的**。
如果整支片 6 capability 都是从 md 向外辐射观众会以为md 只是出去」。 3 capability 让流动反向建立md 是一切的中枢的世界观
这是为什么 capability 顺序我选了 02 (mdhtml) 03 (htmlmd) 04 (mddocx) ——故意把反向 capability 卡在第 3 最大化双向流的认知 surprise
---
## SHOT 07 · "PUBLISHER GRADE · DOCX" (md → docx)
**[TIMECODE]** 14.50 17.50s (3.0s) `|` **FUNCTION** CAPABILITY 04出版社品位 docx建立md 不只是给程序员的论点
**[VISUAL]**
回到浅底回到md 在左destination 在右」。
destination card 设计**出版社级 docx 章节首页**高密度信息但完全克制)。
```
┌─────────────────────────────────┐
│ ON MARKDOWN│ ← page header, right-aligned, Smoke italic mono 9px
│ CHAPTER · 01 │ ← Terracotta mono 11px bold 0.22em
│ │
│ On Markdown │ ← Newsreader 700, 36px, Ink, lh 1.1
│ A short essay on source-of-truth│ ← Newsreader italic 14px, Smoke
│ thinking │
│ │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━ │ ← Terracotta full-width rule 3px
│ │
│ ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ │ ← 10 lines of mica bar paragraphs
│ ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ │ (varied widths 76-95%)
│ ... │
│ │
│ — 1 — │ ← page number, centered, mono 10px Smoke
└─────────────────────────────────┘
480×580px, white card, Mica border, 24° corner fold
```
**特别细节**
- 顶部右上角的page header」(书名 italic 灰色 mono是真实出版社 docx 的细节签名
- CHAPTER · 01前缀让观众一眼意识到这是一本书的一页不是一篇文章
- terracotta full-width rule不是细线而是 3px rule是出版社章节首页的招牌
- 底部 page number「— 1 —」前后的破折号是 Newsreader em-dash不是 hyphen
**[TYPE]**
- page header: Newsreader italic 9px, Smoke, letter-spacing 0.14em
- CHAPTER · 01: JetBrains Mono Bold 11px, Terracotta, letter-spacing 0.22em
- main title: Newsreader 700, 36px, Ink, line-height 1.05
- subtitle: Newsreader italic 14px, Smoke
- terracotta rule: 3px thick, full card width
- bar paragraphs: Mica color #E6E1D6, height 6px
- page number: JetBrains Mono 10px, Smoke, letter-spacing 0.18em
**[ANIM]**
- 14.50-14.80s · 前一镜 card 退场 + md 保持
- 14.80-15.10s · arrow line 正向生长
- 15.10s · arrow head, labelmd docx入场
- 15.30-16.10s · destination card 整体入场
- 16.10-17.00s · 内部 staggerpage header (delay 0) CHAPTER (delay 100ms) title (delay 300ms) subtitle (delay 500ms) rule (delay 700ms) 10 行段落 cascade (delay 850ms + 60ms cascade) page number (delay 1600ms)
- 17.00-17.50s · hold
**[AUDIO]**
- BGM: 持续at 15.00s BGM 整体 swell +2dB暗示我们在向高潮推进
- SFX: chime: capability 04 at 15.00s (-18dB)
- SFX: paper rustle (15.30s)
**[CHROME]**
- A: `CAPABILITY · 04`, 第四个 dot 实心
- B/C/D/E: ON
**[ANTI-SLOP]**
- 不写这是一本书的内页 mockup的解释字让排版自己说话
- bar paragraphs Mica#E6E1D6这种极淡灰色不是黑色——这是排版样式预览不是真内容的诚实信号
- pause-and-look signature顶部 right-aligned page header italic mono——99% 的观众不会看1% 的设计师看到会知道这家做了功课
- 这一镜是 6 capability 里色彩最饱和的Terracotta 占了 page rule + chapter label + 顶部右 chrome counter)——刚好在故事弧的中段符合向高潮 build-up的曲线
**[WHY]**
CAPABILITY 04 是承上启下的关键一镜
- 它确认了md 不只是 web 」——它能做出版社级别的 docx
- 它建立了印刷品的视觉语境 SHOT 08pdf SHOT 09epub做准备
观众看完这一镜md 印刷品这条链条 ready接下来两镜的 NEW 标签就有了承接
---
## SHOT 08 · "★ NEW · PRINT" (md → pdf)
**[TIMECODE]** 17.50 20.50s (3.0s) `|` **FUNCTION** CAPABILITY 05。**NEW**。md 出版级 PDF第一次升级标志亮起
**[VISUAL]**
cross-dissolve 进入这一镜的视觉强度**显著高于** SHOT 05-07——因为这是新东西」,需要被记住
视觉差异点
1. **NEW 标签**top-left capability counter 旁边亮起一个 Terracotta 矩形框内含「★ NEW字符JetBrains Mono Bold 13px, Terracotta, letter-spacing 0.22em4px Terracotta border, 6px×12px padding
2. **destination 不是单一卡片,是两张 PDF fan 出来**A4 在后面轻微 +5° 旋转大32开176×240mm国内纸质书规格在前面轻微 -3° 旋转形成两个 page-size 都支持的视觉
3. **每张 PDF 上有「印刷裁切标记」crop marks**——四角各一个 L 型小线2px Smoke ——这是真正印厂 PDF 的细节
4. arrow + label 配色全部用 Terracotta不是 Ink整体配色更暖
**两张 PDF 内容**
PDF AA4, 后面
```
┌──────────────────────────┐
│ ┌ ┐ │ ← crop marks
│ A4 · 210×297mm │ ← Mono Bold 10px Terracotta
│ ─── (Terracotta rule) │
│ On Markdown │ ← Newsreader 22px
│ ────────────────── │
│ ▬▬▬▬▬▬▬▬▬▬▬ │ ← 7 lines mica bars
│ ▬▬▬▬▬▬▬▬▬▬▬▬ │
│ ... │
│ │
│ └ ┘ │ ← crop marks
└──────────────────────────┘
360×460px, white card, +5° rotation
```
PDF B大32开前面
```
┌────────────────────┐
│ ┌ ┐ │ ← crop marks
│ 大32开 · 176×240mm│ ← Mono Bold 10px Terracotta
│ ─── │
│ On Markdown │ ← Newsreader 19px
│ ────────── │
│ ▬▬▬▬▬▬▬▬▬▬ │ ← 6 lines mica bars
│ ... │
│ └ ┘ │
└────────────────────┘
290×410px, white card, -3° rotation
```
**[TYPE]**
- NEW 标签Mono Bold 13px Terracotta, 0.22em letter-spacing, 1.5px Terracotta border
- arrow labelmd pdf」:Mono Bold 14px Terracotta, 0.14em
- PDF spec labels (A4 · 210×297mm )Mono Bold 10px Terracotta, 0.2em
- chapter titles inside PDFsNewsreader 600 weight, 19-22px, Ink
**[ANIM]**
- 17.50-17.80s · 前一镜 card 退场 + md 保持
- 17.70s · **NEW 标签亮起**特殊处理scale 0.8 1.1 1.0 over 400ms with overshoot easing同时一道极弱 terracotta glow 短暂 pulse 然后消失
- 17.80-18.10s · arrow + label 入场这次用 Terracotta accent强调这是 NEW」)
- 18.20-18.60s · PDF B前面那张入场400ms expoOut, scale 0.85 1 + 顺时针 -8° -3°)
- 18.50-18.90s · PDF A后面那张紧随入场400ms expoOut, scale 0.85 1 + 顺时针 0° +5°,stagger delay 300ms
- 18.90-19.70s · 两张 PDF 内部 cascade staggered 入场
- 19.70s · 4 crop marksPDF B 依次出现80ms cascade印厂工艺的细节签名
- 19.70-20.50s · hold
**[AUDIO]**
- BGM: percussion pulse L4 加入 at 18.00s (-32dB)极弱 sub-kick 4/4 节奏建立
- **SFX: chime: NEW (05) at 17.70sdouble chime + soft glow + reverb tail, -14dB** 这是整支片最重要的 SFX cue 之一
- SFX: paper rustle × 2每张 PDF 入场时-22dB each
- SFX: subtle "ink stamp" at 19.70scrop marks 出现时, -22dB
**[CHROME]**
- A: `CAPABILITY · 05`, 第五个 dot 实心
- A 旁边新增 NEW 标签
- B: ON, 此时 version chip 旁的橙点同步 pulse强调v2.0 新增」)
- C: 进度点 滑到mdpdf位置, 这个位置的文字字号加大 0.5px 强调
- D: ON
- E: ON
**[ANTI-SLOP]**
- NEW 标签不是 emoji 不是 sticker—— typographic markmono + 0.22em + + border
- 两张 PDF 不是叠在一起的廉价 stacking fan + 旋转暗示打开看的物理动作
- crop marks 是真正印厂术语的视觉表达pause 时能看到啊这是 print-ready
- 没用 glow particle 来强调NEW」—— typography SFX 自己说话
- pause-and-look signaturePDF B 顶部的大32开 · 176×240mm中英混排是花叔生态对国内纸质书规格的尊重
**[WHY]**
这是 ACT II 高潮镜之一两件事必须同时发生
1. 观众必须 immediate 意识到这是新功能
2. 必须用视觉细节说明这不是凑数的 wkhtmltopdf 包装是真正出版级
NEW 标签 + crop marks + 两张 PDF fan + 完整的 A4 / 大32开规格说明——四件事一起做到上面两件
下一镜的 epub 是双 NEW 镜头里的第二个节奏感情绪强度要比这一镜再上一档
---
## SHOT 09 · "★ NEW · EBOOK" (md → epub)
**[TIMECODE]** 20.50 22.50s (2.0s) `|` **FUNCTION** CAPABILITY 06。**NEW**。md 标准 EPUB3第二个新功能最后一个 capability
**[VISUAL]**
cross-dissolve 进入这一镜的镜头时长**比前面短** 2.0s 而不是 3.0s)——因为我们已经建立了NEW + destination的模式第二次出现观众秒懂节奏可以加速
destination card 设计**Apple Books 风的 EPUB reader frame**强调这本书已经在阅读器里了的现实感)。
```
╔════════════════════════════════════╗
║ ● ● ● ║ ← window chrome (Apple Books)
╠════════════════════════════════════╣
║ ║
║ HUASHU · ORANGE BOOK ║ ← Mono Bold 10px Terracotta 0.22em
║ ║
║ ║
║ On ║ ← Newsreader 700, 30px, Ivory paper
║ Markdown ║ (on Charred bg)
║ ║
║ ─── ║ ← Terracotta rule 40×2px
║ ║
║ an essay · 花叔 ║ ← italic 14px Smoke on Charred
║ ║
╠════════════════════════════════════╣
║ Apple Books · 1 of 24 EPUB 3 ║ ← Mono 10px Smoke 0.14em
╚════════════════════════════════════╝
460×470px, ivory paper outer + Charred inner book cover area
2px Ink border, 22px border-radius (modern app frame)
```
**关键视觉差异**
- 整体 frame macOS app 窗口三个圆点 + 圆角 22px
- 中间是打开的电子书cover areaCharred + 出版社品位的 typography
- 底部是Apple Books · 1 of 24reader chrome
- 整张 card 给人我在 Apple Books 里读这本书的现实感
**[TYPE]**
- HUASHU · ORANGE BOOKMono Bold 10px, Terracotta, 0.22em
- book title (On Markdown)Newsreader 700, 30px, Ivory (on Charred bg), line-height 1.0
- terracotta rule40×2px
- author italicNoto Serif SC italic 14px, Smoke
- Apple Books chromeMono 10px, Smoke, 0.14em
**[ANIM]**
- 20.50-20.80s · 前一镜 PDF 退场 + md 保持
- 20.70s · NEW 标签**保持亮起**这次不重新弹出因为已经在 SHOT 08 建立了——直接显示「★ NEW即可
- 20.80-21.10s · arrow + labelmd epub入场Terracotta accent SHOT 08
- 21.20-21.80s · EPUB destination card 整体入场600ms expoOut, scale 0.88 1
- 21.30-22.00s · 内部 staggeredwindow chrome dots (delay 0) 顶部 brand label (delay 200ms) book title On」(delay 400ms) Markdown」(delay 480ms) rule (delay 700ms) author italic (delay 850ms) bottom chrome (delay 1000ms)
- 22.00-22.50s · hold + 准备 transition ACT III
**[AUDIO]**
- BGM: percussion 持续 at 22.00s 整体 BGM swell +3dB SHOT 10 convergence build-up
- **SFX: chime: NEW (06) at 20.70sdouble chime + soft glow SHOT 08 高半个音, -14dB**——半音差让两个 NEW 镜头形成 musical relationship
- SFX: window chrome subtle "click" at 21.20smacOS 窗口出现感, -24dB
- SFX: page turn rustle at 21.40s
**[CHROME]**
- A: `CAPABILITY · 06`, 第六个 dot 实心**全部实心 6/6**
- A 旁边 NEW 标签持续
- B: 版本 chip 的橙点 pulse 加强amplitude × 1.5
- C: 进度点 抵达最右端mdepub位置
- D: ON
- E: ON
**[ANTI-SLOP]**
- 不画 Kindle Apple Books 的真 logo避免 IP 风险 macOS 窗口 chrome 暗示阅读器即可
- 没用 e-ink 灰色滤镜避免 Kindle slop
- Apple Books · 1 of 24chrome 是真实出版数据感24 章节 1
- pause-and-look signature书名 On / Markdown」**断行**——Newsreader 30px 大字号下的换行设计致敬 Penguin Classics 封面排版
**[WHY]**
这一镜是 ACT II 的收尾两件事必须完成
1. 6 capability 全部展示完毕counter 6/6 实心
2. 情绪开始向 ACT III 的高潮 build-up
镜头长度从 3.0 2.0s 是刻意的——节奏在加速观众感知到我们要到顶峰了」。
---
## SHOT 10 · "THE CONVERGENCE"
**[TIMECODE]** 22.50 24.00s (1.5s) `|` **FUNCTION** ACT II ACT III 的过渡所有元素归位准备 slogan
**[VISUAL]**
22.50s所有之前的 destination card 已退场Chrome A/C 开始 fade outcapability counter 6/6 完成使命达成)。
画面中央md 字符从左侧位置x=480滑回正中x=960同时尺寸从 220px 300px
md 周围的 6 capability labelanymd / mdhtml / htmlmd / mddocx / mdpdf / mdepub从远处圆周 r=380px逐个浮现环绕 md 字符成圆形 60° 一个按顺时针顺序排列顶部从anymd开始)。这些 label Mono Bold 14px Smoke active+ Terracottaactually new mix
整体效果**md 字符是太阳6 capability 是行星。**
但这一镜不需要让观众停留太久——这是过渡镜
23.50-24.00s6 capability label 缓慢 fade out200ms 每个inverse cascademd 字符继续保持在中央缩小到 180px准备让位给 slogan
**[TYPE]**
- 6 capability labelJetBrains Mono Bold 14px, letter-spacing 0.16em
- 4 anymd / mdhtml / htmlmd / mddocxSmoke
- 2 mdpdf / mdepubTerracotta
**[ANIM]**
- 22.50-22.80s · 上一镜 EPUB card 退场Chrome A/C fade out300ms linear
- 22.50-23.00s · md 字符滑回中央 + 放大500ms expoOut
- 22.80-23.40s · 6 capability label md 周围浮现每个 60° 位置r=380pxstagger 80ms each, fade-in 300ms + outward slide 20px
- 23.40-23.80s · hold6 label md 周围 settle
- 23.80-24.00s · 6 label 同时 fade out200ms linearmd 字符缩小到 180px200ms expoOut
**[AUDIO]**
- BGM: at 23.00s, all-layer swell 开始L1+L2+L3+L4 +4dB
- BGM: at 23.50s, percussion 短暂停顿 1 sudden silence 的张力
- SFX: 6 capability label 入场时极弱click」(-30dB each, staggered
- SFX: 23.50s 开始 ascending sweepbuild-up 24.00s
**[CHROME]**
- A: fade out at 22.50scounter 6/6使命完成
- B: ON, 但开始为 ACT III 准备过渡保持位置不变但内部 spacing 略微 tighten
- C: fade out at 22.50s
- D: ON
- E: ON
**[ANTI-SLOP]**
- 6 capability label 不是围着 md 转一圈」(避免行星 spinner cyber slop在固定位置 settle然后一起 fade」(更克制
- Chrome A/C 在使命完成后体面退场不是永远在画面上」),这是为下一幕让位的好习惯
- pause-and-look signature23.40s 6 label 同时在画面上按顺时针顺序读是这部片唯一的 capability 全景一帧——观众如果暂停在此处能完整看到 6 条管道——这是 marketing 截图的最佳 frame
**[WHY]**
这是一座桥
ACT II 结束在 22.50sNEW (06) 刚做完 slogan 还需要在 24.00s 才入场——中间这 1.5s 不能是空白等待」,必须有 narrative motion
convergence的概念6 条管道做完后所有 capability 收拢回 md 这个源头这正是这支片整个故事的 essence——**所有的流最终都回到源**。
下一镜让位给 sloganmd 字符缩小到 180px准备成为 slogan 品牌印章」。
---
## SHOT 11 · "ONE SOURCE."
**[TIMECODE]** 24.00 26.50s (2.5s) `|` **FUNCTION** ACT III peak first halfslogan 上行入场情绪 climax
**[VISUAL]**
md 字符已缩小到 180px停留在画面中央y=540
24.00smd 字符**继续向画面 top-left 滑动** (x=128, y=88),缩小到 56px——成为品牌印章固定在左上角这是品牌的归位
24.20s画面中央偏上y=460开始浮现 hero slogan top line
```
ONE SOURCE.
```
字体Newsreader 700, **168px**, letter-spacing -0.03em, line-height 0.95, Ink #1A1A1A
位置水平居中x=960y=460character baseline
入场方式**staggered letter reveal**——10 个字符O-N-E-space-S-O-U-R-C-E-. 30ms stagger 依次入场每个字符 fade + 12px y slide-down + scale 0.92 1.0260ms expoOut each)。
26.00s slogan 下方 30px 出现一条短 Terracotta rule320×3px从中央向两端展开300ms expoOut)。
26.50s进入下一镜
**[TYPE]**
- ONE SOURCE.Newsreader 700, 168px, Ink, letter-spacing -0.03em, line-height 0.95
- terracotta rule: 320×3px, centered, accent
**[ANIM]**
- 24.00-24.30s · md 字符滑到 top-left300ms expoOutsize 180 56
- 24.20s · ONE SOURCE. 第一个字符 'O' 入场260ms expoOut
- 24.23s · 'N' 入场
- 24.26s · 'E' 入场
- 24.29s · space无视觉 layout 占位
- 24.32s · 'S'
- 24.35s · 'O'
- 24.38s · 'U'
- 24.41s · 'R'
- 24.44s · 'C'
- 24.47s · 'E'
- 24.50s · '.'句点
- 24.20-25.00s · 整个 ONE SOURCE. 完成10 字符 × 30ms stagger + 260ms each = total ~560ms
- 25.00-26.00s · hold让观众读ONE SOURCE.」)
- 26.00-26.30s · Terracotta rule 出现300ms expoOut from 0 320px
- 26.30-26.50s · hold
**[AUDIO]**
- BGM: 22.00s 开始的 swell 24.50s 达到 peak最响 -6dB
- BGM: 整组弦乐进入L5cello + violin + viola 三层叠加
- **SFX: impact (slogan ONE) at 24.20s deep bass impact + short reverb tail (-8dB)** 这是这支片最强的 SFX cue
- SFX: 极轻的 pen-on-paper stroke at 26.00srule 出现时, -22dB
**[CHROME]**
- A: OFF (已退场)
- B: ON, **重要变化**version chip 此时 cross-dissolve 成新形态——在右上角的同位置 chip 的尺寸略大字号 18px之前 16px更突出同时 Terracotta dot pulse amplitude × 2强调v2.0 升级时刻」)
- C: OFF (已退场)
- D: ON
- E: ON
**新增 chrome**
- md 字符top-left, 56px, Newsreader 600 + Terracotta dot正式入驻 corner成为品牌印章
**[ANTI-SLOP]**
- slogan 不是整词 fade-in」(廉价 letter-by-letter stagger电影级
- 单字符的 stagger 时间 30ms 是经过计算的——足够看到 cascade但不会拖慢节奏如果 60ms 就会显慢
- 字号 168px 是经过 layout 验证的——再大会撞 SIX FORMS.SHOT 12再小则气势不够
- pause-and-look signature:「ONE SOURCE.」末尾的「.」 Terracotta不是 Ink呼应 hero md 字符的 Terracotta dot——首尾品牌签名一致
**[WHY]**
这是 emotional climax 的第一半
ONE SOURCE.」是这部片的 thesis如果观众看完整支片只记住一句话就是这一句
md 字符在此刻退到 top-left 是策略性的——slogan 是主角md 是品牌印章两者不抢戏
下一镜SIX FORMS. 落下thesis 完整
---
## SHOT 12 · "SIX FORMS."
**[TIMECODE]** 26.50 29.00s (2.5s) `|` **FUNCTION** ACT III peak second halfslogan 下行 + capability map 完整呈现整支片的 emotional resolution
**[VISUAL]**
26.50sONE SOURCE. 仍在画面上方位置y=460
画面下半部分y=720开始入场 hero slogan bottom line
```
SIX FORMS.
```
字体Newsreader 700, 168px, letter-spacing -0.03em, line-height 0.95, **Terracotta #C2410C**
位置水平居中x=960y=720character baseline
入场方式 SHOT 11 镜像——staggered letter reveal9 个字符 + 1 . 10每个 30ms stagger更慢的 stagger 因为这是 climax)。
入场细节每个字符是 fade + 12px y **slide-up**而不是 SHOT 11 slide-down方向对称+ scale 0.92 1.0260ms expoOut each)。
27.20sSIX FORMS. 完成整个 slogan 双行 typography 完整
27.20-27.80s SIX FORMS. 下方 30px 出现 6 capability pills依次入场
```
[any→md] [md→html] [html→md] [md→docx] [md→pdf ★NEW] [md→epub ★NEW]
```
每个 pill
- 字体JetBrains Mono Bold 14px, letter-spacing 0.16em
- 大小10px×18px padding, 1.5px border
- 4 Ink text + Ink border + transparent background
- 2 NEWTerracotta text + Terracotta border + Mist (#FFF7F0) background + 右上角 -8/-10px Terra Hot NEWmini badge
每个 pill 间距 14px整组水平居中x=960y=820。
入场从左到右 staggered每个 80ms delayfade-in + 4px y slide-up (300ms expoOut)。
27.80-28.30s副标行入场y=890
```
md 是源代码,万物是产物。
```
字体Noto Serif SC italic 26px, Ink, letter-spacing 0.04em
水平居中
入场fade-in + 8px y slide-up (400ms expoOut)。
28.30-29.00s整体 hold这是这部片最静态的一帧——所有元素到位让观众"读完它"。
**[TYPE]**
- SIX FORMS.Newsreader 700, 168px, Terracotta, letter-spacing -0.03em, line-height 0.95
- pillsJetBrains Mono Bold 14px, letter-spacing 0.16em, 1.5px border
- 副标Noto Serif SC italic 26px, Ink, letter-spacing 0.04em
**[ANIM]**
- 26.50-27.20s · SIX FORMS. 字符 stagger SHOT 11 镜像
- 27.20-27.30s · short hold
- 27.30-27.80s · 6 pills cascade 80ms stagger × 6 = 480ms total + 300ms each pill duration
- 27.80-28.30s · 副标入场400ms
- 28.30-29.00s · 整体 hold
**[AUDIO]**
- BGM: 26.50s peak swell 持续 27.20s 达到全片最响-4dB
- BGM: 27.20s BGM 开始 sustain不再增强但保持 peak intensity
- **SFX: impact (slogan SIX) at 26.50s deep bass impact ONE 镜的 impact 稍重半音 (-7dB)**
- SFX: 6 pills 入场时 staggered metallic clicks每个 -24dB, 50ms
- SFX: 27.80s 极轻 pen flourish副标入场
**[CHROME]**
- B: ON, version chip 持续
- D: ON, watermark 持续
- E: ON
- md 印章 (top-left): ON
**[ANTI-SLOP]**
- ONE SOURCE. Ink, SIX FORMS. Terracotta——分别代表的色彩对比不是装饰用色
- 6 pills NEW 那两个 background #FFF7F0极淡 mist tint不是橙色填充」——克制
- NEW mini badge pill 的右上角 -8/-10px 突出位置但只有 9px 字号——细节签名的标准位置
- 副标用「,」中文逗号 + 句号「。」——是中文排版的尊重
- 这一帧28.30s是这支片的marketing 用最完整一帧」——可以截图作为 thumbnail / X 海报 / 公众号封面图所有信息都在一帧里slogan + 6 capability + 副标 + 品牌印章 + version
**[WHY]**
这是 resolution
如果 SHOT 11 thesisONE SOURCE.SHOT 12 就是 antithesis + synthesisSIX FORMS. 加上完整 capability map)。
观众在这一帧 27.50s 应该一边听着弦乐 peak一边视觉上 fully absorbed by typography——这是这部片最值得的 5
下一镜是收尾让弦乐 decay md 印章独自闪耀
---
## SHOT 13 · "SIGN-OFF"
**[TIMECODE]** 29.00 30.00s (1.0s) `|` **FUNCTION** 结尾让所有 slogan 元素退场留下 md 印章独自闪耀品牌印记
**[VISUAL]**
29.00sSIX FORMS. + 6 pills + 副标开始 hold-in-place
29.20-29.60sONE SOURCE. + SIX FORMS. + 6 pills + 副标缓慢 fade out每个 400ms linear**不要 stagger**是同步淡出——形成画面在沉淀的感觉)。
29.40stop-left md 印章字符从 56px 缓慢放大到 88px同时位置从 (128, 88) 滑向画面中央 (960, 540)——这是 md 最后回归」。
29.40-29.80smd 字符在画面中央 settlesize 88px, color Ink + Terracotta dot
29.80-30.00smd 字符下方 30px 出现一条短 Terracotta rule120×2px SHOT 03 更精致 0 长成
30.00s所有元素到位最后一帧是
```
● HUASHU-MD-HTML · v2.0
(top-right chrome)
md. ← Newsreader 600, 88px, Ink + Terracotta dot
─── ← Terracotta rule, 120×2px
CREATED BY HUASHU-DESIGN
(bottom-right watermark)
```
整个画面只有 4 个元素md 印章accent ruletop-right chromebottom-right watermark所有其他全空
**[TYPE]**
- md.Newsreader 600, 88px, Ink + Terracotta dot
- accent rule: 120×2px Terracotta
**[ANIM]**
- 29.00-29.20s · 上一镜 hold让观众完整吸收
- 29.20-29.60s · ONE SOURCE. + SIX FORMS. + 6 pills + 副标同步 fade out400ms linear, 同步
- 29.40-29.80s · md 印章放大 + 滑到中央400ms expoOut, size 56 88, position (128,88) (960,540)
- 29.80-30.00s · accent rule 展开200ms expoOut, 0 120px
- 30.00s · final hold如果有 looploop 00.00s
**[AUDIO]**
- BGM: 29.00s 开始 decay 进入 L6全部 layers 渐弱
- BGM: 29.40s 弦乐 fade留下 piano + reverb tail
- BGM: 30.00s, 一切归于 silence + room tone
- **SFX: final stamp / sign-off at 29.40sink stamp + soft reverb, -14dB**——md 落到中央时
- SFX: 极轻 paper rustle at 29.80saccent rule 入场
**[CHROME]**
- B: ON, 持续
- D: ON, 持续
- E: ON, 持续
- 其他全部 OFF
**[ANTI-SLOP]**
- 不用Thank you」「Made with love之类 sign-off 文字廉价
- 不用 logo 大放大不需要
- md 印章是这支片整个故事的真正主角最后让它独自留在画面中央 resolution 的最简形式
- pause-and-look signature最后一帧的 md. 88px Newsreader 字体下Terracotta dot 是整个画面的视觉焦点——观众的眼睛会自然停留在这个 dot 然后看到下方的 accent rule再到 top-right version chip这条视线动线 visual hierarchy 设计的成功
- silence 在最后 0.2s 给画面留 breathing room
**[WHY]**
整部片始于一个空白页面终于一个 md 印章 + 一抹赤陶橙
这是首尾呼应visual rhyme
- 0.0sblank ivory page
- 30.0sivory page + md
观众从走到」,其实只是一个 `md.` 字符——这就是source-of-truth的视觉宣言**一切源于一个简单的 md。**
如果整部片让观众记住一帧我希望是这一帧
---
# Part V · Production Manifest
## 5.1 字体清单 + 加载方式
```html
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Newsreader:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400;1,500&family=JetBrains+Mono:wght@400;500;700&family=Noto+Serif+SC:wght@400;500;700;900&display=swap" rel="stylesheet">
```
**实测加载时长** 800-1500ms 取决于 CDN 状态`document.fonts.ready` 等待必须等到 returns true 才启动 Stage 计时器Stage 已实现)。
## 5.2 色板 CSS 变量
```css
:root {
--paper: #FAFAF6;
--mist: #F2EDE4;
--mica: #E6E1D6;
--smoke: #6B6B6B;
--cinder: #3D3530;
--ink: #1A1A1A;
--charred: #2A2620;
--terracotta: #C2410C;
--terra-hot: #E55D21;
--terra-deep: #8B2D08;
}
```
## 5.3 BGM 来源选择标准
**首选**自己用 Suno v6.0 / Udio v1.5 生成 30 cinematic minimal pieceprompt 关键词
```
minimal cinematic piano, slow tempo 60bpm, single piano notes,
sparse arpeggio, low cello drone, subtle sub-kick percussion,
swelling strings at climax, decay to silence,
in the style of Max Richter on the nature of daylight,
no vocals, 30 seconds duration, ivory paper mood
```
**备选**搜索免版权库
- artlist.io: "minimal cinematic"
- bensound.com: "cinematic"
- musicbed.com: "Jóhann Jóhannsson style"
**最低标准**BGM 30 秒长度44.1kHz 采样率aim for -16 LUFS integrated loudness
## 5.4 SFX 来源
**首选** huashu-design skill `assets/sfx/<category>/*.mp3` 37 个预制资源
```
事件 推荐 SFX 文件
─────────────────────────────────────────────────────
keyboard clicks sfx/ui/keyboard-click-*.mp3
cursor blink sfx/ui/tick-soft.mp3
md morph swell sfx/cinematic/whoosh-bloom.mp3
file card whoosh sfx/cinematic/whoosh-short-*.mp3
absorb / ink drop sfx/foley/ink-drop.mp3
paper rustle sfx/foley/paper-turn.mp3
chime capability sfx/melodic/chime-single-*.mp3
chime NEW (double) sfx/melodic/chime-double-warm.mp3
build sweep sfx/cinematic/ascending-sweep.mp3
impact (slogan) sfx/cinematic/deep-impact-*.mp3
pen flourish sfx/foley/pen-stroke.mp3
final stamp sfx/foley/ink-stamp.mp3
```
## 5.5 截图验证计划
实施 HTML 后必须验证以下关键帧 Playwright + `?t=NN` URL 参数
```
t=0.5 ← SHOT 01 mid: blank ivory page (检验 paper texture 不抢戏)
t=2.5 ← SHOT 02 mid: typing in progress (检验 cursor blink + JetBrains Mono)
t=3.8 ← SHOT 03 mid: md morphing (检验 ghost residual + scale curve)
t=5.0 ← SHOT 03 end: hero md settled (检验 480px + Terracotta dot)
t=7.0 ← SHOT 04 mid: cards in flight (检验抛物线 + card 内容真实可读)
t=8.4 ← SHOT 04 tagline (检验「万物 → md」中文 italic)
t=10.5 ← SHOT 05 mid: html card complete (检验 essay 内容可读)
t=13.5 ← SHOT 06 mid: md source visible (检验 syntax highlighting)
t=16.5 ← SHOT 07 mid: docx page complete (检验 chapter title + page number)
t=19.0 ← SHOT 08 mid: PDFs fanned out (检验 crop marks 可见)
t=21.5 ← SHOT 09 mid: EPUB frame complete (检验 Apple Books chrome)
t=23.4 ← SHOT 10 mid: 6 capability orbit (检验完整 capability 全景)
t=25.0 ← SHOT 11 mid: ONE SOURCE. complete (检验字距 + Terracotta period)
t=27.5 ← SHOT 12 mid: SIX FORMS. + pills (检验完整 slogan 双行)
t=28.5 ← SHOT 12 marketing frame (检验整体 marketing-ready 一帧)
t=29.9 ← SHOT 13 final hold (检验 md 印章 + accent rule)
```
每帧必须满足
- 没有元素溢出 1920×1080 canvas
- 字距行高 visually correct
- AI slop checklist 通过
- 关键 typography 细节 Terracotta dot, page number em-dash, chapter title small caps可识别
## 5.6 录制参数
```bash
node scripts/render-video.js \
--file file:///path/to/v5-six-forms.html \
--duration 30 \
--fps 25 \
--width 1920 \
--height 1080 \
--out v5-final-silent.mp4
```
**关键 codec 参数**
- video codec: libx264
- pixel format: yuv420p (兼容性)
- bitrate: 12 Mbps (high quality, 30s 文件约 45MB)
- profile: high
- preset: slow (quality > speed)
**后续插帧**可选60fps 流畅版):
```bash
bash scripts/convert-formats.sh v5-final-silent.mp4 --fps 60
```
## 5.7 音频混合
```bash
# Step 1: 加 BGM
bash scripts/add-music.sh v5-final-silent.mp4 \
--bgm assets/bgm/cinematic-minimal-30s.mp3 \
--bgm-volume -18dB \
--out v5-with-bgm.mp4
# Step 2: 加 SFX cues (按 Part II.6 SFX 字典逐 cue 加)
# 用 ffmpeg 的 -filter_complex amix 多路混合
ffmpeg -i v5-with-bgm.mp4 \
-i assets/sfx/ui/keyboard-click-1.mp3 \
-i assets/sfx/ui/keyboard-click-2.mp3 \
... \
-filter_complex "[1]adelay=500|500[s1];[2]adelay=550|550[s2];...;[0][s1][s2]...amix=inputs=N:duration=longest:dropout_transition=0[out]" \
-map 0:v -map "[out]" \
-c:v copy -c:a aac -b:a 192k \
v5-final.mp4
# Step 3: 验证 audio stream
ffprobe -i v5-final.mp4 -show_streams -select_streams a 2>&1 | grep -E "(codec_type|sample_rate|channels|duration)"
```
**期望输出**
- audio codec: aac
- sample rate: 44100Hz or 48000Hz
- channels: 2 (stereo)
- duration: 30.0s
## 5.8 交付物清单
```
v5-final.mp4 主交付30s, 1920×1080, 25fps, with audio, ~50MB
v5-final-60fps.mp4 高帧率版60fps 插帧, ~80MB, 用于 X / YouTube
v5-final.gif 社交媒体版30s, palette 优化, < 8MB, 用于公众号嵌入)
v5-final-silent.mp4 静音版(备份,方便后续重新配音/换 BGM
v5-poster.png 海报版(截 t=28.5s 这一帧, 用于 X 卡片 / 公众号封面)
v5-director-notes.md 本文档(导演笔记)
v5-six-forms.html 源文件HTML 动画)
v5-shot-list.csv shot 时间码 + 关键参数对照表pause 验证用)
```
## 5.9 全链路时间估算
| 步骤 | 预计耗时 |
|-----|----------|
| Director's notes 撰写 | 已完成 |
| HTML 动画实施 | 4-6 小时 |
| 关键帧截图 + 视觉校验 | 1 小时 |
| 录制无声 MP4 | 5-10 分钟(含 Playwright 启动) |
| BGM 生成 / 选择 | 30 分钟 |
| SFX 配 cue + 混音 | 2-3 小时 |
| GIF 派生 | 5 分钟 |
| 海报截图 + 命名 | 10 分钟 |
| 最终交付 + git 提交 | 10 分钟 |
| **合计** | **8-11 小时** |
---
# 附录 · 这部片的 first principle
如果我作为导演只能保留这部片的一句话,那就是:
> **一支关于「源头」的 typographic film主角是一个 `md.` 字符。**
所有其他设计决策——色板、字体、节奏、SFX、chrome、anti-slop checklist——都从这一句话推导而来。
如果某个具体决策无法 trace 回这一句话,就不要做。
---
*Director's notes — end of document*
*Total word count: 约 11500 中文字*
*Next: 用户 review 通过后,进入 HTML 实施阶段*