Back to skills
SKILL.md
Keynote Deck Builder
ASecurity当使用者要做苹果发布会风格的 PPT、把演讲稿做成幻灯片、把现有 PPT 改成发布会风格,或者要做讲座、课堂、学术报告、答辩的投影片时使用。输入可以是一句描述、一份演讲稿或讲稿、一份现有 .pptx。先判断场合(发布会/答辩/课堂/讲堂),再分两步:先产出 deck-outline.md(拍点、逐片清单、出场顺序、出处、舍弃项)等确认,再产出单文件 deck.html(1920×1080、讲到才出现的逐步揭示、跨片连续过渡、讲者备注、原生公式、可打印 PDF),需要时导出可编辑 .pptx(动画、调暗、点名与 Morph 平滑切换都带过去),课堂与讲堂另出讲义。核心规矩:一片一个概念、不用项目符号、字号不低于 40px、片子不重复讲稿、数字与图片都要有出处。片上默认用名词短语、不用问句,发布会片上没有问号;课堂与讲堂的证据片改用一句主张,问号只给两处:真要听众作答、答案随后揭晓的提问片,以及下一张片立刻用一句结论回答的引导问句(一节课一两处)。片上文字另按内嵌的中文写作规则走。不使用任何厂商的商标、产品渲染图或活动视觉。
- 5 stars
- 0 votes
- 0 copies
- 0 views
- Added November 7, 2026
Works with
Security analysis
92/100- Installs packages at runtime which could introduce malicious dependencies
Pro scans all 20 files and shows the line behind each finding
npx -y skills add ChromiteCr/Skills --skill keynote-deck-builder --agent claude-codeAre you the author of Keynote Deck Builder?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/chromitecr-keynote-deck-builder)---
name: keynote-deck-builder
description: 当使用者要做苹果发布会风格的 PPT、把演讲稿做成幻灯片、把现有 PPT 改成发布会风格,或者要做讲座、课堂、学术报告、答辩的投影片时使用。输入可以是一句描述、一份演讲稿或讲稿、一份现有 .pptx。先判断场合(发布会/答辩/课堂/讲堂),再分两步:先产出 deck-outline.md(拍点、逐片清单、出场顺序、出处、舍弃项)等确认,再产出单文件 deck.html(1920×1080、讲到才出现的逐步揭示、跨片连续过渡、讲者备注、原生公式、可打印 PDF),需要时导出可编辑 .pptx(动画、调暗、点名与 Morph 平滑切换都带过去),课堂与讲堂另出讲义。核心规矩:一片一个概念、不用项目符号、字号不低于 40px、片子不重复讲稿、数字与图片都要有出处。片上默认用名词短语、不用问句,发布会片上没有问号;课堂与讲堂的证据片改用一句主张,问号只给两处:真要听众作答、答案随后揭晓的提问片,以及下一张片立刻用一句结论回答的引导问句(一节课一两处)。片上文字另按内嵌的中文写作规则走。不使用任何厂商的商标、产品渲染图或活动视觉。
category: coding-helper/ui-design
version: 0.9.0
status: draft
priority: P1
compatible_agents:
- claude-code
- cursor
- codebuddy
- generic-llm-agent
display_name: 发布会风格演示
outputs:
- chat
max_rounds: 30
suggest_hint: 发布会、讲座、课堂都能用「发布会风格演示」:先定场合与拍点再出片,一片一个概念,讲到才出现
---
# 发布会风格演示 / Keynote Deck Builder
把一段描述、一份演讲稿或一份现有 PPT,做成发布会主题演讲那种片子:一片一个概念,字大,留白多,讲的人是主角。
同一套视觉也用在讲座、课堂和学术报告上,但**场合一换,有三条文字规则要跟着换**,见「场合」一节。
**必须分两步。** 第一步只产出叙事大纲,第二步才出 HTML。中间等使用者确认。
这种风格的成败几乎全在"哪句话该单独占一张片、哪个数字值得放大"上。一步到位等于把这些判断藏进 HTML,
使用者只能全盘接受或者推倒重来。
取证记录在 `references/stage-style-research.md`,正文每条硬规则都能指回那里。分 A(有依据)/ B(单一来源)/ C(未证实)三档,**C 档不作为规则依据**。
## 何时使用 / When to use
- 有一个产品、项目或功能要做发布式的演示
- 要上一堂课、开一场讲座、做一次学术报告,想要投影片干净、讲到哪出到哪
- 手上有演讲稿或讲稿,要配一套片子
- 现有的 PPT 太密,要改成这种大字少字的风格
- 要一份能直接投屏或导成 PDF 的演示
**不适用于** / Not for:
- 只要一张总结图,不要整套片 → 用 `bento-infographic`(`launch-summary-panel` 已废弃)
- 要一份**拿在手里读**的讲义、周报或数据报告 → 那是另一种文档,字要多、要能脱离讲的人独立成立。
这套风格靠删信息取胜,硬把讲义塞进投影片会两头不讨好。
**课堂与讲堂的做法是分成两份**:投影片按这套风格做,删下来的内容进讲义,见「阶段三」
- 要给项目定一整套视觉语言 → 用 `ui-design-system-builder`
- 要一份逐字讲稿 → 这个技能做片子,讲稿只当输入
## 输入 / Inputs
三种入口,先判断使用者在哪一种,**不要三种都按第一种处理**:
| 使用者给的 | 从哪开始 | 关键动作 |
|---|---|---|
| 一句话或一堆产品材料 | 走完整流程 | 缺叙事骨架,要先问清"现状的问题是什么" |
| **一份演讲稿** | 直接切分拍点 | **把句子切成拍点,片上只放碎片、数字或图,绝不贴整句** |
| 一份现有 `.pptx` | 先读出来再重构 | 用 `scripts/read_pptx.py` 提取,一张密片通常要拆成三到五张 |
只有三件事需要问,其余从材料里读:
1. **场合**:发布会、答辩、课堂还是讲堂。材料里看得出来就不问
2. **现状的问题是什么** —— 这套结构里问题必须先于主角出场,没有问题就没有张力(A 档)。
课堂上这个问题是「听众现在解释不了的那个现象」
3. 有没有必须出现的内容,或必须回避的说法
材料不足时说清缺什么。**不要用常识补齐产品参数。**
### 拿到演讲稿时怎么切
这是最容易做错的一步。演讲稿的句子**不是**片上的文字。
```
讲稿: 「我们发现用户平均要点七次才能完成一笔转账,这个流程从 2019 年就没变过。」
错的做法:把这句话整句放到片上
对的做法:片上只有一个字号极大的「平均 7 次点击」(「平均」和单位缩小,和数字同一行),下面不垫小字;
「完成一笔转账要点这么多次,从 2019 年就没变」由讲的人说
```
理由:片是覆在讲话之上的一层,不是承载信息的主体。讲的人重复片上文字会让听众同时读和听,造成认知过载(A 档)。Jobs 有过五分钟只对着 33 个字讲的段落。
**一张片一层字。** 大字下面不再垫一行说明小字(0.9.0 起)。那行小字要么是讲的人马上会说的话,
要么是数字的限定条件:前者写进讲者备注,后者写进数字前后的限定词与单位,和数字同一行。
来源、样本量、测试条件是证据,写进左下的出处行。
冗余原则说的就是这件事:图加旁白,比图加旁白再加同样的屏幕文字学得好(A 档);
苹果发布会揭晓产品的那几张片也只有名字或产品图,没有说明文字(官方舞台照片,A 档;取证见 references 第 6c 节)。
所以每个拍点产出的是**片上文字 + 讲稿留给人说的部分**两栏,大纲里要分开写。
## 场合 / Occasion
先定场合,再定拍点。四种场合共用同一套视觉,差在**听众要带走什么**:
| 场合 | 听众要带走 | 片子干什么 | 讲义 |
|---|---|---|---|
| **发布会**、项目演示 | 一个印象,加一个相信它的理由 | 锚定注意力,讲的人是主角 | 不需要 |
| **答辩**、汇报、路演 | 一个判断:做得怎么样 | 锚定注意力,同时让评委看见工程量 | 建议附原始材料 |
| **课堂** | 能复述、能用、会做题 | 分步讲清一件事,并当场检查懂没懂 | **必须有**,学生课后要复习 |
| **讲堂**、学术报告、讲座 | 一个主张,加支撑它的证据 | 一张片说一个结论,给出证据 | 建议有,放参考文献与完整推导 |
**不变的**(四种场合都一样):一片一个概念、字号下限、不用项目符号、片子不重复讲稿、
不放装饰件、事实校验、图表的诚实规则、中文排版、片上文字的硬性写作规则。
**课堂与讲堂要换的三条**,都是学习研究与发布会做法直接冲突的地方,依据见 references 第 12 节:
1. **证据片的标题改成一句主张**,不用名词短语。Garner 与 Alley(2013)让 110 名工科本科生随机看
同一段讲解的两种片子:主张句标题加视觉证据的一组,论述题得分高出一截(d = 0.81),
误解也更少(d = 0.47)。发布会用名词短语,是因为讲的人在场、听众只需要记住一个名字;
课堂的听众要自己抓住结论,事后还要翻片子复习。
**概念片、章节分隔、大数字仍然用名词**,只有「这张片要证明什么」的那类换成主张句
2. **允许提问片**,但只允许真要听众作答、而且答案一定会揭晓的题。课前小测在真实课堂里能提升期末成绩,
连没考过的相关内容也跟着提升(Soderstrom 与 Bjork 2023);在二十分钟以上的真实讲课录像里,
效果是正向但有限的(Toftness 等 2018)。所以提问片**少而准**,一节课两三道,放在最要紧的概念前后。
把文档小标题写成问句仍然禁止,那不是提问,是偷懒;下一张片立刻用一句结论作答的引导问句另算,
见「片上文字的句式」第 1 条
3. **结尾可以有回顾与参考文献**,但回顾要**先给提示让人自己想,再揭晓**,不是把要点再念一遍:
做一次提取比重读一遍更有效(Adesope 等 2017 的元分析)。「谢谢观看」「欢迎提问」照旧不要
**讲义与投影分开。** 投影片按这套风格删,删下来的定义全文、完整推导、数据表、参考文献进讲义。
Duarte 把这种拿在手里读的文档叫 slidedoc,和投影片是两种东西,不要合成一份(B 档)。
**这一句要在阶段一就主动说**,不要等使用者发现片子太空。
场合定为课堂或讲堂,就读 `references/classroom.md`:十二类课堂片型怎么做,事实校验另加的五条。
## 阶段一:deck-outline.md
用 `templates/deck-outline.md` 起草。这一步不写任何 HTML。
### 叙事拍点
发布会先判断这是**数据主导**还是**内容主导**的项目;课堂与讲堂各有自己的主线:
```
数据主导 现状与问题 → 感到问题 → 揭示 → 展开(至多三点)→ 演示 → 数字 → 可得 → 收束
内容主导 现状与问题 → 感到问题 → 揭示 → 机制 → 展开(至多三点,每点配一个时刻)
→ 演示 → 取舍 → 可得 → 收束
课堂 路线 → 现象 → 预测 → 名字 → 机制(分步)→ 例题(分步)→ 误解 → 检查 → 回顾 → 留给下次的问题
讲堂 问题与缺口 → 为什么难 → 核心想法 → 方法 → 证据 → 局限 → 结论 → 下一步 → 参考文献
```
缺哪拍就明说缺哪拍,不要凑。发布会两条的依据是 Duarte 的"现状 / 可能"来回摆荡与 Gallo 拆的九拍(A/B 档)。
课堂那条每一拍都对着一条学习研究(references 第 12 节):
- **现象先于名字**,和发布会的「问题先于产品」是同一个动作:先让人需要这个概念,再给它
- **预测**放在讲解之前:先让听众押一个答案,讲解时他们在找自己押对没有。
预测题本片不揭晓,讲完那一段复制一张同样的题再揭晓;只靠后面的主张片说出答案不算揭晓
- **名字先于机制**:先把几个关键部件的名字和作用交代清楚,再讲它们怎么配合。
Mayer 等(2002)的三个实验里,先学部件名称与状态的一组,迁移测验全部胜出
- **例题分步出**,每一步写清凭什么成立
- **误解**要在正确说法旁边出现,不能单独占一张大字片
- **检查**用提问片;**回顾**先给提示再揭晓
讲堂那条是学术报告的常规骨架。**每张证据片的标题都是一句主张**,连起来读就是整场报告的摘要;
读不成摘要,说明有的片没想清楚自己要证明什么。
两条主线共用的:
- **问题先于产品**,用人话讲问题,不用技术约束讲
- **展开至多三点,点数由内容定**。工作记忆约容纳三个块,所以三是**上限**不是**指标**(A 档)。
有三件值得说的就说三件,只有两件就说两件,只有一件就说一件。
**不要为了凑够三个去编一个出来**——这正是 `writing-rules` 规则三要打破的那种惯性
**怎么判断走哪条**:手上有没有能指回材料、且值得放大到 280px 的数字。
有就走数据主导;数字全在后台、或者使用者明确不想突出数据,走内容主导。
**不要为了填满"数字"那一拍去挖不该挖的数据**——凑出来的数字比没有数字更糟。
### 逐片清单
每片一行,必须有这几栏:
| 栏 | 要求 |
|---|---|
| 序号 | 连续 |
| 拍点 | 属于上面哪一拍 |
| 片型 | 从下面三十三类里选 |
| 片上文字 | **实际会印在片上的字**,按字数上限写。一张片一层字:只写大字那一层,不写下面那行说明 |
| 讲的人说什么 | 一句话概括,**不能与片上文字重复**。原来想垫在大字下面的那句说明写在这里 |
| 出场顺序 | 这张片分几步出、每步出什么、哪些讲过后调暗。一次出齐就写「一次」 |
| 出处 | 数字、别人的图、别人的结论都标来源;材料里没有的写 **【未确认】** |
片型三十三类。前二十一类通用:标题卡、单句大字、大数字、产品主图、功能名、bento 网格、规格密排、双列对比、图表、logo 墙、章节分隔、价格与上市、one more thing、环保、**引语**、**流程条**、**双栏人物**、**全黑过场**、**时刻**、**信号汇入**、**取舍**。
后十二类只在课堂与讲堂用:**路线**、**提问**、**满版图**、**半幅图**、**主张与证据**、**概念**、**公式**、**推演**、**代码**、**误解**、**回顾**、**参考文献**。
通用二十一类里的最后三类(时刻、信号汇入、取舍)是给内容主导的项目用的:
- **时刻**:一个具体到能拍成视频的场景,比单句大字长,字号小一档。片上只有这个场景,这一点叫什么由讲的人说。
内容主导时展开的每一点都配一张。**每行 15 字是硬上限**:版心 1520px 除以 96px 就是 15,
第 16 个字会被挤到下一行变成孤行。手写 `<br>` 断句,断完逐行数一遍
- **信号汇入**:左边几路输入汇到右边一个结果,说清"它凭什么知道"。机制那一拍用它
- **取舍**:它故意不做什么。两三条并列的短句(「不做社交」),为什么不做由讲的人说。**不要写成项目符号**
引语、流程条、双栏人物、全黑过场四类是实际做片子时补的,研究里的十四类不够用:
- **引语**:用户原话、评审意见、调研摘录。**出处必须写在引语下面**;没有出处就不要做成引语片,那是把编的话当证据用
- **流程条**:有先后顺序的步骤。这是项目符号最常见的替代品,五步以内一张片,超过五步拆开
- **双栏人物**:分工、团队、职责。名字和职责同一行、同一字号,职责写成名词短语(「硬件」「识别算法」),
不写成一句话,也不拆成项目符号
- **全黑过场**:现场切视频或实机演示时停在这一张。**不要放「演示视频播放位」这类占位框**——
占位框是给做片子的人看的,投出来观众只会看到一个空框
研究里的那十四类,有两类要说清怎么排:
- **规格密排**:项名加值成对(「重量 / 24 克」),每格一个值。只有名字、没有值的并列项不是规格,
做成流程条、取舍或功能名片
- **价格与上市**:片上是产品名加价格:产品名一行在上,价格几档就几栏,每档下面最多一个配置名(「标准版」)。
发售日期由讲的人说;非要上片就单独做一张单句大字(「12 月 1 日发售」),不垫在价格下面
十二类课堂片型各自怎么做、各自封顶多少,读 `references/classroom.md`,当且仅当场合是课堂或讲堂,
或者别的场合要用其中某一类(例如答辩把目录页改成路线片)。
### 当这不是发布会
读 `references/non-launch-occasions.md` 当且仅当场合是答辩、课程汇报、路演或立项评审。
那里写了这几种场合的拍点怎么改、评分表要求的页面为什么只能问不能删、什么时候提醒使用者把原始材料当讲义发。
### 内容主导:没有数字的项目
有些项目的数字本来就该在后台。生活记录类应用、工具类软件、设计作品、内容产品,
它们的价值不在参数上;硬把数据抬到台前,既讲不清也不像那么回事。
**先想清楚"数字"那一拍到底在干什么。** 它的作用不是"显得专业",
而是**给出一个可以被检验的证据**。所以没有数字时,要找的不是替代的装饰,
而是同样可被检验的东西:
| 接替"数字"的 | 为什么它算证据 |
|---|---|
| **演示** | 当场就能验。演示失败观众立刻看得见,所以它是有代价的承诺 |
| **取舍** | 可以被反驳。说"我们不做社交、不做排行",是一个能被检验的立场 |
| **机制** | 可以被追问。说清它从哪几类信号里得出结果,别人能顺着问下去 |
**形容词这三样都不是。** "流畅"、"贴心"、"沉浸式"既验不了、也反驳不了、也追问不了,
所以它们在这套结构里不承担任何重量。
#### 新增的两拍
**机制(放在揭示之后)**:它凭什么能做到。不是技术栈清单,是一句话说清输入和输出。
用「信号汇入」片型:左边几路输入,汇到右边一个结果。
**取舍(放在演示之后)**:它**故意不做**什么,以及为什么。
这一拍常常是整场最有信息量的地方——因为所有产品都会说自己做了什么,
只有想清楚了的产品说得出自己不做什么。
#### 展开的每一点怎么配
数据主导时每点配一个数字,内容主导时**每点配一个时刻**(点数照旧由内容定):
```
弱:智能建议 · 它会智能地为你提供写作建议
强:写作建议 · 散步回来,这段路、这张照片和这首歌已经在草稿里
```
名字(2 到 5 个字的名词)进大纲和讲者备注,时刻片上只放场景。
时刻的判据在「反发布会腔」那一节:**能不能拍成十秒的视频。**
### 介绍别人家的产品
使用者要介绍的不是自己做的东西时(课堂分享、产品分析、竞品研究),规矩不同:
- **用第三人称,不要写成好像你是这家公司。** "它的做法是……",不是"我们重新定义了……"
- **每个功能描述都要能指回官方说明或你的实测。** 分不清就标出来:
官方这么说的 / 我实际用下来是这样 / 我没验证过
- **不编造功能,也不编造它没有的限制。** 说它"不能导出"之前先确认过
- **可以有判断,但要标明是判断。** "这个取舍我认为是对的" 好过 "这是正确的设计"
- **不使用该公司的 logo、产品截图、官方摄影与专有字体**(与下面的边界一致)。
界面示意用占位图,或用你自己拍的屏幕照片并注明
### 片量
按讲的时长估,**宁少勿多**。一片一个概念意味着片数由概念数决定,不由时长决定。
公开资料里查不到"每分钟几张片"的可靠实测(C 档),所以**不要给使用者一个每分钟片数的公式**,
按概念数报数,并说明这是按概念算的。
### 舍弃项
哪些内容没上片,为什么。这一块不能省——使用者最常见的反馈就是"某某怎么没了",
写清楚比等他问一遍再解释省事。
写完停下等确认。**不要在同一轮里顺手把 HTML 也生成了。**
## 阶段二:deck.html
确认之后用 `templates/deck.html` 填充。
### 技术要求
- 单文件,CSS 与 JS 全部内联,**不引任何外部资源**(字体、图标、CDN 一律不引),离线打开必须一致
- 每片固定 1920×1080,一屏一片,`scroll-snap` 翻页,方向键与空格也能翻
- 字体只走 `system-ui, -apple-system` 系统栈。**不要在 CSS 里写 `"SF Pro Display"`**——
本机字体文件名是 `SFNS.ttf`,按那个名字引不可靠;而且 SF Pro 的 EULA 只允许做 Apple 系统界面的
mockup,不允许随文件分发(A 档)
- 深色为默认,浅色可切;切换按钮放在舞台外,投屏和截图里不出现
- 公式用原生 MathML 写,**不引 KaTeX、MathJax 这类库**。Chrome 109 起原生渲染 MathML Core(A 档),
字体走系统自带的数学字体(macOS 的 STIX Two Math、Windows 的 Cambria Math)
- 图片一律内联成 data URI,用 `scripts/inline_images.py` 做,它会顺带查分辨率、来源行,并清掉照片里的 GPS
- 讲者备注写在 `<section>` 里、舞台外的 `<aside class="notes">`,按 P 在另一个窗口看,不上屏
- 按键:→ / 空格 下一步,← 上一步,P 讲者视图,B 黑屏,F 全屏,Home / End;地址带 `#5` 从第 5 张开始
### 字号阶梯
**下限 40px。** 这条真正站得住的依据是视角几何:40px 在视距等于 8 个屏高处是 15.9 弧分,
正好卡在舒适阈值上(推导见 references 第 9 节)。Apple 内部"字号不低于 30pt"(A 档)指向同一个方向,
但**不能直接换算成 40px**:Keynote 的画布以 pt 为单位,1920×1080 的片子导出就是 1920×1080,
所以在这种画布上 30pt 就是 30px。40px 比苹果那条更严。
这条规则的作用是逼着删内容,所以**塞不下就删字,不是缩字号**。
**深礼堂要提到 48px。** 视距超过 10 个屏高时 40px 掉到 12.7 弧分,低于舒适阈值。
问清楚是会议室还是礼堂,礼堂就整体上调一档。
**字重不低于 400,也不高于 600。** Thin 与 Light 在投影上笔画会糊掉或直接消失(A 档);
上限见下面「中文排版」。
**上限同样要管。** 中文字身是满格的,同样的字号看上去比拉丁大一圈:180px 的单句大字两行
就占掉近四成屏高,重得像横幅,这是 0.7 版以前片子一眼像 AI 模板的主要原因之一。
所以顶端几档比拉丁习惯的小一号,层级靠字号比例和亮度拉开,不靠把字做到最大。
| 用途 | 字号 | 字数上限 |
|---|---|---|
| 大数字 | 280px | `[限定词 ]数字[单位]` 一行,不带句子(「最长 22 小时视频播放」)。数字前的限定词(「最长」「平均」,或量的名字「记录条数」)用 `<span class="pre">`,数字后的单位(「小时视频播放」)用 `<span class="unit">`,都缩到 0.4 倍。续航、亮度、容量这类在某个测试条件下测出的指标带「最长」「最高」「最多」,材料没写也加(「片上用词」第 2 条),测试条件写进左下的出处行(事实校验第 5 条);材料给的是平均值或典型使用下的值,照写「平均」,不改成「最长」。两者合计 8 字内:中文一字算一个,拉丁字母、数字与符号两个算一个,空格不算(「CO₂ 平均误差」加「ppm」算 7 个);数字连正负号、货币符号四位时(「2048」「±450」,小数点不算一位)合计 6 字内(280px 下「2048」加 7 个字就折行);五位以上写成万、亿,只换单位不四舍五入(事实校验第 2 条),换不整就照原数写,限定词和单位删到放得下 |
| 单句大字 | 144px | 中文 12 字(每行 10 字)/ 英文 8 词 |
| 时刻 | 96px | **每行 15 字**,总计不超过 30 字 |
| 功能名 | 112px | 中文 8 字 |
| 片标题 | 80px | 中文 15 字 |
| 出处行 | 40px | 中文 24 字。作者 年份,或来源、样本量、测试条件,放左下(大数字、双列对比与公式用 `<div class="source">`);**不是说明,说明进讲者备注** |
| bento 格标签 | 40px | 中文 6 字 |
| 规格值 | 64px | 一格一个值,三列时 7 字内(「180 克」「蓝牙 5.3」);pptx 三列每格约 3 字、两列约 5 字。对比性的说法(「比 Drift 1 薄 30%」)不进规格,做大数字 |
| 主张句 | 80px | **每行 19 字,两行封顶**;半幅图左栏每行 8 字,三行封顶 |
| 术语 | 112px | 中文 8 字 |
| 提问题干 | 80px | **每行 19 字,两行封顶**,手写 `<br>`;只留作答必需的条件(「不计空气阻力」),其余题设由讲的人交代 |
| 提问选项 | 72px | 每格 8 字,二到四格 |
| 回顾提示词 | 64px | 5 字 |
| 大公式 | 120px | 一个式子,连同同一行的适用条件不超过版心 1520px;上下标最多两级 |
| 推演行 | 72px | 一行一步;分式里不再套上下标或分式 |
| 推演右栏 | 44px | 栏宽 520px,**一行 11 字内**。写这一步凭什么成立(「牛顿第二定律」「开方取正值」),不写做了什么(「解出 t」「计算」) |
| 代码 | 40px 等宽 | **十二行封顶**,每行约 60 个半角字符 |
超了就是没想清楚。长段落一律拆片或删掉。
表里没有「说明小字」这一档了(0.9.0 删掉)。
大字下面不垫说明。下面这些不是说明,留在片上:数字前后的限定词与单位(和数字同一行)、出处行(来源、样本量、测试条件,放左下)、「未确认」标记、引语的出处、图片来源行、误解片的正确说法;各片型自带的项名与标签(规格与 bento 的项名、双列对比的列头、价格的配置名、推演右栏的依据、回顾的提示词与要点、提问片的标签与选项、误解片的标签、图表的项名)是内容本身。
**公式的上下标会自动缩小,要按实测守住下限。** 数学字体自带缩放表,本机 Chrome 加 STIX Two Math 实测:
| 基准 | 一级上下标 | 二级 | 顶层分式的分子分母 | 嵌套分式 |
|---|---|---|---|---|
| 120px(大公式) | 84px | 66px | 120px | 84px |
| 72px(推演行,行内) | 50.4px | **39.6px,破下限** | 50.4px | **39.6px,破下限** |
所以大公式最多两级;推演行里分式内不要再套上下标或分式,要套就把这一步拆成大公式单独占一张。
### 中文排版
产出的几乎都是中文片子,但这套风格的公开资料全是拉丁文字的。下面几条是中文特有的坑。
模板里已经写好了,**改模板时不要删掉**:
```css
font-synthesis: none; /* 苹方 700/800/900 渲染相同,上限是 Semibold。
禁掉伪粗体,让它退到真有的那一档 */
line-break: strict; /* 避头尾禁则:句号逗号不落行首 */
text-autospace: normal; /* 漏打空格时,中西文之间自动补约 1/4 em;片上仍照
「片上用词」第 2 条手打空格(「30 天」),pptx 没有这个属性 */
font-optical-sizing: auto; /* SF Pro 是可变字体,20pt 以上切 Display */
```
下面三条对照的是苹果中文官网的样式表(apple.com.cn,2026-09-28 取,A 档),详见 references 第 3 节:
- **字重封顶 600(Semibold)**。苹方 700 以上渲染相同,声明了也是原地踏步;苹果中文官网最大的标题也只用 600。
要更重的观感靠字号不靠字重
- **中文字距一律 0**。苹果中文官网对 `:lang(zh)` 把所有字距归零,标题、数字、正文都一样。
负字距只给拉丁与数字大字,模板用 `--latin` 开关自动处理:`lang="zh-CN"` 时为 0,`lang="en"` 的段落收紧
- **中文行高比拉丁略松,不是更紧**。苹果中文官网 80px 标题的行高 1.0875(拉丁 1.05),
28px 的卡片标题 1.25(拉丁 1.14)。模板里单句大字与功能名取 1.1,片标题 1.15,时刻 1.25
- **`line-break: strict` 只阻止坏断行,不会替你挑好断点**。大字标题断在哪要手写 `<br>`,
按语义断,不要让它自己折
- **每行能放几个中文字是算得出来的**:`版心宽 ÷ 字号`。1920 舞台去掉两侧 200px 留白,
版心 1520px,所以 144px 的单句大字每行 10 字,96px 的时刻每行 15 字,80px 的标题每行 19 字。
**写完逐行数一遍**,超一个字就会多折一行,末尾那一两个字变成孤行,很难看
- **中文标题 8 到 15 字**。中文单字信息密度高于拉丁单词,同样一张片**字数更少而信息更多**,
所以不要按英文的词数直接换算
- 字体栈必须写全后备:苹方是 macOS 独占,Windows 落到微软雅黑
### 视觉规则
- **底色用纯色**:深色纯黑,浅色 `#f5f5f7`(纯白投影刺眼)。**不加渐变、光晕、颗粒**。
0.7 版以前的「近黑多层渐变加轻噪点」依据只有一个 Quora 回答(C 档,本不该成为规则);
苹果官网深浅两种底都是纯色(A 档);而光晕加颗粒正是 AI 生成的片子最常见的样子
- **文字三档用实色**:深色 `#f5f5f7` / `#98989d` / `#6e6e73`,浅色 `#1d1d1f` / `#6e6e73` / `#86868b`,
都是苹果官网在用的颜色。不用半透明白:半透明字压在别的颜色上会变色,对比度跟着漂
- **重点色只有一支**,取产品本身的颜色或使用者给的主色。**一张片最多用在一处**:要区分的那个数字、
图表里被强调的那根柱子、揭晓时的正确选项。边框、标签、小标题、箭头、引号、路线图都不用它(A 档:
重点色承担语义,不做装饰)。一张片上没有要区分的东西,就不用重点色
- 不写死 `#007AFF` 这类"系统蓝"。那是社区取样值不是官方规格(A 档),要用就让使用者给主色
- **不用网页组件的样子**:胶囊按钮、带描边的标签、带底色的选项卡片、彩色小标题都是网页和 App 的界面语言,
放在片子上一眼就是模板。层级只靠字号、字重与三档亮度
- **不放装饰件**:正片不要页码、页眉页脚、边框、卡片容器;logo 只允许出现在首尾片(B 档)
- **bento 片的格子比苹果的总结图少**:苹果收尾那张总结图是 14–18 格(`bento-infographic` 量过),但那是看图用的,
标签只有画面宽的 1.2%;投影片上格标签要 40px(上面的字号表),同一张片放不下那么多格。要做那种总结图,用
`bento-infographic`。原来写的「8 到 12 格封顶,超过 12 格就垮」出自一篇博客,和实测对不上,已降为 C 档;
同出一处的「锚点格面积约为支撑格的两倍、格子里放数字不放标题」也只作参考(`references/stage-style-research.md` 第 10 节)
- **bento 不是默认解**。它 2024 年之后已经用滥,设计圈批评其同质化。
信息本身没有主次差别时,用规格密排或流程条比硬套 bento 好
- **对比度**:正文 4.5:1、大字 3:1 是底线(WCAG)。投影有环境光会吃掉对比度,
500 lux 下标称 1000:1 的投影机实际掉到 50:1 以下,所以目标定 7:1。模板里的
`--muted` / `--faint` 是量过的(深色 7.31:1 / 4.14:1,浅色 4.66:1 / 3.33:1),**改配色后要重新量,不要凭眼睛调**
- **深底还是浅底没有普适答案**,对比度比色相重要。暗房用深色主题,亮房间切浅色,
浅色底用近白不用纯白
- 内容离边留 10–15%(1920 宽对应 192–288px)(B 档)
- 产品位放**占位图**,居中浮着,留白占四到五成,图不出血不压边(B 档)。
这是「物件」那种图的处理;照片与场景另有规矩,见下面「图片」
- 表格与规格里的数字用等宽数字(`tabular-nums`,模板默认);单独放大的数字用比例数字(模板已给
大数字、双列对比、价格三类改好),等宽的「1」两边会空出一截
- 转场只用溶解与位移,**不要写具体时长当"苹果的参数"**——流传的那些是 Keynote 应用的默认值,
不是对真实发布会的实测(C 档)。片内的逐步出现见下面「出场顺序与动效」
### 文字的位置
位置固定下来,听众就不用每张片重新找字。下表是本 skill 的约定:「居中是常态」有 B 档依据,
其余是按信号原则推的,**不是苹果公开的规范**。
| 位置 | 放什么 | 为什么 |
|---|---|---|
| 正中 | 单句大字、大数字、功能名、术语、章节分隔、提问、路线 | 这张片只有一件事 |
| 左上 | 主张句:证据片、推演、代码、流程条、取舍的标题 | 视线从左上开始扫;结论每次都在同一处,不用找 |
| 底部压暗区,左对齐 | 满版图上的字 | 只有这一块的对比度有保证 |
| 左半,垂直居中 | 半幅图的字 | 字不压图 |
| 左下 | 出处行:作者 年份,或来源、样本量、测试条件(「n = 30 · 中期问卷」);公式写不短的适用条件(「不计空气阻力」) | 离结论近,又不抢结论 |
| 右下 | 图片来源行 | 跟着图走 |
| **不放** | 照片上没有遮罩的地方;四个角(来源行除外) | 前者读不出来,后者像页眉页脚 |
### 图片
**先分清两种图**,处理方式相反:
| | 物件 | 场景 |
|---|---|---|
| 拍的是 | 一个产品、一台装置、一个器件 | 一个地方、一个现象、一个时刻 |
| 怎么放 | 居中浮着,留白四到五成,不出血 | 出血铺满(满版),或占右半(半幅) |
| 字放哪 | 图的下方 | 满版放底部压暗区,半幅放左半 |
**满版图的三条硬规矩:**
1. **字只放在底部 32% 的压暗区里。** 模板的遮罩在这一块恒为 0.72 的黑。量过:即使遮罩下面是纯白像素,
白字仍有 9.29:1,0.78 白的来源行 6.46:1。按投影目标 7:1 倒推,遮罩至少要 0.65。
这块区域只放一行字,**放不下就改用半幅**,不要把字挪到遮罩外面,也不要在下面再垫一行小字
2. **裁切焦点要设。** `object-fit: cover` 会裁掉一部分,主体偏哪就把 `--focus` 往哪设
3. **分辨率要够。** 满版的宽高至少 1920×1080,半幅至少 960×1080;不够就换图,
或者改成物件那种居中放法。**不要放大**,放大后的糊图投出来比没有图更糟。
`scripts/inline_images.py` 会查,不够直接报错
**来源行必填**:课堂与讲堂里的每一张图,以及任何场合里不是自己拍的图。自己拍的写「作者自摄」。
模板把它放在右下角,40px。
**课堂里的图必须是证据,不是装饰。** Sundararajan 与 Adesope(2020)合并 68 项研究:
有趣但与内容无关的图和细节会拖累学习(诱惑性细节效应,A 档)。
判据只有一句:**把这张图拿掉,听众会不会少懂一件事?** 不会,就删掉。
发布会用大图传递情绪没问题,课堂里不行。
**照片里有定位信息。** 手机照片的 EXIF 常带 GPS 坐标,原样塞进一份要分发的文件就等于公开拍摄地点。
`inline_images.py` 重新编码 JPEG 与 PNG 时会清掉;GIF 与 WebP 是原样内联的,脚本会提示你自己确认。
### 出场顺序与动效
**一次出一个意义单位,讲到才出现。** 一口气全放上去,听众会先读完再听你讲,
读与听抢的是同一份注意力(冗余原则,A 档)。
模板用三个属性控制,写在任何元素上都行,MathML 元素也行:
| 属性 | 意思 | 典型用法 |
|---|---|---|
| `data-build="N"` | 第 N 步出现;`"N-M"` 出现后在 M 步之后退场 | 流程条逐步、推演逐行、回顾逐条揭晓 |
| `data-dim="N"` | 第 N 步起调暗 | 讲过的那一步退到背景 |
| `data-mark="N-M"` | 第 N 到 M 步换重点色;只写 `N` 表示一直保持 | 公式讲到哪项亮哪项;提问揭晓正确选项 |
翻页键先走完本片的步数再进下一片;退回上一片时显示它的最终状态;用滚轮翻到的片直接给最终状态。
1. **单位是词组、一行、一项、一个公式项。** 不逐字出现,不做打字机效果——字要一眼读完
2. **顺序跟讲的顺序一致。** 大纲的「出场顺序」一栏就是为这个写的
3. **讲过的调暗,不要让它消失。** 留着上下文,又不抢当前那一步。这是信号原则的用法:
Richter 等(2016)合并 27 项研究,给要点加提示的效应为正(r = 0.17),**对先验知识少的人更明显**,
正是课堂上的听众。调暗统一换成已量过的 `--faint`,**不用透明度叠乘**:
次要字本身就是 0.62 的透明度,再乘一次会掉到 1.7:1
4. **效果只有淡入加 16px 上移。** 不弹跳、不旋转、不飞入。苹果的动效准则第一条就是
「有目的地加动效,不要为动而动」(A 档)。连续过程的动画往往比分步的静图更难看懂
(Tversky 等 2002,A 档),所以机制要拆成步骤出,不要做成一段动画
5. **只做「点击出现」。** Keynote 还能设「上一步之后自动接续」与「同时出现」(A 档),
但课堂上节奏在讲的人手里,所以模板不做自动接续;要同时出现就给几个元素写同一个 N
6. **时长 320ms 是本模板的取值,不是苹果的参数。** 发布会的真实动效时长没有公开实测(C 档)
7. **按键能打断。** 动效没放完就按下一步,直接进下一步,不让人等(苹果准则:Let people cancel motion)
8. **系统开了「减弱动效」就不位移、不做跨片过渡**,只瞬时出现(WCAG 2.3.3;苹果准则:Make motion optional)
9. **打印与导出 PDF 时所有步骤全部显示、不调暗。答案也会印出来**(正确选项印成重点色),
课前要发的 PDF 先去掉提问片正确选项上的 `data-mark` 再导
**逐步出现的研究依据要说准。** Garner 与 Alley(2013)的主张句组里,11 张片中有 8 张的图是讲到哪部分才出现哪部分;
但那一组同时还改了标题、字数和配图,**所以 d = 0.81 不能单独算在逐步出现头上**。
它的依据是冗余原则与信号原则这两条更一般的结论,不是某一项专门的实验。
**跨片连续(Magic Move 的做法)。** Keynote 的 Magic Move 转场让对象从上一张的位置移到下一张的新位置(A 档,Apple 支持文档)。
模板里给相邻两片上同一个东西写相同的 `data-morph`,翻页时浏览器用 View Transitions 做同样的事,
其余部分溶解;不支持的浏览器直接切换。
- **只在相邻两片之间配对,只配「是同一个东西」的元素**:概念片上的符号 `T` 和下一张公式里的 `T`;
一张满版照片和下一张半幅片里的同一张照片。一整行字配一个字母,过渡会变成拉伸,比不做还难看。
隔着几张的两片配不上,比如前后两张路线片,中间隔着一整节
- **不写在带 `data-build` 的元素上**:变到一个还没出现的元素上会一闪而过
- **一场用一两处就够**,用在最想让人看清「这还是刚才那个东西」的地方
**发布会与课堂的用量不同。** 发布会里逐步出现是例外:取舍逐条亮、流程逐步走,大数字随口播落地。
课堂里它是主要手段:推演、例题、回顾、提问揭晓都靠它。
**这四件事在导出的 pptx 里也有**,不是 HTML 独占的,对照表见阶段三。
### 图表:唯一不能照抄参考对象的地方
整个 skill 都在借鉴发布会的做法,**图表这一处要反着来**。苹果自己的图表被公开批评过:
iPhone 累计销量图整个纵轴刻度缺失,iPad 那张低估实际销量约三成(A 档)。
- **柱状图基线必须从零起**。Correll 等(CHI 2020)与 Pandey 等(2015)都实测到截断纵轴
造成系统性误读,效应量为"大";他们还专门检验了"折线图可以豁免"这个流行说法,**不能**;
**加断轴标记也不能缓解**
- **折线图可以不带零轴,但要标出来**。数据接近零就带上零轴,远离零(如 90 到 200 的区间)
可以不带,此时必须写明"基线非零"
- **禁双纵轴**。两个量纲不同就画两张并排的图,共用横轴。双轴靠调两侧量程能造出任意相关性
- **禁 3D、禁饼图、禁面积或半径编码**。人对面积的感知指数约 0.7,会系统性低估;
3D 透视让前景柱看起来比等值的背景柱大
- **纵轴要有单位**。写"营收(万元)"不是光给数字
- **用直接标注,不用图例**。投影距离下图例基本读不到,而且迫使观众在图与图例之间来回
- **柱子本身就是数据,对底色要有 3:1**(WCAG 1.4.11 非文字内容)。未强调的柱子用已量过的 `--faint`,
不用 5% 白的 `--tile`——早先的模板就是这么写的,投出来几乎看不见(0.6.0 修正)
- **颜色不能是唯一的区分手段**,要配文字或形状(WCAG 1.4.1)。多系列时用 Okabe-Ito 色板,
红绿色觉障碍影响约 8% 的男性
- **时间区间被截取过就写清楚**。写"2025 年 1 至 6 月",不要写"2025 年"
### 禁止项目符号
顺序性内容拆成多张片,并列性内容改成图形或 bento 格。项目符号在这套风格里被明确称作"瘟疫"(A 档)。
模板里没有 `<ul>`,**不要加回来**。
## 阶段三(可选):导出与讲义
脚本依赖:`read_pptx.py`、`outline_to_pptx.py`、`pptx_motion.py` 要 python-pptx,`inline_images.py`
与带图的 pptx 片型要 Pillow,`pip3 install python-pptx pillow` 一次装齐;`export_pdf.sh` 只要本机 Chrome。
四个 Python 脚本都认 `--help` 与 `--selftest`。
- **内联图片**:`scripts/inline_images.py deck.html` 生成 `deck.inlined.html`。
有真图时先跑这一步再发给别人,分辨率不够、来源行没填、引了外链都会直接报错,不写出文件
- **PDF**:`scripts/export_pdf.sh deck.html` 走本机 Chrome 的 headless 打印,零依赖。所有步骤都会显示
- **讲义**(课堂必出,讲堂建议出):一份 `handout.md`,给听众拿在手里读。规矩:
- **只从确认过的大纲与使用者的材料里来,不新增内容**。片上删掉的定义全文、完整推导、数据表、参考文献放这里
- 按片子的章节组织,每节开头就是那几张片的主张句,读者翻讲义时能对上投影
- 句子写完整,能脱离讲的人独立读懂——这是它和投影片的根本区别
- 事实校验照旧,出处写全
- **不是讲稿**。讲的人说什么仍然由使用者定;讲义写的是内容,不是台词
- **可编辑的 .pptx(带动画)**:把大纲的逐片清单转成一份片单 JSON(格式见脚本头部的说明),
再跑 `scripts/outline_to_pptx.py deck.json`。动画由 `scripts/pptx_motion.py` 直接写
PresentationML 的 `<p:timing>`,**HTML 模板的四件事都保住了**:
| HTML 模板 | pptx 里 | PowerPoint 的效果名 |
|---|---|---|
| `data-build` 出现 | 一步一次点击,逐项出现 | 浮入(淡入 + 上移舞台高度的 16/1080) |
| `data-build` 退场 | 到那一步退场 | 淡化 |
| `data-dim` 调暗 | 换成同一个已量过的 faint 色 | 字体颜色 |
| `data-mark` 点名 | 换成重点色 | 字体颜色 |
| `data-morph` 跨片连续 | 相邻两片的同一个对象平移过去 | 平滑(Morph),靠 `!!` 对象名配对 |
时长沿用模板的 320ms 与 480ms。**XML 是照 PowerPoint 自己存出来的文件抄的**,不是凭规范推的,
取证与实测见 references 第 15 节。片单里每张可以带 `notes`,会写进演讲者备注。
**这条路仍然会丢东西,要如实说**:底色只能纯色;公式与推演的式子退成纯文本,
**要在 PowerPoint 或 Keynote 的公式编辑器里重排**;图表不做;bento 的大小分层被简化;
公式里逐项点名做不到(一个文本框只能整体换色),讲到哪一项靠嘴说;
误解片的划线做不到,改成把误解调暗。**Keynote 导入后还剩多少,本轮没有验证,不要替它保证。**
`--static` 关掉全部动画,回到旧行为:给了 `answer` 的提问片(概念题、回到预测题那张)拆成题目与揭晓两张。
要把文件发出去让人自己翻的时候用这个。片单里写的 `notes` 两张都带:课前要发、删掉揭晓那张时,
把题目那张备注里揭晓后才讲的话一起删掉。
`python3 scripts/pptx_motion.py --inspect deck.pptx` 列出每张片分几步、每步动了什么。
脚本按每个文本框的高度核字数,放不下的行与孤行都以「注意」报出来,照着删字或拆片。
出场顺序按片型定好了,不用逐片写步数:流程条、推演逐步走并把讲过的调暗;
回顾逐条出;提问片在原地揭晓;误解片在原地改正;规格密排与双列对比默认一次出齐。
**一张片一层字在脚本里也守着**:旧片单里标题卡、大数字、功能名、价格、提问、满版图、概念、公式的
`caption`,流程条每一步的第二项,公式下面的 `items`,导出时不上片,原样挪进讲者备注,并报一条「注意」。
`caption` 还上片的只剩引语的出处、`claim` 与 `derive` 的出处行、误解片的正确说法;
其余留在片上的照「字号阶梯」表下那句,各有字段。数字前后的限定词与单位都写进 `value`:
`{"type": "num", "value": "最长 22 小时视频播放"}`,脚本拆成限定词、数字、单位三段,「最长」画在数字前、
「小时视频播放」画在数字后,都缩到 0.4 倍,两者合计 8 个字内(拉丁字母与符号两个算一个,空格不算);
超了、一行放不下,或者拆不开(单位里带数字,如「4.2 分(n = 30)」)都报「注意」。限定词里可以带版本号
(「比 Drift 1 薄 30%」,脚本取最后一个数);版本号写在数字后面(「3 倍于 Drift 1」)切不开、会报,
改写成「是 Drift 1 的 3 倍」。「4K120」「A17 Pro」这种名字照原样排,不报。
大数字、双列对比与公式的出处行写进 `"source"`(公式写不短的适用条件也写在这里):
`{"type": "num", "value": "4.2 分", "source": "n = 30 · 中期问卷"}`,24 字内,画在左下、用次要色,
不挪进备注。旧片单把出处写在大数字的 `caption` 里,照旧挪进备注,「注意」会提醒改写进 `"source"`。
某张片不想要就写 `"build": false`,不想调暗写 `"dim": false`;规格密排或双列对比要逐个出就写 `"build": true`。
脚本认二十一种片型,HTML 里多出来的按这张表降级,**不要指望脚本自己猜**:
| HTML 片型 | pptx 片型 | 降级掉什么 |
|---|---|---|
| bento 网格 / 规格密排 | `specs` | 大小分层没了,变成等宽的格:两项、四项排两列,其余排三列 |
| 产品主图 | `feature` | 占位图没了,只剩标题 |
| 双栏人物 | `specs` | 两栏变成标签值对 |
| 图表 / logo 墙 | 不做 | 这两类在 pptx 里手工摆更快 |
| 全黑过场 | `section`,标题留空 | — |
| 时刻 | `phrase` | 场景那句进 value,从 96px 降到 72pt 的单句大字,一行 10 字,长了就删 |
| 信号汇入 | `steps` | 标题进 value,每路输入一项,产出作最后一项;箭头没了,多了编号。HTML 里一次出齐,写 `"build": false` |
| 取舍 | `steps` | 每条一项,只写不做的事;逐条出现、讲过的调暗与 HTML 一致,多了编号。为什么写进 `notes` |
| one more thing | `phrase` | — |
| 环保 | `feature` | 标签进 value,承诺那句进 `notes`;配图没了 |
| 概念 | `definition` | 给了 `symbol` 就单独成一块,才能参与 Morph |
| 提问 | `question` | 给了 `answer` 就在原地揭晓;`--static` 时才拆两张;预测题那张不给 answer,只出题目,讲完那一段复制一张给 answer 的再揭晓 |
| 主张与证据 / 半幅图 | `claim` | 证据图要给本地文件,否则只剩主张句 |
| 满版图 | `image` | 图要本地文件;遮罩用半透明矩形模拟 |
| 推演 | `derive` | 式子是纯文本;右栏 30pt 下每行约 9 字,HTML 里一行 11 字的依据在这里可能折成两行,两行封顶,超了脚本会报 |
| 公式 / 代码 | `formula` | 退成纯文本;代码没有等宽与行高亮。只有等号左边的符号能参与 Morph(「T ≈ 2π√(L/g)」的 T);要配的符号在右边(「h = ½gt²」的 g)就只在 HTML 里配,脚本会报 |
| 误解 | `myth` | 划线改成把误解调暗 |
| 回顾 | `recap` | 提示词一直在,要点逐条揭晓 |
| 参考文献 | `refs` | — |
| 路线 | `roadmap` | 当前站最亮,其余灰,不分步 |
- **.key**:做不到。格式私有,没有任何库能写入。Keynote 的 AppleScript 字典里有新建片、
设转场(含 Magic Move)、存成 .key,**但没有任何跟出场顺序有关的类**,所以动画建不出来(A 档,
依据是 Keynote 14.5 的脚本字典本身)。唯一通路是生成 pptx 再由 Keynote 导入。
**不要承诺能直接产出 .key**
## 事实校验 / Fact checking
这一节优先于所有视觉要求。这套风格把数字放到 280px,错一个数字的代价被放大了同样的倍数。
下面几条的依据是美国商业广告的举证与披露标准(FTC、AAPOR,见 references 第 7 节)。
**使用者多数在做答辩与项目演示而不是广告**,所以这里按"什么样的数字算诚实"来用,
不是法律建议;但判断一个数字放上去会不会误导人,这套标准比凭感觉好用。
1. **每个数字都要能指回材料**。指不回去的标 **【未确认】** 或者不放
2. **不做换算、不做推算、不做四舍五入**。材料写 4K120 就写 4K120
3. **限定条件跟着数字走**。"最长 22 小时视频播放"里的"最长"和"视频播放"都不能丢,丢了就是夸大
4. **对比性说法要有对比对象、版本和测试时间**。"快 3 倍"要写清比什么、哪个版本、什么时候测的。
拿过时的对照物比也不合格
5. **"最高可达"要能代表典型情况**。写"最高可达 X"时,要能说明**典型使用下就能达到**,
而不是个别最优案例;依赖特定配置的,条件写在数字旁边(数字前后的限定词与单位,或同一张片左下的出处行),不写在脚注里
6. **调研数字要给方法,不只给样本量**。样本量、抽样方式、误差范围,缺一样就在片上标出来。
"87% 的用户满意"没有 n 值和口径,是不专业而不是有力
7. **未确认项在片上要可见**,数字旁标「未确认」,不要只写在大纲里自己知道
8. 材料互相矛盾时两个数都列进大纲让使用者定
9. **从现有材料重构时,把散在别处的注脚拉回数字身边**。源文件里样本量、测试条件、统计口径
常常和数字不在同一页——原文件那样排问题不大,因为字都一样小;但这套风格要把数字放到 280px,
注脚留在三页之前就等于没有。**放大了多少倍,注脚就要跟得多紧。**
一张片上出现"满意度 4.2 分","样本 30 份"就必须在同一张片上:写进左下的出处行(「n = 30 · 中期问卷」)。
HTML 里是 `<div class="source">n = 30 · 中期问卷</div>`,pptx 片单里是大数字或双列对比的 `"source"`(见阶段三)。
这和「一张片一层字」不冲突:出处行是证据的一部分,不是对大字的说明
这条第一版是我从实操里总结的,后来发现它对应 FTC 的"接近性"要求:限定条件必须清晰醒目
且紧邻主张,**光打一个星号指向别处的脚注不满足标准**。苹果自己也不在数字旁打星号,
用的是页首统概免责加分区详列测试条件(A 档)
### 没有数字时校验什么
上面九条管的是数字。内容主导的项目一个数字都没有,但**同样会说过头**,
而且因为没有数字可核,说过头反而更难被发现。对应的六条:
1. **能力要分清"能做"和"会做"**。"它能识别你的活动"与"它会在你散步后提示你"
是两件事,前者是可能性,后者是实际行为。**片上写实际行为**
2. **条件跟着能力走**。要联网吗?要授权吗?要先用一段时间才有效果吗?
这些是限定条件,和数字的限定条件一样不能丢
3. **不把设想说成已有**。规划中的功能标"计划中",原型标"原型",
跑通一次的不叫"稳定支持"
4. **取舍要说清是取舍**,不是缺陷也不是优点。"不做社交"是选择,
把它写成"因为技术限制做不了"或"因为我们更懂用户"都是歪曲
5. **机制不能含糊到无法追问**。"用 AI 智能分析"等于什么都没说;
说清输入是什么、在哪处理、输出是什么,别人才能问下去
6. **别人的产品要标明信息来源**。官方说的 / 我实测的 / 我没验证的,三者不能混在一句话里
**自查一句**:把片上这句话给一个较真的人看,他能不能问出"那具体是怎么做的"?
问得出来说明你给了可追问的东西;问不出来说明那是一句形容词。
### 课堂与讲堂另加的五条
在 `references/classroom.md`,和十二类课堂片型在同一个文件,读取条件见「逐片清单」。
## 反"发布会腔" / Against the register
这套视觉语言天生鼓励空洞的最高级。Jobs 用"革命性"的时候,下面垫着多点触控、一千首歌、从信封里抽出来的厚度。
**词是垫出来的,不是贴上去的。**
- 形容词要么有一个能指回材料的数字或事实垫着,要么删掉
**判据是能不能拍成十秒的视频。** 拍得出来就是具体的,拍不出来就是形容词:
```
拍不出来:让记录变得更轻松 拍得出来:散步回来,那段路已经在草稿里
拍不出来:沉浸式的写作体验 拍得出来:整屏只剩一张照片和一个光标
拍不出来:智能理解你的生活 拍得出来:它认出你听了整张专辑,问你当时在想什么
```
**没有数字时,能当垫子的只有四样**:一个具体的时刻、一个能演示的动作、
一个明确的取舍、一个说得清的机制。这四样都能被检验,形容词不能。
- 少用这几个词,用之前先问自己垫着什么:革命性、颠覆、重新定义、魔法般、无与伦比、极致、这改变了一切(更全的词表见下文硬性规则第 8 条)
- 类比要落到熟悉的实物上("一千首歌装进口袋"),不要落到另一个抽象词上("体验的重塑")
### 片上文字的句式
**片上是陈述,不是讲解,更不是提问。** 片子锚定注意力,解释留给嘴(A 档)。每次都守这十三条:
1. 不用问句,问句在嘴里。发布会片上没有问号;课堂与讲堂有两个例外:提问片(真有人要回答,答案随后揭晓);
引导问句(标题是一问,下一张片立刻用一句结论回答它;MIT 课件里有这种用法,B 档;一节课一两处是本 skill 定的上限)
2. 名词短语优先,写不成再退到短陈述句。课堂与讲堂的证据片写一句主张,仍然是陈述
3. 能省动词就省,或把动词后移
4. 一张片一层字:大字下面不垫说明小字,说明写进讲者备注(官网的「标签 + 短陈述」两层是给人停下来读的,片上不搬)
5. 中文标题末尾不加句号,要停顿用逗号或断行
6. 对仗能自然成就用,凑不出来就别凑:拆掉对仗意思没有损失,就删
7. 章节分隔用单个名词。写不出一个名词,说明这一节的主题还没想清楚,或者这张分隔片根本不需要
8. 中文可以用「你」,不要用「我们」
9. 讲机制时片上少写字,原理留给嘴讲
10. 口语有线:方言、随便的口语、平台梗与过时网络语都不要
11. 避开「苹果式中文」,五种手法里只有名词前置可以用
12. 不直译英文句式,要重写
13. 课堂与讲堂里用学科通行的术语,不自造新词
读 `references/slide-copy-grammar.md` 当且仅当:要改写一句被上面某条判为不合格的片上文字;
使用者质疑某条规则或问依据;或者使用者问起本 skill 和 `writing-rules` 的关系(三点式、不适用的几条)。
那里有每条的禁/改例句、取证,以及「官网文案不是片上文字」的对照;下面「片上用词」的改写例也在那里。
### 片上用词
对照苹果发布会(官方简中字幕与 apple.com.cn)和斯坦福、MIT 的课件定的,取证在 references 第 6c 节。
前三条两种场合都守:
1. **功能名和术语是名字,不是口号。** 2 到 5 个字的名词,常带一个类别词收尾:节奏识别、离线记录、
车祸检测、相机控制、同步双拍。「夹上就开始」「断开也记」这种口号句,由讲的人说
2. **数字照苹果的写法。** 阿拉伯数字;数字和汉字、字母之间留空格(「30 天」「蓝牙 5.3」);大数用万、亿;
条件性的指标在数字前带「最长」「最高」「最多」;比较写「是…的 N 倍」「从 A 到 B」,不写「大幅提升」;
最高级只说「迄今最…」,参照是自家以前的版本,不然就直接给数
3. **外文的新概念和品牌名保留原文**(Liquid Glass、MagSafe),功能意译(实时翻译),中英之间留空格
发布会另守两条:
4. 揭晓的那张片只有名字或产品图。「全新」「登场」「这就是」这类引出产品的话在嘴里
5. 开场的钩子和收尾用同一个框架(6c:2025-09 那场首尾都说迄今最大飞跃);开场是否定句时,
收尾只把否定改成肯定(硬性写作规则第 3 条),如「练了多久 / 没人说得清」→「练了多久 / 现在说得清」
课堂与讲堂另守五条:
6. **标题默认是话题名词短语**(「可能影响周期的量」),证明片写一句结论。MIT、斯坦福的课件里,
不超过三个英文词的标题占四到八成
7. **课堂活动用固定的标签**:预测题、概念题、例题、演示、回顾。提问片的标签写「预测题」「概念题」,
不写「先预测」「检查一下」这种口头话。MIT 8.02 的课件栏目叫 Concept Questions(片上写 PRS Question)
8. **物理量写成「名称 符号(单位)」**:「摆长 L(m)」「重力加速度 g(m/s²)」。用在量的清单与表头;
概念片只写术语和符号(「周期 T」),单位由讲的人说(classroom.md 另加的第 2 条)
9. **公式的适用条件写在式子同一行**:`T ≈ 2π√(L/g)(θ ≪ 1)`,近似式用 ≈,不在式子下面另垫一行。
条件只写符号或短语,连括号 8 字内(「θ ≪ 1」「v₀ = 0」);写不短的(「由静止释放,不计空气阻力」)
写进前一张主张句或本片左下的出处行(classroom.md 另加的第 3 条)
10. **例题的标题给数据和结果**:「例:L = 1.0 m,T ≈ 2.0 s」。给数据照 MIT 课件(6c,B 档);
给结果是因为例题按推演片做,标题是一句主张(「场合」第 1 条)。不写「一米长的摆,周期约两秒」这种叙述;
用教材的说法,不用口语:写「约去」,不写「约掉了」(误解片引用误解的原话除外)
### 片上文字的硬性写作规则
下面前七条摘自本仓库的 `writing-rules`,是其中适用于片上文字的部分;第 8 条的 AI 腔词表是本 skill 自己的,范围也更宽。
`writing-rules` 本身要使用者点名才启用,**但这几条对片上文字始终有效**——
一张片上只有十几个字,一处 AI 腔就占了整片的十分之一,比在长文里致命得多。
**前七条的适用范围只有片上文字与图注**(第 8 条另有说明)。不管讲稿(那是说的,不是写的),
也不管这份 SKILL.md 自己的行文。
**1. 禁破折号。** 片上出现 `——` 一律改掉。要停顿就断行,要补充就写进讲者备注,由人说出来。
**2. 禁"不是 A,是 B"。** 这是发布会文案最爱的句式,也正因为如此它已经是套路。
**带不带「而」都算**:「不是升级,而是重新发明」和「不是不想记,是不知道从哪起头」
是同一个句式,自查时两种都要查:
```
禁:这不是一次升级,而是一次重新发明
改:把它做的事直接说出来,或者干脆只留后半句
```
**3. 杜绝强行升华。** 尤其是收束那一张——它是全场最容易往上拔的位置。
```
禁:它改变的不只是记录方式,更是我们与生活相处的方式
改:收束回到第一拍那句话,把否定改成肯定就够了
```
**4. 必须有明确立场。** "取舍"那一拍尤其如此。含糊的取舍等于没有取舍:
```
弱:在功能与简洁之间取得了平衡
强:片上「不做社交」;讲:一旦有人看,你就会开始表演
```
**5. 禁假精确数字。** 没实测过就不要写"提升约 37.2%"。
量到什么程度就写什么程度,写"快了大约三分之一"不丢人,编一个小数点才丢人。
(这条与上面「事实校验」第 2 条是同一件事的两个方向。)
**6. 禁汇报腔词表。** 这几个词在学生的片子里出现频率最高,一律换掉:
| 禁 | 换成 |
|---|---|
| 痛点 | 麻烦的地方、实际需求、卡在哪 |
| 闭环 | 形成完整流程、有反馈 |
| 根因 | 根本原因 |
| 口径 | 定义、标准、说法 |
| 赋能 / 抓手 / 心智 | 直接说做了什么 |
| 一句话总结 | 直接写那句话,不加标签 |
`writing-rules` 的 A 组(动作黑话:"核一轮""兜底""收敛")与 C 组(自夸腔:"我直说""不踩坑")
基本不会出现在片上,但如果出现,同样禁。
**7. 写完即止。** 最后一张之后不要再加"谢谢观看""欢迎提问"这类片。
讲的人自己会说,片上再写一遍就是重复。
课堂与讲堂末尾的**回顾**与**参考文献**不算违反这条:前者是让听众做一次提取,后者是学术场合的义务。
**8. 避开 AI 腔词。** 这一条的范围比前七条宽:片上文字、图注、讲者备注、讲义,以及交给使用者确认的大纲,都要守。
这类词被模型输出用滥了,读的人一看就知道是 AI 写的;它们看着有分量,删掉之后句子几乎不少什么。最常见的:
> 边界(「边界在哪」「隐私边界」)、张力、底色、质感、维度、锚点、叙事(比喻义)、赋能、打造、重塑、无缝、
> 极致、见证、旅程、解锁、本质上、值得注意的是、这意味着
判断办法是删词测试:把它删掉或换成大白话,句子少了具体信息吗?没少,就改成一个数、一个动作、
一个时刻或一个取舍(「隐私边界」→「不录音频」);少了,说明它是术语或本义(物理课的边界条件、
热力学的熵、习题的答案),照用。写完大纲、写完 deck.html 各跑一次,在本 skill 目录下,文件路径换成实际的:
```bash
grep -nFf references/ai-tone-words.txt deck-outline.md deck.html
grep -nE '不是[^,。;]{1,20}[,,]\s*(而)?是' deck-outline.md deck.html # 第 2 条的句式
```
每条命中都过一遍删词测试;`deck.html` 里命中在样式或脚本注释中的,是模板自己的说明,不算。
完整词表(85 个词)、每个词换成什么、来源,读 `references/ai-tone-words.md`,当且仅当:命中了拿不准是不是本义、
要找替换写法,或者使用者问起为什么不让用某个词。
### 与 `writing-rules` 的关系
「至多三点,点数由内容定」与 `writing-rules` 规则三不冲突,理由和不适用的几条都在
`references/slide-copy-grammar.md`,读取条件见「片上文字的句式」。
仍然要注意视觉层面的三:bento 三格、规格三列、取舍三条不要连着用。
## 边界 / Boundaries
- **不使用任何厂商的资产**:商标、logo、产品渲染图、官方摄影、活动视觉、专有字体一律不用。
借鉴的是信息层级、字号关系和叙事结构这些通用做法,不是任何一家的素材
- **不做 Liquid Glass**。那是 WWDC 2025 发布的系统 UI 专有材质,而且**根本不出现在
发布会的片子里**,只在软件演示录像中。使用者要求"再像一点"时,往这个方向加是错的,
它上线后本身就因为可读性被批评(A/B 档)
- **不加产品倒影和厚投影**。拟物化在 iOS 7(2013)就被整体废除,
现在再用一眼就是旧年份的味道(A 档)
- **不为了像 AI 产品而加流光描边**。那类效果的具体参数是厂商资产;更重要的是,
这套风格里重点色要承担语义,装饰性动效与它冲突
- **不做到冒充的程度**。产出物不能让人误以为是某家公司的官方发布物料。
使用者要求加某家的 logo 或做成看起来像官方发布会截图时,拒绝并说明可行的做法
- **不编造产品参数**,包括看起来很合理的补全
- **不替使用者写讲稿**。这个技能做片子;讲的人说什么由使用者定,大纲里那一栏是提示不是成稿,
讲者备注同理
- **讲义不新增内容**。它只重组确认过的大纲与使用者给的材料,不补充使用者没提供的知识点、数据或引用
- **不替学生完成作业**。课程汇报、答辩的内容是学生自己的产出,这个技能只负责把它做成片子,
不补写实验结果、不代拟结论
- **不用没有使用权的图**。别人的照片、论文里的图要有许可或属于合理引用范围,并写来源行;
拿不准就用占位图,让使用者自己换
- **不贴项目符号,不塞长段落**
- **不引外部资源**,包括公式库与网络字体
- **不在阶段一就生成 HTML**
- **不承诺做不到的产出**:`.key` 生成不了;pptx 有动画与 Morph,但公式退成纯文本、图表不做、Keynote 导入后剩多少没有验证过
## 输出格式 / Output
阶段一:
```markdown
场合按「<发布会 / 答辩 / 课堂 / 讲堂>」处理,依据是 <材料里的哪一处>。
先按你的材料排了一版叙事拍点和逐片清单:
<deck-outline.md 全文>
**我拿不准的:**
- <标注>
确认之后我出 deck.html。
```
阶段二:
```markdown
片子已生成:<文件路径>
- 片数:<n> 张,按概念数算的
- 叙事:<各拍分别是第几到第几片>
- 逐步出现:<哪几片分步、各几步>
- 未确认项:<在哪几片、怎么标的>
- 需要你替换的:<占位图位置;换图后跑 scripts/inline_images.py>
- 翻页:→ / 空格下一步,P 讲者视图,B 黑屏,F 全屏
- 导 PDF:`scripts/export_pdf.sh <文件>`(所有步骤都会印出来,包括提问片的答案)
- 讲义:<课堂与讲堂写文件路径;其余场合写「不需要」>
- 要在 PowerPoint 里继续改:`scripts/outline_to_pptx.py <片单>`(动画一起带过去,公式要重排)
```
## Token 控制 / Token discipline
- 长材料和长讲稿先摘要成大纲,不要把全文带进阶段二
- 阶段二只读大纲和模板,不重读原始材料
- 改某几片就改那几片对应的 `<section>`,不重生成整个文件
- `references/stage-style-research.md` 只在需要查依据时读,不默认加载
- SKILL.md 每次整份载入,能省的只有 references:`classroom.md`、`non-launch-occasions.md`、`slide-copy-grammar.md`、`ai-tone-words.md` 按各自写明的条件读,`CHANGELOG.md` 不用读
- 模板有一千多行,阶段二只取用得上的片型,不要整份带进上下文再删
## 参考资料 / References
- `references/stage-style-research.md` —— 取证记录与 A/B/C 分档。要判断某条做法有没有依据时读它
- `references/classroom.md` —— 十二类课堂片型的做法与事实校验另加的五条,读取条件见「逐片清单」
- `references/non-launch-occasions.md` —— 答辩、课程汇报、路演、立项评审的拍点改法与必需页,读取条件见「当这不是发布会」
- `references/slide-copy-grammar.md` —— 片上文字句式的全文(例句与取证)与 `writing-rules` 的关系,读取条件见「片上文字的句式」
- `references/ai-tone-words.md` —— AI 腔词表全文:删词测试、每个词换成什么、来源与本库自查;`ai-tone-words.txt` 是同一份词表的 grep 版。读取条件见「片上文字的硬性写作规则」第 8 条
- `CHANGELOG.md` —— 逐版变更记录
- `skills/writing/writing-rules/SKILL.md` —— 完整的十五条中文写作规则。
本 skill 已内嵌其中适用于片上文字的部分,**不需要额外启用它**;要写讲稿全文时再点名启用
- `templates/deck-outline.md` —— 阶段一的骨架
- `templates/deck.html` —— 阶段二的模板,含全部片型
- `scripts/read_pptx.py` —— 从现有 .pptx 提取文字(组合形状里的也读),并标出哪几页有整句或项目符号需要拆。带 `--selftest`
- `scripts/outline_to_pptx.py` —— 从片单 JSON 生成可编辑的 .pptx,带动画,格式见脚本头部或 `--help`。带 `--selftest`
- `scripts/pptx_motion.py` —— pptx 的动画与转场写入,`--inspect` 看一份 pptx 每张分几步。带 `--selftest`
- `scripts/export_pdf.sh` —— HTML 导 16:9 PDF,走本机 Chrome
- `scripts/inline_images.py` —— 本地图片内联成 data URI,查分辨率与来源行,清掉 GPS。带 `--selftest`
- `examples/example-*` —— 虚构产品 Cadence 的大纲、13 张片的 HTML、以及对应的片单 JSON(发布会)
- `examples/lecture-*` —— 一堂讲单摆的课:大纲、17 张片的 HTML、片单 JSON、讲义(课堂)
## 变更记录 / Changelog
逐版记录在同目录的 `CHANGELOG.md`,最新的在最上方。
Files in this skill
- CHANGELOG.md
- README.md
- SKILL.md
- examples/example-deck.html
- examples/example-deck.json
- examples/example-outline.md
- examples/lecture-deck.html
- examples/lecture-deck.json
- examples/lecture-handout.md
- examples/lecture-outline.md
- references/ai-tone-words.md
- references/ai-tone-words.txt
- references/classroom.md
- references/non-launch-occasions.md
- references/slide-copy-grammar.md
- references/stage-style-research.md
- scripts/export_pdf.sh
- scripts/inline_images.py
- scripts/outline_to_pptx.py
- scripts/pptx_motion.py
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.