mcpField
S
study

study

github.com/alaliqing生产力35343 次安装11 周前更新
代码仓库

关于 study

study 是一项论文学习 Skill,可将 PDF 转为结构化学习材料、可运行的代码示例和交互式 HTML 探索页,适合希望深入理解论文概念与研究内容的读者。支持本地 PDF、直接 PDF 链接和 arXiv 链接。

主要功能

  1. 01下载并解析 PDF
  2. 02生成结构化论文学习笔记
  3. 03创建题集与代码示例
  4. 04制作单文件交互式 HTML 页面
  5. 05整理论文索引并提取图像

适用场景

  1. 01根据研究论文 PDF 创建学习材料
  2. 02交互探索论文的方法与结果
  3. 03为论文概念制作可运行示例
  4. 04维护可检索的已读论文集合

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alaliqing/claude-paper --skill study

安装后在 Claude Code 中输入/study确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

scripts/
download-pdf.cjs
extract-images.py
parse-pdf-core.js
parse-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:生成材料前评估论文

生成任何文件之前,评估:

  1. 难度级别

    • 入门
    • 中级
    • 高级
    • 高度理论化
  2. 论文类型

    • 理论研究
    • 基于架构
    • 以实证为主
    • 系统设计
    • 综述
  3. 方法复杂度

    • 简单流程
    • 多阶段训练
    • 新颖架构
    • 大量数学推导

此评估将决定:

  • 是否创建 method.md
  • 是否创建 .ipynb
  • 讲解深度
  • 代码演示复杂度

步骤 2.5:生成恰好 2 个语义标签(必需)

生成文件之前,根据对论文语义的理解推断出恰好 2 个标签。

规则:

  • 生成恰好 2 个标签,不多不少
  • 标签必须各不相同
  • 每个标签应简短(1-3 个词)
  • 避免使用通用标签:paper、research、ai、ml
  • 优先选择一个表示问题/领域的标签,以及一个表示方法/核心思想的标签

示例:

  • machine translation、self-attention
  • 3d detection、bev transformer
  • protein 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 步:交互式深度学习循环

生成所有文件后:

向用户展示:

  1. 询问:

    • 哪些内容仍不清楚?
    • 是否需要更深入的数学拆解?
    • 是否需要实现层面的分析?
    • 是否想与另一篇论文进行比较?
  2. 允许用户:

    • 提出更深入的问题
    • 总结自己的理解
    • 提出新想法

如果用户提出更深入的问题:

在同一文件夹中生成一个新文件:

示例:

  • deep-dive-contrastive-loss.md
  • math-derivation-breakdown.md
  • comparison-with-transformers.md
  • extension-ideas.md

如果用户提供自己的总结:

  1. 完善总结。
  2. 改进结构。
  3. 保存为:
  • user-summary-v1.md

如果进行了多轮迭代:

  • user-summary-v2.md

如果用户希望进行结构化梳理:

创建:

  • consolidated-notes.md
  • study-session-1.md
  • exam-review.md

这样,论文文件夹就会成为一个不断扩展的知识节点。


评论

支持 Markdown