chore: 初始化仓库,提交 vibevideo 源码

- src/: HyperFrames 封装 CLI(hv)、组件、品牌样式、音频(TTS/混音)工具
- projects/: 各项目 project.yaml 与文案
- interactive/: 井字棋演示页
- .gitignore: 忽略 node_modules、构建产物与 HyperFrames 运行期缓存
This commit is contained in:
2026-10-12 18:06:20 +08:00
commit 9b63424740
42 changed files with 8004 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
# 选题简报 · 井字棋科普
> 这份文件是策划面。填完之后再动手改 `project.yaml`。
## 一句话
(这条视频要让观众记住的一句话。写不出来说明选题还没想清楚。)
## 给谁看
- 受众:
- 他们现在知道什么:
- 他们看完应该能做什么:
## 钩子
(前 3 秒说什么。用反常识、具体数字、或者直接抛结果。别铺垫。)
## 结构
| 段 | 时长 | 讲什么 | 用哪个组件 |
|---|---|---|---|
| 开场 | 3.5s | | intro |
| 主体 | | | codedemo / terminal / cad3d |
| 收尾 | 4s | | outro |
## 素材清单
- [ ] 录屏:
- [ ] 截图:
- [ ] 代码片段:
- [ ] 背景音乐:
## 完成标准
- [ ] `hv 检查 井字棋科普` 通过
- [ ] `hv 看帧 井字棋科普` 抽查几个关键时间点,没有排版问题
- [ ] 全片时长与预期一致
- [ ] 音画对齐(若有配音)
## 已知取舍
(哪里打算偷懒、哪里有风险,写下来免得忘了)
+92
View File
@@ -0,0 +1,92 @@
title: 井字棋怎么玩
aspect: 横屏
fps: 30
lang: zh-CN
scenes:
# 1. 片头
- component: intro
duration: 3.5
narration: 五步就能看出谁会玩。井字棋怎么玩,今天一次讲清楚。
props:
kicker: 游戏科普
title: 井字棋怎么玩
subtitle: 5 手就分出胜负
# 2. 规则
- component: tictactoe
duration: 5.5
narration: 棋盘是三乘三的九个格子。两人轮流落子,先把三个棋子连成一条线的人获胜。
props:
moves: "0"
eyebrow: 规则
caption: 棋盘三乘三,双方轮流落子,三子连线即胜
tip: 三条规则
# 3. X 走中心
- component: tictactoe
duration: 5.5
narration: X 先手。第一手走中心最稳,因为中心这一格和四条线都相连。
props:
moves: "5"
eyebrow: 第 1 手
caption: X 走中心——这一格和四条线都相连
tip: 占中心
# 4. O 应对
- component: tictactoe
duration: 5.5
narration: O 落在第二格。棋盘上一共只有八条线,从这一步起,每一步都要盯着它们。
props:
moves: "5,2"
eyebrow: 第 2 手
caption: O 应在第二格,八条线一条都不能放松
# 5. X 形成威胁
- component: tictactoe
duration: 6.5
narration: X 走第九格。现在第一格、第五格、第九格三缺一,X 再补上第一格就赢了。
props:
moves: "5,2,9"
eyebrow: 第 3 手
caption: 斜线三缺一,X 只差第一格
tip: 形成威胁
point: 1
# 6. O 漏防
- component: tictactoe
duration: 6.5
narration: 可是 O 走了第四格,把第一格空在那儿。对成线的威胁视而不见,是新手最常见的失误。
props:
moves: "5,2,9,4"
eyebrow: 第 4 手
caption: O 走了第四格——它漏掉了第一格
tip: 漏防了
point: 1
# 7. X 获胜
- component: tictactoe
duration: 5
narration: X 补上第一格,三个棋子连成一条斜线,棋局结束。
props:
moves: "5,2,9,4,1"
eyebrow: 第 5 手
caption: X 连成斜线,取胜
tip: 三子连线
# 8. 总结
- component: textblock
duration: 7
narration: 记住三句:先占中心,始终盯着有没有成线的机会,看到威胁立刻去挡。
props:
heading: 记住三句
body: 先占中心 · 盯住成线 · 见威胁就挡
# 9. 片尾
- component: outro
duration: 4
narration: 下一局,轮到你先手。
props:
cta: 下次轮到你先手
handle: "@你的频道"
foot: ""
+21
View File
@@ -0,0 +1,21 @@
# 台词稿
> 一行一个场景,顺序与 `project.yaml` 的 `scenes` 一致。
> 填完后跑 `python3 src/audio/cli.py 配音 <项目名>`,
> 场景时长会自动对齐到每句的朗读时长。
## 场景 1 · intro
- 画面:
- 台词:
## 场景 2 · codedemo
- 画面:
- 台词:
- 重点行号:
## 场景 3
- 画面:
- 台词: