mcpField
A
alterlab-citation-graph

alterlab-citation-graph

github.com/alterlab-ieu生産性7863 回インストール5 週間前に更新
リポジトリ

alterlab-citation-graph について

alterlab-citation-graphは、OpenAlexを使って1件以上の起点となる文献を中心に引用・共引用グラフを構築します。関連文献を探索し、順位付きの結果をGraphMLとJSONで分析・可視化用に出力できます。

主な機能

  1. 01DOI、OpenAlexの作品ID、arXivを起点に指定
  2. 02参考文献と被引用作品を両方向に展開
  3. 03複数ホップの引用ネットワークを探索
  4. 04共引用のつながりで作品を順位付け
  5. 05GraphMLとJSONにエクスポート

活用シーン

  1. 01重要論文を中心に研究文献をマッピング
  2. 02分野内で共引用の多い作品を発見
  3. 03レビュー用に引用を前後方向へたどる
  4. 04可視化・分析用に引用ネットワークを出力

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-citation-graph

インストール後、Claude Code で/alterlab-citation-graphを入力して読み込まれたか確認します。

同梱ファイルevals/evals.jsonscripts/build_graph.py

詳細

Citation Graph — ResearchRabbit の無料の代替ツール

概要

ResearchRabbit や Connected Papers に代わる、サブスクリプション不要の無料ツールです。 シード DOI(または複数のシード)を指定すると、このスキルは OpenAlex の引用ネットワークを双方向にたどり、関連する文献の引用/共引用グラフを構築します。

  • 後方エッジ — 各シードが引用している論文(その referenced_works)。
  • 前方エッジ — 各シードを引用している論文(その cited_by セット)。

続いて、共引用の強さで見つかった近傍をランキングします。候補となる論文が、共有する参考文献、共有する引用者、シードへの直接リンクを通じて、シード論文のうちいくつとつながっているかを基準にします。これにより、ResearchRabbit の「Similar Work」パネルと同様に、トピックの中心となる論文を提示します。グラフ全体は GraphML(Gephi、Cytoscape、yEd、networkx で開けます)と JSON(後続のコードで使用)としてエクスポートされます。

OpenAlex のデータはオープン(CC0)で、この規模の利用であれば API も無料です。ただし、2026 年 2 月以降、リクエストは日次予算に対して課金され、以前の mailto「polite pool」は廃止されています。キーなしの呼び出しは IP アドレスごとに 1 日あたり 0.10 ドルを共有します。大学やクラウドのネットワークでは、その予算がすでに使い切られていることが多く、HTTP 429 が返されます。無料の API キー(OPENALEX_API_KEY。openalex.org/settings/api から取得)を使えば、自分専用の 1 日あたり 1 ドル分の予算が利用できます。通常のグラフ探索にかかる費用は 1 セント未満です。シードの検索は無料で、リスト/フィルターの呼び出し 1 回につき 0.0001 ドルです。

このスキルを使う場面

  • 開始点となる論文から文献の全体像を把握する — 「重要な論文が 1 本あります。その周辺分野を見せてください」
  • 参考文献を手作業でたどらずに、その分野の先駆的な論文や共引用の多い論文を見つける。
  • レビューのために、参考文献ネットワークをたどる(前方・後方への引用追跡)。
  • 引用マップを作成する、または手法/可視化用の図として共引用分析を行う。
  • 研究分野のつながりを可視化する — ネットワーク図を作成するために Gephi/Cytoscape にエクスポートする。

これはグラフ構築/発見ツールです。探索の起点となるシード論文が必要です。

対象外
シナリオ代わりに使うツール
シード論文のない自由形式の研究課題alterlab-research-lookup
参考文献リストの各項目が実在するかの確認/幻覚や撤回された文献の検出alterlab-citation-verifier
OpenAlex で論文、著者、機関、書誌計量学的な傾向を検索する(グラフなし)alterlab-openalex
PRISMA によるスクリーニングとバイアスリスク評価を伴うシステマティックレビューalterlab-literature-review
独自の(引用ではない)関係データの中心性分析やコミュニティ分析alterlab-sna

クイックスタート

export OPENALEX_API_KEY=...   # free at openalex.org/settings/api; recommended

# One seed DOI, default 1-hop walk, write both formats next to a basename:
uv run python scripts/build_graph.py \
    --seed 10.1038/nphys1170 \
    --out graph/seed1
# -> graph/seed1.graphml  +  graph/seed1.json
# Several seeds (DOI / OpenAlex W-id / arXiv id), deeper walk, larger ranking:
uv run python scripts/build_graph.py \
    --seed 10.1038/nphys1170 \
    --seed W2741809807 \
    --seed arXiv:2310.06825 \
    --depth 2 --per-seed 50 --top 40 \
    --out graph/transformer
# Offline smoke test (no network) — verifies the pipeline end-to-end:
uv run python scripts/build_graph.py --self-test

仕組み

  1. シードを解決します。 各 --seed は OpenAlex のセレクターに正規化されます。 使用できる形式は、DOI のみ(10.1038/nphys1170)、DOI URL、OpenAlex の論文 ID(W2741809807)、OpenAlex URL、arXiv ID(arXiv:1706.03762/1706.03762)です。
  2. 後方に展開します。 各シードの referenced_works から、seed -> reference のエッジを追加します。
  3. 前方に展開します。 filter=cites:<id> をクエリしてシードを引用している論文を見つけ、citer -> seed のエッジを追加します(--per-seed を上限とします。OpenAlex は 1 ページあたり最大 100 件を返します)。
  4. さらに探索します。 --depth N を指定すると、最初のホップで見つかった近傍に対して展開を繰り返します(N >= 2)。
  5. 共引用でランキングします。 シード以外の各ノードは shared_refs + shared_citers + direct_seed_links でスコア付けされます。これは、シードセットに対する書誌結合と共引用を表します。同点の場合は、全体の cited_by_count を使って順位を決めるため、代表的な論文が上位に表示されます。
  6. メタデータを補完します。 参考文献は W-Id のみで取得されるため、ランキングされた論文のタイトル、出版年、DOI を、バッチ処理した filter=openalex:W…|W… の呼び出し(1 回につき ID 100 件)で取得し、表を再ランキングします。
  7. エクスポートします。 <out>.graphml と <out>.json を書き出します。

オプション

フラグデフォルト意味
--seed(繰り返し指定可能)—シードとなる DOI、OpenAlex の W-id、または arXiv ID です。少なくとも 1 つ必要です。
--api-key$OPENALEX_API_KEY無料の OpenAlex キーです。Bearer ヘッダーとして送信されます。キーがシェルの履歴に残らないよう、環境変数の使用を推奨します。
--mailto—非推奨の no-op です。OpenAlex は 2026 年 2 月以降、mailto を無視します。
--depth1展開する引用ホップ数です。
--per-seed25各著作物について取得する、引用する著作物の最大数です(OpenAlex の上限は 100)。
--top25共引用ランキングテーブルのサイズです。
--outcitation_graph出力ファイルのベース名です。<out>.graphml と <out>.json を書き出します。
--sleep0.0API 呼び出し間の秒数です(OpenAlex は最大 100 リクエスト/秒を許可しています)。
--self-test—オフラインのセルフテストを実行して終了します(ネットワーク接続なし)。

出力

GraphML(<out>.graphml)— ノード属性 title、year、 doi、role(seed/reference/citation/neighbor)、および cited_by_count を持つ有向グラフです。Gephi、Cytoscape、yEd、または networkx.read_graphml で 直接開けます。

JSON(<out>.json)— スキーマ alterlab-citation-graph/1.0:

{
  "schema": "alterlab-citation-graph/1.0",
  "seeds": ["10.1038/nphys1170"],
  "node_count": 142,
  "edge_count": 318,
  "nodes": [ { "id": "W…", "title": "…", "year": 2017, "doi": "…", "role": "citation", "cited_by_count": 8123 } ],
  "edges": [ { "source": "W…", "target": "W…" } ],
  "cocitation_ranking": [
    { "id": "W…", "title": "…", "cocitation": 4, "shared_refs": 2,
      "shared_citers": 1, "direct_seed_links": 1, "cited_by_count": 8123 }
  ]
}

アクセスと制限

  • 無料キーを使用してください。 ユーザーには、チャットやコミット済みファイルにキーを貼り付けるのではなく、OPENALEX_API_KEY を設定するよう案内してください(openalex.org/settings/api)。キーがなくても、共有の IP 単位の利用枠に余裕があれば実行できます。その場合、スクリプトは注記を表示します。
  • HTTP 429 は、1 日あたりの利用枠を使い切った(UTC の午前 0 時にリセットされます)か、実行中に 100 リクエスト/秒を超えたことを意味します。スクリプトはグラフを黙って不完全な状態で書き出すのではなく、明示的なエラーで停止します。キーを追加するか、後でもう一度お試しください。
  • 探索範囲を制限してください。 --depth 2 と大きな --per-seed を組み合わせると、急速に対象が増えます(フロンティア内の各著作物につきリスト呼び出しが 1 回発生します)。--per-seed は適切な値に保ち、レート制限に達した場合は --sleep を増やしてください。
  • カバレッジに関する注意点。 OpenAlex の引用カバレッジは広範ですが、完全ではありません。非常に新しいプレプリントでは、cited_by の集合に含まれる項目が少ない場合があります。
  • arXiv のシード。 arXiv:<id> シードは、DataCite DOI(10.48550/arXiv.<id>)を介して解決されます。プレプリントが後に出版版のレコードに統合された場合、OpenAlex には出版社の DOI だけが登録されている可能性があります。その場合は、その DOI をシードとして指定してください。

関連ツール

タスクツール
ランキングから選んだ論文を Zotero に追加する(DOI → アイテム、コレクション)alterlab-pyzotero
原稿内のリンク/DOI の有効性を確認するalterlab-link-health
Gephi のデフォルト設定を超えてネットワーク図を描画またはスタイル変更するalterlab-networkx

AlterLab Academic Skills スイートの一部です。

コメント