关于 obsidian-paper-vault
此 Claude skill 将研究 PDF 文件夹整理为 Obsidian 文献笔记与概念笔记,适合管理论文阅读和跨文献概念综合。它强调依据提取文本写作、避免覆盖已有笔记,并通过队列跟踪进度。
主要功能
- 01生成文献笔记与概念笔记
- 02批量提取 PDF 文本
- 03检查并跳过已有笔记
- 04按队列跟踪处理进度
适用场景
- 01整理文件夹中的研究论文
- 02从多篇论文综合概念
- 03分批处理大型论文集合
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aperivue/ medsci-skills --skill obsidian-paper-vault安装后在 Claude Code 中输入/obsidian-paper-vault确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
skill.ymlassets/example_concept_note.mdexample_paper_note.mdexample_queue.mdreferences/concept-extraction.mdsubagent-prompt.mdtag-vocabulary.mdtemplates.mdworkflow.mdreferences/locale/ko/note_templates.mdscripts/extract_pdfs.pytests/test_extract_pdfs.py详细介绍
Obsidian Paper Vault
将研究论文 PDF 文件夹转换为双层 Obsidian 知识库:文献笔记(每篇论文一篇,使用模板)和原子概念笔记(综合多篇论文)。
与 /lit-sync 的关系
这两项技能都会将文献笔记和概念笔记写入相同的知识库文件夹。它们从相反方向开始工作,不能互相覆盖。
/lit-sync | obsidian-paper-vault | |
|---|---|---|
| 输入 | Zotero 分类 / refs.bib | PDF 文件夹 |
| 笔记键 | citekey | 简短的描述性标题 |
| 管理内容 | manuscript/_src/refs.bib | 提取文本缓存 |
绝不要覆盖现有笔记。 如果论文的笔记已存在(按标题、DOI 或 citekey 判断),请报告并跳过。当两项技能同时使用时,/lit-sync 笔记是书目主干;本技能的笔记则是通读摘要。
步骤 0:确定知识库布局——询问,不要假设
开始写入任何内容前,先确定以下三个路径:
- 知识库根目录——由用户提供,或使用
$OBSIDIAN_VAULT。绝不要猜测主目录路径。 - 文献笔记文件夹——默认为
Literature/。如果知识库中已有承担此用途的文件夹(02_research/논문/、Papers/、文献/),请尊重现有布局,不要强行采用默认设置。 - 概念笔记文件夹——默认为
Concepts/,同样遵循尊重现有布局的规则。
对于结构为韩语的知识库,请参阅 references/locale/ko/note_templates.md——文件夹名称和笔记标题使用韩语,需选择启用。
另外,请确认 PyMuPDF 可用:python3 -c "import fitz; print(fitz.__version__)"(使用 pip install PyMuPDF 安装)。文本提取缓存默认存放在 ~/.local/cache/paper-vault-texts/,除非用户指定其他位置。
步骤 1:预先提取 PDF 文本——始终执行,适用于任何批次
python3 "${CLAUDE_SKILL_DIR}/scripts/extract_pdfs.py" <pdf_folder> <text_cache_folder> [max_pages]
默认提取 12 页,对于大多数论文而言,这足以涵盖摘要至讨论部分。如果生成的笔记内容空泛,说明文本文件仅包含摘要,或 OCR 质量较差:请增加提取页数,或检查源 PDF。无法提取文本的 PDF(仅包含图像的扫描件)会标记为 FAILED … (needs OCR),且不会生成 .txt 文件;请先进行 OCR,或以交互方式阅读,绝不要将其纳入批量处理。
绝不要将 PDF 路径交给子 Agent。 无法打开文件的子 Agent 不会报告失败——它会根据训练数据写出笔记,生成的笔记看似合理,实则包含编造的数字。请改为传递 .txt 路径。单篇论文的交互式处理可以直接读取 PDF(Read 工具支持 PDF);批量处理则不可以。
步骤 2:撰写笔记——并行使用子 Agent
将一批论文分配给多个并行工作的子 Agent,每个子 Agent 负责少量论文(单个 Agent 负责过多论文时,笔记质量会下降),并按主题为每个 Agent 分组论文,以便发现反复出现的概念。
给每个子 Agent 提供:分配给它的文本文件路径及目标文件名、references/templates.md 中的模板原文、已有概念笔记清单,以及不得捏造任何内容的要求。完整提示词见 references/subagent-prompt.md。
每篇笔记,无论批量撰写还是单独撰写,都遵循以下规则:
- 数字、作者和日期只能来自提取的文本——绝不能依赖模型知识,不论这篇论文多么耳熟能详,因为知名论文在不同版本间会有差异,而虚构的数值恰恰最容易在这里看起来可信。
- **文本未说明的内容,笔记就不得声称。**缺失的信息应写作“提取的文本中未说明”,而不是自行补全。
- 原样保留 PDF 文件名,写入
![[filename.pdf]]:将文本文件名中的.txt替换为.pdf,逐个字符保持一致(嵌入对大小写、空格和标点都很敏感)。 - **使用
references/templates.md中的 frontmatter 字段名。**Dataview 查询若遇到字段重命名会失效,而且只会返回空表,不会报错。 - 使用现有标签词汇表(
references/tag-vocabulary.md),不要自行创建顶级标签。 - 笔记名称应包含 3–5 个关键词概念,不要使用 PDF 的完整标题,也不要使用
paper_001。
不确定文献笔记的格式时,请参阅 assets/example_paper_note.md。
关卡——批次验收前:对照文本文件抽查两篇笔记(一项样本量、一项效应估计)。如果任一数值未出现在文本中,请停止处理该批次并报告,不要继续。是否豁免此关卡由用户决定,而非由此技能决定。
步骤 3:在队列文件中跟踪进度
在知识库中保留 PAPER_QUEUE.md,按论文记录状态(已完成 / 待处理 / 已跳过 / 处理中),确保拥有 200 篇论文的知识库能在不同会话间持续使用。每处理完一批后更新该文件。
步骤 4:在文献笔记达到 10 篇以上后提取概念笔记
某个短语只有同时满足以下条件,才值得单独建立概念笔记:它出现在 3 篇以上的笔记中、具有教学价值,并且不同论文对它的处理方式有所不同。模型名称、数据集和期刊属于实体,而非概念。完整标准、频次扫描以及从萌芽到成熟的生命周期,请参阅 references/concept-extraction.md;格式请参阅 assets/example_concept_note.md。
大约每 5–7 篇文献笔记新增 1 篇概念笔记较为合理。新增更快就属于概念膨胀,最终会产生几十篇用户从未编辑过的空洞笔记。
关卡——在将概念笔记标记为已完成之前:概念笔记应以 🌱萌芽状态发布,并将定义标记为占位内容;只有经过用户审核,才能计入读者自己的笔记。交付时请明确说明这一点。
用户询问各层如何协同,或为何此技能不会撰写某些笔记时,请阅读 references/workflow.md。