本文へ移動
cccskills
無料GitHub で公開

keynote-deck-builder

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

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

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

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

インストール方法を見る

含まれるファイル(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(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

发布会风格演示 / 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,最新的在最上方。

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

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

日本語の概要は準備中です。原文の説明を表示しています。

ChromiteCr/Skills42026年10月16日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

ChromiteCr/Skills42026年10月16日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

ChromiteCr/Skills42026年10月16日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

ChromiteCr/Skills42026年10月16日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

ChromiteCr/Skills42026年10月16日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

ChromiteCr/Skills42026年10月16日 更新

ChromiteCr のスキルをすべて見る

このスキルの問題を報告する