scholar-search について
PythonスクリプトでOpenAlexの学術文献を検索するリサーチスキルです。論文や会議録、ジャーナル記事の検索に使え、引用数、掲載先、再構成された要旨、外部IDを含む結果を年や掲載先で絞り込めます。
主な機能
- 01OpenAlexの学術文献を検索
- 02構造化JSONと再構成要旨を出力
- 03年、掲載先、概念で絞り込み
- 04引用数の下限とオープンアクセスで絞り込み
活用シーン
- 01テーマに関する学術論文を検索
- 02新しい研究や被引用数の多い研究を選別
- 03会議やジャーナル別に文献を検索
- 04文献レビュー候補を収集
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dsebastien/ ai-skill-scholar --skill scholar-searchインストール後、Claude Code で/scholar-searchを入力して読み込まれたか確認します。
同梱ファイルscripts/scholar_search.py
詳細
Scholar Search
250M 件以上の学術論文を収録するオープンカタログ、OpenAlex を検索して、主要なあらゆる出版先(arXiv だけではありません)に掲載された論文を探します。引用数、出版先、再構成された要旨、arXiv/DOI/PubMed へのリンクを示す外部 ID などを含む、構造化された JSON を返します。
OpenAlex を選ぶ理由(Semantic Scholar ではなく)
どちらも、おおむね同じデータをカバーしています。OpenAlex が優れている点は次のとおりです。
- API キーが不要です。 無料の公開エンドポイントをそのまま利用できます。
- レート制限に余裕があります。 匿名で 10 req/sec、ポライトプールではさらに高い制限が適用されます。
- 大規模に実用的に利用できます。 Semantic Scholar の公開プランは共有されており、429 エラーが頻繁に発生します。
arxiv-search より優れている点
| arxiv-search | scholar-search | |
|---|---|---|
| プレプリント | はい | はい |
| 学会(ICLR、NeurIPS、ACL など) | いいえ | はい |
| 学術誌 | いいえ | はい |
| 書籍、章 | いいえ | はい |
| 引用数 | いいえ | はい |
| 出版先による絞り込み | いいえ | はい |
| 概念/トピックのタグ | いいえ | はい |
幅広いレビューを行う場合は、literature-review 経由で両方を併用してください。
使い方
# Basic query
python3 scripts/scholar_search.py "mechanistic interpretability" --limit 25
# Year + venue filter
python3 scripts/scholar_search.py "sparse autoencoders" \
--year 2024-2026 --venue "ICLR" --limit 30
# Citation floor (quality filter)
python3 scripts/scholar_search.py "scaling laws" --min-citations 50 --limit 20
# Open-access only (when you want readable papers)
python3 scripts/scholar_search.py "mixture of experts" --open-access --limit 20
# Concept filter (uses OpenAlex's topic taxonomy)
python3 scripts/scholar_search.py "alignment" \
--concepts "Machine learning" --limit 20
フラグ:
--limit N— 結果の最大数(1~200、デフォルトは 25)--year YYYYまたはYYYY-YYYY— 出版年で絞り込み--venue NAME— 出版先名の部分一致(大文字・小文字を区別しません)--concepts NAME— OpenAlex の概念(例:Machine learning、Computer vision)--min-citations N— 引用数の最低値--open-access— 公開 PDF がある論文のみ
出力 JSON の形式(結果ごと):
{
"paper_id": "W4395065622",
"openalex_url": "https://openalex.org/W4395065622",
"title": "...",
"authors": ["Alice", "Bob"],
"year": 2024,
"venue": "ICLR 2024",
"work_type": "article",
"citation_count": 150,
"reference_count": 42,
"abstract": "...",
"concepts": ["Interpretability", "Machine learning"],
"arxiv_id": "2404.14082",
"doi": "10.48550/arxiv.2404.14082",
"is_open_access": true,
"open_access_pdf": "https://arxiv.org/pdf/2404.14082",
"landing_url": "http://arxiv.org/abs/2404.14082"
}
ポライトプール(任意)
頻繁に利用する場合は、メールアドレスを設定して OpenAlex のポライトプールに参加してください。
export OPENALEX_EMAIL="[email protected]"
優先ルーティングと、実質的に高いレート制限を利用できます。登録は不要です。トラフィックに問題が発生した場合に連絡できるよう、有効なメールアドレスを設定してください。
ワークフロー
1. 意図を解析する
- 「X に関する論文を探して」→ 基本的なクエリ
- 「X に関する引用数の多い論文」→
--min-citations 50+を追加 - 「X に関する最近の論文」→
--year 2024-2026 - 「出版先 Y の論文」→
--venue "ICLR" - 「オープンアクセスのみ」→
--open-access
2. 検索を実行する
デフォルトの --limit は 25 です。幅広いレビューでは 50~100 に増やしてください。OpenAlex は高速なので、より多くの結果を取得しても問題ありません。
3. 結果を提示する
コンパクトな表に、引用数 | 年 | 出版先 | 著者 | タイトル | 要旨の最初の一文をまとめます。ユーザーが新しさを重視している場合を除き、引用数の多い順に並べてください。
OpenAlex には Semantic Scholar にあったような TLDR フィールドがありません。代わりに、スクリーニングを手早く行えるよう、再構成された要旨の最初の約 50 語を使用してください。
4. 次のステップを案内する
- 「論文 X を分析して」→ arxiv-analyze に引き継ぐ(
arxiv_idがある場合)、またはopen_access_pdfを直接取得する - 「これを引用しているのは?」/「これは何を引用している?」→ scholar-citations に引き継ぐ
- 「文献レビュー」→ literature-review に引き継ぐ
トークン効率
- 25 件の結果で約 8K~15K トークンです(大半を要旨が占めます)。スクリーニングのみを行う場合は、将来追加されるフラグで
--selectを上書きしてください。 - OpenAlex の要旨はサーバー側で「転置インデックス」形式になっています。このスクリプトは処理の過程で通常の文章に再構成します。
レート制限
- 匿名: 共有プール全体で 10 req/sec、1 日あたり 100k
- ポライトプール(
OPENALEX_EMAILを設定):制限は同じですが、優先度が高く、スロットリングが発生しにくくなります
スクリプトはプロセスごとに 5 req/sec で自動的にリクエストを制限します(~/.cache/ai-skill-scholar/ 内のクールダウンファイルを介して共有)。
厳守事項
- キーの詮索は禁止: API キーを要求しないでください。OpenAlex に API キーはありません。
OPENALEX_EMAILは任意であり、設定方法も記載されています。 - 過剰なリクエストは禁止: 5 req/sec の制限は不可欠です。削除しないでください。
- 要旨がない場合があります: OpenAlex に要旨が常にあるとは限りません。捏造せず、空として報告してください。
要件
- Python 3.11 以上(標準ライブラリのみ)
api.openalex.orgへのインターネット接続- 任意:ポライトプールを利用する場合は
OPENALEX_EMAIL環境変数