Files
2026-08-29 22:13:55 +08:00

351 lines
22 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 产品策划书:BanDu(伴读)— Zotero 插件
| 字段 | 内容 |
|------|------|
| 中文名 | 伴读 |
| 英文名 | BanDu |
| 插件全名 | BanDu for Zotero |
> 一句话定位:**BanDu(伴读)——在 Zotero 里给每篇论文配一位 AI 老师**——先读完论文备好课,
> 再按你选的模式授课(整体讲解 / 逐段精读 / 逐句按需),随时提问、系统不打扰,
> 听完后把伴读笔记和参考文献卡片留在 Zotero,写论文时一键引用。
## 0. 一期范围声明(重要)
- **一期 = PC 端 + Zotero 插件**,这是产品本体,不是独立 App 的附属渠道;
- 论文库 = Zotero 现有库(零迁移),插件直接读 Zotero 里的 PDF
- 移动端是**未来的独立产品**(v2+),通过云后端与 Zotero 端同步,不在一期考虑;
- 一期核心用户 = 自己(dogfooding)→ 再面向 Zotero 学术用户开放。
---
## 1. 背景与机会
### 1.1 核心工作流(一期要服务的完整闭环)
```
Zotero 论文库(已有)
│ 打开某篇 PDF
BanDu 插件:AI 老师读完整篇 → 备课 → 按模式授课 ── 随时提问 ── 标记重点
伴读产出留在 Zotero 里:
• 伴读报告(问答记录 + 重点标记 + 收听情况)→ Zotero 子笔记,可搜索
• 参考文献卡片(中文速览 + 推荐引用句 + BibTeX)
写论文时:从 Zotero 直接导入引用 + 复用伴读总结(Related Work 素材)
```
### 1.2 机会点
- 在 Zotero 生态里,**文字 AI 已是红海**Paper Copilot、Owl 等:摘要/问答/翻译),
**"AI 老师式音频授课 + 段落/句子级交互"仍是空白**——即使桌面端,"边干活边听论文"也是真实场景;
- EndNote / Mendeley 无开放插件生态,**插件路线 = Zotero 路线**,护城河是生态卡位;
- Paper Copilot 的流行证明 Zotero 用户对论文 AI 的需求强且愿意装插件。
> 立项前需实测确认:Paper Copilot / Owl 最新版是否已加 TTS 朗读(目前判断没有,需录屏存档)。
---
## 2. 竞品分析
| 产品 | 形态 | 段落级锚定 | 语音伴读 | 听完提问 | 与 Zotero 集成 | 差距 |
|---|---|---|---|---|---|---|
| Paper CopilotZotero 插件) | 插件 | ◐ | ✗ | ✓(文字) | ✓ | 无音频、无老师式授课、无伴读报告闭环 |
| OwlZotero 插件) | 插件 | ✗ | ✗ | ✓(文字) | ✓ | 同上 |
| SciSpace | 网页 | ✓ | ✗ | ✓(文字) | ✗ | 不在 Zotero 工作流里 |
| NotebookLM Audio | 网页 | ✗ | ◐(预生成播客,不可交互) | ✗ | ✗ | 不可交互、不可锚定、不在 Zotero |
| ChatGPT 语音 + PDF | App | ✗ | ✓ | ✓ | ✗ | 对话不锚定段落、无播放器、无笔记回写 |
| Speechify 类 | 多端 | ✗ | ✓(裸读) | ✗ | ✗ | 机器朗读,无 AI 讲解 |
**空白确认:Zotero 内 × 老师式授课(整体+逐段+逐句)× 随时提问 × 伴读报告回写,同时满足的产品不存在。**
---
## 3. 核心设计决策
### 3.0 心智模型:AI = 论文老师(不是 TTS 播放器)
产品的概念基础是一位"**先读完整篇论文、再给读者讲解的老师**",四个阶段:
```
① 读 读完整篇论文(解析 + 段落索引 + 全文摘要)
② 备课 基于全文理解生成"讲义"(Lecture 对象,缓存复用):
- 整体讲解脚本(按教学逻辑组织,不按论文物理顺序)
- 逐段三层讲解(按论文结构组织)
- (按需)逐句讲解
③ 授课 读者自选模式收听;随时可提问(读者发起,系统不打扰)
④ 复盘 听完后生成伴读报告/笔记 → 回写 Zotero,为写论文提供素材
```
**关键架构含义:②"备课"是一次性、可缓存的产物。**
老师备一次课,读者听 N 次、换模式重听、隔周再听,都不再花 LLM 成本;
整体讲解与逐段精读**共享同一份备课**(同一个全文摘要上下文),边际成本只多一次生成。
### 3.1 多种授课模式(粒度 = 模式,不是全局开关)
| 模式 | 组织逻辑 | 播放单位 | 场景 |
|---|---|---|---|
| **整体讲解** | **教学逻辑**:问题→动机→核心方法→关键证据→结论与局限(不是论文物理顺序) | beat(30s–2min 讲解片段,全篇 8–15 个) | 第一次过论文,听"具体讲了什么、核心是什么" |
| **逐段精读** | 论文物理顺序:章节→段落 | 段落(>150 词的长段拆 13 个"要点") | 第二次精读,吃透方法/实验 |
| **逐句讲解** | 按需:选中任意句子,问"解释这句" | 句 | 硬句子手术 |
**逐段与逐句并存的理由**:老师的粒度应随内容难度走——
简单章节整体带过、核心章节逐段精读、难句子逐句解剖。
**"整篇逐句自动播放"不做**(成本高、收益低),但逐句**按需解释**永远可用;
v1.1 加"**难点句清单**":备课时 AI 主动标出全篇 5–10 个最难读的句子,逐个听讲解
(比整篇逐句性价比高得多的折中)。
**整体讲解的 beat ≠ 段落(关键数据结构差异)**:老师会重组材料
"这个 motivation 其实在 p12,我们回去看一下")。
每个 beat 携带 `refs[]` 指回来源段落,用于文字面板同步高亮对应原文、点击"看原文"跳 PDF 页。
v2:**检验模式**——老师反考读者("你觉得作者为什么这么设计?",答完给反馈),
直接服务"提高理解能力"的终极目标。
### 3.2 老师讲什么:三种内容模型
**① 整体讲解 beat**(全篇 10–20 分钟 ≈ 一杯咖啡过完论文核心):
- 讲解文本(中文口语)
- `refs[]`:支撑该 beat 的来源段落 ID
- 类型标签:问题引入 / 核心方法 / 关键实验 / 结论局限 / 延伸思考
- 质量要求(防"像 Wikipedia 摘要"):每个 beat 必须含 **为什么重要 / 一个具体例子或数字 / 一个易混淆点** 三要素
**② 逐段三层讲解**(对应核心诉求"什么意思 / 怎么理解 / 整体研究思路"):
1. **讲了什么**(白话翻译/转述;公式转口语不念 LaTeX;专有名词保留英文 + 中文解释)
2. **怎么理解**(关键概念、重要数字、和常规做法的差异)
3. **全文定位**"这是 motivation 收尾,为下一节 method 引出问题"
**③ 逐句讲解**(按需触发):句翻译 + 句法拆解(长句怎么断)+ 这句话在上下文的作用。
**教师风格(prompt 层可配置)**:主动"点"、不主动"问"——
提示性内容(易混淆点、作者隐含假设、"注意这里做了一个强假设")**写进生成的讲义里**,
运行时不弹任何提问提示(见 3.3)。
**语言处理**
- 英文论文:音频 = 中文讲解(不是英文裸读);文字面板 = 英文原文 + 中文讲解对照;
- 中文论文:音频 = 中文"白话简化 + 方法分析 + 全文定位"(价值不在翻译,在降维讲解);
- 自动检测论文语言,切换 prompt 模板;v1.1 可选"原文朗读模式"(英文 TTS 练听力)。
### 3.3 交互:读者发起,系统不打扰
- **不做**每段/每句播完的"这段有什么疑问吗?"提示(已确认砍掉);
- 交互入口(任意时刻):
1. **随时提问**:锚定当前位置(当前 beat / 段落),也可问全局
"这篇和 Transformer 什么关系?");
2. **暂停即问**:暂停是天然交互点,暂停时提问入口高亮;
3. **选中句子问**:"解释这句"(逐句讲解的入口)。
- 问答上下文:当前单位原文 + 对应讲解 + 全文摘要 + 全文索引(RAG);
回答**文字先行显示 + TTS 流式播放**;所有问答沉淀进伴读记录(进报告)。
- v1.1:章节边界软提示(**默认关闭**:"方法部分讲完了,要问点什么吗?")。
**系统必须答好的问题类型**prompt 与 RAG 设计依据):
翻译类("这句什么意思")/ 理解类("为什么不用 X")/ 逻辑类("结论怎么从实验得出"/
关联类("这和前面 Y 什么关系")/ 元认知类("这段在全文什么作用")。
### 3.4 伴读报告(听后沉淀,存成 Zotero 笔记)
听完(或随时点"生成报告")自动汇总:
```
# 伴读报告:<论文标题>
## 论文速览 问题/方法/结果/局限(中文四句)
## 收听情况 模式、已听 x%、已听段落列表
## 问答记录 按段落:Q + AI 回答(可重播)
## 重点标记 读者标记的段落 + AI 一句话理由
## 参考文献卡片 一句话总结 + 推荐引用句 + BibTeXBBT citation key
```
- 存为 Zotero 子笔记(markdown,挂 item 下、可搜索),可导出 .md;
- **为写论文服务**:推荐引用句 + 速览可直接进 related workBibTeX 走 Zotero 原生管道;
后续写相关论文时,Zotero 里搜论文标题即可调出全部伴读素材;
- v1.1+:理解度评估(按提问分布:"你在实验部分提问最多,建议重听该章节")。
### 3.5 与 Zotero 的深度集成(一期核心卖点)
| 集成点 | 做法 |
|---|---|
| 读 PDF | 插件取 item 的 PDF attachment 本地路径,直接读,**论文不出 Zotero** |
| 触发 | 选中带 PDF 的 item → Item pane 出现"伴读"标签页 |
| 缓存 | 本地 SQLiteLecture 对象(beats/三层讲解)+ mp3 + 问答记录,key = attachment ID + 文件哈希;二次打开秒进、离线可重听 |
| 伴读报告回写 | 报告 + 每段 Q&A + 重点标记 → `Zotero.Note` 子笔记 |
| 参考文献卡片 | 中文速览(问题/方法/结果/局限)+ 推荐引用句 + BibTeX 条目(有 Better BibTeX 时取 citation key |
| 写论文导入 | 写 related work 时:卡片摘要可直接粘贴,BibTeX 经 Zotero 原生/BBT 进 LaTeX;重点段落笔记提供引用上下文 |
| 伴读库视图 | 插件主窗口列全部论文:未备课 / 已备课 / 已听 x% / 有报告,快速进入 |
### 3.6 播放器 UIZotero Item pane 内的"伴读"页)
```
┌──────────────────────────────────────────────┐
│ 论文标题 [英] 老师已备课 ✓ [备课进度(首次)] │
├──────────────────────────────────────────────┤
│ 模式: [整体讲解 | 逐段精读] │
│ ▶ ⏸ ⏮ ⏭ 1x/1.5x/2x │
├────────────────────────┬─────────────────────┤
│ 单位列表: │ 当前内容: │
│ 整体讲解: │ 整体模式: beat 文本 │
│ b1 问题引入 ●已讲 │ + refs 来源段落高亮 │
│ b2 核心方法 ○ │ 逐段模式: 原文(英)+ │
│ b3 关键实验 ○ │ 三层中文讲解(高亮跟随) │
│ 逐段精读: │ ── 提问(随时)── │
│ 2 Method │ Q: ... [重播] │
│ p17 ●已听 [问2] [★] │ A: ... [重播] │
│ p18 ○ │ [输入框: 问当前段/全局] │
│ ... │ [选中句子→解释这句] │
└────────────────────────┴─────────────────────┘
```
- 文字面板逐句/逐词高亮跟随音频(TTS word timestamps);
- 整体讲解模式:面板高亮当前 beat 的 `refs[]` 来源段落原文,可点"看原文"跳 PDF 页;
- 点列表任意行跳播;播放中列表自动滚动跟随;断点续播。
---
## 4. 技术架构(Local-first
```
┌────────────────────────────────────────────────────────┐
│ Zotero 7 (PC, macOS/Win) │
│ ┌────────────────────────────────────────────────────┐ │
│ │ 插件 (TypeScript, 官方 zotero-plugin boilerplate) │ │
│ │ • UI 层:伴读 pane / 伴读库窗口 (HTML5 + <audio>) │ │
│ │ • 本地引擎:PDF 解析 (MinerU/Marker, 本地 CPU 跑) │ │
│ │ • 本地存储:SQLite(Lecture 对象/问答/进度) + mp3 文件│ │
│ │ • 设置:LLM 提供商+key / TTS 提供商 / 教师风格 │ │
│ │ • 回写:Zotero.Note / 附件路径 / BBT citation key │ │
│ └──────────────┬─────────────────────────────────────┘ │
└─────────────────┼──────────────────────────────────────┘
│ (仅发送段落文本/提问,论文库本身不上云)
┌─────────┴──────────┐
│ LLM API │ TTS API
│ (用户自带 key; │ (ElevenLabs/Azure/
│ 或 Ollama 本地) │ 火山/MiniMax; mp3 落盘)
└────────────────────┘
```
### 4.1 关键流水线
1. **解析**attachment 路径 → 本地 layout 切段(双栏/公式/表格)→ 段落树(章节/段落/要点三层)→ SQLite;
2. **备课**(Lecture 对象,一次生成、缓存复用):
a. 全文摘要(问题/方法/结果/局限)→ 作为后续所有生成的全局上下文;
b. **整体讲解 beats**(8–15 个,教学逻辑序,每个 beat 带 `refs[]` 来源段落 ID
prompt 只允许引用已分配的段落 ID,**生成后校验,非法引用剔除**);
c. **逐段三层讲解**(按 5 段一批,带章节标题 + 全文摘要上下文);
d. v1.1:难点句清单(5–10 句,带句内定位);
**增量备课**:全文摘要 + beats 先生成(约 1–2 min),即可开听整体讲解;逐段内容后台继续生成("边备课边开讲")。
3. **合成**:讲解文本 → TTS → mp3 + word timestamps → 落盘(按 beat / 段落分片);
4. **播放**:三种模式共用同一播放器引擎(beat 序 / 段落序 / 单句);
word timestamps 驱动文字面板高亮;整体模式按 beat 的 `refs[]` 高亮来源段落;
5. **问答**(随时发起):锚定当前单位(beat/段落/句子)→ 组装 prompt
(当前单位原文 + 讲解 + 全文摘要 + RAG 相关段)→ LLM 流式 → 文字即时显示 → TTS 流式播放;问答写入伴读记录;
6. **报告**:收听完成或手动触发 → 伴读报告 + 参考文献卡片 → Zotero Note / 导出 .md。
### 4.2 关键技术难点与对策
| 难点 | 对策 |
|---|---|
| 双栏/公式/表格切分质量 | 首选 MinerU(CPU 可跑、公式识别好),Marker 备选;解析结果在文字面板可见,bad case 可兜底 |
| beat 的 refs 幻觉(引用不存在的段落) | prompt 约束只引用已分配 ID + 生成后校验剔除;refs 缺失的 beat 降级为纯讲解(不高亮原文) |
| 整体讲解"太泛"(像 Wikipedia 摘要,不像老师) | beat 模板强制三要素(为什么重要/具体例子或数字/易混淆点);dogfooding 迭代 prompt |
| PDF viewer 内段落高亮 | 依赖 PDF viewer 内部 API,稳定性未验证 → **MVP 不做**,用"文字面板高亮 + PDF 页跳转"v1.1 调研 |
| 音文同步 | 优先 TTS 提供商返回的 word boundary;缺失则 WhisperX 强制对齐(离线跑一次) |
| 问答延迟 | LLM 流式 + TTS 流式,首句 < 2–3s;文字答案先行显示,音频随后 |
| LLM 幻觉(讲解偏离原文) | prompt 严格 grounding 到段落原文;温度低;原文始终并排可见;"这段讲解"可一键重生成 |
| 长论文成本 | 备课一次、终身缓存(本地);单篇总成本 < ¥10,一次性;二次打开零成本、可离线重听 |
| 隐私 | local-firstPDF 不出机器、只发段落文本给 LLM API;设置支持 Ollama 纯本地模型(质量换隐私) |
| Zotero 7 API 较新 | 官方 boilerplate、pin 版本;UI 只依赖稳定 APIpane/notes/attachments |
### 4.3 单篇成本/耗时估算(8 页英文论文)
- 解析:本地 CPU 1–3 min,免费
- 备课 LLM:全文摘要 + 12 beats + 5070 段三层讲解 ≈ 30k token ≈ $0.050.3(一次性)
- TTS:整体讲解 ≈ 3k–5k 中文字 + 逐段 ≈ 8k15k 字 ≈ ¥15(火山/Azure)或 $0.20.6ElevenLabs flash
- 问答:按需,每轮 ≈ $0.002 + 几分钱 TTS
- **二次打开 / 换模式重听:零成本**(全部本地缓存,离线可听)
---
## 5. MVP 范围(68 周,PC + Zotero 插件)
**MVP 一句话:在 Zotero 里打开一篇英文论文,点"备课",AI 读完整篇后按你选的模式授课
(整体讲解 / 逐段精读),可随时提问并听到语音回答,听完后伴读报告与参考文献卡片留在 Zotero 里。**
✅ 包含:
1. Zotero 7 插件骨架 + Item pane "伴读"标签页 + 伴读库主窗口(简版)
2. 读 Zotero 附件 PDF → 本地解析 → 段落树(章节/段落/要点)
3. **备课流水线**:全文摘要 + 整体讲解 beats(含 refs 校验)+ 逐段三层讲解;增量备课(边备边开讲)
4. TTS 逐单元合成 + 本地 mp3 缓存
5. 播放器:**模式切换(整体讲解 / 逐段精读)**、播放/暂停/跳单位/语速 + 列表 + 文字面板高亮 + PDF 页跳转
6. 随时提问(文字输入,锚定当前位置或全局)→ 文字先行 + 语音回答 + 追问;选中句子问"解释这句"(逐句按需)
7. 伴读报告(问答记录/重点标记/收听情况)→ Zotero 子笔记;参考文献卡片 + BibTeX
8. 设置页(LLM/TTS 提供商与 key、教师风格)、断点续播
9. Dogfooding:自己读 10 篇论文,迭代 prompt 与节奏
❌ 明确砍到 v1.1+
- 语音输入提问(ASR)、barge-in 打断(MVP 用打字提问)
- 章节边界软提示(默认关闭)、难点句清单、PDF 内段落级高亮、原文朗读模式
- 检验模式(老师考读者,v2
- 移动端 App、云同步、多用户/订阅
**MVP 验证的假设:**
1. 整体讲解 10–20 分钟的信息密度是否合适 → dogfooding 调 beat 数与单 beat 长度;
2. "无提示、随时问"的交互是否够用 → 记录自己"想问但没问"的时刻,决定 v1.1 软提示的默认值;
3. 伴读报告回 Zotero 后,写论文时是否真的被复用(**关键闭环验证**)。
---
## 6. 路线图
| 阶段 | 时间 | 内容 |
|---|---|---|
| M1 | 第 12 周 | 插件骨架 + PDF 解析(MinerU 本地)+ 段落树 + 备课流水线(摘要/beats/三层讲解,纯文本跑通) |
| M2 | 第 34 周 | TTS 流水线 + 播放器(双模式切换)+ 文字面板高亮 + refs 高亮 |
| M3 | 第 56 周 | 随时问答(RAG + 流式)+ 伴读报告/卡片回写 + BibTeX |
| M4 | 第 7–8 周 | 增量备课/缓存/断点续播 + 设置页 + dogfooding 10 篇 + 打磨 |
| v1.1 | +46 周 | 语音输入(ASR)、barge-in、难点句清单、软提示(默认关)、PDF 内高亮、原文朗读模式、理解度评估、伴读库完善、开源核心 |
| v2 | 后续 | **独立移动端 App**(云后端同步论文与伴读进度)、**检验模式**(老师考读者)、多论文对比听、团队版/订阅 |
---
## 7. 商业模式(分期)
- **一期**:个人工具,插件免费 + 用户自带 LLM/TTS key(零边际成本,dogfooding + 口碑);
- **v1.1**:核心开源,Pro 云服务(TTS 代付、跨设备同步、热门 arXiv 论文讲义共享缓存)$9.919.9/月;
- **长期**:学术团队版(共享伴读库、写作引用协作);移动端 App 跟随 v2。
- 成本结构:local-first 下服务器成本极低,主要成本在 TTS 代付(共享缓存可摊薄)。
---
## 8. 风险与对策
| 风险 | 等级 | 对策 |
|---|---|---|
| 整体讲解"太泛"不像老师(核心体验风险) | 中 | beat 三要素模板 + dogfooding 迭代;教师风格可配置 |
| Zotero 7 插件 API 不稳定 / 未来版本变动 | 中 | 官方 boilerplate、pin 版本、只依赖稳定 APIUI 层与 API 层隔离 |
| PDF viewer 高亮依赖内部 API | 中 | MVP 绕开(文字面板高亮 + 页跳转);v1.1 专项调研 |
| LLM 讲解幻觉 / 质量不稳定 | 中 | grounding prompt + 原文并排 + 一键重生成 + dogfooding 迭代 prompt |
| 无提示交互下用户忘了提问(交互率过低) | 低 | dogfooding 记录数据;v1.1 软提示(默认关)兜底 |
| 大厂在 Zotero 生态做音频伴读(或 Zotero 官方 AI 化) | 中 | 生态卡位 + "备课-授课-报告"闭环是差异化;持续盯 Paper Copilot 与 Zotero roadmap |
| 隐私顾虑(论文文本发给 LLM API | 低 | local-first + 可选 Ollama 纯本地;设置中明示数据流向 |
| 解析 bad case(复杂版面) | 中 | 双引擎备选 + 文字面板兜底 + 用户反馈入口 |
---
## 9. 团队与预算(一期)
- 1 名全栈(插件 + 后端流水线)+ 1 名 AI 工程(解析/prompt/RAG,可同一人);
- 云成本 ≈ 0(全 local-first,仅 LLM/TTS API 按量,个人使用 <$10/月);
- 8 周 dogfooding 就绪,不含人力的直接成本 <$200。
---
## 10. 下一步行动(本周)
1. **竞品复核**:装 Paper Copilot + Owl,实测是否已有 TTS/音频能力,录屏存档;
2. **解析 POC**:取自己 Zotero 里 3 篇典型论文(双栏 + 公式密集)跑 MinerU(本地 CPU),评估段落切分与公式识别质量;
3. **插件 POC**zotero-plugin boilerplate 跑通三件事——取 attachment 路径、Item pane 加标签页、页面里 `<audio>` 播一段 mp312 天);
4. **TTS 选型**:中文自然度 + 价格 + 是否返回 word timestamps,对比 ElevenLabs / Azure / 火山,各合成 30 秒样本试听;
5. **Prompt 设计**:写三套 prompt 初版——全文摘要 / 整体讲解 beats(含 refs 约束)/ 逐段三层讲解;用 1 篇论文人工评估"像不像老师"。