見出し画像

【ツール紹介】AIと作ったarXiv論文サーベイツール——任意のキーワードで最新論文を自動収集してPDF化する

arXivを毎週チェックするのは地味に手間がかかる。自分の興味あるトピックの最新動向を把握したくて、Claudeとペアプログラミングしながら自動収集ツールを作った。その記録を残しておく。

まとめ

なにを作ったか

arXivの検索ページをスクレイピングして、指定したトピックの最新論文を取得し、サマリPDFと論文PDFを自動でダウンロードするPythonツールである。

最大の特徴は検索トピックをテキストファイルで自由に定義できる点である。topics.txtに1行1キーワードで書くだけで、物性物理でも機械学習でも量子情報でも、任意の分野に対応できる。分野をまたいで使い回せる汎用ツールとして設計した。

topics.txtの記述例:

  • Kondo effect

  • transformer architecture

  • quantum error correction

  • topological insulator

  • large language model

このように、分野問わず自由に組み合わせられる。自分は物性物理(近藤効果・DMFT・グリーン関数)をメインに使っているが、AIやナノテクの論文を追いたい人にもそのまま使えるはずである。

  • 出力:output/YYYYMMDD/ フォルダにサマリPDFと論文PDFを日付別に保存

  • 実行:python fetch_papers.py --num 5

以下、初めての公開リポジトリである。誰も見ていないのが少し寂しくて、自分でスターを付けてしまった・・・⭐

arXiv APIという罠

最初はarXiv公式のPython APIパッケージを使った。ところが、投稿日の新しい順にソートして取得しようとすると、なぜか2003〜2004年の論文が返ってくる。

調べると、arXiv APIの sortBy=submittedDate は内部IDベースのソートが混在しており、実質的に機能していないことがわかった。日付範囲フィルタ(submittedDate[202401010000 TO *])を試すとHTTP 500エラーが返る。

試した方法と結果をまとめると以下のようになる。

  • arXivパッケージ + SortCriterion.SubmittedDate → 2003年の論文が返る

  • submittedDateフィルタ → HTTP 500

  • lastUpdatedDateソート → やはり古い論文が混在

  • Semantic Scholar API → HTTP 429(レート制限)

  • arXiv検索ページのスクレイピング → 成功

結局、https://arxiv.org/search/ を直接スクレイピングして order=-announced_date_first パラメータで新着順取得する方法が最も確実だった。APIが信頼できないなら、人間がブラウザで見ているのと同じページを取りに行けばよい、という発想の転換である。

weasyprintとpdfkitの選択

HTMLからPDFを生成するライブラリとして最初にweasyprintを選んだが、WindowsではGTK/Pangoランタイムが別途必要で、インストールが複雑だった。

素直にpdfkit + wkhtmltopdfに切り替えたところ、あっさり動いた。wkhtmltopdf 0.12.6(with patched qt)はWindows向けにインストーラが用意されており、導入が簡単である。

コードの構成

メインスクリプト fetch_papers.py の構造は単純である。

  • FetchError / PdfError:カスタム例外クラス

  • fetch_papers():arXiv検索ページをスクレイピングして論文リストを返す

  • _parse_entry():BeautifulSoupの要素から論文メタデータを抽出

  • build_html():取得データからHTML文字列を生成

  • main():CLIエントリポイント

Claude Codeで堅牢化とコメント追加を行い、requestsのエラーを ConnectionError / Timeout / HTTPError に分けて原因が伝わるメッセージを出すようにした。

実際の出力

topics.txtに近藤効果・グリーン関数・DMFTを記述して実行すると、2026年3月時点ではUTe2のKondo共鳴に関する論文や重いフェルミオン系CeSi2の論文、fDMFT(fluctuating DMFT)やHD-DMFTの論文が並んだ。自分のバックグラウンド(DMFT+CPA)に直接関係する内容も含まれており、トピックを絞り込む効果を実感した。

topics.txtを書き換えれば翌日から全く別の分野の論文サーベイに切り替えられる。機械学習エンジニアが「attention mechanism」「diffusion model」と書いても、半導体研究者が「silicon photonics」「EUV lithography」と書いても、同じツールがそのまま動く。

プレプリントとの付き合い方

arXivは査読なしで誰でも投稿できるため、玉石混交である。このツールで取得した論文を「論文として信じる」のではなく、「釣り堀」として使うのが現実的だと思っている。

タイトルとabstractを流し読みして気になるものを見つけ、著者グループを確認し、興味があれば全文を読む。査読済み版がNature/PRLに出たら本腰を入れる。そういう使い方である。

なお、arXivは2026年3月にコーネル大学からの独立を宣言した。AI論文の急増で投稿数が50%増加し、財政的負担が増したことが背景にある。スクレイピングに依存している以上、HTML構造の変更でツールが壊れる可能性はある。当面の動作は問題ないが、将来的にはAPIの改善に期待したい。

Claude Codeとの役割分担

今回のペアプログラミングで学んだ役割分担を書いておく。

  • 設計・デバッグ・APIの罠の調査:Claude Chat

  • 堅牢化・コメント追加・リファクタリング:Claude Code

APIの挙動がおかしい原因を突き止めるのはClaude Codeには難しく、チャット形式で試行錯誤しながら進める必要があった。一方、動くコードができてから堅牢化やコメント追加を依頼するのはClaude Codeが得意だった。

AIがコードを書いても、「なぜ動かないか」を理解できる人間がいないと保守できない。実装速度が上がった分、人間に求められる理解力と判断力も上がっていると感じた。

いいなと思ったら応援しよう!