alterlab-arxiv について
alterlab-arxivは、arXivの公開Atom APIでプレプリントを検索・取得するスキルで、研究者や文献レビュー作業向けです。著者・カテゴリ・IDによる検索、PDFのダウンロードに対応し、結果を構造化JSONで返します。
主な機能
- 01キーワード・フィールドによる論文検索
- 02著者またはカテゴリによる絞り込み
- 03arXiv IDによる論文検索
- 04個別・一括PDFダウンロード
- 05論文メタデータのJSON出力
活用シーン
- 01機械学習分野のプレプリント検索
- 02著者の新着論文の追跡
- 03カテゴリ別の新規投稿の確認
- 04文献レビュー用データセットの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-arxivインストール後、Claude Code で/alterlab-arxivを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/api_reference.mdscripts/arxiv_search.py詳細
arXiv データベース
概要
このスキルは、arXiv.org の公開 Atom API を介してプレプリントを検索・取得するための Python ツールを提供します。キーワード検索、著者検索、カテゴリによる絞り込み、arXiv ID の検索、PDF のダウンロードに対応しています。検索結果は、タイトル、要旨、著者、カテゴリ、リンクを含む構造化 JSON として返されます。
このスクリプトでは PEP 723 のインラインヘッダーを使って requests 依存関係を宣言しているため、最も確実な実行方法は uv run scripts/arxiv_search.py ... です(依存関係が自動的に解決されます)。以下の python scripts/arxiv_search.py ... の例は、requests がすでにインストールされている場合に動作します。
このスキルを使用する場面
以下の場合にこのスキルを使用してください:
- CS、ML、AI、物理学、数学、統計学、q-bio、q-fin、経済学のプレプリントを検索する
- arXiv ID(例:
2309.10668)で特定の論文を検索する - 著者の最近のプレプリントを追跡する
- arXiv のカテゴリ(例:
cs.LG、cs.CL、stat.ML)で論文を絞り込む - 全文分析のために PDF をダウンロードする
- AI/ML 研究のための文献レビュー用データセットを構築する
- あるサブ分野の新着投稿を監視する
使用しない場面
| シナリオ | 代わりに使用 |
|---|---|
| 査読済みで MeSH にインデックスされた生物医学系ジャーナル論文 | alterlab-pubmed |
| ライフサイエンス分野のプレプリント(bioRxiv / medRxiv) | alterlab-biorxiv |
| 被引用数、被引用推移、機関や研究室の研究成果の追跡 | alterlab-openalex |
| 自身のプレプリントを arXiv に投稿する(カテゴリ、ライセンス、バージョン管理) | alterlab-preprint-deposition |
| PRISMA スクリーニングを伴う複数データベースのシステマティックレビュー | alterlab-literature-review |
主な検索機能
1. キーワード検索
タイトル、要旨、またはすべてのフィールドを対象に、キーワードで論文を検索します。
python scripts/arxiv_search.py \
--keywords "sparse autoencoders" "mechanistic interpretability" \
--max-results 20 \
--output results.json
カテゴリによる絞り込み:
python scripts/arxiv_search.py \
--keywords "transformer" "attention mechanism" \
--category cs.LG \
--max-results 50 \
--output transformer_papers.json
特定のフィールドを検索:
# Title only
python scripts/arxiv_search.py \
--keywords "GRPO" \
--search-field ti \
--max-results 10
# Abstract only
python scripts/arxiv_search.py \
--keywords "reward model" "RLHF" \
--search-field abs \
--max-results 30
2. 著者検索
au: が照合するのは著者名のみです。API では所属機関による絞り込みができないため、au:anthropic や au:deepmind では何も返されないか、組織が団体著者として記載されている論文のみが返されます。研究室を追跡するには、そのメンバーの名前で検索してください。機関全体を追跡するには、alterlab-openalex(機関フィルター)を使用してください。
python scripts/arxiv_search.py \
--author "Yoshua Bengio" \
--max-results 50 \
--output bengio_papers.json
python scripts/arxiv_search.py \
--author "Ilya Sutskever" \
--category cs.LG \
--max-results 20
3. arXiv ID の検索
特定の論文のメタデータを取得します:
python scripts/arxiv_search.py \
--ids 2309.10668 2406.04093 2310.01405 \
--output sae_papers.json
arXiv の完全な URL も使用できます:
python scripts/arxiv_search.py \
--ids "https://arxiv.org/abs/2309.10668"
4. カテゴリの参照
カテゴリ内の最近の論文を一覧表示します:
python scripts/arxiv_search.py \
--category cs.AI \
--max-results 100 \
--sort-by submittedDate \
--output recent_cs_ai.json
5. PDF のダウンロード
python scripts/arxiv_search.py \
--ids 2309.10668 \
--download-pdf papers/
検索結果から一括ダウンロード:
import json
from scripts.arxiv_search import ArxivSearcher
searcher = ArxivSearcher()
# Search first
results = searcher.search(query="ti:sparse autoencoder", max_results=5)
# Download all
for paper in results:
arxiv_id = paper["arxiv_id"]
searcher.download_pdf(arxiv_id, f"papers/{arxiv_id.replace('/', '_')}.pdf")
arXiv カテゴリ
コンピューターサイエンス(cs.*)
| カテゴリ | 説明 |
|---|---|
cs.AI | 人工知能 |
cs.CL | 計算と言語(NLP) |
cs.CV | コンピュータービジョン |
cs.LG | 機械学習 |
cs.NE | ニューラルコンピューティングと進化計算 |
cs.RO | ロボティクス |
cs.CR | 暗号とセキュリティ |
cs.DS | データ構造とアルゴリズム |
cs.IR | 情報検索 |
cs.SE | ソフトウェア工学 |
統計学・数学
| カテゴリ | 説明 |
|---|---|
stat.ML | 機械学習(統計学) |
stat.ME | 方法論 |
math.OC | 最適化と制御 |
math.ST | 統計理論 |
その他の関連カテゴリ
| カテゴリ | 説明 |
|---|---|
q-bio.BM | 生体分子 |
q-bio.GN | ゲノミクス |
q-bio.QM | 定量的方法 |
q-fin.ST | 金融統計学 |
eess.SP | 信号処理 |
physics.comp-ph | 計算物理学 |
全カテゴリ一覧:references/api_reference.mdを参照してください。
クエリ構文
arXiv API では、フィールドプレフィックスとブール演算子を組み合わせた検索を使用します。
フィールドプレフィックス:
ti:- タイトルau:- 著者abs:- 要約cat:- カテゴリーall:- すべてのフィールド(デフォルト)co:- コメントjr:- ジャーナル参照id:- arXiv ID
ブール演算子(大文字で指定する必要があります):
ti:transformer AND abs:attention
au:bengio OR au:lecun
cat:cs.LG ANDNOT cat:cs.CV
括弧によるグループ化:
(ti:sparse AND ti:autoencoder) AND cat:cs.LG
au:"Chris Olah" AND (abs:interpretability OR abs:alignment)
日付範囲(GMT、YYYYMMDDTTTT、両端を含む):
cat:cs.LG AND submittedDate:[202501010000 TO 202501312359]
検証(2025年11月のバックエンド移行以降): 括弧の不一致、au: のような空のプレフィックス、フィールド構文の入れ子など、形式が不正なクエリは、空の 200 ではなく、Atom エラーエントリー(<summary>Invalid query string: …</summary>)を伴う HTTP 400 を返します。裸の検索語には自動でプレフィックスが付与されます(pineapple → all:pineapple)。この書き換えを無効にするには raw=1 を追加してください。スクリプトは、これらのエラーを結果 0 件として報告するのではなく、そのまま表示します。
例:
from scripts.arxiv_search import ArxivSearcher
searcher = ArxivSearcher()
# Papers about SAEs in ML
results = searcher.search(
query="ti:sparse autoencoder AND cat:cs.LG",
max_results=50,
sort_by="submittedDate"
)
# Specific author in specific field
results = searcher.search(
query='au:"Neel Nanda" AND cat:cs.LG',
max_results=20
)
# Complex boolean query
results = searcher.search(
query="(abs:RLHF OR abs:reinforcement learning from human feedback) AND cat:cs.CL",
max_results=100
)
出力形式
すべての検索結果は、構造化された JSON で返されます。
{
"query": "id_list:2309.10668",
"result_count": 1,
"results": [
{
"arxiv_id": "2309.10668",
"title": "Language Modeling Is Compression",
"authors": ["Grégoire Delétang", "Anian Ruoss", "..."],
"abstract": "Full abstract text...",
"categories": ["cs.LG", "cs.AI", "cs.CL", "cs.IT"],
"primary_category": "cs.LG",
"published": "2023-09-19T14:50:38Z",
"updated": "2024-03-18T23:15:47Z",
"doi": "",
"pdf_url": "https://arxiv.org/pdf/2309.10668v2",
"abs_url": "https://arxiv.org/abs/2309.10668v2",
"comment": "",
"journal_ref": ""
}
]
}
よくある使用パターン
文献レビューのワークフロー
from scripts.arxiv_search import ArxivSearcher
import json
searcher = ArxivSearcher()
# 1. Broad search
results = searcher.search(
query="abs:mechanistic interpretability AND cat:cs.LG",
max_results=200,
sort_by="submittedDate"
)
# 2. Save results
with open("interp_papers.json", "w") as f:
json.dump({"result_count": len(results), "results": results}, f, indent=2)
# 3. Filter and analyze
import pandas as pd
df = pd.DataFrame(results)
print(f"Total papers: {len(df)}")
print(f"Date range: {df['published'].min()} to {df['published'].max()}")
print(f"\nTop categories:")
print(df["primary_category"].value_counts().head(10))
研究グループを追跡する
arXiv には所属機関検索がないため、メンバーの名前を使ってグループを追跡してください(または alterlab-openalex に切り替え、機関 ID で論文を絞り込んでください)。
searcher = ArxivSearcher()
members = ["Chris Olah", "Neel Nanda", "Tom Henighan"] # the group's authors
query = "(" + " OR ".join(f'au:"{m}"' for m in members) + ") AND (cat:cs.LG OR cat:cs.CL)"
results = searcher.search(query=query, max_results=50, sort_by="submittedDate")
print(f"{len(results)} recent papers")
新着投稿を監視する
searcher = ArxivSearcher()
# Most recent ML papers
results = searcher.search(
query="cat:cs.LG",
max_results=50,
sort_by="submittedDate",
sort_order="descending"
)
for paper in results[:10]:
print(f"[{paper['published'][:10]}] {paper['title']}")
print(f" {paper['abs_url']}\n")
Python API
from scripts.arxiv_search import ArxivSearcher
searcher = ArxivSearcher(verbose=True)
# Free-form query (uses arXiv query syntax)
results = searcher.search(query="...", max_results=50)
# Lookup by ID
papers = searcher.get_by_ids(["2309.10668", "2406.04093"])
# Download PDF
searcher.download_pdf("2309.10668", "paper.pdf")
# Build query from components
query = ArxivSearcher.build_query(
title="sparse autoencoder",
author="anthropic",
category="cs.LG"
)
results = searcher.search(query=query, max_results=20)
ベストプラクティス
- レート制限を守る:API は呼び出し間に 3 秒の遅延を設けるよう求めています。スクリプトがこれを自動的に処理します。
- カテゴリーで絞り込む:ノイズを大幅に減らせます。ほとんどの ML 論文は
cs.LGにあります。 - 結果をキャッシュする:再取得を避けるため、JSON に保存します。
- 最近の論文には
sort_by=submittedDate、キーワード検索にはrelevanceを使用します。 - 1 回の呼び出しあたり最大 2000 件:arXiv は 1 回のリクエストを 2000 件までに制限しています(スクリプトもこの上限に調整します)。それ以上の場合は、
startパラメーターでページネーションしてください。合計上限は 30000 件です。 - arXiv ID:プログラムコードでは、完全な URL ではなく、ID のみ(
2309.10668)を使用します。 alterlab-openalexと組み合わせる:arXiv が提供していない被引用数や影響指標を取得できます。
制限事項
- 全文検索には対応していません:メタデータ(タイトル、要約、著者、コメント)のみを検索します
- 引用データはありません:引用情報には
alterlab-openalexまたは Semantic Scholar を使用してください - 所属機関検索には対応していません:
au:は著者名のみを照合します - 1 回の呼び出しあたり最大 2000 件:それ以上の場合はページネーション(
start)を使用してください。合計上限は 30000 件です。 - レート制限があります:3 秒あたり約 1 リクエストが推奨されます
- Atom XML レスポンス:スクリプトがこれらを自動的に JSON に解析します
- 検索の遅延:新しい論文が API の検索結果に表示されるまで、数時間かかることがあります
- 厳格なクエリ検証:構文が無効な場合、エントリーにエラーを含む HTTP 400 が返されます(「クエリ構文」を参照)
リファレンスドキュメント
- API リファレンス:エンドポイントの仕様、すべてのカテゴリー、レスポンススキーマについては、references/api_reference.md を参照してください