mcpField
L
literature-search-europepmc

literature-search-europepmc

github.com/google-deepmind生産性3.4k2.6k 回インストール5 日前に更新
リポジトリ

literature-search-europepmc について

生命科学の研究者向けに、Europe PMCのオープンアクセス文献を検索し、論文本文や引用情報を取得するスキルです。キーワード検索のほか、DOIや著者、参考文献、引用文献からの検索にも対応します。

主な機能

  1. 01オープンアクセス論文の検索
  2. 02DOI・著者・IDによる論文検索
  3. 03PDFのダウンロードと全文取得
  4. 04引用文献と参考文献の取得

活用シーン

  1. 01テーマに関連するオープンアクセス論文の検索
  2. 02論文の全文やPDFの取得
  3. 03論文の引用元・参考文献の調査

インストール

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

$npx skills add https://github.com/google-deepmind/science-skills --skill literature-search-europepmc

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

同梱ファイルreferences/citation.bibscripts/europepmc_api.py

詳細

Europe PMC データベース

Europe PMC のオープンアクセス論文を検索、ダウンロード、閲覧するためのスキルです。Europe PMC は、4,300 万件を超える抄録と900万件の全文記事を収録する、包括的で無料の生命科学文献データベースです。

前提条件

  1. uv:uv スキルを読み、そのセットアップ手順に従って、uv がインストールされ、PATH に設定されていることを確認してください。
  2. ユーザーへの通知:ワークスペースのルートディレクトリに .licenses/literature_search_europepmc_LICENSE.txt がまだ存在しない場合は、(1)ユーザーに https://europepmc.org/ の利用条件を確認し、このスキルで取得した論文に制限がないか、必ずライセンスを確認するよう目立つ形で通知し、(2)通知文とタイムスタンプを記録したファイルを作成してください。

基本ルール

  • オープンアクセスのみ:このスキルでは、オープンアクセスのコンテンツだけを検索します。スクリプトはすべての検索クエリに OPEN_ACCESS:y を自動的に追加します。このフィルターを削除または上書きしないでください。
  • python3 や python3 -c を直接実行しないでください:システムの Python には、必要な依存関係がすべてそろっているとは限りません。pip のインストールや新しい venv の作成を試みないでください。
  • ラッパーを使用してください:API を直接呼び出さず、必ず提供されているスクリプトを使用してください。スクリプトがレート制限(1 req/s)とエラーを処理します。
  • 出力ファイル:すべてのサブコマンドで、結果を書き込むために --output が必要です。コンテキストの過剰な消費を避けるため、出力ファイルは別途読み込んでください。
  • **出典を記載してください。**このスキルを使用した場合は、その旨を出力に記載し、出力の作成に使用したすべての論文の URL を列挙してください。

ユーティリティスクリプト

すべてのコマンドは scripts/europepmc_api.py のサブコマンドです。レート制限と再試行は自動的に処理されます。

1. 検索(search)

クエリを使って Europe PMC を検索します。DOI 検索、キーワード検索、著者検索、PMID 検索、および完全な Europe PMC 検索構文に対応しています。

# Look up a paper by DOI
uv run scripts/europepmc_api.py search "DOI:10.1038/s41586-021-03819-2" --output result.json

# Keyword search
uv run scripts/europepmc_api.py search "CRISPR cancer" --max_results 5 --output results.json

# Author search
uv run scripts/europepmc_api.py search "AUTH:Jumper J" --max_results 10 --output results.json

# PMID lookup
uv run scripts/europepmc_api.py search "EXT_ID:34265844 AND SRC:MED" --output result.json

# Sorted by citations
uv run scripts/europepmc_api.py search "machine learning" \
  --sort "CITED desc" --max_results 20 --output results.json

引数:

  • query(str、必須)— Europe PMC 構文を使った検索クエリ
  • --output(str、必須)— 出力 JSON ファイルのパス
  • --max_results(int、デフォルト 10)— 1 ページあたりの最大結果数(最大 1000)
  • --result_type(str、デフォルト core)— core(すべてのメタデータ)または lite
  • --cursor(str、デフォルト *)— ページネーション用のカーソルマーク。次のページを取得するには、前回のレスポンスの nextCursorMark 値を渡します
  • --sort(str)— 並べ替え順。例:CITED desc、P_PDATE_D desc(出版日降順)、P_PDATE_D asc

**出力:**次の3つのフィールドを含む JSON ファイルです。

  • hitCount(int)— 一致する記事の総数
  • nextCursorMark(str)— 次のページのカーソル。ページがこれ以上ない場合は空文字列
  • results(list)— 記事メタデータオブジェクトの配列

検索構文のクイックリファレンス:

  • DOI:10.xxxx/yyyy — DOI による検索
  • EXT_ID:12345678 AND SRC:MED — PMID による検索
  • AUTH:surname initials — 著者検索
  • TITLE:keyword — タイトルのみを検索
  • JOURNAL:name — ジャーナルによる検索
  • PUB_YEAR:2024 または (FIRST_PDATE:[2023-01-01 TO 2023-12-31]) — 日付フィルター
  • HAS_FT:y — Europe PMC に全文がある記事に限定
  • 論理演算子:AND、OR、NOT

注:すべてのクエリには OPEN_ACCESS:y が自動的に追加されます。手動で追加する必要はありません。

2. PDF のダウンロード(download_pdf)

PMCID を指定して、Europe PMC からオープンアクセスの PDF をダウンロードします。

uv run scripts/europepmc_api.py download_pdf PMC8371605 --output alphafold.pdf

引数:

  • pmcid(str、必須)— PubMed Central ID(例:PMC8371605)
  • --output(str、必須)— PDF の保存先ファイルパス

**出力:**指定したファイルに PDF を保存します。PMCID が見つからない場合、またはレスポンスが有効な PDF ではない場合は、エラーで終了します。PDF をダウンロードしたら、ダウンロードした PDF が空でないこと、および破損していないことを確認してください。

3. 全文を取得する(get_fulltext)

オープンアクセス論文の全文を取得し、ファイルに保存します。デフォルトではプレーンテキスト(XML タグを削除済み)を返します。--format xml を指定すると、生の XML を返します。

# Get plain text (default)
uv run scripts/europepmc_api.py get_fulltext PMC8371605 --output fulltext.txt

# Get raw XML
uv run scripts/europepmc_api.py get_fulltext PMC8371605 --format xml --output fulltext.xml

引数:

  • pmcid(str、必須)— PubMed Central ID
  • --output(str、必須)— 出力ファイルのパス
  • --format(str、デフォルトは text)— text(プレーンテキスト)または xml(生の JATS XML)

出力: 全文が指定したファイルに書き込まれます。論文が Europe PMC のオープンアクセスサブセットに含まれていない場合は、エラーで終了します。

重要:全文を利用できるのは、PMC Open Access Subset に含まれる論文のみです。取得に失敗した場合は、search を使用して isOpenAccess フィールドを確認し、抄録に切り替えてください。

4. 被引用文献を取得する(get_citations)

指定した論文を引用している論文を取得します。

# Get citations for the AlphaFold paper (PMID 34265844)
uv run scripts/europepmc_api.py get_citations MED 34265844 \
  --page_size 25 --output citations.json

引数:

  • source(str、必須)— ソースデータベース:MED(PubMed)、PMC、PPR (プレプリント)、PAT(特許)
  • article_id(str、必須)— ソースデータベースにおける論文 ID
  • --output(str、必須)— 出力 JSON ファイルのパス
  • --page(int、デフォルトは 1)— ページ番号
  • --page_size(int、デフォルトは 25)— 1 ページあたりの結果数

出力: hitCount と citations 配列を含む JSON ファイル。

5. 参考文献を取得する(get_references)

指定した論文の参考文献一覧を取得します。

# Get references from the AlphaFold paper
uv run scripts/europepmc_api.py get_references MED 34265844 \
  --page_size 100 --output references.json

引数:

  • source(str、必須)— ソースデータベース:MED、PMC、PPR、PAT
  • article_id(str、必須)— ソースデータベースにおける論文 ID
  • --output(str、必須)— 出力 JSON ファイルのパス
  • --page(int、デフォルトは 1)— ページ番号
  • --page_size(int、デフォルトは 25)— 1 ページあたりの結果数

出力: hitCount と references 配列を含む JSON ファイル。

よく使うワークフロー

DOI から PDF を取得する
# Step 1: Search for the PMCID
uv run scripts/europepmc_api.py search "DOI:10.1038/s41586-021-03819-2" --output result.json
PMCID=$(jq -r '.results[0].pmcid // empty' result.json)

# Step 2: Download the PDF
uv run scripts/europepmc_api.py download_pdf "$PMCID" --output paper.pdf
PMID から全文を取得する
# Step 1: Find the PMCID from a PMID
uv run scripts/europepmc_api.py search "EXT_ID:34265844 AND SRC:MED" --output result.json
PMCID=$(jq -r '.results[0].pmcid // empty' result.json)

# Step 2: Get the full text
uv run scripts/europepmc_api.py get_fulltext "$PMCID" --output fulltext.txt
引用グラフをたどる
# Find what papers cite a landmark study, then check their references
uv run scripts/europepmc_api.py get_citations MED 34265844 --page_size 50 --output citing.json
# Parse a cited paper's PMID and explore its references
uv run scripts/europepmc_api.py get_references MED <CITING_PMID> --output refs.json
ページネーションを使用して検索する
# First page
uv run scripts/europepmc_api.py search "CRISPR" --max_results 100 --output page1.json
# Extract cursor for next page
CURSOR=$(jq -r '.nextCursorMark // empty' page1.json)
# Next page
uv run scripts/europepmc_api.py search "CRISPR" --max_results 100 --cursor "$CURSOR" --output page2.json

コメント