Skip to content
Back to skills

Science Outreach

ASecurity

Triggers: 做个科普 PPT、给中学生讲我的研究、科普讲座怎么准备、把研究讲给外行听、公众开放日讲什么、给政府汇报我的成果、去企业宣讲我的技术、科技周/科普日活动、给小孩讲我的专业、开放的实验室怎么介绍。高校教师科普讲座与对外宣讲全流程辅助:先做受众分层分析与内容深度定位,再把学术内容做公众版叙事重构(去术语、加类比并标明类比边界、控制信息密度、从问题而非方法开始),产出与学术汇报严格区分的科普版 PPT(大字、少字、多图、每页一个观点),并给出分段讲稿、互动设计与科学准确性自检,守住「科学准确性不能让位于趣味性」的红线。

  • 11 stars
  • 0 votes
  • 1 copy
  • 1 view
  • Added October 20, 2026
educationpythongobash

Security analysis

A100/100

Scanned October 20, 2026

npx -y skills add EtherealMingo/university-teacher-skills --skill science-outreach --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Science Outreach?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Science Outreach
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/etherealmingo-science-outreach/badge)](https://www.skillsdirectory.com/skills/etherealmingo-science-outreach)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: science-outreach
description: "Triggers: 做个科普 PPT、给中学生讲我的研究、科普讲座怎么准备、把研究讲给外行听、公众开放日讲什么、给政府汇报我的成果、去企业宣讲我的技术、科技周/科普日活动、给小孩讲我的专业、开放的实验室怎么介绍。高校教师科普讲座与对外宣讲全流程辅助:先做受众分层分析与内容深度定位,再把学术内容做公众版叙事重构(去术语、加类比并标明类比边界、控制信息密度、从问题而非方法开始),产出与学术汇报严格区分的科普版 PPT(大字、少字、多图、每页一个观点),并给出分段讲稿、互动设计与科学准确性自检,守住「科学准确性不能让位于趣味性」的红线。"
---

# 科普与对外讲座(公众版叙事重构)

> **Goal**:把一篇论文或一个课题,变成一场外行**听得懂、记得住、且不会听出错误认知**的讲座。
> 本技能与学术汇报是**两套不同的产物**,不是同一份 PPT 删几句话。
> 产出是初稿:科学结论、成果可公开性、图片来源均需教师确认。

## 何时使用

- 「做个科普 PPT」「科普讲座怎么准备」
- 「给中学生/高中生讲我的研究」「给小孩讲我的专业」
- 「把研究讲给外行听」「公众开放日 / 科技周 / 科普日讲什么」
- 「给政府汇报我的成果」「去企业宣讲我的技术」
- 「这个课题怎么讲得让人听懂」

**不适用**:

| 需求 | 该用哪个技能 |
|---|---|
| 学术会议 / 组会 / 答辩汇报 | `skills/paper-to-slides/` |
| 正常课程课件 | `skills/lecture-slides/` |
| 教学竞赛与示范课 | `skills/teaching-contest/` |
| 申报书、职称材料 | `skills/grant-proposal/`、`skills/annual-review/` |

**判别口径一句话**:听众里如果**有一半人不知道你这个学科在干什么**,就走本技能;
如果听众是同领域同行,走 `paper-to-slides`。

## 底座(禁止重写)

| 路径 | 用途 |
|---|---|
| `skills/office-layer/` | **文件产出唯一通道**(pptx / docx)。本技能的 PPT 与讲稿全文都由它生成 |
| `skills/office-layer/scripts/pptx_kit.py` | `build` / `notes` / `inspect` —— 科普 PPT 的唯一生成路径 |
| `skills/office-layer/scripts/docx_kit.py` | 讲稿全文、受众分析卡、自检报告的 DOCX 产出(`md` 通道) |
| `skills/slides-polish/` | 视觉打磨:HTML/SVG → headless Chrome → PNG 的管线、配色纪律、迭代自检循环(**只借视觉管线与纪律,pptx 骨架仍走 office-layer**) |
| `skills/learning-education/thinking-toolkit/methods/02-dual-layer-explain.md` | **双层解释法**:小白版 + 专业版各讲一遍,与本技能「先类比后定义」直接同源 |
| `skills/learning-education/thinking-toolkit/methods/01-socratic-inquiry.md` | 苏格拉底提问法,用于设计互动提问 |
| `skills/education-skills/edu-rural-education/references/localized-content-design.md` | 文化回应教学与在地化内容层次,做**受众适配**的通用思路 |
| `skills/education-skills/edu-rural-education/references/rural-education-platform.md` | 面向资源受限受众的内容设计(低带宽、低设备条件下的呈现取舍) |
| `skills/education-skills/edu-ai-tools/references/generative-ai-education.md` | 面向**非专业受众讲 AI 主题**时的既有表述范式 |
| `THIRD_PARTY_NOTICES.md` | 上游溯源与许可证合规,引用前先读 |

未在本表列出的底座路径**不要凭记忆写进交付物**。引用前用 `ls` 验证:

```bash
ls skills/office-layer/scripts/ skills/slides-polish/ \
   skills/learning-education/thinking-toolkit/methods/ \
   skills/education-skills/edu-rural-education/ skills/education-skills/edu-ai-tools/
```

## 前置信息收集(intake,一次性问完)

按 `CONVENTIONS.md` §4 的纪律:**合并成一次提问,不要边做边问**。
信息不全时用下表「安全默认值」继续,并在交付物里标注哪里用了默认值。

| # | 要问的 | 为什么问 | 缺省时的安全默认值 |
|---|---|---|---|
| 1 | **受众类型与年龄**:哪一类人、几年级 / 什么单位、大约多少人 | 决定概念预算、语言与类比来源——这是第一步,决定后面全部 | 「大学非本专业学生,18–22 岁,约 50 人」 |
| 2 | **讲座时长**:总时长多少、是否含提问时间 | 决定页数与概念总数 | 30 分钟(含 5 分钟提问) |
| 3 | **场地与设备**:报告厅 / 教室 / 操场 / 线上;投影比例、有无麦克、能否放视频、能否上台做实验、有无网络 | 决定字号下限、图幅、互动形式可行性 | 16:9 投影 + 有麦克 + 有网络;**不安排需要上台的实验** |
| 4 | **研究主题与可讲范围**:讲哪篇论文 / 哪个课题;哪些已公开发表 | 划定素材边界,避免越界 | 只用教师本次提供的材料,不自行补充研究内容 |
| 5 | **保密限制**:有无涉密项目、横向委托方限制、未发表数据、不可提及的合作方名称 | **红线,必须先问清** | **按最严处理**:只讲已公开发表内容,其余一律不出现 |
| 6 | **是否需要互动环节**:是否需要主办方配合准备道具 / 投票器 / 小礼品 | 决定互动形式选择 | 需要互动;用举手、猜数字、情景假设这类**零道具**形式 |
| 7 | **是否直播 / 录制**:会不会被剪成短视频、是否留档、是否需要脱敏 | 录制会放大措辞风险,也改变图片与音乐的授权范围 | 按「会被录制并可能被二次剪辑」处理:不即兴发挥、不用存疑素材 |
| 8 | **是否面向未成年人**:有无教师 / 家长在场 | 决定适龄审查强度 | 按「有未成年人、无家长在场」从严处理 |

> 第 5 项如果教师答「不确定」,**不要往下做**:先按最严默认值出稿,并在交付说明第一行写上
> 「本稿按『仅使用已公开发表内容』编制,若涉及涉密或未发表数据请立即告知,需重做素材清理」。

## 工作流

### 阶段一 · 受众分层与深度定位

- **输入**:intake 第 1、2、4 项 → 受众类型、时长、研究主题
- **动作**:查下面的**受众分层表**,锁定受众;再用「概念预算」公式算出这场能讲几个概念;用具体例子对照表确认「讲什么 / 不讲什么」
- **输出**:`受众分析卡.md`(受众、概念预算、深度止点、一句话核心结论)
- **退出条件**:能用一句话写出「听完这场,听众会记住的那一句话」。写不出来 → 受众定得太宽(「大众」「市民」不是受众),回到 intake 第 1 项细化

#### 1.1 受众分层表

| 受众 | 知识起点 | 关注点 | 注意力时长 | 语言习惯 | 禁忌话题 |
|---|---|---|---|---|---|
| **中小学生**(小学高年级 / 初中) | 只有生活经验,无学科术语;有基本数量感 | 「这跟我有什么关系」「酷不酷」「能不能动手」 | 单次有效专注 3–5 分钟,8–12 分钟必须换节奏 | 短句、具体名词、动词开头;比喻只能来自吃喝玩乐、游戏、手机、动画 | 真实伤亡细节、恐怖图像;涉及家庭隐私的调查数据;「你将来必须学理科」这类价值绑架;任何招生宣传 |
| **高中生** | 有理科基础术语(函数、力、细胞、概率初步) | 与升学的关系、能不能自己复现、有没有「隐藏玩法」 | 15–20 分钟,能接受一段 5 分钟推理 | 可以用「变量、模型、误差、概率」,但每个都要立刻解释;公式全场不超过 1 个 | 劝进 / 劝退专业的言论;把研究包装成报考指南;把未定论的争议结论说成定论;超纲推导 |
| **大学非本专业学生** | 有大学学习方法,无本学科体系 | 「跟我的专业有什么关系」「能学到什么思维方法」 | 20–30 分钟,能承受抽象但要铺垫 | 可用通用学术词(假设、样本、相关性),不必解释;**忌学科内部黑话** | 贬低在座学生的专业;默认人人会微积分 / 编程;过度简化到让人觉得「这学科很简单」 |
| **社会公众**(开放日、图书馆、社区) | 参差极大,可能只有生活常识;人员随时进出 | 「跟我生活有什么关系」「我该信谁」 | 20–40 分钟,但随时走神或离场;**每 10 分钟要给一次奖励**(笑点 / 画面 / 揭晓答案) | 完全口语;任何缩写首次出现必须展开;数字必须落地成可感的东西 | 政治站队;地域 / 职业 / 性别歧视;医疗建议;投资建议;未经批准的机构名与项目编号 |
| **企业人士** | 有行业经验与商业判断,无学术训练 | 能不能用、成本多少、什么时候能用、风险谁担 | 30–60 分钟,但对「用不上的部分」零容忍 | 结果先行、ROI 语言、少讲方法细节;讲方法必须绑定「所以成本 / 时间降了多少」 | 夸大成熟度(实验室阶段说成已量产);泄露合作方信息;贬低在座企业现有做法 |
| **政府人员** | 有政策与治理语汇,无技术细节 | 「能解决我手上哪个问题」「要多少钱、多长时间」「有没有风险 / 舆情」 | 20–40 分钟,但随时被打断;**前 3 分钟决定他是否继续听** | 「问题 → 对策 → 依据 → 建议」的公文逻辑;讲成效也讲边界与不确定性 | 承诺政策落地时间表;使用未公开的区域数据;评价现行政策的好坏(只描述事实,不做评判) |

#### 1.2 据此调整内容深度:三条硬规则

1. **概念预算** = 讲座时长(分钟)÷ 8,向下取整。40 分钟 ≈ **5 个概念**,不是 20 个。
   其中只允许 **1 个核心概念** + 最多 2 个支撑概念;受众知识起点越低,支撑概念越少
   (中小学生场次:只有核心概念,支撑概念 = 0)。
2. **深度止点**:讲「是什么 / 有什么用 / 为什么可信」,**不讲**「怎么推导 / 参数怎么调 / 消融实验」。
   除非听众当场追问——那是阶段四要留出的弹性时间。
3. **复述检验**:讲完每一稿,问自己「听众明天会跟别人复述哪一句话?」
   答不上来,说明深度定位错了,回阶段一,不要把稿子往下硬写。

#### 1.3 具体例子:同一个「轨道交通客流预测」课题

| 对象 | 开场问题 | 只讲的 1 个核心概念 | 可以出现的细节 | 必须回避 |
|---|---|---|---|---|
| **中学生** | 「你早上挤地铁,有没有想过为什么有的车特别挤、有的车挺空?」 | 「同一时刻有多少人,是可以被数出来、也可以被提前算出来的」 | 用班里人数做类比:一个班 40 人,一个站一小时 3 万人 ≈ 750 个班同时进站(**注明是估算**);让他们猜「地铁公司怎么知道要开几趟车」 | 多模态、图神经网络、损失函数、数据清洗流程、任何代码与公式 |
| **政府人员** | 「早高峰运力不够,是加车还是错峰?加多少车才够?」 | 「把不同来源的信息合起来,可以把明天的客流误差压到某个范围——这是排班和应急预案的依据」 | 误差区间本身;提前几小时能出结果;需要哪些数据(刷卡 / 手机信令)以及数据合规与隐私边界;系统维护成本;**模型失灵的条件** | 模型结构、超参数、消融实验、论文中未定稿的结论;**不承诺「装上就好了」**;不给出具体的线路加车方案(那需要运营方数据) |

> 同一课题的两场讲座,**共用的只有「客流可以被提前算出来」这一个核心结论**,
> 其余内容、开场、类比体系、禁忌清单全都不同。凡是想「一份稿子改改两场用」的,
> 最后一定是对两边都不合适。

### 阶段二 · 学术内容 → 公众版叙事重构(本技能核心)

- **输入**:教师提供的论文 / 课题材料 + `受众分析卡.md`
- **动作**:按 2.1–2.5 五道工序逐条过。**每一道都要留下书面痕迹**,不能只在脑子里过
- **输出**:`叙事重构表.md`(术语替换表、类比表含边界、数字参照物表、叙事弧分段表)
- **退出条件**:重构表里**每一个类比都写了「在哪里失效」**,且没有一页内容找不到它在叙事弧中的位置

#### 2.1 去术语

**术语替换对照表**(左列是学术说法,右列是公众版):

| 学术说法 | 公众版改成 | 处理方式 |
|---|---|---|
| 多模态融合 | 同时看多种信息 | 直译 |
| 时空相关性 / 时空依赖 | 今天的拥挤,和昨天的拥挤有关系 | 抽象属性 → 因果句 |
| 特征工程 | 把原始数据整理成模型能用的样子 | 目的导向 |
| 模型泛化能力 | 换一条没见过的线路,它还准不准 | 抽象属性 → 具体场景 |
| 鲁棒性 | 数据有缺失、有噪声的时候,它不出大错 | 说失效场景,不说属性 |
| 显著提升 | 误差从 X% 降到 Y% | 形容词 → 数字(**数字必须来自教师材料**) |
| 基线模型 | 拿来当参照的老办法 | 类比 |
| 端到端 | 中间不用人一步步调 | 结果导向 |
| 阈值 | 一条线,过了这条线就算异常 | 具象化 |
| 回归 / 统计分析 | 从一堆数据里找出「谁跟谁一起变」 | 生活化 |
| 本研究首次提出 | 我们做了一件以前没人这么做的事 | 去掉「首次」这类需查证的自评,或留 `【待教师确认:是否有查新依据】` |
| 采样 | 隔一段时间看一眼 | 具象化 |
| 优化算法 | 不停地试,试到结果最好 | 过程化 |

**三条操作规则**:

1. **先判断这词是不是听众要带走的东西。不是 → 直接删,不是替换。**
   科普最常见的错误不是「说了术语」,而是「替换了术语但还占着时间」。
   替换后照旧讲 3 分钟,等于用一个更长的词讲了一句听众不需要知道的话。
2. **必须保留时,用「先类比后定义」**(与 `02-dual-layer-explain.md` 双层解释法同源):
   先用听众熟悉的东西铺一层,再点出正式名字。
   例:先说「就像你同时看天气预报、看日历、看今天有没有球赛,再决定要不要带伞」
   →「我们做的事有个正式名字,叫多模态融合」。
   **顺序不能反**:先给名字,后半句听众就自动关闭了。
3. **每场「必须保留的术语」上限 3 个**,且每个在首次出现时用**同一句话**定义,
   后面全部复用这句话——不要换个说法再解释一遍,听众会以为你在讲第二个东西。

#### 2.2 加类比

**选取原则(五条)**:

1. 类比要来自**听众的生活圈**,不是讲者的生活圈。给中学生讲,不要用「科研经费」「评审周期」做类比。
2. 类比要能**继续往下推**:听众能在心里多走一步,而不是死板的一对一对应。
3. **一个类比只映射一个机制**。想一箭三雕,结果往往是三处都错。
4. **一句话说得完**。说不完的类比,听众记不住,也复述不出来。
5. 有数量的概念优先用**可数、可量**的类比(班级、球场、水池、钱包、公交班次)。

**类比的边界(必写,否则传递错误认知)**——这是本技能最容易失手的地方:

| 常见类比 | 它成立的部分 | **在哪里失效(必须讲出来)** |
|---|---|---|
| 「模型就像人脑」 | 都能从例子里学规律 | 人脑会用常识推理、会追问为什么;模型只是统计上的输入输出对应,**不会「理解」** |
| 「AI 预测就像天气预报」 | 都基于历史数据给出概率 | 天气受物理规律约束;客流受人的决策影响,**人的行为会因为预测本身而改变**(票价调整、新线开通后模型失效) |
| 「数据是新时代的石油」 | 都是可开发的资源 | 数据可以复制、可以多人同时使用、用掉不会变少;石油会用完 |
| 「算法是个黑箱」 | 复杂模型难以逐条解释 | **不等于无法被检验**——可以用没见过的数据测它对不对 |
| 「相当于 12 个足球场大」 | 面积可换算 | 足球场大小并不统一,必须说清「按 105×68 米的标准比赛场地估算」 |

**铁律**:每个类比后面**必须跟一句「这个类比在哪里不成立」**。
这句话在 PPT 上可以不写(会挤占版面),但**讲稿备注里必须有**,讲的时候要真的说出来。
不说是拿准确性换趣味——这正是本技能的红线一。

#### 2.3 控制信息密度

- **一页一个观点**,且标题本身就是那个观点(**断言式标题**,不是名词短语):
  「客流预测的三个难点」 → 改「难的不是算,是人会变」
- **每页可见正文 ≤ 30 个汉字**(含标题),配 1 张图。
- 一页最多 **1 个数字**,其余数字全部下沉到讲稿里口头说。
- 取舍检验:逐页问「删掉这一页,听众还能不能听懂下一页」。能删就删。
- **本节数字由阶段三的密度门实测把关**,不靠目测。

#### 2.4 叙事结构:从问题开始,不是从方法开始

**科普叙事弧:钩子 → 冲突 → 探索 → 揭示 → 回响**

| 段 | 占比 | 作用 | 必须回答 | 示例(客流预测) |
|---|---|---|---|---|
| **钩子** | 前 5% | 从听众自己的经验切入,让他想听下去 | 为什么这跟我有关? | 「你早上挤的那趟车,为什么有时候挤、有时候空?」 |
| **冲突** | 10–15% | 制造悬念:现有做法不够用 | 那问题在哪? | 「按上周同一天排班,为什么一放假就全乱了?」 |
| **探索** | 40–50% | 带听众走一遍「我们怎么试的」,**允许讲一次失败** | 我们是怎么找答案的? | 「先只看昨天——不准;再加天气——好一点;再加上周边有没有演唱会——明显变准」 |
| **揭示** | 15–20% | 给出那**一个**核心结论,一句话说完 | 结论是什么? | 「多种信息合起来看,才能提前算出明天早高峰」 |
| **回响** | 最后 5–10% | 拉回听众生活,给一个能带走的东西 | 我该怎么用? | 「下次你发现车变密了,可能就是这个模型算出来的」 |

> **铁律:不要从方法开始。**
> 听众对「我们用了什么方法」的兴趣,只在「有一个问题悬着」的时候才产生。
> 学术汇报可以是「背景 → 方法 → 实验 → 结论」;科普必须先抛问题,方法只在「探索」段里
> 作为**尝试**出现,而且要允许讲失败的那一次——失败比成功更能让人记住过程。

#### 2.5 数字的处理

- **大数字 → 可视化类比 + 估算标注**:
  「3 万人次」 → 「相当于 750 个 40 人的班级同时进站(**按每小时约 3 万人次估算**)」
- 三条规则:
  1. 一页最多 1 个数字(可见正文);其余数字移到讲稿,口头说。
  2. 给数字必须同时给**参照物**和**这是估算的标记**:PPT 上写「≈ / 约 / 按…估算」,
     讲的时候嘴上说「大概」。
  3. **不用「提升 300%」这类表述**——听众会算错基数。改用「从 X 变成 Y」。
- 参照物备选库:一个班约 40 人 / 一节地铁车厢约 200 人(**需教师按实际车型确认**)/
  一个标准足球场 105×68 m ≈ 7140 m² / 一个标准泳池 50×25 m / 一分钟心跳约 70 次。
  ⚠ **这些参照值本身要核对再写进讲稿**,不要当常识用(`CONVENTIONS.md` §3 不虚构)。
  拿不准的写 `【待补:参照物需核对】`。

### 阶段三 · 科普版 PPT 生成(与学术汇报严格区分)

- **输入**:`受众分析卡.md` + `叙事重构表.md` + 教师材料里的图
- **动作**:按下面的风格对照表写 `科普_spec.json`,用 `pptx_kit.py build` 生成;跑密度门
- **输出**:`科普讲座.pptx`
- **退出条件**:`inspect` 报出**超密度页 0 个、缺讲稿页 0 个**(本阶段先只查密度,讲稿在阶段四补全后再复查一次)

#### 3.1 风格对照表(学术汇报 vs 科普讲座)

| 维度 | 学术汇报 | **科普讲座** |
|---|---|---|
| 单页可见正文 | 80–220 字符 | **≤ 30 个汉字**(含标题) |
| 每页要点数 | 4–7 条 | **1–3 条** |
| 每条要点字数 | 15–30 字 | **≤ 12 字** |
| 字号下限 | 正文 18pt | 正文 18pt 起(靠**减字**变相放大,见 3.3) |
| 术语 | 直接使用 | **每场 ≤ 3 个**,首次出现必须「先类比后定义」 |
| 标题写法 | 名词短语(「研究方法」) | **断言句**(「难的不是算,是人会变」) |
| 图 | 原始结果图:多子图、带图例、坐标轴密集 | **一页一图**,重画为「只讲一条信息」的图;删次要曲线;关键标注放大 |
| 配色 | 低饱和、投影不刺眼(office-layer 默认 `#1F2D3D` / `#333333` / `#0B5C8A`) | **强对比**:深底浅字或浅底深字;强调色 ≤ 2 种;沿用 `slides-polish` 纪律——**不臆造第四个品牌色** |
| 动画 | 通常无,或仅逐条出现 | **服务于理解**:让听众先看到问题、再看到答案(配图分两步出现) |
| 讲稿备注 | 可选 / 只写要点提示 | **必填**:逐段口语讲稿 + 互动点标记 + 类比边界 |
| 页数 | 结论密集,页数少 | 时长(分钟)× 1.0 ~ 1.2(40 分钟 → 40–48 页,含过渡页与互动页) |

#### 3.2 诚实说明:`pptx_kit.py` 的「大字」怎么实现

`skills/office-layer/scripts/pptx_kit.py` 的 `build` **目前不提供字号参数**:
封面主标题 40pt、副标题 20pt、署名 16pt;内容页标题 28pt、一级要点 18pt、二级要点 15pt;
表格表头 14pt、表体 13pt。**不要改脚本去调字号**(那会破坏全包的统一产出通道)。

科普版的「大字」靠三件事实现,全部在 spec 层面完成:

1. **减少每页要点数**(1–3 条)——同样 18pt,字少了视觉上就大。
2. **每页配图**:`pptx_kit` 检测到 `image` 时,正文文本框宽度自动从 11.6" 收到 7.4"
   (图片固定放在左侧 8.5"、宽 4.0"),文字区域更窄、每行字更少、观感更大。
3. **把展开内容全部下沉到 `notes`**:`inspect` 只统计幻灯片**可见正文**,
   讲稿备注不计入密度——所以「字少」和「讲得细」可以同时成立。

#### 3.3 JSON 规格差异(两份 spec 对照)

**学术汇报 spec(反面示范,不要用于科普)**:

```json
{"meta": {"title": "城市轨道交通客流预测研究", "subtitle": "基于多模态数据融合的方法", "presenter": "报告人"},
 "slides": [
   {"title": "研究方法与技术路线",
    "bullets": [
      {"text": "采用多模态数据融合框架,整合刷卡、气象与事件数据", "level": 0},
      {"text": "构建时空图神经网络,捕捉站点间动态关联", "level": 0},
      {"text": "使用 MAPE 与 RMSE 作为评价指标", "level": 0},
      {"text": "与 LSTM、ARIMA 等基线模型对比,取得显著提升", "level": 0}],
    "table": {"header": ["模型", "MAPE"], "rows": [["LSTM", "12.4"], ["本文方法", "9.1"]]},
    "notes": ""}]}
```

→ 单页可见正文 **112 字符(实测)**、4 条要点、全是术语、**没有讲稿**。
用 3.4 的密度门检查这份 spec,输出是 `超密度页 [(2, 112)]`、`缺讲稿页 [2]`、`结论: 需修改`。
放进科普现场,听众在第 3 秒就放弃。

**科普版 spec(推荐)**:

```json
{"meta": {"title": "地铁为什么越来越挤?", "subtitle": "从一个客流预测模型说起",
          "presenter": "【待补:姓名】 · 【待补:单位】"},
 "slides": [
   {"title": "早上八点,站台上的人从哪来?",
    "bullets": [{"text": "一句话:客流可以被提前算出来", "level": 0}],
    "image": "/abs/path/hook.png",
    "notes": "【0:00-0:40 钩子】先不介绍自己。直接问:今天早上挤过地铁的举个手。\n【过渡】他们怎么知道明天要开几趟车?"},
   {"title": "难的不是算,是人会变",
    "bullets": [
      {"text": "照搬上周同一天 → 一放假就乱", "level": 0},
      {"text": "同时看天气、假期、周边活动 → 准多了", "level": 0}],
    "table": {"header": ["做法", "结果"], "rows": [["只看昨天", "误差大(数字待教师确认)"], ["同时看多种信息", "误差变小"]]},
    "notes": "【3:30 猜数字】先给范围:你们猜误差是 5% 还是 30%?数到三一起喊。\n【类比边界】这个类比在票价调整或新线开通后就不成立了,因为人的行为变了。\n【估算说明】这是估算值,真实值请以我们论文表 2 为准。"}]}
```

→ **实测**:3 页分别是 40 / 31 / 59 字符,密度门输出 `超密度页 无`、`缺讲稿页 无`、`结论: 密度门通过`。
每页 1–2 条要点、每页配图、备注写满口语讲稿。

> ⚠ **一个实测发现的盲点**:`inspect` 的 `chars` 对表格只计一个占位符(如 `[表格 3x2]`),
> **表格里的字不算进去**。所以第 3 页报 59 字符,实际阅读量更高。
> **带表格的页要额外人工看一眼**,不要把 `inspect` 通过当成这页一定清爽。

#### 3.4 生成与密度门(命令已实测)

工作目录固定为技能包根目录,venv 与脚本路径按 `CONVENTIONS.md` §2:

```bash
cd /Users/mingo/Documents/kimi/Workspaces/skills
PY="skills/office-layer/.venv/bin/python"

# 1) 生成
$PY skills/office-layer/scripts/pptx_kit.py build --spec 科普_spec.json --out 科普讲座.pptx
```

`build` 会顺手打印一份 `inspect` 结果。注意它自带的 `overdense` 阈值是 **220 字符**——
那是**学术汇报**的阈值,对科普来说太松,不能拿来当科普的密度门。
科普版自设阈值 **90 字符(含标题)**,并用下面这段门(实测正常退出):

```bash
$PY skills/office-layer/scripts/pptx_kit.py inspect --in 科普讲座.pptx | $PY -c "
import json,sys
d=json.load(sys.stdin)
bad=[(s['n'],s['chars']) for s in d['detail'] if s['chars']>90]
no_notes=[s['n'] for s in d['detail'] if s['n']>1 and not s['has_notes']]
print('总页数',d['slides']); print('超密度页',bad or '无'); print('缺讲稿页',no_notes or '无')
print('结论:', '密度门通过' if not bad and not no_notes else '需修改')
"
```

输出样例(实测):

```
总页数 3
超密度页 无
缺讲稿页 无
结论: 密度门通过
```

**图片**:`image` 必须是**绝对路径**,且来源可追溯(见红线五)。
`pptx_kit` 固定把图放在左侧 8.5"、宽 4.0",所以图要**竖构图或近方形**,
横长条图会被压得很小——这种图请先用 `slides-polish` 的 HTML/SVG 管线重画。

### 阶段四 · 讲稿与互动设计

- **输入**:`科普讲座.pptx` + 叙事弧分段表 + 受众分层表
- **动作**:按叙事弧写逐段口语讲稿 → 每 5–8 分钟插一个互动点 → 用 `pptx_kit.py notes` 批量写入
- **输出**:`讲稿_notes.json` + `科普讲座_含讲稿.pptx`
- **退出条件**:`inspect` 复查后**缺讲稿页 0 个**,且互动点数量 ≥ 时长(分钟) ÷ 8

#### 4.1 节奏:每 5–8 分钟一个互动点

注意力会周期性下滑,**每 5–8 分钟必须给一次参与机会**。40 分钟讲座 ≥ 5 个互动点。
在注意写稿时用固定标记,便于检索与复核:

| 标记 | 用途 |
|---|---|
| `【0:00-0:40 钩子】` | 段落时间轴,听众与讲者都对得上进度 |
| `【3:30 猜数字】` | 互动点,写明形式与预判反应 |
| `【类比边界】` | **必须口播的那句「这个类比在哪里不成立」** |
| `【估算说明】` | 数字的估算属性 |
| `【待教师确认】` | 涉及个人成果可公开性、评价性表述 |

#### 4.2 互动形式

| 形式 | 时长 | 适用受众 | 具体做法 | 风险与规避 |
|---|---|---|---|---|
| **举手提问** | 30–60 秒 | 全部,尤其中小学生 | 「今早挤过地铁的举手」——先做身体参与,再做认知参与 | 问题太易没劲、太难没人举;**先在教师熟悉的班里试一次** |
| **猜数字** | 1–2 分钟 | 高中生以上、公众 | **先给范围**(「你们猜误差是 5% 还是 30%?」),让大家喊,再揭晓 | 不给范围就无人应答;揭晓前不要点评谁对 |
| **现场小实验** | 3–5 分钟 | 中小学生、高中生、开放日 | 请 3 位同学上台,分别按「只看昨天 / 加天气 / 加活动」三种规则预测食堂排队 | 需要场地与时间,务必预留;**直播或线上时改为主持人演示**,不要冒险 |
| **情景假设** | 1–2 分钟 | 大学非本专业、企业、政府 | 「如果明早临时加开 3 趟车,你觉得客流会怎么变?」引导他们自己发现「人的行为会变」 | 不要设唯一标准答案,答错会让人尴尬 |
| **快速投票** | 1 分钟 | 大场地 / 直播 | 举手表决或手机投票,现场给结果 | 场地小、人少时无意义,改用举手 |

#### 4.3 提问设计:避免无效问题

| ❌ 无效问法 | 为什么无效 | ✅ 改成 |
|---|---|---|
| 「大家都听懂了吗?」 | 礼貌性点头,没人会说不懂,得零信息 | 「谁能用一句话说说,我刚说的那个模型靠什么算出来的?」 |
| 「有没有问题?」 | 把提问成本全推给听众(怕显得笨) | 「大多数人对第 2 步有疑问,我先把第 2 步说清楚」 |
| 「这个公式懂吧?」 | 逼听众承认无知 | 「这个式子不用记,你只要记住它算的是『明天有多少人』」 |
| 「是不是很厉害?」 | 逼听众恭维 | 「你觉得这个方法什么时候会失灵?」 |
| 「大家说对不对?」 | 无信息量的集体应答 | 「选 A 的举手……选 B 的举手」 |

**判断标准**:一个提问如果**不可能得到「不知道」以外的负面信息**,它就是无效提问。

#### 4.4 用 `pptx_kit.py notes` 写讲稿备注

`notes` 的 JSON 格式是 `{页码(1-based): "文本"}`,文本里用 `\n` 换行。
`build` 时也可以在每页 spec 里直接写 `notes`;**改稿阶段用 `notes` 命令批量覆盖更省事**:

```bash
PY="skills/office-layer/.venv/bin/python"
$PY skills/office-layer/scripts/pptx_kit.py notes \
    --in 科普讲座.pptx --notes 讲稿_notes.json --out 科普讲座_含讲稿.pptx
```

实测返回:

```json
{"written": [1, 3], "total_slides": 3}
```

`written` 里没出现的页码就是**没写进去的**,要回去核对 JSON 的键(键必须是页码数字字符串)。

**单页讲稿的模板**(照抄即可):

```
【0:00-0:40 钩子】
(能照着念的口语原文)今天早上挤过地铁的同学举个手。好,把手放下。

【互动】猜数字:你们觉得误差是 5% 还是 30%?我数三下一起喊。
【类比边界】这个类比在票价调整、新线开通之后就不成立了,因为人的行为会变。
【估算说明】这个数是按每小时约 3 万人次估算的,真实值以运营方数据为准。
【待教师确认】此处涉及我论文中的结果,是否可公开请确认。
```

**讲稿要写成「能照着念的口语」,不是提纲。** 提纲在现场会变成即兴发挥,
而即兴是红线一(准确性)最主要的失守方式。

**时长换算**:中文口语约 **180–220 字/分钟**。
讲稿总字数 ≈ (总时长 − 互动总时长)× 200。
40 分钟讲座含 10 分钟互动 → 30 × 200 ≈ **6000 字**。
(这是经验值,请教师按自己的语速校准一次,之后可长期沿用。)

### 阶段五 · 双自检与交付

- **输入**:`科普讲座_含讲稿.pptx` + `叙事重构表.md`
- **动作**:跑准确性自检清单 → 跑视觉自检 → 生成交付说明
- **输出**:`自检报告.md`、`讲稿全文.docx`(可选)、`图源表.md`
- **退出条件**:准确性自检**逐条有结论**(不能有空项),密度门与缺讲稿门全过

#### 5.1 科学准确性自检(逐条,不留空)

- [ ] 每个类比是否都写了「在哪里失效」,且在讲稿里**真的会说出口**
- [ ] 每个保留术语是否首次出现就「先类比后定义」,且全场 ≤ 3 个
- [ ] 每个数字是否有出处(教师材料),是否在 PPT 上标了「≈ / 约 / 按…估算」
- [ ] 有没有「有望 / 或将 / 突破性 / 首次 / 国际领先 / 彻底解决」这类前景拔高词
- [ ] 有没有出现未发表数据、未公开项目编号、合作方名称
- [ ] 面向未成年人:是否做过适龄审查
- [ ] 每张图的来源是否可追溯(见 5.3)

#### 5.2 视觉自检

视觉管线走 `skills/slides-polish/` 的 HTML/SVG → headless Chrome → PNG(本机已确认装 Chrome):

```bash
CHROME="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
mkdir -p /tmp/chrome-prof
"$CHROME" --headless=new --disable-gpu --no-sandbox --hide-scrollbars \
  --user-data-dir=/tmp/chrome-prof --virtual-time-budget=3000 \
  --screenshot=/tmp/slide_03.png --window-size=2200,1000 file:///tmp/slide_03.html
sips -Z 1400 /tmp/slide_03.png --out /tmp/preview_03.png
pkill -f chrome-prof          # 收尾,见下方实测提醒
```

**实测提醒(三条,都是踩过的坑)**:

1. **必须给 `--user-data-dir`**,否则 Chrome 报
   `Failed to create a unique user data directory for headless` 并且**不出图**。
2. 图写盘后 **Chrome 进程可能不退出**(本机 macOS headless 的已知行为),
   命令会一直挂着。用 `pkill -f chrome-prof` 收尾,或放到后台任务里跑。
3. 本机**没有 Keynote,也没有 `soffice` / `pdftoppm`**,所以 `slides-polish` 里那条
   Keynote AppleScript 导出 PNG 的命令**在本机不可用**。
   **最终 `.pptx` 的渲染效果请教师在 PowerPoint / WPS 里打开确认**——
   不要因为浏览器预览好看就宣布成品没问题(`slides-polish` 明确说过:
   「浏览器预览会谎报字号、密度和垂直居中」)。

看 PNG 时用 `read_image` 逐张过:内容漂移、字号可读性、空白死区、
配色纪律(**不臆造第四个颜色**)、每页是否只讲一件事。

> ⚠ **如果当前模型不支持图像输入,不要声称自己看过图。**
> 直接把 PNG 路径列给教师,写明「以下 N 张待您过目」,这是诚实做法,
> 也是本包「不虚构」纪律的一部分。

#### 5.3 图片版权:建一张图源表

交付物里的每一张图都要在图源表里有一行:

| 文件名 | 来源类型 | 出处 | 授权 / 许可 | 可否公开 |
|---|---|---|---|---|
| hook.png | 自绘 | 本次讲座原创 | 本包生成,无限制 | 是 |
| fig_flow.png | 论文图 | 教师 20XX 年论文图 3 | **【待教师确认:期刊版权归属】** | 待确认 |

**只能用四类图**:① 自己 / 课题组绘制;② 自己论文中的图(**期刊版权归属需教师确认**);
③ 明确 CC 授权并按要求署名;④ 已获作者书面授权。
**禁止**:搜索引擎截图、无出处网图、素材站带水印预览图、他人论文里的图(改了颜色也不行)。

#### 5.4 讲稿全文(可选)

教师需要打印或提词时,走 `docx_kit`:

```bash
$PY skills/office-layer/scripts/docx_kit.py md --in 讲稿.md --out 讲稿全文.docx
$PY skills/office-layer/scripts/docx_kit.py inspect --in 讲稿全文.docx   # 自检
```

## 产出物

| 文件 | 内容 | 生成方式 |
|---|---|---|
| `受众分析卡.md` | 受众分层结论、概念预算、深度止点、一句话核心结论 | 阶段一 |
| `叙事重构表.md` | 术语替换表、类比表(**含边界列**)、数字参照物表、叙事弧分段表 | 阶段二 |
| `科普讲座.pptx` | 科普版幻灯片,每页含演讲者备注 | `pptx_kit.py build` |
| `讲稿_notes.json` | 备注原文,便于单独改稿与跨场复用 | 阶段四 |
| `科普讲座_含讲稿.pptx` | 备注批量写入后的成稿 | `pptx_kit.py notes` |
| `自检报告.md` | 准确性自检逐条结论 + 密度门实测输出 + 待确认清单 | 阶段五 |
| `图源表.md` | 每张图的来源与授权状态 | 阶段五 |
| `讲稿全文.docx`(可选) | 打印 / 提词版 | `docx_kit.py md` |

## 红线

1. **科学准确性不能让位于趣味性。**
   简化可以,扭曲不行。允许「暂时不说」(先讲 A,B 以后再说,并让听众知道还有 B),
   **不允许「说错」**。每一处简化都要在讲稿备注里标一句
   「此处为简化,完整表述为…」。类比必须带边界说明——**省掉边界那句,就是拿准确性换趣味**。
2. **不夸大研究成果的应用前景。** 按下表替换:

   | ❌ 不写 | ✅ 改成 |
   |---|---|
   | 有望治疗癌症 | 目前只在细胞实验 / 动物模型中观察到…,距离临床应用还有多个阶段(**具体进度据教师材料写**) |
   | 即将产业化 | 实验室阶段,尚未做中试 |
   | 突破性进展 | 在这一个指标上比已有方法更好(数字来自教师材料) |
   | 国际领先 | **删**;是否保留由教师依查新 / 评审依据判断,留 `【待教师确认:是否有依据】` |
   | 万能 / 彻底解决 | 在……条件下有效;条件变化后需要重新训练 |
   | 首次提出 | 删,或留 `【待教师确认:是否有查新依据】` |

3. **不涉及未发表数据与保密内容。**
   intake 第 5 项必问;涉密与横向委托项目**不要做成 PPT**,只讲已公开发表的部分。
   横向项目数据未经委托方书面同意不得引用,交付物中一律占位 `【待补:是否可公开】`。
   不确定时按最严处理,并在交付说明第一行注明。
4. **面向未成年人时内容要适龄。**
   面向未成年人的 PPT 不出现:真实伤亡案例细节、恐怖或不适图像、
   超出年龄段的医学 / 性教育内容(确需讲要先与校方、家长沟通)、
   任何形式的商业推广与招生宣传。涉及未成年人自身数据的研究结论,
   不得展示可识别到个体的信息。建议场次有教师 / 家长在场。
5. **图片版权:不得随意使用网络图片。** 只用 5.3 节的四类图,并保留图源表。
   拿不准的一律留 `【待补:图片来源】`,不要先放上去再说。
6. **不虚构。** 数据、文献、政策条文一律来自教师材料;
   缺失留 `【待补:…】`,绝不编排。**不引具体政策条款号**,
   只写「按学校 / 学院相关规定」并提示教师核对(`CONVENTIONS.md` §3)。
7. **留人工确认位。** 科学结论、成果可公开性、「首次 / 领先」类表述、
   涉及评价的措辞,一律留 `【待教师确认:…】`。**AI 只出草稿**。
8. **不替教师做价值判断。** 涉及政策评价、机构比较、行业褒贬的内容,
   只描述事实,不替教师表态。

## 自检清单

- [ ] intake 八问是否**一次问完**;未答项是否用了安全默认值**并在交付物里标注**
- [ ] 受众是否明确到**一个具体人群**(不是「大众」「市民」)
- [ ] 概念数是否符合 `时长 ÷ 8`;是否只有 1 个核心概念
- [ ] 「复述检验」是否通过:能写出听众会带走的那一句话
- [ ] `description` 的触发短语是否覆盖教师真实说法(本文件已含 10 句)
- [ ] 引用的 底座路径是否都用 `ls` 验证过
- [ ] 每页可见正文 ≤ 90 字符、要点 1–3 条(**`inspect` 实测,不是目测**;表格页需人工再看,见 3.3)
- [ ] 每页是否都有讲稿备注(`inspect` 的 `has_notes` 全为 true)
- [ ] 互动点数量是否 ≥ `时长 ÷ 8`,形式是否适配场地与受众
- [ ] 每个类比是否写了**边界**并在讲稿里会真的说出口
- [ ] 每个保留术语首次出现是否「先类比后定义」,全场 ≤ 3 个
- [ ] 每个数字是否有出处 + 估算标记(`≈ / 约 / 按…估算`)
- [ ] 「有望 / 即将 / 突破性 / 首次 / 国际领先」是否已清除或改为待确认
- [ ] 保密限制是否确认;未发表数据与涉密内容是否已排除
- [ ] 未成年人场次是否做过适龄审查
- [ ] 每张图是否在图源表里有可追溯来源
- [ ] 视觉自检是否执行;**无图像能力时是否如实告知教师,而不是声称看过**
- [ ] 所有 `【待教师确认:…】` 是否汇成清单交给教师
- [ ] pptx 是否由 `skills/office-layer/scripts/pptx_kit.py` 生成,`build / notes / inspect` 是否都跑过
- [ ] 交付说明是否写明「**这是初稿**,请重点核对科学表述、数字出处与图片来源」

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.