Skip to content
Back to skills

Paper To Slides

ASecurity

把一篇 PDF 论文拆解成组会/学术汇报用的 PPT 初稿:解析元信息与章节、识别论文类型、按学术汇报六段结构分配页数、处理图表、批量写演讲者备注。当教师说「把这篇论文做成汇报 PPT」「组会要讲这篇」「论文转 PPT」「学术汇报怎么讲」「帮我把这篇 paper 做成 slides」「下周读书会我讲这篇」时使用。典型场景是文献派工后学生汇报稿的成型、课题组读书会、会议报告准备、答辩前的方法复述。产出是初稿,所有数据与结论必须逐字回核 PDF 原文。 Triggers: 把这篇论文做成汇报 PPT、组会要讲这篇、论文转 PPT、学术汇报怎么讲、文献汇报、读书会 PPT、paper 做成 slides、组会汇报稿、论文解读 PPT、会议报告 PPT、这篇文献让学生讲、把 PDF 做成 slides。

  • 11 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 20, 2026
educationpythongobash

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned October 20, 2026

npx -y skills add EtherealMingo/university-teacher-skills --skill paper-to-slides --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Paper To Slides?

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

Security grade badge for Paper To Slides
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/etherealmingo-paper-to-slides/badge)](https://www.skillsdirectory.com/skills/etherealmingo-paper-to-slides)

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: paper-to-slides
description: "把一篇 PDF 论文拆解成组会/学术汇报用的 PPT 初稿:解析元信息与章节、识别论文类型、按学术汇报六段结构分配页数、处理图表、批量写演讲者备注。当教师说「把这篇论文做成汇报 PPT」「组会要讲这篇」「论文转 PPT」「学术汇报怎么讲」「帮我把这篇 paper 做成 slides」「下周读书会我讲这篇」时使用。典型场景是文献派工后学生汇报稿的成型、课题组读书会、会议报告准备、答辩前的方法复述。产出是初稿,所有数据与结论必须逐字回核 PDF 原文。 Triggers: 把这篇论文做成汇报 PPT、组会要讲这篇、论文转 PPT、学术汇报怎么讲、文献汇报、读书会 PPT、paper 做成 slides、组会汇报稿、论文解读 PPT、会议报告 PPT、这篇文献让学生讲、把 PDF 做成 slides。"
---

# 论文 → 组会 / 学术汇报 PPT

> **Goal**:把一篇别人写的 PDF 论文,变成一份**结构合规、数据可溯源、备注齐全**的学术汇报
> PPT 初稿。AI 负责解析、归类、排页、画图、写备注;**论文里的每一个数字和每一句结论都必须
> 逐字回到 PDF 原文**。这是初稿,讲之前必须自己讲一遍。

## 何时使用

- 「把这篇论文做成汇报 PPT」「论文转 PPT」「paper 做成 slides」
- 「组会要讲这篇」「读书会我讲这篇文献」「这篇文献让学生讲」
- 「学术汇报怎么讲」「会议报告 PPT 怎么排」
- 导师派工学生做文献汇报(承接 `lab-meeting` 的「文献派工」)
- 答辩/中期前需要快速复述自己或他人的方法框架

**不适用**:非学术 PDF(产品说明书、政府报告、合同、财报);教师自己的原创成果宣讲
(那是 `lecture-slides` 或竞赛通道);只想要一页摘要(直接用 `skills/paper-analyst`
的 `quick` 模式,不必出 PPT)。

## 底座(禁止重写)

| 路径 | 用途 | 本机实测状态 |
|---|---|---|
| `skills/paper-analyst/SKILL.md` | **主底座**:五种分析模式、降级输入回退策略 | 已读,模式定义直接复用 |
| `skills/paper-analyst/references/output-schema.md` | 解析结果的字段规范(7 节 + quick 模式) | 已读,字段与缺失标记照用 |
| `skills/paper-analyst/references/paper-type-rubric.md` | 论文类型判定规则(6 类 + 冲突消解) | 已读,类型标签与证据要求照用 |
| `skills/paper-analyst/references/presentation-schema.md` | 幻灯片计划 JSON 结构 + 时长→页数对照 | 已读,`slides.json` 以此为准 |
| `skills/paper-analyst/references/presentation-style-guide.md` | 压缩规则:每页 ≤4 bullets、数字不四舍五入、受众压缩档 | 已读,与 pptx_kit 的 overdense 一起用 |
| `skills/paper-analyst/references/quality-checklist.md` | **反幻觉清单**,交付前逐条过 | 已读,本 skill 红线直接引用 |
| `skills/paper-analyst/references/pptx-handoff.md` | 上游的 handoff 约定(面向自然语言 pptx skill) | 已读;**本包改为走 office-layer 的 JSON 通道**,只保留其「交接前剥掉 `[原文声明]` 标签」「不把备注塞进 PPT 正文」两条纪律 |
| `skills/paper-analyst/scripts/extract_pdf_meta.py` | PDF 元信息 + 扫描版判定 → JSON | **已实测跑通**(依赖 pypdf,venv 内已有) |
| `skills/paper-analyst/scripts/extract_pdf_figures.py` | 逐页导出 PDF 内嵌位图 + `figures/index.json` | **本机不可直接运行**:需 pymupdf,venv 未装且联网安装超时。见阶段一「路径 A/B/C」 |
| `skills/slides-polish/SKILL.md` | 可选视觉打磨:HTML+内联 SVG → headless Chrome → PNG → 嵌回 pptx | 已读;Chrome(`/Applications/Google Chrome.app/...`)与 Keynote AppleScript(实测版本 15.3.1)本机可用 |
| `skills/office-layer/SKILL.md` | **文件产出唯一通道**:pptx_kit build/notes/inspect | 已读,三个子命令均已实测 |
| `skills/empirical-research/lit-review/SKILL.md` | 综述型汇报时:多篇文献管理与综述式 deck 的组织方式 | 已读,仅在综述型论文时按需加载 |
| `skills/empirical-research/econ-audit/SKILL.md` | 实证型论文:识别方法与识别策略的可攻击点,用于生成「可能被追问」 | 已读,用于阶段六备注 |
| `skills/empirical-research/data-dictionary/SKILL.md` | 实证型论文:变量口径与样本说明,用于讲清数据段 | 已读,仅在论文有数据附录时用 |
| `THIRD_PARTY_NOTICES.md` | 上游溯源与许可证合规 | 已读 |

**环境**(每个命令块都用这个绝对路径,避免 cwd 不同导致找不到 venv):

```bash
SKILLS="/Users/mingo/Documents/kimi/Workspaces/skills"
PY="$SKILLS/skills/office-layer/.venv/bin/python"
ANALYST="$SKILLS/skills/paper-analyst"
KIT="$SKILLS/skills/office-layer/scripts/pptx_kit.py"
mkdir -p /tmp/mplcache && export MPLCONFIGDIR=/tmp/mplcache   # 受限环境下 matplotlib 必需
```

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

按 `CONVENTIONS.md` §4,把下面这些**合并成一次提问**,不要边做边问:

1. **论文文件**(PDF 路径;有几篇)
2. **场合与时长**:组会读书报告 / 开题前的文献汇报 / 会议分会场 / 课堂文献导读;
   讲多长时间(10 / 20 / 30 分钟)
3. **听众层次**:本课题组(同行,可上公式)/ 跨方向听众(要讲直觉)/ 本科生(只讲结论与意义)
4. **汇报人**:教师本人讲,还是学生讲(决定备注的详细程度)
5. **要点侧重**:导师指定的重点(方法 / 结果 / 复现实验设计)
6. **是否有模板**:实验室统一 PPT 模板、学校模板(有则套用配色与版式)
7. **是否需要重绘图表**:论文图是否能直接截取(版权与清晰度约束见阶段四)

**信息不全时用安全默认值继续**,并在交付说明里写清用了哪些默认值:

| 未知项 | 安全默认值 |
|---|---|
| 时长 | 20 分钟(对应 9–10 页正文) |
| 听众 | 本课题组(`audience: lab`,可上关键公式) |
| 汇报人 | 学生(备注写到"照着念"的细度) |
| 模板 | 无模板,用 office-layer 默认 16:9 版式 |
| 侧重 | 按论文类型自动分配(见阶段二) |

**缺什么也不能缺 PDF**。没有 PDF 就不要往下走 —— 论文内容一律不得凭记忆或从网上"回忆"补全。

## 工作流

### 阶段一 · PDF 解析与质量判级

**输入**:PDF 文件路径
**动作**:取元信息 → 逐页取正文 → 判定质量等级 → 提取图表
**输出**:`论文解析.md`(含质量判级 Header)+ `figures/` + `figures/index.json`
**退出条件**:元信息表 7 个字段全部有值(真值或显式 `[未明确给出]`),且质量等级已写入 Header

**1)元信息与扫描版判定**(实测可用)

```bash
$PY "$ANALYST/scripts/extract_pdf_meta.py" 论文.pdf
```

输出 JSON:`title / authors / subject / keywords / creator / pages / text_extractable / is_scanned`。

> **实测提醒(重要)**:这个脚本**只读 PDF 内嵌的元数据字典**(`/Title` `/Author`…),
> **不解析首页正文**。实测一个首页明明印着标题和作者的 PDF,它也返回
> `"title": null, "authors": null`。所以 **`null` ≠ 论文没有标题**,必须另取首页文本人工抄录,
> 并按 `output-schema.md` 记录来源(标 `[原文声明]` + 页码)。
> 另外 `is_scanned` 的判据是"前 3 页可抽取文本 < 100 字符",页眉页脚凑够 100 字就可能误判为
> 非扫描版 —— 判级要人工看一眼首页,不要只信这个布尔值。

**2)逐页取正文,人工核对章节边界**

```bash
$PY - <<'EOF'
from pypdf import PdfReader
r = PdfReader("论文.pdf")
for i, p in enumerate(r.pages, 1):
    t = (p.extract_text() or "").strip()
    print(f"\n===== p{i} ({len(t)} chars) =====")
    print(t[:1500])
EOF
```

> **实测的双栏陷阱**:pypdf 的 `extract_text()` 不识别分栏。用一个双栏样例测试,输出是
> `LEFT-0 … RIGHT-0 …` / `LEFT-1 … RIGHT-1 …` —— 左右两栏被**逐行交错**拼接,
> 直接当正文读会串行、句子在中间被截断。
> 因此:抽出的文本若出现"一句话读到一半接上另一栏内容",**立即判为降级处理**,
> 改用按页高分辨率渲染 + 人工分栏阅读,并把章节边界交教师确认,不要猜。

**3)图表提取 —— 三条路径**

```bash
# 路径 A(paper-analyst 自带脚本,需要 pymupdf)
$PY -m pip install pymupdf        # 本机实测:联网安装超时未完成,缺这一步会直接报错
$PY "$ANALYST/scripts/extract_pdf_figures.py" 论文.pdf
```

实测状态:本机 office-layer venv **未装 pymupdf**,直接调用在 `import fitz` 处
`ModuleNotFoundError`、退出码 1。该脚本只做一件事 —— 把 PDF 里**内嵌的栅格图片对象**
逐页导出为 `figures/fig_p{页码}_{序号}.png` 并写 `figures/index.json`(字段 `name/path/page`)。
**矢量图(多数折线图、散点图、架构图)不是图片对象,导不出来**,必须走路径 B。

```bash
# 路径 B(本机已验证,无需额外依赖)——渲染整页再精确裁切
mkdir -p pages figures
# B1 先按页拆 PDF。sips 对多页 PDF 只输出第一页(实测确认),所以必须先拆
$PY - <<'EOF'
from pypdf import PdfReader, PdfWriter
r = PdfReader("论文.pdf")
for i, p in enumerate(r.pages, 1):
    w = PdfWriter(); w.add_page(p)
    with open(f"pages/p{i}.pdf", "wb") as f:
        w.write(f)
EOF
# B2 每页渲染成高清 PNG(--resampleWidth 2550 ≈ A4 300dpi,实测输出 2550×3300)
for f in pages/p*.pdf; do
  sips -s format png --resampleWidth 2550 "$f" --out "pages/$(basename "$f" .pdf).png" >/dev/null
done
# B3 精确裁切图区。PIL 裁切是像素级精确的
$PY - <<'EOF'
from PIL import Image
im = Image.open("pages/p3.png")
print("整页尺寸:", im.size)
im.crop((180, 260, 2380, 1500)).save("figures/fig3_architecture.png")  # (左, 上, 右, 下)
EOF
```

> **别用 `sips --cropOffset`**:实测语义不可靠(对左上角已知黑块的测试图,`Y=0 X=0` 却裁出全白)。
> 要精确定位就用 `sips` 只负责"渲染整页",`PIL.crop` 只负责"裁切"。
> 裁切坐标怎么定:按"目测比例 × 整页像素"给初值,输出后**必须由教师肉眼确认**再进 PPT
> —— 本机当前模型不支持读图(`read_image` 会报 model does not declare image input),
> AI 无法自验裁切结果,这一条是硬约束。

```bash
# 路径 C(内嵌栅格图:电镜照片、软件截图、地图)
$PY - <<'EOF'
from pypdf import PdfReader
r = PdfReader("论文.pdf")
for i, p in enumerate(r.pages, 1):
    for j, im in enumerate(p.images, 1):
        open(f"figures/embedded_p{i}_{j}_{im.name}", "wb").write(im.data)
        print("page", i, im.name, len(im.data), "bytes")
EOF
```

实测:对含位图的 PDF 能正确导出(抽出一张 440×441 的 PNG);对纯矢量 PDF 返回 0 张 ——
**这是正常现象,不是脚本坏了**。

**4)PDF 提取的常见失败与应对**

| 现象 | 原因 | 应对 |
|---|---|---|
| `extract_pdf_meta.py` 返回 `title/authors` 全 null | PDF 元数据字典为空(LaTeX 默认常不写 `/Title`),脚本不解析首页正文 | 不算失败。另取首页文本人工抄录题名/作者/期刊/年份,标 `[原文声明]` + 页码 |
| `text_extractable: false` / `is_scanned: true` | 扫描版没有文字层 | 判**严重降级**:不许 OCR 猜内容。请教师换带文字层的版本(出版社官网 / arXiv 版 / 图书馆数据库版),或先用系统预览或 OCR 工具出文字层再回来。本机无 `tesseract`、`ocrmypdf`、`pdfimages`、`pdftoppm`(实测均不存在),`qlmanage` 在沙箱下报 `sandbox initialization failed`,这些路都不可依赖 |
| 正文左右栏交错、句子中途截断 | 双栏排版(实测已复现) | 判**降级处理**;按页渲染后人工分栏阅读;章节边界交教师确认 |
| 公式变成乱码 / 整段缺失 | pypdf 还原不了数学排版(公式是特殊字体 + 符号定位) | 公式不靠文本层:从渲染页裁切公式图,或按原样重排。**绝不凭记忆重写公式** |
| 表格文字粘连成一串 | 表格无文字层或跨单元格合并 | 数据以渲染图裁切为准;每个数值填入 PPT 前与图逐字核对 |
| `figures/` 导出 0 张 | PDF 全是矢量图,没有内嵌位图对象 | 走路径 B 渲染裁切 |
| 页眉、页脚、行号、投稿日期混进正文 | 抽取不过滤版面元素 | 当噪音剔除,不得当章节内容 |
| 参考文献串进正文 | 抽取按坐标流式输出 | 按 `References` / `Bibliography` 关键词定位截断 |

**降级协议**(照 `quality-checklist.md`):
Header 行必须写 `PDF 质量:[良好 | 降级处理-具体原因 | 严重降级-具体原因]`;
不可读的段落写 `[该部分文本不可读,已跳过]`;**不得为填满页面而脑补**。

### 阶段二 · 论文类型识别与讲述重点

**输入**:`论文解析.md`
**动作**:读 `paper-type-rubric.md` 判类型 → 输出类型标签 + 2–3 条证据 → 定讲述重点
**输出**:类型结论 + 讲述重点清单(写进 `论文解析.md` 顶部)
**退出条件**:类型标签写明、证据引用到论文具体位置(摘要原话 / 章节 / 图表)

先读 `skills/paper-analyst/references/paper-type-rubric.md` 判类型,
**不要默认这是 AI 论文**。该 rubric 的实验口径是 6 类:AI/深度学习、传统算法/理论、
系统/工程、实验/实证、综述/Survey、其他/跨学科;教师日常说的"综述型/方法创新型/实证型/
理论型/案例型"是另一套口径,按下表映射,**映射关系要写进交付说明**(口径不同,别混着说):

| 教师口径 | 映射到 rubric | 该讲什么 | 可略过什么 |
|---|---|---|---|
| **综述型** | 综述/Survey(标题含 survey/review/综述,系统梳理 20+ 篇,无原创实验) | 检索范围与纳入排除标准;分类框架(这是全文骨架);各大类的代表工作与演进脉络;作者指出的**开放问题**;对领域的判断 | 单篇工作的实现细节;单个数据集的具体数字;公式推导 |
| **方法创新型** | AI/深度学习 或 传统算法/理论 或 系统/工程(按方法载体归入其一) | 问题定义与输入输出;**与最接近工作的差异点**;方法框图(必须有一页讲清数据流);关键模块为什么这样设计;消融实验证明每个模块的必要性 | 教科书级的背景铺垫;基线的实现细节;与本文创新无关的工程 trick |
| **实证型** | 实验/实证(有人类被试/调查/统计检验/p 值/置信区间/伦理审批) | 研究假设;样本与数据来源、时间跨度;变量定义与度量口径;识别策略 / 计量模型;**因果还是相关**;稳健性检验与异质性分析 | 大段文献综述;模型的数学推导细节(除非是方法论文);与主结论无关的描述统计 |
| **理论型** | 传统算法/理论(定理-引理-证明结构、复杂度分析、无神经网络) | 问题形式化;核心定义;主定理及其**直观含义**(先说人话再上符号);证明思路与关键引理;成立条件与反例边界 | 冗长的证明细节(放备用页);算例的全部手算过程;与其他理论的泛泛比较 |
| **案例型** | rubric 无对应 → 归 **其他/跨学科** 并注明(rubric 的冲突消解规则要求标出两类) | 案例选择理由与代表性;情境描述(谁、在哪、什么时候);资料收集方法(访谈/档案/观察);分析框架与分析过程;可迁移的启示与**适用边界** | 泛化的统计数字;与本案例无关的理论综述;仅凭单案例就下的普遍结论 |

每种类型的**页数偏移**与**学生最常见翻车点**:

- **综述型**:方法段压缩给分类框架让位;翻车点是"把 20 篇文献一张一张念完",听众 3 分钟后就掉线 —— 必须按**分类维度**成组讲,每组只点 1–2 个代表作。
- **方法创新型**:方法与结果各占大头;翻车点是"只念公式不讲直觉",或者反过来只讲直觉、被追问关键定义时答不上来。
- **实证型**:数据与识别策略必须占满页;翻车点是**把相关性说成因果**,以及不交代样本口径就报系数。
- **理论型**:主定理单独成页;翻车点是"一页塞三个定理",以及不提成立条件。
- **案例型**:情境描述要配时间线或关系图;翻车点是**用单个案例得出普遍规律**,以及不交代案例的选取偏差。

### 阶段三 · 汇报结构设计与大纲

**输入**:类型结论 + 讲述重点 + 时长
**动作**:按六段结构分配页数 → 生成 `slides.json`(结构照 `presentation-schema.md`)
**输出**:`slides.json` + `论文解析.md` 里的汇报大纲
**退出条件**:**教师或汇报人确认大纲之后**才进阶段四;总页数与时长匹配

学术汇报的六段结构,按 `presentation-schema.md` 的"时长→页数"基线分配**配额**
(10min→6-7 页 / 20min→9-10 页 / 30min→12-14 页)。**不是在这之上再加页**,而是把基线拆开:

| 段落 | 内容要求 | 10min | 20min | 30min | 学生最容易讲错的地方 |
|---|---|---|---|---|---|
| 封面 | 论文题名(原文 + 中译)、全部作者、期刊/会议 + 年份、汇报人、日期;**必须标"本文为文献汇报,非本人成果"** | 1 | 1 | 1 | 漏掉期刊年份;把自己名字放在作者位上造成误解 |
| ① 研究背景与问题 | 领域现状 2–3 句 → **本文要解决的具体问题一句话说清** → 为什么这个问题值得做 | 1 | 1 | 2 | 把背景讲成教科书综述,讲了 5 分钟还没到问题(超时重灾区);讲不清"具体问题",只复述领域重要性 |
| ② 相关工作与缺口 | 按**方法族**分组(不逐篇念)→ 每组一句结论 → 明确写出 gap | 0–1 | 1 | 1 | 把 related work 逐篇念成列表,没有"缺口在哪";把论文引用的**他人**工作说成"作者提出的方法" |
| ③ 方法 | 问题形式化 → 框架图(一页图 + 逐块讲)→ 关键模块 → 训练/识别策略 → 关键假设与超参 | 2 | 2 | 3 | 只念公式不讲直觉(听众掉线);或只讲直觉不给关键定义(一追问就崩);漏讲假设与超参导致不可复现;**把原文没写的实现细节"补全"**(幻觉最高发) |
| ④ 实验与结果 | 数据与设置 → 主结果表(**数字照抄不四舍五入,行内标注 Table/Fig. 号**)→ 与基线对比 → 消融/稳健性 → 失败案例或反例 | 2 | 2 | 3 | 只说"效果更好"不给数字;数字被四舍五入;只报最好的一组、不给基线;把图中的视觉差异说成"显著"(原文没做检验就不能说);张冠李戴(表 2 的数字说成表 3) |
| ⑤ 讨论与局限 | 作者承认的局限(标 `[原文声明]`)→ 模型归纳的潜在局限(标 `[模型归纳]` + 依据)→ 与相关工作的关系 | 0–1 | 1 | 2 | 跳过作者承认的局限只讲优点,一问就露;把自己想到的局限说成"作者指出"(必须标 `[模型归纳]`);过度自贬到否定论文价值 |
| ⑥ 结论与展望 | 作者结论(引原话)→ 未来工作(**只讲论文自己写的**)→ 对我们组/我的研究有什么启发 | 1 | 1 | 1 | 把结论扩大化("可用于所有场景",原文只在某数据集验证);把 future work 说成已完成;全程零评述(组会要求有批判性) |
| 讨论问题 / 致谢 | 3 个供组会讨论的问题(对应 `presentation-schema.md` 的 closing) | 0 | 1 | 1 | 提"有没有问题"这类空问题;或提出论文已解答的问题 |

**合并规则**:页数不够时先砍②相关工作,再砍⑤讨论 —— **③方法和④结果永不压缩**,
宁可拆成 overflow 两页(`presentation-schema.md` 的 `overflow.enabled` / `max_pages` / `split_at`)。

### 阶段四 · 图表处理

**输入**:`figures/` + 论文原图/表
**动作**:判定每张图走"重绘 / 裁切 / 原图",逐张产出并写图注
**输出**:`figures/` 下成品图 + `图表出处清单.md`
**退出条件**:每张图的出处(Fig./Table 号 + 页码)已登记,图注写的是结论而不是"如图所示"

**为什么不能直接贴论文原图**:

1. **版权** —— 论文图表的著作权属作者/出版社。组会内部讲解属合理引用,但**公开上传
   (B 站、公众号、公开网盘、会议录屏)需先确认出版社的版权政策**,并在图上标出处;
   裁剪掉水印、去掉版权页再传播是明确的高风险动作。
2. **清晰度** —— 期刊图多按单栏宽度 8.5cm、约 300dpi 嵌入,截图到 16:9 全屏会放大到 1.5–2 倍,
   字全糊。论文里的 6pt 轴标签投影出来根本看不见。
3. **配色与版式** —— 论文图配色是为黑白打印优化的(灰阶、细线、点划线),投影后对比度极低;
   且与实验室 PPT 模板的标准色冲突。

**三条处理路径,按优先级**:

| 路径 | 适用 | 做法 | 硬约束 |
|---|---|---|---|
| **A. 重绘(首选)** | 柱状图、折线图、散点图、箱线图 | 用论文**表格里印出的数值**或图注中给出的数值,用 matplotlib 按 `slides-polish` 的单色系纪律重绘 | 数值**不得目测估读**;论文没给具体数值的图**不许重绘**(重绘=编数据)。图注写"据 [作者, 年份] Fig.3 重绘" |
| **B. 裁切** | 架构图、流程图、示意图、系统框架 | 阶段一路径 B:`sips` 渲染整页 → `PIL.crop` 精确裁切 → 放大到 16:9 后不糊 | 保留原图的 Fig. 号;裁切后由教师肉眼确认没切掉图例/坐标轴 |
| **C. 原图直用** | 电镜照片、实测波形、地图、软件截图(无法重绘) | 阶段一路径 C 的 `page.images` 抽内嵌位图;若无内嵌位图则用路径 B 高倍渲染 | 仅在 A、B 都不可行时用;必须在页脚标 `From: [第一作者] et al. (年份), Fig.X` |

**图注规范 —— 图注写结论,不写"如图所示"**:

| ✗ 错误写法 | ✓ 正确写法 |
|---|---|
| 如图所示 | 本文方法在 X 数据集上把 MAPE 从 12.4 降到 9.8(原文 Table 2) |
| 图 1 模型架构 | 图 1 模型架构:多模态编码器 → 跨模态注意力 → 预测头;本文新增的是中间的跨模态注意力模块(原文 Fig.1) |
| 结果对比图 | 在 4 个数据集上本文方法 3 胜 1 平,未胜出的 Y 数据集样本量仅 200(原文 Table 3) |

另外三条:图注字号不小于正文的 2/3(投影后要能读);每张重绘图的角落标注
`据 [作者, 年份] Fig.X 重绘`;每张原图的角落标注 `From: [作者, 年份] Fig.X`。
**所有出处汇总进 `图表出处清单.md`**,教师按这张表逐条核对。

### 阶段五 · 生成 PPTX

**输入**:已确认的 `slides.json` + `figures/` 成品图
**动作**:`pptx_kit.py build` 生成 → `inspect` 回读自检
**输出**:`组会汇报初稿.pptx`
**退出条件**:`inspect` 的 `overdense` 为空,且每页 `chars` 与预期相符

```bash
$PY "$KIT" build --spec slides.json --out 组会汇报初稿.pptx
$PY "$KIT" inspect --in 组会汇报初稿.pptx
```

`slides.json` 片段(结构见 `skills/paper-analyst/references/presentation-schema.md`,字段名以 pptx_kit 为准):

```json
{"meta": {"title": "多模态城市轨道交通客流预测(文献汇报)",
          "subtitle": "Zhang et al., Journal of Transport Research, 2023",
          "presenter": "汇报人:___|日期:___"},
 "slides": [
  {"title": "研究背景与问题",
   "bullets": [{"text": "短期客流预测是线网调度的核心输入", "level": 0},
               {"text": "现有方法只用刷卡数据,忽略天气与事件信息", "level": 0},
               {"text": "本文问题:如何融合多模态信息降低高峰时段预测误差", "level": 0}],
   "notes": "此处由阶段六统一写备注"},
  {"title": "方法框架",
   "bullets": [{"text": "多模态编码器 → 跨模态注意力 → 预测头", "level": 0}],
   "image": "/abs/path/figures/fig2_framework.png"},
  {"title": "核心结果",
   "table": {"header": ["模型", "MAPE(%)"],
             "rows": [["LSTM", "12.4"], ["Ours", "9.8"]]}}
 ]}
```

**实测行为(照此预期,别当成 bug)**:

- `build` 会**自动在第 1 页生成封面**(取 `meta`),`slides` 数组的页数 = 总页数 − 1。
  实测:spec 里 2 页 → 生成 3 页。
- `image` 字段接受绝对路径,图片会被**真正嵌入**(实测 `ppt/media/image1.png` 与源文件
  字节数完全一致)。
- `inspect` 把**单页正文 > 220 字符**的页报进 `overdense`。实测 326 字符的页被标记、
  11 字符的页未被标记。**这是提示拆页,不是错误** —— 学术汇报页还应更空(每页 ≤4 bullets,
  见 `presentation-style-guide.md`),所以 overdense 为空只是底线,不代表页面好看。
- PPTX 尺寸 16:9(`12191695×6858000`),中文走 `a:ea` 字体,靠本层保证,**不要手写 pptx**。

**可选打磨**:若教师要求"看起来像正式会议报告",按 `skills/slides-polish/SKILL.md` 的
HTML/SVG → headless Chrome → PNG → 嵌回 pptx 流程处理方法框架图与结果对比页。
本机实测可用:Chrome 在 `/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`,
Keynote AppleScript 可用(版本 15.3.1),可走它那套"导出每页 PNG → `sips -Z 1800` → 人工看"
的验证回路(`sips` 已实测存在)。**注意**:slides-polish 的配色纪律是"不引入第四个品牌色",
学术汇报请进一步压到**一个主色 + 灰阶**,别把汇报做成产品发布会。

### 阶段六 · 演讲者备注

**输入**:已生成的 pptx + 每页的讲稿要点
**动作**:写 `notes.json` → `pptx_kit notes` 批量写入 → `inspect` 回读确认
**输出**:带备注的 pptx
**退出条件**:`inspect` 里每一页 `has_notes` 为 `true`,且 `notes_chars` 与预期一致

```bash
$PY "$KIT" notes --in 组会汇报初稿.pptx --notes notes.json
$PY "$KIT" inspect --in 组会汇报初稿.pptx          # 必须回读确认
```

```json
{"1": "【时间】0:00–0:30|【开场】各位老师同学好,我汇报的是 Zhang 等 2023 年发表在 JTR 的这篇工作,这是文献汇报,不是我的成果。",
 "2": "【时间】0:30–2:30|【过渡】说完背景,问题可以归结为一句话:……|【追问准备】为什么不用地铁 AFC 数据?答:原文 3.1 节说明 AFC 只覆盖进站。",
 "3": "【时间】2:30–7:00|【要点】按图从左到右讲:编码器、注意力、预测头|【需提前准备的数据】Table 1 的样本区间是 2019.1–2021.6,被追问时要能立刻说出。"}
```

**实测行为(关键,写错就白写)**:

- `notes.json` 的键是**从 1 开始的页号**(1 = 第 1 页,含自动生成的封面)。
  实测 `{"1":…,"2":…,"3":…}` → 三页全部写入并回读成功。
- 键为 `0` 或**超出总页数会被静默忽略,不报错**。实测 `{"0":…,"1":…}` 只写入第 1 页。
  所以**写完必须 `inspect` 回读** `has_notes` / `notes_chars`,不能只看"命令成功"。
- 不带 `--out` 时 `notes` 是**原地改写**该 pptx。要保留旧版就自己先复制一份。
- 再跑一次会**覆盖**同页的旧备注,不会追加。

**学术汇报的备注该写什么(四要素,缺一不可)**:

| 要素 | 写什么 | 例子 |
|---|---|---|
| **时间分配** | 每页的起止时间,累计必须等于总时长 | `【时间】7:00–11:30`(20 分钟报告的第 4 页) |
| **过渡语** | 上一段到下一段的那一句衔接话,写出来照念 | `【过渡】方法讲完了,下面看它到底有没有用。` |
| **可能被追问的点** | 由 `skills/empirical-research/econ-audit/SKILL.md` 的审查角度生成:识别策略是否可信、样本是否外推、指标是否可比、消融是否充分、基线是否公平 | `【追问】为什么用 MAPE 不用 RMSE?答:原文 4.2 节说明高峰时段短时误差更重要。` |
| **需要提前准备的数据** | 一旦被追问就得立刻说出的具体数字/出处 | `【备数】基线 LSTM 的 MAPE=12.4(Table 2);样本量 8.7 万(3.1 节)` |

**备注里的追问点必须能在论文里找到答案**。找不到答案的,备注写成
`【追问】XX —— 论文未交代,如实回答"原文未说明"`,**不要编一个解释**。

对**学生汇报**,备注再细一层:开场和过渡语写成可照念的完整句子;对**教师本人汇报**,
备注只留时间节点、数据卡和追问点。

### 阶段七 · 反剽窃与交付自检

**输入**:完整 pptx
**动作**:出处标注检查 → 表述人称检查 → 走出检清单
**输出**:`交付说明.md`
**退出条件**:`图表出处清单.md` 每条已核,自检清单全过

**出处标注(硬要求)**:

1. **封面页必须写全**:原论文题名、全部作者、期刊/会议 + 年份、DOI 或 arXiv 号(有则写),
   以及一行 **"本文为文献汇报,所讲内容均为原作者成果"**。
2. **每一张图、每一张表都标出处**:`From: [作者] et al. (年份), Fig.X` 或
   `据 [作者] et al. (年份), Table Y 重绘`。**没有出处的图表不许上页**。
3. **直接引用原句**要加引号 + 标注页码,并在备注里写英文原文(便于被追问时回应)。
4. **人称纪律**:讲别人的工作,主语一律是"作者/该文/本文(指被讲论文)",
   **不得用"我们发现""我们提出""我们的方法"**。中文里"本文"极易被听成"我的文章",
   所以在页脚统一写"(以下'本文'均指所汇报论文)"。
5. **区分自己的延伸**:若汇报中含自己的评论、复现结果、延伸想法,**必须单独成页**,
   页标题写明"我的评述/我的延伸",绝不可与原文内容混排。
6. **不得**裁剪掉论文水印、版权页后当作自制图;**不得**把作者的图表重绘后去掉出处标注;
   **不得**把论文的结论改写成自己的结论。
7. 若需把 PPT 公开上传或录屏外发,先确认出版社版权政策,并在交付说明里提示教师核对。

**交付说明必须包含**:

- 这份 PPT 是**初稿**,请汇报人**逐页讲一遍**再定稿
- 所有数据的出处(指向 `图表出处清单.md`)
- PDF 质量等级,以及哪些段落是降级处理 / 未读到
- 用到的默认值(时长、听众、页数等)与需要教师替换的占位符清单
- 提示:中间文件(`pages/`、`figures/` 的原始渲染件)确认无误后可删除

## 产出物

| 文件 | 内容 |
|---|---|
| `组会汇报初稿.pptx` | 16:9 汇报稿,含封面、正文、演讲者备注;所有未知信息为 `【待补:…】` |
| `论文解析.md` | 质量判级 Header + 7 节解析(照 `output-schema.md`)+ 类型结论与证据 + 汇报大纲 |
| `slides.json` | 幻灯片计划(照 `presentation-schema.md` 结构,字段名以 pptx_kit 为准) |
| `notes.json` | 演讲者备注(1-based 页号),四要素齐全 |
| `figures/` | 重绘或裁切后的成品图;文件名对应页号 |
| `图表出处清单.md` | 每张图的 `Fig./Table 号 + 页码 + 处理方式(重绘/裁切/原图)` |
| `交付说明.md` | 初稿声明、质量等级、默认值、`【待补】` 清单、中间文件清理提示 |

## 红线

1. **不虚构论文中的数据与结论。** PPT 里的每一个数字、每一条结论、每一个方法细节,
   都必须能在 PDF 原文里指到具体位置(节号 / 图号 / 表号 / 原句)。原文没给的一律
   写 `[未明确给出]`,**不许用领域常识或记忆补全**。数值照抄,**不许四舍五入**
   (`presentation-style-guide.md` 明文规定)。
2. **图表必须注明出处。** 每张图、每张表标注 `Fig./Table 号 + 作者 + 年份`;
   重绘图标"重绘";没有出处的图表不许上页。公开传播前提示教师核对版权。
3. **汇报稿是初稿。** 交付时必须明确告知"这是初稿,请汇报人逐页讲一遍并核对数据",
   不得用终稿口吻交付。讲稿的取舍(讲什么、略过什么)由教师和汇报人决定。
4. **不得把他人成果表述为自己的。** 封面必须标"文献汇报";正文人称纪律见阶段七;
   自己的延伸内容必须单独成页并明确标注。
5. **不得脑补降级内容。** 扫描版、双栏乱序、公式丢失、图表不可读,一律按降级处理透明披露,
   让教师补料;宁可少讲一页,不许编一段。
6. **不制造虚假的显著性。** 原文没做统计检验,就不能说"显著""明显优于";
   只能陈述原文给出的数值本身。
7. **不修改、覆盖教师提供的原始 PDF。** 拆分页、渲染图一律放 `pages/`、`figures/` 等中间目录。

## 自检清单

- [ ] 每个数字都能在 PDF 原文指到位置(节号/图号/表号/页码)
- [ ] 没有对原文数值做任何四舍五入或"约等于"
- [ ] 所有 `[未明确给出]` / `[不确定]` 标记保留,没有被模型悄悄填上
- [ ] 每个创新点带 `[原文声明]` 或 `[模型归纳]` 标签,`[原文声明]` 有位置引用
- [ ] 类型标签由 rubric 判定并列出 2–3 条证据,没有默认套"AI 论文"模板
- [ ] 页数符合时长基线(10min 6-7 / 20min 9-10 / 30min 12-14),方法是/结果是段未被压缩
- [ ] 封面写全题名、全部作者、期刊会议、年份、DOI/arXiv(有则写)
- [ ] 封面有"本文为文献汇报,所讲内容均为原作者成果"一行
- [ ] 每张图、每张表都标了 `Fig./Table 号 + 作者 + 年份`,已录入 `图表出处清单.md`
- [ ] 图注写的是结论,不是"如图所示"
- [ ] 重绘图的数值取自原文明示数字,没有目测估读
- [ ] 裁切图已由教师肉眼确认(本机模型不支持读图,AI 无法自验)
- [ ] 正文人称纪律通过:无"我们提出/我们发现"(指被讲论文时)
- [ ] 自己的延伸内容单独成页并标注
- [ ] `inspect` 的 `overdense` 为空
- [ ] `inspect` 里每一页 `has_notes` 为 true 且 `notes_chars` 合理(备注键越界会被静默忽略)
- [ ] 每页备注含四要素:时间分配 / 过渡语 / 可能被追问的点 / 需提前准备的数据
- [ ] 备注里的追问答案都能在论文里找到依据,找不到的已如实标注
- [ ] PDF 质量等级已写入 `论文解析.md` 与 `交付说明.md`,降级段落已披露
- [ ] `交付说明.md` 写明"初稿"、列出 `【待补:…】` 清单与所用默认值
- [ ] PPTX 由 `pptx_kit.py build` 生成(不是手写 pptx,也不许用文本框拼伪表格)

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.