mcpField
F
fetch-paper

fetch-paper

github.com/shaishavmaisuria生産性57107 回インストール4 日前に更新
リポジトリ

fetch-paper について

DOI または arXiv ID から、PDF、arXiv HTML、ランディングページなどの合法なオープンアクセス版を探す論文取得スキルです。論文を一時的にダウンロードして読めますが、リポジトリには保存しません。

主な機能

  1. 01DOIとarXiv IDの解決
  2. 02合法なオープンアクセス版の検索
  3. 03PDF、HTML、ランディングページのURL提供
  4. 04一時的な閲覧用ダウンロード
  5. 05解決結果のキャッシュ

活用シーン

  1. 01DOIからオープンアクセス版を探す
  2. 02他の研究スキルが見つけた論文を取得
  3. 03論文が公開されているか確認

インストール

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

$npx skills add https://github.com/shaishavmaisuria/research-paper-lifecycle-skills --skill fetch-paper

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
copyright-and-politeness.md
oa-sources.md
scripts/
resolve_oa.py

詳細

論文を取得する

1つのDOIまたはarXiv IDを解決し、合法的なオープンアクセス版(PDF URL、arXivのHTMLレンダリング、ランディングページ)を特定します。また、必要に応じて一時的な閲覧用にダウンロードします。これは、find-papers、literature-review、study-exemplars、draft-related-workが利用する取得レイヤーです。

使用する場面

  • ユーザーがDOI、doi.org URL、arXiv ID、またはarxiv.org URLを持っており、論文の取得を希望している場合。
  • 別のスキルが、見つけた論文の全文を必要としている場合(文献レビュー、事例研究など)。
  • ユーザーが「この論文にオープンアクセス版はありますか?」と尋ねた場合。
  • トピック、タイトル、掲載先の検索には使用しないでください。まずfind-papersを実行して識別子を取得してください。

入力

  • 取得ごとに識別子を1つだけ指定します。DOI(10.1145/3589132.3625571、 https://doi.org/...)またはarXiv ID(2403.12345、arXiv:2403.12345v2、 cs/0309136、または任意のarxiv.org URL)を指定します。arXiv発行のDOI(10.48550/arXiv.*) は自動的に変換されます。
  • UNPAYWALL_EMAIL(またはCONTACT_EMAIL)環境変数には実在するメールアドレスを指定します。UnpaywallはプレースホルダーをHTTP 422で拒否します。未設定の場合、スクリプトが入力を求めます。

処理

  1. 識別子を解決します。 次を実行します。

    python3 scripts/resolve_oa.py <DOI-or-arXiv-ID> --json
    

    識別子の正規化、Unpaywallのbest_oa_location検索、arXivのPDF/HTML URL、10.1145/* DOI向けの2026年以降のACM DLオープンアクセス代替手段、レート制限、429応答時の再試行、.cache/fetch-paper/配下への応答キャッシュなど、決定的な処理はすべてスクリプトが行います。これらのAPI呼び出しを手作業で実装しないでください。

  2. 結果を解釈します(終了コード:0 = OAあり、3 = 合法的なOA版なし、 2 = 入力/設定が不正、1 = ネットワーク障害):

    • html_urlがある場合は、そちらを優先します(arXiv HTMLは直接読むのが最も簡単です)。
    • それ以外はpdf_urlを使用します。references/oa-sources.mdで oa_status、version、licenseの意味を確認してください。
    • version: submittedVersionはプレプリントを意味します。ページ番号を引用または参照する前に、出版版とは異なる場合があることをユーザーに伝えてください。
  3. 全文を一時的に取得します。 URLを直接読むか、次を実行します。

    python3 scripts/resolve_oa.py <ID> --download
    

    これにより、新しい一時ディレクトリ(リポジトリ内には作成しません)にPDFが保存されます。読み取ってタスクに必要な情報を抽出したら、削除してください。dl.acm.orgはスクリプトによるダウンロードをブロックします。その場合は、ブラウザーで開くURLをユーザーに提示してください。

  4. 終了コードが3(合法的なOA版なし)の場合: スクリプトの提案を伝えてください。著者のホームページ/機関リポジトリ(find-papersで検索)、タイトルでのarXiv検索、ユーザーの図書館アクセス、または著者へのメールなどです。Sci-Hub、LibGen、その他のシャドーライブラリを提案してはならず、ペイウォールの回避も試みないでください。詳細なルールはreferences/copyright-and-politeness.mdを参照してください。

  5. 処理して、保存しないでください。 分析で引用する抜粋は短いものに限ります。論文本文、要旨、PDFをリポジトリまたはコミット対象のファイルに書き込んではなりません。メタデータ(DOI、タイトル、BibTeXフィールド)は常に使用できます。

出力

  • 解決レポート(人が読める形式、または--json指定時はJSON):is_oa、 oa_status、license、version、pdf_url、html_url、landing_url、 source、および注記。
  • --download指定時:一時ディレクトリに保存されたPDF。パスはstderrに出力されます。
  • リポジトリに書き込まれるものは一切ありません。

ガードレール

  • 1回の実行につき識別子は1つだけです。DOIのリストに対して一括取得するためにこのスクリプトをループ実行してはなりません(ACM ToUとarXivのポリシーの両方で禁止されています)。1回のセッションで数件の論文を取得する場合は、1件ずつ実行し、組み込みのレート制限に従って間隔を空けてください。
  • 合法的なソースのみを使用し、一時的な処理に限ります。保存や再配布は禁止です。
  • プレプリントと出版版が両方ある場合は、出版版のDOIを引用してください。また、参考文献に追加する前に、すべての引用をverify-citationsで検証してください。
  • ユーザーに代わって、いかなるシステムにも何かを送信してはなりません。

参考資料

  • references/oa-sources.md — Unpaywall のフィールドと エラー、arXiv の URL パターン、ACM DL のオープンアクセス、トラブルシューティング。
  • references/copyright-and-politeness.md — 保存しても安全な情報と一時的な情報の区別、礼儀に関する取り決め。

コメント