Back to skills
SKILL.md
Science Outreach
ASecurityTriggers: 做个科普 PPT、给中学生讲我的研究、科普讲座怎么准备、把研究讲给外行听、公众开放日讲什么、给政府汇报我的成果、去企业宣讲我的技术、科技周/科普日活动、给小孩讲我的专业、开放的实验室怎么介绍。高校教师科普讲座与对外宣讲全流程辅助:先做受众分层分析与内容深度定位,再把学术内容做公众版叙事重构(去术语、加类比并标明类比边界、控制信息密度、从问题而非方法开始),产出与学术汇报严格区分的科普版 PPT(大字、少字、多图、每页一个观点),并给出分段讲稿、互动设计与科学准确性自检,守住「科学准确性不能让位于趣味性」的红线。
- 11 stars
- 0 votes
- 1 copy
- 1 view
- Added October 20, 2026
Security analysis
100/100npx -y skills add EtherealMingo/university-teacher-skills --skill science-outreach --agent claude-codeAre you the author of Science Outreach?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/etherealmingo-science-outreach)---
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
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.