mcpField
S
study

study

github.com/alaliqing生産性35343 回インストール11 週間前に更新
リポジトリ

study について

studyは、PDFから体系的な学習資料、実行可能なコードデモ、インタラクティブなHTMLページを作成する論文学習スキルです。論文の概念や研究内容を深く理解したい読者向けで、ローカルPDF、PDFのURL、arXivのURLに対応します。

主な機能

  1. 01PDFのダウンロードと解析
  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
  • 問題/ドメインを表すタグを 1 つ、手法/中核となるアイデアを表すタグを 1 つ選ぶのがおすすめです

例:

  • 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
  • 論文の概要(1 段落)
  • 難易度
  • 資料の参照方法
  • 主な要点
  • 想定学習時間
  • フォルダー構成の概要

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(任意、自動生成)
  • この論文を発展させるとしたら
  • 未解決の問題は何か
  • どの前提が脆弱か
  • 実際の場面でどこがうまくいかない可能性があるか

Step 4: コードデモの作成(必須)

少なくとも 1 つ、実行可能なデモを作成する必要があります。

すべてのコードデモは以下に配置してください:

~/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

一般的すぎる名前は避けてください。


Step 5: インタラクティブ HTML エクスプローラーの生成

論文の核となる概念をインタラクティブに探索できる、自己完結型の HTML ファイルを 1 つ作成します。

出力先:

~/claude-papers/papers/{paper-slug}/index.html

要件

  • CSS と JS をすべてインラインで記述した、外部依存関係のない単一の HTML ファイル
  • 論文の実データ(実際の指標、ハイパーパラメーター、比較結果)を使用する — 数値を創作しない
  • サンドボックス化された iframe で動作する(外部への fetch や localStorage を使用しない)

ガイドライン

論文に最適なインタラクション形式を選びます。アーキテクチャ図、パラメーターエクスプローラー、結果ダッシュボード、数式の内訳、比較マトリックスなどが考えられます。固定のレイアウトを無理に当てはめるのではなく、論文の内容に沿った形式にし、核となるアイデアに焦点を当ててください。

スライダー、切り替え、ドロップダウンなど、すべてのインタラクティブなコントロールを操作したときに、可視化が目に見えて変化するようにします。概念を理解するのに役立つ簡潔な説明文を、インタラクティブ要素のそばに含めてください。


Step 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

Step 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

Step 8: Web UI の再起動

以下を実行します:

/claude-paper:webui

Step 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

これにより、論文のフォルダーが成長するナレッジノードになります。


コメント