arxiv-search について
arxiv-search は、サーベイやスナップショット調査向けに arXiv 論文を収集するスキルです。オンライン検索とオフライン取り込みに対応し、後続の順位付けや引用に使える形式へ整えます。
主な機能
- 01arXiv API による論文検索
- 02CSV、JSON、JSONL の取り込みと正規化
- 03ID を使ったメタデータ補完
- 04除外語、期間、件数上限の適用
- 05JSONL と任意の CSV 索引を出力
活用シーン
- 01サーベイ用の初期論文セットを作成
- 02オフラインの論文エクスポートを正規化
- 03arXiv ID で不足フィールドを補完
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ willoscar/ research-units-pipeline-skills --skill arxiv-searchインストール後、Claude Code で/arxiv-searchを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/domain_packs/embodied_ai.jsonllm_agents.jsonreferences/domain_pack_overview.mdscripts/run.py詳細
arXiv 検索(メタデータ優先)
トリガーとルーティング
- トリガー: arXiv、arxiv、論文検索、メタデータ取得、文献検索、論文検索、メタデータの取り込み、オフラインインポート。
- 使用する場面: arXiv を情報源として、初期論文セット(survey/snapshot の Stage C1)が必要な場合(オンライン検索またはオフラインでの export インポート)。
後続のランキング、分類体系の構築、引用生成を支援できるだけのメタデータを含む初期論文セットを収集します。
オンラインの場合は、arXiv の豊富なメタデータ(categories、arxiv_id、pdf_url、published/updated など)を優先します。オフラインの場合は、export を受け取り、適切に変換します。
読み込み順序
必ず読み込むファイル:
references/domain_pack_overview.md— ドメインパックがトピック固有の動作をどのように制御するか
ドメインパック(トピックが一致した場合に読み込み):
assets/domain_packs/llm_agents.json— LLM エージェントのトピック向けの固定 ID とクエリ書き換えルール
スクリプトの境界
scripts/run.py を使用するのは、次の処理に限ります。
- arXiv API からの取得と XML の解析
- オフライン export の変換(CSV/JSON/JSONL の正規化)
id_listによるメタデータの補完
次の用途に run.py を使用しないでください。
- トピックの検出やクエリの書き換えのハードコーディング(ドメインパックを使用)
- ドメイン固有の固定論文リスト(
assets/domain_packs/に外部化)
コントラクトに基づく動作
- 幅広い検索を行うワークフローでは、ドメインパックによるクエリの書き換えがデフォルトです。
- 焦点を絞ったワークフローでは、
quality_contract.retrieval_policy.domain_pack_query_mode: explicitを設定できます。このモードでは、queries.mdのクエリリストが引き続き優先され、ドメイン パックによってトピックの焦点を置き換えてはなりません。 quality_contract.retrieval_policy.minimum_recordsは、ワークフローの未処理候補プールの下限を、厳格な品質ゲートのチェック条件にします。
入力
queries.md(キーワード、除外条件、期間)
出力
papers/papers_raw.jsonl(JSONL。1 行につき 1 論文)- 各レコードには、少なくとも
title、authors、year、url、abstractが含まれます。 - オンラインの arXiv API モードでは、レコードに役立つメタデータも含まれます:
arxiv_id、pdf_url、categories、primary_category、published、updated、doi、journal_ref、comment
- 各レコードには、少なくとも
- 利便性のためのインデックス(任意ですが、スクリプトで生成されます):
papers/papers_raw.csv
判断:オンラインとオフライン
- ネットワークに接続できる場合:arXiv API から取得します。
- 接続できない場合:ユーザーが提供する export(CSV/JSON/JSONL)をインポートし、フィールドを正規化します。
- ハイブリッド:オフラインでインポートした後にネットワークを利用できるようになった場合は、
--enrich-metadataまたはqueries.mdのenrich_metadata: trueを使用して、arXiv のid_list経由で不足フィールド(abstract/authors/categories)を補完できます。
ワークフロー(ヒューリスティック)
queries.mdを読み、具体的なクエリ文字列に展開します。- オンラインで検索結果を取得するか、オフラインで export をインポートします。
- すべてのレコードを正規化し、少なくとも次の項目を含めます。
title、authors(配列)、year、url、abstract
- この段階では対象を幅広く保ちます。重複排除とランキングは次の段階で行います。
- 指定されている場合は、期間と
max_resultsを適用します。
品質チェックリスト
-
papers/papers_raw.jsonlが存在する。 - 各行が有効な JSON であり、
title、authors、year、urlが含まれている。
副作用
- 許可:
papers/papers_raw.jsonlの作成・上書き、STATUS.mdへのメモの追記。 - 禁止:執筆が承認される前に、
output/に文章のセクションを書き込むこと。
スクリプト
クイックスタート
uv run python .codex/skills/arxiv-search/scripts/run.py --help- オンライン:
uv run python .codex/skills/arxiv-search/scripts/run.py --workspace <workspace> --query "<query>" --max-results 200 - オフラインインポート:
uv run python .codex/skills/arxiv-search/scripts/run.py --workspace <workspace> --input <export.csv|json|jsonl>
すべてのオプション
--query <q>:複数回指定可能。複数のクエリの結果を統合します。--exclude <term>:複数回指定可能。取得後に除外条件を適用します。--max-results <n>:取得件数の上限--input <export.*>:オフラインモード(CSV/JSON/JSONL)--enrich-metadata:arXiv のid_list経由で可能な範囲でメタデータを補完します(ネットワーク接続が必要)。queries.mdでは、keywords、exclude、time window、max_results、enrich_metadataも指定できます。
使用例
- オンライン(複数クエリ+除外語):
uv run python .codex/skills/arxiv-search/scripts/run.py --workspace <workspace> --query "LLM agent" --query "tool use" --exclude "survey" --max-results 300
- arXiv ID を指定して論文を取得(
id_listによる直接取得):uv run python .codex/skills/arxiv-search/scripts/run.py --workspace <workspace> --query 2509.02547 --max-results 1
- オフラインで自動検出(フラグなし):
papers/import.csv(または.json/.jsonl)をワークスペース内に配置してから、次を実行します:uv run python .codex/skills/arxiv-search/scripts/run.py --workspace <workspace>
- オフラインでのインポート+期間指定(
queries.md経由):- time window: { from: 2022, to: 2025 }を設定してから、通常どおりオフラインインポートを実行します
トラブルシューティング
よくある問題
問題:papers/papers_raw.jsonl が空です
症状:
- スクリプトが「No results returned …」と表示して終了するか、出力ファイルが空です。
原因:
- ネットワークがブロックされています(オンラインモード)。
- クエリの範囲が狭すぎるか、
queries.mdが空です。
解決策:
- オフラインインポートを使用します。
papers/import.csv|json|jsonlをワークスペースに配置するか、--inputを渡します。 - キーワードの範囲を広げ、
queries.mdの除外語を減らします。 --queryを明示して実行し、パーサーが正常に動作することを確認します。
問題:オフラインインポートのレコードにフィールドが不足しています
症状:
- レコードに
authors/year/abstract/urlがなく、後続のステップが失敗します。
原因:
- エクスポートの列が想定されるフィールドと一致していません。上流のエクスポートが不完全です。
解決策:
- エクスポートに少なくとも
title、authors、year、url、abstractが含まれていることを確認します。 - 後からネットワークを利用できる場合は、
--enrich-metadataを使って不足しているフィールドを補完します(可能な範囲で実施)。
復旧チェックリスト
-
queries.mdに空でないkeywordsがあることを確認します(または--queryを渡します)。 - オフラインの場合:ワークスペースに
papers/import.*があることを確認して、再実行します。 - JSONL の行を 3~5 件抜き取り確認します。有効な JSON であり、必須フィールドが含まれていることを確認します。
コメント
Markdown 対応