关于 study
study 是一项论文学习 Skill,可将 PDF 转为结构化学习材料、可运行的代码示例和交互式 HTML 探索页,适合希望深入理解论文概念与研究内容的读者。支持本地 PDF、直接 PDF 链接和 arXiv 链接。
主要功能
- 01下载并解析 PDF
- 02生成结构化论文学习笔记
- 03创建题集与代码示例
- 04制作单文件交互式 HTML 页面
- 05整理论文索引并提取图像
适用场景
- 01根据研究论文 PDF 创建学习材料
- 02交互探索论文的方法与结果
- 03为论文概念制作可运行示例
- 04维护可检索的已读论文集合
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alaliqing/ claude-paper --skill study安装后在 Claude Code 中输入/study确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/download-pdf.cjsextract-images.pyparse-pdf-core.jsparse-pdf.js详细介绍
论文学习工作流
使用论文 PDF 路径调用此技能。
语言检测:根据用户输入检测其语言,并使用该语言生成所有材料。
- 示例:用户说“我们学习一下这篇论文吧” → 使用中文生成材料
- 示例:用户说“Let's study this paper” → 使用英文生成材料
核心理念
主要目标: 促进深入的概念理解和研究层面的思考。
次要目标: 构建结构化、可复用的论文知识体系。
此工作流不仅用于总结,还会围绕论文构建学习环境。
步骤 0:检查依赖项(仅首次运行)
if [ ! -f "${CLAUDE_PLUGIN_ROOT}/.installed" ]; then
echo "First run - installing dependencies..."
cd "${CLAUDE_PLUGIN_ROOT}"
npm install || exit 1
# Install Python dependencies for image extraction
python3 -m pip install pymupdf --user 2>/dev/null || pip3 install pymupdf --user 2>/dev/null || echo "Warning: Failed to install pymupdf"
touch "${CLAUDE_PLUGIN_ROOT}/.installed"
echo "Dependencies installed!"
fi
建议:
- Node >= 18
- Python 3 和 pip(用于提取图像)
步骤 1:下载并解析 PDF
支持多种输入格式:
- 本地路径:
~/Downloads/paper.pdf - 直接 PDF URL:
https://arxiv.org/pdf/1706.03762.pdf - arXiv URL:
https://arxiv.org/abs/1706.03762
步骤 1a:检查输入类型,并在输入为 URL 时下载
USER_INPUT="<user-input>"
# Check if input is a URL (starts with http:// or https://)
if [[ "$USER_INPUT" =~ ^https?:// ]]; then
# Download PDF from URL
INPUT_PATH=$(node ${CLAUDE_PLUGIN_ROOT}/skills/study/scripts/download-pdf.cjs "$USER_INPUT")
else
# Use local path directly
INPUT_PATH="$USER_INPUT"
fi
对于 URL,下载脚本将:
- 将 PDF 下载到
/tmp/claude-paper-downloads/ - 自动将 arXiv
/abs/URL 转换为 PDF URL - 验证 URL 是否指向 PDF 文件
- 返回用于处理的本地文件路径
对于本地路径,直接使用该路径,无需下载。
步骤 1b:解析 PDF
提取结构化信息:
PARSE_OUTPUT_DIR=$(mktemp -d)
node ${CLAUDE_PLUGIN_ROOT}/skills/study/scripts/parse-pdf.js \
"$INPUT_PATH" \
--output-dir "$PARSE_OUTPUT_DIR"
该命令会将简短且严格的 JSON 摘要打印到 stdout,并写入:
meta.json— 标题、作者、摘要、链接、页数和适合上下文的内容预览paper.txt— 提取的完整文本,不受 50k 预览限制
使用 paper.txt 作为生成材料的来源。根据需要搜索并阅读相关章节;当 contentTruncated 为 true 时,不要将 meta.json.content 视为论文全文。
选择 {paper-slug} 后,创建论文目录,并复制两个解析器产物以及原始 PDF:
mkdir -p ~/claude-papers/papers/{paper-slug}
cp "<metaPath-from-parser-output>" ~/claude-papers/papers/{paper-slug}/meta.json
cp "<fullTextPath-from-parser-output>" ~/claude-papers/papers/{paper-slug}/paper.txt
cp "$INPUT_PATH" ~/claude-papers/papers/{paper-slug}/paper.pdf
在步骤 2.5 中生成恰好 2 个标签,并将其添加到保存的 meta.json 中。
回退方案: 如果结构化解析失败,则提取原始文本,并以结构降级模式继续。
步骤 2:生成材料前评估论文
生成任何文件之前,评估:
-
难度级别
- 入门
- 中级
- 高级
- 高度理论化
-
论文类型
- 理论研究
- 基于架构
- 以实证为主
- 系统设计
- 综述
-
方法复杂度
- 简单流程
- 多阶段训练
- 新颖架构
- 大量数学推导
此评估将决定:
- 是否创建 method.md
- 是否创建 .ipynb
- 讲解深度
- 代码演示复杂度
步骤 2.5:生成恰好 2 个语义标签(必需)
生成文件之前,根据对论文语义的理解推断出恰好 2 个标签。
规则:
- 生成恰好 2 个标签,不多不少
- 标签必须各不相同
- 每个标签应简短(1-3 个词)
- 避免使用通用标签:
paper、research、ai、ml - 优先选择一个表示问题/领域的标签,以及一个表示方法/核心思想的标签
示例:
machine translation、self-attention3d detection、bev transformerprotein folding、structure prediction
将这 2 个标签保存到以下两个位置:
~/claude-papers/papers/{paper-slug}/meta.json中的tags~/claude-papers/index.json条目中的tags
步骤 3:生成核心学习材料
创建文件夹:
~/claude-papers/papers/{paper-slug}/
必需文件
README.md
- 论文内容简介(一段)
- 难度级别
- 材料导航方式
- 关键要点
- 预计学习时间
- 文件夹结构概览
summary.md
- 背景
- 问题陈述
- 主要贡献
- 关键结果
- 定量指标
insights.md(最重要)
- 用浅显的语言解释核心思想
- 解释其有效原因
- 介绍其带来的概念转变
- 权衡
- 局限性
- 与既有工作的比较
- 实际影响
qa.md
15 个问题:
- 5 个基础问题
- 5 个中级问题
- 5 个高级问题
使用以下格式:
### Question
<details>
<summary>Answer</summary>
Detailed explanation.
</details>
---
条件文件
method.md(推荐用于大多数论文)
包括:
- 组件拆解
- 算法流程
- 架构图(必要时使用 ASCII)
- 分步说明
- 伪代码(与说明保持平衡)
- 实现中的陷阱
- 超参数敏感性
- 复现风险
mental-model.md(推荐用于大多数论文)
- 这是哪一类问题?
- 假设读者具备哪些先验知识?
- 这项工作如何融入更广泛的研究版图?
- 如何在思维上对这项工作进行分类?
reflection.md(可选,自动生成)
- 如果要扩展这篇论文,我会怎么做
- 还有哪些未解决的问题
- 哪些假设较为脆弱
- 它在实践中可能会在哪些方面失败
第 4 步:代码演示(必需)
至少创建一个可运行的演示。
所有代码演示都必须放在:
~/claude-papers/papers/{paper-slug}/code/
先创建代码目录:
mkdir -p ~/claude-papers/papers/{paper-slug}/code
指南:
- 自包含
- 可独立运行
- 添加有助于学习的注释(解释原因)
- 聚焦核心贡献
- 清晰优先于完整
可选类型:
- 简化的概念实现
- 可视化脚本
- 最小化架构演示
- 交互式笔记本(.ipynb)
使用描述性名称:
- model_demo.py
- vectorized_planning_demo.py
- contrastive_loss_visualization.ipynb
避免使用通用名称。
第 5 步:生成交互式 HTML 探索器
创建一个独立的 HTML 文件,用于交互式探索论文的核心概念。
输出路径:
~/claude-papers/papers/{paper-slug}/index.html
要求
- 单个 HTML 文件,所有 CSS/JS 均内嵌,且不依赖任何外部资源
- 使用论文中的真实数据(实际指标、超参数、比较结果)——绝不编造数字
- 必须能在沙盒 iframe 中运行(不进行外部 fetch,不使用 localStorage)
指南
选择最适合论文的交互模式,例如架构图、参数探索器、结果仪表板、公式拆解、比较矩阵等。根据论文内容决定格式,不要强行套用固定布局,并聚焦论文的核心思想。
每个交互控件(滑块、开关、下拉菜单)都应能直观地改变可视化内容。在交互元素旁添加简短说明,帮助读者理解概念。
第 6 步:提取图片
mkdir -p ~/claude-papers/papers/{paper-slug}/images
python3 ${CLAUDE_PLUGIN_ROOT}/skills/study/scripts/extract-images.py \
paper.pdf \
~/claude-papers/papers/{paper-slug}/images
为关键图片使用描述性名称:
- architecture.png
- training_pipeline.png
- results_table.png
第 7 步:更新索引
至关重要:先读取现有的 index.json,再追加新论文。绝不要覆盖整个文件。
如果 index.json 不存在,则创建:
{"papers": []}
将新条目追加到 papers 数组中:
{
"id": "paper-slug",
"title": "Paper Title",
"slug": "paper-slug",
"authors": ["Author 1", "Author 2"],
"abstract": "Paper abstract...",
"year": 2024,
"date": "2024-01-01",
"tags": ["tag-1", "tag-2"],
"githubLinks": ["https://github.com/..."],
"codeLinks": ["https://..."]
}
重要:index.json 文件必须位于:
~/claude-papers/index.json
第 8 步:重新启动 Web UI
调用:
/claude-paper:webui
第 9 步:交互式深度学习循环
生成所有文件后:
向用户展示:
-
询问:
- 哪些内容仍不清楚?
- 是否需要更深入的数学拆解?
- 是否需要实现层面的分析?
- 是否想与另一篇论文进行比较?
-
允许用户:
- 提出更深入的问题
- 总结自己的理解
- 提出新想法
如果用户提出更深入的问题:
在同一文件夹中生成一个新文件:
示例:
- deep-dive-contrastive-loss.md
- math-derivation-breakdown.md
- comparison-with-transformers.md
- extension-ideas.md
如果用户提供自己的总结:
- 完善总结。
- 改进结构。
- 保存为:
- user-summary-v1.md
如果进行了多轮迭代:
- user-summary-v2.md
如果用户希望进行结构化梳理:
创建:
- consolidated-notes.md
- study-session-1.md
- exam-review.md
这样,论文文件夹就会成为一个不断扩展的知识节点。