226 lines
8.6 KiB
Markdown
226 lines
8.6 KiB
Markdown
# Presenter Mode Guide · 演讲者模式指南
|
||
|
||
这份文档说明如何在 html-ppt skill 里做出**带逐字稿的演讲者模式 PPT**。
|
||
|
||
## 何时使用演讲者模式
|
||
|
||
当用户的需求涉及以下任何一项时,**优先使用演讲者模式**:
|
||
|
||
- 提到"**演讲**"、"**分享**"、"**讲稿**"、"**逐字稿**"、"**speaker notes**"
|
||
- 提到"**presenter view**"、"**演讲者视图**"、"**演讲者模式**"
|
||
- 需要"**30 分钟 / 45 分钟 / 1 小时**的分享"
|
||
- 说"我要去给团队讲 xxx"、"要做一场技术分享"、"要做路演"
|
||
- 强调"**不想忘词**"、"**怕讲不流畅**"、"**需要提词器**"
|
||
|
||
如果用户只要做一份"静态好看的 PPT"(例如小红书图文、产品图册、汇报 slides 自己不讲),**不需要**演讲者模式。
|
||
|
||
## 两种做法
|
||
|
||
### ✅ 推荐做法:直接用 `presenter-mode-reveal` 模板
|
||
|
||
```bash
|
||
cp -r templates/full-decks/presenter-mode-reveal examples/my-talk
|
||
```
|
||
|
||
这个模板已经预设好所有必需元素:
|
||
- 支持 S 键切换演讲者视图
|
||
- 5 个主题可用 T 键循环(tokyo-night / dracula / catppuccin-mocha / nord / corporate-clean)
|
||
- 左右键翻页
|
||
- 每一页都有 150–300 字的示例逐字稿
|
||
- 底部有键位提示
|
||
|
||
直接改内容即可。
|
||
|
||
### 🔧 进阶做法:给任意已有模板加演讲者模式
|
||
|
||
html-ppt 的 **S 键演讲者视图是 `runtime.js` 内置的,所有 full-deck 模板都自动支持**。你只需要做两件事:
|
||
|
||
1. **每张 slide 末尾加 `<aside class="notes">`**(或 `<div class="notes">`),里面写逐字稿
|
||
2. **确认 HTML 引入了 `assets/runtime.js`**
|
||
|
||
```html
|
||
<section class="slide">
|
||
<h2>你的标题</h2>
|
||
<p>内容...</p>
|
||
<aside class="notes">
|
||
<p>这里是演讲时要说的话,150-300 字...</p>
|
||
</aside>
|
||
</section>
|
||
```
|
||
|
||
## 逐字稿写作三铁律
|
||
|
||
这是整个方法论的核心。AI 在帮用户写逐字稿时必须遵守:
|
||
|
||
### 铁律 1:不是讲稿,是"提示信号"
|
||
|
||
❌ **错误写法**(像在念稿):
|
||
```
|
||
大家好,欢迎来到今天的分享。今天我将要给大家介绍一下我们团队在过去三个月做的工作。
|
||
首先,我们来看一下背景情况。在过去的三个月中,我们遇到了以下几个问题……
|
||
```
|
||
|
||
✅ **正确写法**(提示信号 + 加粗核心):
|
||
```
|
||
<p>欢迎!今天分享我们团队<strong>过去 3 个月</strong>的工作。</p>
|
||
<p>先说<em>背景</em>——三个月前我们遇到了<strong>三个核心问题</strong>:
|
||
延迟高、成本炸、稳定性差。</p>
|
||
<p>接下来逐个讲解怎么解的。</p>
|
||
```
|
||
|
||
**差别**:正确版本把关键词加粗,过渡句独立成段,看一眼就能接上。
|
||
|
||
### 铁律 2:每页 150–300 字
|
||
|
||
- **少于 150 字**:提示不够,讲到一半会卡
|
||
- **多于 300 字**:你根本来不及扫完
|
||
- **2–3 分钟/页** 是最舒服的节奏
|
||
|
||
### 铁律 3:用口语,不用书面语
|
||
|
||
| ❌ 书面语 | ✅ 口语 |
|
||
|---|---|
|
||
| 因此 | 所以 |
|
||
| 该方案 | 这个方案 |
|
||
| 然而 | 但是 / 不过 |
|
||
| 进行优化 | 优化一下 |
|
||
| 我们将会 | 我们会 / 接下来 |
|
||
| 综上所述 | 所以简单来说 |
|
||
|
||
**检查方法**:写完读一遍,听起来像说话才对。
|
||
|
||
## 必备 HTML 结构
|
||
|
||
```html
|
||
<!DOCTYPE html>
|
||
<html lang="zh-CN" data-themes="tokyo-night,dracula,corporate-clean">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>...</title>
|
||
<link rel="stylesheet" href="../../../assets/fonts.css">
|
||
<link rel="stylesheet" href="../../../assets/base.css">
|
||
<link rel="stylesheet" id="theme-link" href="../../../assets/themes/tokyo-night.css">
|
||
<link rel="stylesheet" href="../../../assets/animations/animations.css">
|
||
<link rel="stylesheet" href="style.css">
|
||
</head>
|
||
<body>
|
||
<div class="deck">
|
||
|
||
<section class="slide" data-title="Cover">
|
||
<h1>你的标题</h1>
|
||
<p>副标题</p>
|
||
<aside class="notes">
|
||
<p>讲稿段落 1(加<strong>加粗关键词</strong>)。</p>
|
||
<p>讲稿段落 2(过渡句独立成段)。</p>
|
||
<p>讲稿段落 3(自然收尾,引出下一页)。</p>
|
||
</aside>
|
||
</section>
|
||
|
||
<!-- 更多 slide ... -->
|
||
|
||
</div>
|
||
<script src="../../../assets/runtime.js"></script>
|
||
</body>
|
||
</html>
|
||
```
|
||
|
||
## 演讲者视图显示的内容
|
||
|
||
按 `S` 键后,**弹出一个独立的演讲者窗口**(原页面保持观众视图不变):
|
||
|
||
```
|
||
观众窗口(原页面) 演讲者窗口(新弹窗)
|
||
┌──────────────────┐ ┌────────────────────────┬──────────────────────┐
|
||
│ │ │ │ NEXT │
|
||
│ 正常 slide │ │ CURRENT │ [下一页缩放预览] │
|
||
│ 全屏展示 │◄──►│ [当前页缩放预览] ├──────────────────────┤
|
||
│ │sync│ 1920×1080 → scale() │ SPEAKER SCRIPT │
|
||
│ │ │ │ [大字号逐字稿] │
|
||
│ │ │ │ [可滚动] │
|
||
│ │ │ ├──────────────────────┤
|
||
│ │ │ │ ⏱ 12:34 3 / 8 💡 │
|
||
└──────────────────┘ └────────────────────────┴──────────────────────┘
|
||
↑ BroadcastChannel 双向同步翻页 ↑
|
||
```
|
||
|
||
- **左侧 58%**:当前页 — 在 1920×1080 设计尺寸下渲染后 CSS scale 缩放,排版与观众端一致
|
||
- **右上 35%**:下一页预览 — 同样 scale 缩放,帮助准备过渡
|
||
- **右中**:逐字稿,字号 18px,高对比度,可滚动
|
||
- **右下**:计时器 + 页码 + 当前页标题 + 键位提示
|
||
- **两窗口同步**:在任一窗口按 ← → 翻页,另一个窗口自动同步
|
||
|
||
## 键盘快捷键(演讲者模式)
|
||
|
||
| 键 | 动作 |
|
||
|---|---|
|
||
| `S` | 打开演讲者窗口(弹出新窗口,原页面保持观众视图) |
|
||
| `←` `→` / Space / PgDn | 翻页(即使在演讲者视图里) |
|
||
| `T` | 切换主题 |
|
||
| `R` | 重置计时器(仅演讲者视图下) |
|
||
| `F` | 全屏 |
|
||
| `O` | 总览 |
|
||
| `Esc` | 关闭所有浮层 |
|
||
|
||
## 双屏演讲的标准流程
|
||
|
||
1. 打开 `index.html`,按 `S` → 弹出演讲者窗口
|
||
2. 把**观众窗口**(原页面)拖到投影 / 外接屏,按 `F` 全屏
|
||
3. 把**演讲者窗口**(弹窗)留在你面前的屏幕
|
||
4. 在任一窗口按 ← → 翻页,两边自动同步
|
||
5. 演讲者窗口里看逐字稿 + 下一页 + 计时器
|
||
|
||
> 💡 html-ppt 的演讲者模式会**弹出一个独立的新窗口**。原页面保持观众视图不变,只受翻页控制。两个窗口通过 BroadcastChannel 双向同步。演讲者窗口中的当前页/下一页预览使用 CSS `transform: scale()` 在 1920×1080 设计分辨率下缩放渲染,保证排版与观众端完全一致。
|
||
|
||
## 常见错误
|
||
|
||
### ❌ 把逐字稿写在 slide 可见位置
|
||
|
||
```html
|
||
<!-- 错误:这段文字观众会看到 -->
|
||
<p style="font-size:12px;color:gray">
|
||
这里讲 xxx,然后讲 yyy...
|
||
</p>
|
||
```
|
||
|
||
✅ 正确:
|
||
```html
|
||
<aside class="notes">
|
||
<p>这里讲 xxx,然后讲 yyy...</p>
|
||
</aside>
|
||
```
|
||
|
||
`.notes` 类默认 `display:none`,只在演讲者视图可见。
|
||
|
||
### ❌ 忘记引入 runtime.js
|
||
|
||
没有 `<script src="../../../assets/runtime.js"></script>` = 没有 S 键、没有演讲者视图、没有翻页。
|
||
|
||
### ❌ 逐字稿用书面语
|
||
|
||
念出来像 AI 机器人。**写完一定读一遍**。
|
||
|
||
### ❌ 每页 50 字
|
||
|
||
提示不够,照样忘词。
|
||
|
||
### ❌ 每页 500 字
|
||
|
||
眼睛根本扫不过来,等于没写。
|
||
|
||
## 用 AI 生成逐字稿的标准 prompt
|
||
|
||
> "请为每一张 slide 写一段 **150-300 字**的逐字稿,放在 `<aside class="notes">` 里。
|
||
> 要求:
|
||
> 1. 用**口语**,不要书面语(所以/但是/接下来,不是因此/然而/综上所述)
|
||
> 2. 把**核心关键词**用 `<strong>` 加粗
|
||
> 3. 过渡句独立成段(每段 1-3 句)
|
||
> 4. 读起来像说话,不像念稿
|
||
> 5. 结尾要有自然的过渡,引出下一页"
|
||
|
||
## 推荐搭配
|
||
|
||
- **主题**:`tokyo-night`(深色,技术分享首选)、`corporate-clean`(浅色,商务汇报)、`dracula`(深色备选)
|
||
- **字体**:默认 Noto Sans SC + JetBrains Mono,无需更改
|
||
- **动效**:克制使用,`fade-up` / `rise-in` 最自然,不要用 `glitch-in` / `confetti-burst` 之类花哨的
|
||
- **页数**:30 分钟分享 = 8–12 页;45 分钟 = 12–16 页;1 小时 = 16–22 页
|