Skip to content
cccskills
FreePublished on GitHub

keynote-deck-builder

当使用者要做苹果发布会风格的 PPT、把演讲稿做成幻灯片、把现有 PPT 改成发布会风格,或者要做讲座、课堂、学术报告、答辩的投影片时使用。输入可以是一句描述、一份演讲稿或讲稿、一份现有 .pptx。

先判断场合(发布会/答辩/课堂/讲堂),再分两步:先产出 deck-outline.md(拍点、逐片清单、出场顺序、出处、舍弃项)等确认,再产出单文件 deck.html(1920×1080、讲到才出现的逐步揭示、跨片连续过渡、讲者备注、原生公式、可打印 PDF),需要时导出可编辑 .pptx(动画、调暗、点名与 Morph 平滑切换都带过去),课堂与讲堂另出讲义。

核心规矩:一片一个概念、不用项目符号、字号不低于 40px、片子不重复讲稿、数字与图片都要有出处。片上默认用名词短语、不用问句,发布会片上没有问号;课堂与讲堂的证据片改用一句主张,问号只给两处:真要听众作答、答案随后揭晓的提问片,以及下一张片立刻用一句结论回答的引导问句(一节课一两处)。片上文字另按内嵌的中文写作规则走。

不使用任何厂商的商标、产品渲染图或活动视觉。

The English summary is being prepared. Showing the original description.

Works withPowerPoint
See how to install

Files included (23)

  • SKILL.md68.3 KB
  • CHANGELOG.md18.3 KB
  • examples/example-deck.html45.1 KB
  • examples/example-deck.json3.2 KB
  • examples/example-outline.md5.4 KB
  • examples/lecture-deck.html51.9 KB
  • examples/lecture-deck.json5.1 KB
  • examples/lecture-handout.md4.9 KB
  • examples/lecture-outline.md6.7 KB
  • README.md6.6 KB
  • references/ai-tone-words.md8.7 KB
  • references/ai-tone-words.txt820 B
  • references/classroom.md3.7 KB
  • references/non-launch-occasions.md1.6 KB
  • references/slide-copy-grammar.md12.9 KB
  • references/stage-style-research.md56.6 KB
  • scripts/export_pdf.sh1.1 KB
  • scripts/inline_images.py11.9 KB
  • scripts/outline_to_pptx.py68.0 KB
  • scripts/pptx_motion.py16.8 KB
  • scripts/read_pptx.py10.3 KB
  • templates/deck-outline.md6.4 KB
  • templates/deck.html62.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

发布会风格演示 / 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 字,二到四格
回顾提示词64px5 字
大公式120px一个式子,连同同一行的适用条件不超过版心 1520px;上下标最多两级
推演行72px一行一步;分式里不再套上下标或分式
推演右栏44px栏宽 520px,一行 11 字内。写这一步凭什么成立(「牛顿第二定律」「开方取正值」),不写做了什么(「解出 t」「计算」)
代码40px 等宽十二行封顶,每行约 60 个半角字符

超了就是没想清楚。长段落一律拆片或删掉。

表里没有「说明小字」这一档了(0.9.0 删掉)。 大字下面不垫说明。下面这些不是说明,留在片上:数字前后的限定词与单位(和数字同一行)、出处行(来源、样本量、测试条件,放左下)、「未确认」标记、引语的出处、图片来源行、误解片的正确说法;各片型自带的项名与标签(规格与 bento 的项名、双列对比的列头、价格的配置名、推演右栏的依据、回顾的提示词与要点、提问片的标签与选项、误解片的标签、图表的项名)是内容本身。

公式的上下标会自动缩小,要按实测守住下限。 数学字体自带缩放表,本机 Chrome 加 STIX Two Math 实测:

基准一级上下标二级顶层分式的分子分母嵌套分式
120px(大公式)84px66px120px84px
72px(推演行,行内)50.4px39.6px,破下限50.4px39.6px,破下限

所以大公式最多两级;推演行里分式内不要再套上下标或分式,要套就把这一步拆成大公式单独占一张。

中文排版

产出的几乎都是中文片子,但这套风格的公开资料全是拉丁文字的。下面几条是中文特有的坑。

模板里已经写好了,改模板时不要删掉:

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 thingphrase—
    环保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),功能意译(实时翻译),中英之间留空格

发布会另守两条:

  1. 揭晓的那张片只有名字或产品图。「全新」「登场」「这就是」这类引出产品的话在嘴里
  2. 开场的钩子和收尾用同一个框架(6c:2025-09 那场首尾都说迄今最大飞跃);开场是否定句时, 收尾只把否定改成肯定(硬性写作规则第 3 条),如「练了多久 / 没人说得清」→「练了多久 / 现在说得清」

课堂与讲堂另守五条:

  1. 标题默认是话题名词短语(「可能影响周期的量」),证明片写一句结论。MIT、斯坦福的课件里, 不超过三个英文词的标题占四到八成
  2. 课堂活动用固定的标签:预测题、概念题、例题、演示、回顾。提问片的标签写「预测题」「概念题」, 不写「先预测」「检查一下」这种口头话。MIT 8.02 的课件栏目叫 Concept Questions(片上写 PRS Question)
  3. 物理量写成「名称 符号(单位)」:「摆长 L(m)」「重力加速度 g(m/s²)」。用在量的清单与表头; 概念片只写术语和符号(「周期 T」),单位由讲的人说(classroom.md 另加的第 2 条)
  4. 公式的适用条件写在式子同一行:T ≈ 2π√(L/g)(θ ≪ 1),近似式用 ≈,不在式子下面另垫一行。 条件只写符号或短语,连括号 8 字内(「θ ≪ 1」「v₀ = 0」);写不短的(「由静止释放,不计空气阻力」) 写进前一张主张句或本片左下的出处行(classroom.md 另加的第 3 条)
  5. 例题的标题给数据和结果:「例: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 目录下,文件路径换成实际的:

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

阶段一:

场合按「<发布会 / 答辩 / 课堂 / 讲堂>」处理,依据是 <材料里的哪一处>。

先按你的材料排了一版叙事拍点和逐片清单:

<deck-outline.md 全文>

**我拿不准的:**
- <标注>

确认之后我出 deck.html。

阶段二:

片子已生成:<文件路径>

- 片数:<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,最新的在最上方。

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

当学生说"Common App 活动栏写不下"、"这段活动描述超字数了"、"帮我把这几条压到限制内"时使用。先按官方申请表核对当季字符限额,再逐条检查;一次把所有条目量完并直接给出压缩版,只在需要砍掉实质内容时才用选择题问该保哪部分。每改一版都用工具重新数一遍字符,绝不凭感觉说"这样应该够了"。只压缩,不代写空白。

The English summary is being prepared. Showing the original description.

ChromiteCr/Skills4Updated Oct 20, 2026

当学生说"我参加过一些活动但没整理过"、"帮我把经历录进去"、"我的活动档案是空的"时使用。让学生一口气把记得的活动说出来,直接把这段话拆成结构化的长期事项(角色、组织、起止时间、做了什么、结果、级别),说不清的字段留空标"待补"而不是编,再用一张选择题卡把级别判定与是否重复这类关键项一次问完,然后提案入库。只记录学生真正说出口的内容,级别按事实判定,绝不往高了写。

The English summary is being prepared. Showing the original description.

ChromiteCr/Skills4Updated Oct 20, 2026

当学生问"招生官会怎么看我的档案"、"我的背景还差什么"、"帮我评估一下现在的申请竞争力"时使用。以顶尖大学招生官的视角通读学生的档案、长期活动与已写下的反思,不问任何前置问题直接产出一份指名道姓的坦诚点评:这份材料的亮点、招生官真实的解读方式、明显的短板与空白、以及接下来最值得做的一到两件事。只读不写,不修改学生的任何数据,也不代写任何申请材料。

The English summary is being prepared. Showing the original description.

ChromiteCr/Skills4Updated Oct 20, 2026

当使用者说"帮我填词"、"按这个字数模板写歌词"、"用多Agent对抗式写词"、"这首副歌帮我想几句"时使用,前提是字数骨架和这首歌写什么都已经有了;只有主题、还没定写什么时先用 lyric-concept-builder。拿一份字数骨架和意象系统,派三个 sonnet 子代理按不同路子并行独立起草(场景派 / 口语派 / 意象派),再派一个红队子代理逐句挑毛病,主 Agent 按句裁决拼稿,最后统一辙口与意象。收敛判据卡死:字数用 lyric-doctor 的脚本对模板数、每段同辙、hook 不含陈词、主歌二对主歌一有推进。不抄现有歌词,不替使用者决定这首歌要说什么。

The English summary is being prepared. Showing the original description.

ChromiteCr/Skills4Updated Oct 20, 2026

当想知道一段 AI 回答"哪些能直接用、哪些必须先验证、哪些只能当建议"时使用。按声明类型分四级——低风险草稿材料、观点与策略建议、可查证的事实声明、会改变状态的可执行指令——每级配一句默认处置动作;再按影响半径排序,给出最小的下一步检查。可执行类一律标"不能直接执行;先做代码审阅/沙箱测试/回滚准备",其中破坏性或提权的命令排在最前。教的是一套可复用的复查习惯,不是替使用者把所有内容都核实一遍:本 skill 只分级、排序、定处置,要逐条核实走 ai-output-fact-checker,整段代码要做入库体检走 ai-code-onboarding-checklist。

The English summary is being prepared. Showing the original description.

ChromiteCr/Skills4Updated Oct 20, 2026

当拿到一段 AI 生成的代码,还没决定要不要信、要不要跑、要不要往上继续加东西时使用。先做一遍客观体检:行数与嵌套深度、有没有测试、有没有硬编码密钥或遗留 TODO、依赖是不是真实存在、有没有危险调用(eval/exec、shell=True、递归删除、反序列化、提权、外发网络,按正文给的 grep 模式逐类查);再给风险评级和下一步动作。老实写明它查不了算法正确性——体检通过不等于代码是对的。回答里文字、事实和代码混在一起时先用 ai-answer-triage 分级;只审相对已有代码的一份改动用 ai-diff-review-protocol。

The English summary is being prepared. Showing the original description.

ChromiteCr/Skills4Updated Oct 20, 2026

See all skills by ChromiteCr

Report a problem with this skill