当学生说"Common App 活动栏写不下"、"这段活动描述超字数了"、"帮我把这几条压到限制内"时使用。先按官方申请表核对当季字符限额,再逐条检查;一次把所有条目量完并直接给出压缩版,只在需要砍掉实质内容时才用选择题问该保哪部分。每改一版都用工具重新数一遍字符,绝不凭感觉说"这样应该够了"。只压缩,不代写空白。
日本語の概要は準備中です。原文の説明を表示しています。
当使用者要做苹果发布会风格的 PPT、把演讲稿做成幻灯片、把现有 PPT 改成发布会风格,或者要做讲座、课堂、学术报告、答辩的投影片时使用。输入可以是一句描述、一份演讲稿或讲稿、一份现有 .pptx。
先判断场合(发布会/答辩/课堂/讲堂),再分两步:先产出 deck-outline.md(拍点、逐片清单、出场顺序、出处、舍弃项)等确认,再产出单文件 deck.html(1920×1080、讲到才出现的逐步揭示、跨片连续过渡、讲者备注、原生公式、可打印 PDF),需要时导出可编辑 .pptx(动画、调暗、点名与 Morph 平滑切换都带过去),课堂与讲堂另出讲义。
核心规矩:一片一个概念、不用项目符号、字号不低于 40px、片子不重复讲稿、数字与图片都要有出处。片上默认用名词短语、不用问句,发布会片上没有问号;课堂与讲堂的证据片改用一句主张,问号只给两处:真要听众作答、答案随后揭晓的提问片,以及下一张片立刻用一句结论回答的引导问句(一节课一两处)。片上文字另按内嵌的中文写作规则走。
不使用任何厂商的商标、产品渲染图或活动视觉。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
把一段描述、一份演讲稿或一份现有 PPT,做成发布会主题演讲那种片子:一片一个概念,字大,留白多,讲的人是主角。 同一套视觉也用在讲座、课堂和学术报告上,但场合一换,有三条文字规则要跟着换,见「场合」一节。
必须分两步。 第一步只产出叙事大纲,第二步才出 HTML。中间等使用者确认。 这种风格的成败几乎全在"哪句话该单独占一张片、哪个数字值得放大"上。一步到位等于把这些判断藏进 HTML, 使用者只能全盘接受或者推倒重来。
取证记录在 references/stage-style-research.md,正文每条硬规则都能指回那里。分 A(有依据)/ B(单一来源)/ C(未证实)三档,C 档不作为规则依据。
不适用于 / Not for:
bento-infographic(launch-summary-panel 已废弃)ui-design-system-builder三种入口,先判断使用者在哪一种,不要三种都按第一种处理:
| 使用者给的 | 从哪开始 | 关键动作 |
|---|---|---|
| 一句话或一堆产品材料 | 走完整流程 | 缺叙事骨架,要先问清"现状的问题是什么" |
| 一份演讲稿 | 直接切分拍点 | 把句子切成拍点,片上只放碎片、数字或图,绝不贴整句 |
一份现有 .pptx | 先读出来再重构 | 用 scripts/read_pptx.py 提取,一张密片通常要拆成三到五张 |
只有三件事需要问,其余从材料里读:
材料不足时说清缺什么。不要用常识补齐产品参数。
这是最容易做错的一步。演讲稿的句子不是片上的文字。
讲稿: 「我们发现用户平均要点七次才能完成一笔转账,这个流程从 2019 年就没变过。」
错的做法:把这句话整句放到片上
对的做法:片上只有一个字号极大的「平均 7 次点击」(「平均」和单位缩小,和数字同一行),下面不垫小字;
「完成一笔转账要点这么多次,从 2019 年就没变」由讲的人说
理由:片是覆在讲话之上的一层,不是承载信息的主体。讲的人重复片上文字会让听众同时读和听,造成认知过载(A 档)。Jobs 有过五分钟只对着 33 个字讲的段落。
一张片一层字。 大字下面不再垫一行说明小字(0.9.0 起)。那行小字要么是讲的人马上会说的话, 要么是数字的限定条件:前者写进讲者备注,后者写进数字前后的限定词与单位,和数字同一行。 来源、样本量、测试条件是证据,写进左下的出处行。 冗余原则说的就是这件事:图加旁白,比图加旁白再加同样的屏幕文字学得好(A 档); 苹果发布会揭晓产品的那几张片也只有名字或产品图,没有说明文字(官方舞台照片,A 档;取证见 references 第 6c 节)。
所以每个拍点产出的是片上文字 + 讲稿留给人说的部分两栏,大纲里要分开写。
先定场合,再定拍点。四种场合共用同一套视觉,差在听众要带走什么:
| 场合 | 听众要带走 | 片子干什么 | 讲义 |
|---|---|---|---|
| 发布会、项目演示 | 一个印象,加一个相信它的理由 | 锚定注意力,讲的人是主角 | 不需要 |
| 答辩、汇报、路演 | 一个判断:做得怎么样 | 锚定注意力,同时让评委看见工程量 | 建议附原始材料 |
| 课堂 | 能复述、能用、会做题 | 分步讲清一件事,并当场检查懂没懂 | 必须有,学生课后要复习 |
| 讲堂、学术报告、讲座 | 一个主张,加支撑它的证据 | 一张片说一个结论,给出证据 | 建议有,放参考文献与完整推导 |
不变的(四种场合都一样):一片一个概念、字号下限、不用项目符号、片子不重复讲稿、 不放装饰件、事实校验、图表的诚实规则、中文排版、片上文字的硬性写作规则。
课堂与讲堂要换的三条,都是学习研究与发布会做法直接冲突的地方,依据见 references 第 12 节:
讲义与投影分开。 投影片按这套风格删,删下来的定义全文、完整推导、数据表、参考文献进讲义。 Duarte 把这种拿在手里读的文档叫 slidedoc,和投影片是两种东西,不要合成一份(B 档)。 这一句要在阶段一就主动说,不要等使用者发现片子太空。
场合定为课堂或讲堂,就读 references/classroom.md:十二类课堂片型怎么做,事实校验另加的五条。
用 templates/deck-outline.md 起草。这一步不写任何 HTML。
发布会先判断这是数据主导还是内容主导的项目;课堂与讲堂各有自己的主线:
数据主导 现状与问题 → 感到问题 → 揭示 → 展开(至多三点)→ 演示 → 数字 → 可得 → 收束
内容主导 现状与问题 → 感到问题 → 揭示 → 机制 → 展开(至多三点,每点配一个时刻)
→ 演示 → 取舍 → 可得 → 收束
课堂 路线 → 现象 → 预测 → 名字 → 机制(分步)→ 例题(分步)→ 误解 → 检查 → 回顾 → 留给下次的问题
讲堂 问题与缺口 → 为什么难 → 核心想法 → 方法 → 证据 → 局限 → 结论 → 下一步 → 参考文献
缺哪拍就明说缺哪拍,不要凑。发布会两条的依据是 Duarte 的"现状 / 可能"来回摆荡与 Gallo 拆的九拍(A/B 档)。
课堂那条每一拍都对着一条学习研究(references 第 12 节):
讲堂那条是学术报告的常规骨架。每张证据片的标题都是一句主张,连起来读就是整场报告的摘要; 读不成摘要,说明有的片没想清楚自己要证明什么。
两条主线共用的:
writing-rules 规则三要打破的那种惯性怎么判断走哪条:手上有没有能指回材料、且值得放大到 280px 的数字。 有就走数据主导;数字全在后台、或者使用者明确不想突出数据,走内容主导。 不要为了填满"数字"那一拍去挖不该挖的数据——凑出来的数字比没有数字更糟。
每片一行,必须有这几栏:
| 栏 | 要求 |
|---|---|
| 序号 | 连续 |
| 拍点 | 属于上面哪一拍 |
| 片型 | 从下面三十三类里选 |
| 片上文字 | 实际会印在片上的字,按字数上限写。一张片一层字:只写大字那一层,不写下面那行说明 |
| 讲的人说什么 | 一句话概括,不能与片上文字重复。原来想垫在大字下面的那句说明写在这里 |
| 出场顺序 | 这张片分几步出、每步出什么、哪些讲过后调暗。一次出齐就写「一次」 |
| 出处 | 数字、别人的图、别人的结论都标来源;材料里没有的写 【未确认】 |
片型三十三类。前二十一类通用:标题卡、单句大字、大数字、产品主图、功能名、bento 网格、规格密排、双列对比、图表、logo 墙、章节分隔、价格与上市、one more thing、环保、引语、流程条、双栏人物、全黑过场、时刻、信号汇入、取舍。
后十二类只在课堂与讲堂用:路线、提问、满版图、半幅图、主张与证据、概念、公式、推演、代码、误解、回顾、参考文献。
通用二十一类里的最后三类(时刻、信号汇入、取舍)是给内容主导的项目用的:
<br> 断句,断完逐行数一遍引语、流程条、双栏人物、全黑过场四类是实际做片子时补的,研究里的十四类不够用:
研究里的那十四类,有两类要说清怎么排:
十二类课堂片型各自怎么做、各自封顶多少,读 references/classroom.md,当且仅当场合是课堂或讲堂,
或者别的场合要用其中某一类(例如答辩把目录页改成路线片)。
读 references/non-launch-occasions.md 当且仅当场合是答辩、课程汇报、路演或立项评审。
那里写了这几种场合的拍点怎么改、评分表要求的页面为什么只能问不能删、什么时候提醒使用者把原始材料当讲义发。
有些项目的数字本来就该在后台。生活记录类应用、工具类软件、设计作品、内容产品, 它们的价值不在参数上;硬把数据抬到台前,既讲不清也不像那么回事。
先想清楚"数字"那一拍到底在干什么。 它的作用不是"显得专业", 而是给出一个可以被检验的证据。所以没有数字时,要找的不是替代的装饰, 而是同样可被检验的东西:
| 接替"数字"的 | 为什么它算证据 |
|---|---|
| 演示 | 当场就能验。演示失败观众立刻看得见,所以它是有代价的承诺 |
| 取舍 | 可以被反驳。说"我们不做社交、不做排行",是一个能被检验的立场 |
| 机制 | 可以被追问。说清它从哪几类信号里得出结果,别人能顺着问下去 |
形容词这三样都不是。 "流畅"、"贴心"、"沉浸式"既验不了、也反驳不了、也追问不了, 所以它们在这套结构里不承担任何重量。
机制(放在揭示之后):它凭什么能做到。不是技术栈清单,是一句话说清输入和输出。 用「信号汇入」片型:左边几路输入,汇到右边一个结果。
取舍(放在演示之后):它故意不做什么,以及为什么。 这一拍常常是整场最有信息量的地方——因为所有产品都会说自己做了什么, 只有想清楚了的产品说得出自己不做什么。
数据主导时每点配一个数字,内容主导时每点配一个时刻(点数照旧由内容定):
弱:智能建议 · 它会智能地为你提供写作建议
强:写作建议 · 散步回来,这段路、这张照片和这首歌已经在草稿里
名字(2 到 5 个字的名词)进大纲和讲者备注,时刻片上只放场景。 时刻的判据在「反发布会腔」那一节:能不能拍成十秒的视频。
使用者要介绍的不是自己做的东西时(课堂分享、产品分析、竞品研究),规矩不同:
按讲的时长估,宁少勿多。一片一个概念意味着片数由概念数决定,不由时长决定。 公开资料里查不到"每分钟几张片"的可靠实测(C 档),所以不要给使用者一个每分钟片数的公式, 按概念数报数,并说明这是按概念算的。
哪些内容没上片,为什么。这一块不能省——使用者最常见的反馈就是"某某怎么没了", 写清楚比等他问一遍再解释省事。
写完停下等确认。不要在同一轮里顺手把 HTML 也生成了。
确认之后用 templates/deck.html 填充。
scroll-snap 翻页,方向键与空格也能翻system-ui, -apple-system 系统栈。不要在 CSS 里写 "SF Pro Display"——
本机字体文件名是 SFNS.ttf,按那个名字引不可靠;而且 SF Pro 的 EULA 只允许做 Apple 系统界面的
mockup,不允许随文件分发(A 档)scripts/inline_images.py 做,它会顺带查分辨率、来源行,并清掉照片里的 GPS<section> 里、舞台外的 <aside class="notes">,按 P 在另一个窗口看,不上屏#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,破下限 |
所以大公式最多两级;推演行里分式内不要再套上下标或分式,要套就把这一步拆成大公式单独占一张。
产出的几乎都是中文片子,但这套风格的公开资料全是拉丁文字的。下面几条是中文特有的坑。
模板里已经写好了,改模板时不要删掉:
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 节:
:lang(zh) 把所有字距归零,标题、数字、正文都一样。
负字距只给拉丁与数字大字,模板用 --latin 开关自动处理:lang="zh-CN" 时为 0,lang="en" 的段落收紧line-break: strict 只阻止坏断行,不会替你挑好断点。大字标题断在哪要手写 <br>,
按语义断,不要让它自己折版心宽 ÷ 字号。1920 舞台去掉两侧 200px 留白,
版心 1520px,所以 144px 的单句大字每行 10 字,96px 的时刻每行 15 字,80px 的标题每行 19 字。
写完逐行数一遍,超一个字就会多折一行,末尾那一两个字变成孤行,很难看#f5f5f7(纯白投影刺眼)。不加渐变、光晕、颗粒。
0.7 版以前的「近黑多层渐变加轻噪点」依据只有一个 Quora 回答(C 档,本不该成为规则);
苹果官网深浅两种底都是纯色(A 档);而光晕加颗粒正是 AI 生成的片子最常见的样子#f5f5f7 / #98989d / #6e6e73,浅色 #1d1d1f / #6e6e73 / #86868b,
都是苹果官网在用的颜色。不用半透明白:半透明字压在别的颜色上会变色,对比度跟着漂#007AFF 这类"系统蓝"。那是社区取样值不是官方规格(A 档),要用就让使用者给主色bento-infographic 量过),但那是看图用的,
标签只有画面宽的 1.2%;投影片上格标签要 40px(上面的字号表),同一张片放不下那么多格。要做那种总结图,用
bento-infographic。原来写的「8 到 12 格封顶,超过 12 格就垮」出自一篇博客,和实测对不上,已降为 C 档;
同出一处的「锚点格面积约为支撑格的两倍、格子里放数字不放标题」也只作参考(references/stage-style-research.md 第 10 节)--muted / --faint 是量过的(深色 7.31:1 / 4.14:1,浅色 4.66:1 / 3.33:1),改配色后要重新量,不要凭眼睛调tabular-nums,模板默认);单独放大的数字用比例数字(模板已给
大数字、双列对比、价格三类改好),等宽的「1」两边会空出一截位置固定下来,听众就不用每张片重新找字。下表是本 skill 的约定:「居中是常态」有 B 档依据, 其余是按信号原则推的,不是苹果公开的规范。
| 位置 | 放什么 | 为什么 |
|---|---|---|
| 正中 | 单句大字、大数字、功能名、术语、章节分隔、提问、路线 | 这张片只有一件事 |
| 左上 | 主张句:证据片、推演、代码、流程条、取舍的标题 | 视线从左上开始扫;结论每次都在同一处,不用找 |
| 底部压暗区,左对齐 | 满版图上的字 | 只有这一块的对比度有保证 |
| 左半,垂直居中 | 半幅图的字 | 字不压图 |
| 左下 | 出处行:作者 年份,或来源、样本量、测试条件(「n = 30 · 中期问卷」);公式写不短的适用条件(「不计空气阻力」) | 离结论近,又不抢结论 |
| 右下 | 图片来源行 | 跟着图走 |
| 不放 | 照片上没有遮罩的地方;四个角(来源行除外) | 前者读不出来,后者像页眉页脚 |
先分清两种图,处理方式相反:
| 物件 | 场景 | |
|---|---|---|
| 拍的是 | 一个产品、一台装置、一个器件 | 一个地方、一个现象、一个时刻 |
| 怎么放 | 居中浮着,留白四到五成,不出血 | 出血铺满(满版),或占右半(半幅) |
| 字放哪 | 图的下方 | 满版放底部压暗区,半幅放左半 |
满版图的三条硬规矩:
object-fit: cover 会裁掉一部分,主体偏哪就把 --focus 往哪设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 表示一直保持 | 公式讲到哪项亮哪项;提问揭晓正确选项 |
翻页键先走完本片的步数再进下一片;退回上一片时显示它的最终状态;用滚轮翻到的片直接给最终状态。
--faint,不用透明度叠乘:
次要字本身就是 0.62 的透明度,再乘一次会掉到 1.7:1data-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 档)。
--faint,
不用 5% 白的 --tile——早先的模板就是这么写的,投出来几乎看不见(0.6.0 修正)顺序性内容拆成多张片,并列性内容改成图形或 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
这一节优先于所有视觉要求。这套风格把数字放到 280px,错一个数字的代价被放大了同样的倍数。
下面几条的依据是美国商业广告的举证与披露标准(FTC、AAPOR,见 references 第 7 节)。 使用者多数在做答辩与项目演示而不是广告,所以这里按"什么样的数字算诚实"来用, 不是法律建议;但判断一个数字放上去会不会误导人,这套标准比凭感觉好用。
每个数字都要能指回材料。指不回去的标 【未确认】 或者不放
不做换算、不做推算、不做四舍五入。材料写 4K120 就写 4K120
限定条件跟着数字走。"最长 22 小时视频播放"里的"最长"和"视频播放"都不能丢,丢了就是夸大
对比性说法要有对比对象、版本和测试时间。"快 3 倍"要写清比什么、哪个版本、什么时候测的。 拿过时的对照物比也不合格
"最高可达"要能代表典型情况。写"最高可达 X"时,要能说明典型使用下就能达到, 而不是个别最优案例;依赖特定配置的,条件写在数字旁边(数字前后的限定词与单位,或同一张片左下的出处行),不写在脚注里
调研数字要给方法,不只给样本量。样本量、抽样方式、误差范围,缺一样就在片上标出来。 "87% 的用户满意"没有 n 值和口径,是不专业而不是有力
未确认项在片上要可见,数字旁标「未确认」,不要只写在大纲里自己知道
材料互相矛盾时两个数都列进大纲让使用者定
从现有材料重构时,把散在别处的注脚拉回数字身边。源文件里样本量、测试条件、统计口径
常常和数字不在同一页——原文件那样排问题不大,因为字都一样小;但这套风格要把数字放到 280px,
注脚留在三页之前就等于没有。放大了多少倍,注脚就要跟得多紧。
一张片上出现"满意度 4.2 分","样本 30 份"就必须在同一张片上:写进左下的出处行(「n = 30 · 中期问卷」)。
HTML 里是 <div class="source">n = 30 · 中期问卷</div>,pptx 片单里是大数字或双列对比的 "source"(见阶段三)。
这和「一张片一层字」不冲突:出处行是证据的一部分,不是对大字的说明
这条第一版是我从实操里总结的,后来发现它对应 FTC 的"接近性"要求:限定条件必须清晰醒目 且紧邻主张,光打一个星号指向别处的脚注不满足标准。苹果自己也不在数字旁打星号, 用的是页首统概免责加分区详列测试条件(A 档)
上面九条管的是数字。内容主导的项目一个数字都没有,但同样会说过头, 而且因为没有数字可核,说过头反而更难被发现。对应的六条:
自查一句:把片上这句话给一个较真的人看,他能不能问出"那具体是怎么做的"? 问得出来说明你给了可追问的东西;问不出来说明那是一句形容词。
在 references/classroom.md,和十二类课堂片型在同一个文件,读取条件见「逐片清单」。
这套视觉语言天生鼓励空洞的最高级。Jobs 用"革命性"的时候,下面垫着多点触控、一千首歌、从信封里抽出来的厚度。 词是垫出来的,不是贴上去的。
判据是能不能拍成十秒的视频。 拍得出来就是具体的,拍不出来就是形容词:
拍不出来:让记录变得更轻松 拍得出来:散步回来,那段路已经在草稿里
拍不出来:沉浸式的写作体验 拍得出来:整屏只剩一张照片和一个光标
拍不出来:智能理解你的生活 拍得出来:它认出你听了整张专辑,问你当时在想什么
没有数字时,能当垫子的只有四样:一个具体的时刻、一个能演示的动作、 一个明确的取舍、一个说得清的机制。这四样都能被检验,形容词不能。
片上是陈述,不是讲解,更不是提问。 片子锚定注意力,解释留给嘴(A 档)。每次都守这十三条:
读 references/slide-copy-grammar.md 当且仅当:要改写一句被上面某条判为不合格的片上文字;
使用者质疑某条规则或问依据;或者使用者问起本 skill 和 writing-rules 的关系(三点式、不适用的几条)。
那里有每条的禁/改例句、取证,以及「官网文案不是片上文字」的对照;下面「片上用词」的改写例也在那里。
对照苹果发布会(官方简中字幕与 apple.com.cn)和斯坦福、MIT 的课件定的,取证在 references 第 6c 节。 前三条两种场合都守:
发布会另守两条:
课堂与讲堂另守五条:
T ≈ 2π√(L/g)(θ ≪ 1),近似式用 ≈,不在式子下面另垫一行。
条件只写符号或短语,连括号 8 字内(「θ ≪ 1」「v₀ = 0」);写不短的(「由静止释放,不计空气阻力」)
写进前一张主张句或本片左下的出处行(classroom.md 另加的第 3 条)下面前七条摘自本仓库的 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 三格、规格三列、取舍三条不要连着用。
.key 生成不了;pptx 有动画与 Morph,但公式退成纯文本、图表不做、Keynote 导入后剩多少没有验证过阶段一:
场合按「<发布会 / 答辩 / 课堂 / 讲堂>」处理,依据是 <材料里的哪一处>。
先按你的材料排了一版叙事拍点和逐片清单:
<deck-outline.md 全文>
**我拿不准的:**
- <标注>
确认之后我出 deck.html。
阶段二:
片子已生成:<文件路径>
- 片数:<n> 张,按概念数算的
- 叙事:<各拍分别是第几到第几片>
- 逐步出现:<哪几片分步、各几步>
- 未确认项:<在哪几片、怎么标的>
- 需要你替换的:<占位图位置;换图后跑 scripts/inline_images.py>
- 翻页:→ / 空格下一步,P 讲者视图,B 黑屏,F 全屏
- 导 PDF:`scripts/export_pdf.sh <文件>`(所有步骤都会印出来,包括提问片的答案)
- 讲义:<课堂与讲堂写文件路径;其余场合写「不需要」>
- 要在 PowerPoint 里继续改:`scripts/outline_to_pptx.py <片单>`(动画一起带过去,公式要重排)
<section>,不重生成整个文件references/stage-style-research.md 只在需要查依据时读,不默认加载classroom.md、non-launch-occasions.md、slide-copy-grammar.md、ai-tone-words.md 按各自写明的条件读,CHANGELOG.md 不用读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 提取文字(组合形状里的也读),并标出哪几页有整句或项目符号需要拆。带 --selftestscripts/outline_to_pptx.py —— 从片单 JSON 生成可编辑的 .pptx,带动画,格式见脚本头部或 --help。带 --selftestscripts/pptx_motion.py —— pptx 的动画与转场写入,--inspect 看一份 pptx 每张分几步。带 --selftestscripts/export_pdf.sh —— HTML 导 16:9 PDF,走本机 Chromescripts/inline_images.py —— 本地图片内联成 data URI,查分辨率与来源行,清掉 GPS。带 --selftestexamples/example-* —— 虚构产品 Cadence 的大纲、13 张片的 HTML、以及对应的片单 JSON(发布会)examples/lecture-* —— 一堂讲单摆的课:大纲、17 张片的 HTML、片单 JSON、讲义(课堂)逐版记录在同目录的 CHANGELOG.md,最新的在最上方。
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
当学生说"Common App 活动栏写不下"、"这段活动描述超字数了"、"帮我把这几条压到限制内"时使用。先按官方申请表核对当季字符限额,再逐条检查;一次把所有条目量完并直接给出压缩版,只在需要砍掉实质内容时才用选择题问该保哪部分。每改一版都用工具重新数一遍字符,绝不凭感觉说"这样应该够了"。只压缩,不代写空白。
日本語の概要は準備中です。原文の説明を表示しています。
当学生说"我参加过一些活动但没整理过"、"帮我把经历录进去"、"我的活动档案是空的"时使用。让学生一口气把记得的活动说出来,直接把这段话拆成结构化的长期事项(角色、组织、起止时间、做了什么、结果、级别),说不清的字段留空标"待补"而不是编,再用一张选择题卡把级别判定与是否重复这类关键项一次问完,然后提案入库。只记录学生真正说出口的内容,级别按事实判定,绝不往高了写。
日本語の概要は準備中です。原文の説明を表示しています。
当学生问"招生官会怎么看我的档案"、"我的背景还差什么"、"帮我评估一下现在的申请竞争力"时使用。以顶尖大学招生官的视角通读学生的档案、长期活动与已写下的反思,不问任何前置问题直接产出一份指名道姓的坦诚点评:这份材料的亮点、招生官真实的解读方式、明显的短板与空白、以及接下来最值得做的一到两件事。只读不写,不修改学生的任何数据,也不代写任何申请材料。
日本語の概要は準備中です。原文の説明を表示しています。
当使用者说"帮我填词"、"按这个字数模板写歌词"、"用多Agent对抗式写词"、"这首副歌帮我想几句"时使用,前提是字数骨架和这首歌写什么都已经有了;只有主题、还没定写什么时先用 lyric-concept-builder。拿一份字数骨架和意象系统,派三个 sonnet 子代理按不同路子并行独立起草(场景派 / 口语派 / 意象派),再派一个红队子代理逐句挑毛病,主 Agent 按句裁决拼稿,最后统一辙口与意象。收敛判据卡死:字数用 lyric-doctor 的脚本对模板数、每段同辙、hook 不含陈词、主歌二对主歌一有推进。不抄现有歌词,不替使用者决定这首歌要说什么。
日本語の概要は準備中です。原文の説明を表示しています。
当想知道一段 AI 回答"哪些能直接用、哪些必须先验证、哪些只能当建议"时使用。按声明类型分四级——低风险草稿材料、观点与策略建议、可查证的事实声明、会改变状态的可执行指令——每级配一句默认处置动作;再按影响半径排序,给出最小的下一步检查。可执行类一律标"不能直接执行;先做代码审阅/沙箱测试/回滚准备",其中破坏性或提权的命令排在最前。教的是一套可复用的复查习惯,不是替使用者把所有内容都核实一遍:本 skill 只分级、排序、定处置,要逐条核实走 ai-output-fact-checker,整段代码要做入库体检走 ai-code-onboarding-checklist。
日本語の概要は準備中です。原文の説明を表示しています。
当拿到一段 AI 生成的代码,还没决定要不要信、要不要跑、要不要往上继续加东西时使用。先做一遍客观体检:行数与嵌套深度、有没有测试、有没有硬编码密钥或遗留 TODO、依赖是不是真实存在、有没有危险调用(eval/exec、shell=True、递归删除、反序列化、提权、外发网络,按正文给的 grep 模式逐类查);再给风险评级和下一步动作。老实写明它查不了算法正确性——体检通过不等于代码是对的。回答里文字、事实和代码混在一起时先用 ai-answer-triage 分级;只审相对已有代码的一份改动用 ai-diff-review-protocol。
日本語の概要は準備中です。原文の説明を表示しています。