mcpField
S
semantic-scholar

semantic-scholar

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

semantic-scholar について

semantic-scholarは、Semantic Scholarでジャーナルや会議の論文を探す研究向けスキルです。引用数や掲載先の情報を確認し、arXivのプレプリントと出版済み論文を区別できます。

主な機能

  1. 01トピックや識別子で論文を検索
  2. 02分野・種別・年・引用数で絞り込み
  3. 03掲載先と引用数の情報を表示
  4. 04DOIやIDから論文の詳細を取得
  5. 05利用可能な場合にTLDRとオープンアクセスPDFを表示

活用シーン

  1. 01研究分野の出版済み論文を探す
  2. 02DOIや識別子から論文を特定
  3. 03引用数を基に論文を優先
  4. 04論文にarXiv版があるか確認

インストール

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

$npx skills add https://github.com/wanshuiyin/auto-claude-code-research-in-sleep --skill semantic-scholar

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

詳細

Semantic Scholar 論文検索

トピックまたは論文 ID を検索します:$ARGUMENTS

役割と位置付け

このスキルは、/arxiv に対する出版済み論文向けのものです。

スキルソース最適な用途
/arxivarXiv API最新のプレプリント、最先端の未査読研究
/semantic-scholarSemantic Scholar API引用数、出版会議情報、TLDR を含む出版済みの学術誌・会議論文(IEEE、ACM、Springer など)

arXiv の役割を重複して行わないでください。 検索結果に externalIds.ArXiv フィールドが含まれる場合、その論文は arXiv にも掲載されています。その旨を記載しますが、arXiv から再取得しないでください。

定数

  • MAX_RESULTS = 10 — 検索結果のデフォルト件数です。
  • S2_FETCHER — 正規名は semantic_scholar_fetch.py です。shared-references/integration-contract.md §2 に従って解決します(ポリシー D1 — プライマリ+フォールバックのカスケード)。解決できない場合(正規の探索チェーンを使い切った場合)は、ステップ 2 に記載のインライン Python による代替手段にフォールバックします。
  • DEFAULT_FILTERS — 一般的な調査クエリでは、ノイズを減らすため、デフォルトで次のフィルターを適用します。
    • --fields-of-study "Computer Science,Engineering"
    • --publication-types JournalArticle,Conference

引数に追加してオーバーライドします。

  • /semantic-scholar "topic" - max: 20 — 最大 20 件の結果を返します
  • /semantic-scholar "topic" - type: journal — 学術誌論文のみ
  • /semantic-scholar "topic" - type: conference — 会議論文のみ
  • /semantic-scholar "topic" - min-citations: 50 — 引用数の多い論文のみ
  • /semantic-scholar "topic" - year: 2022- — 2022 年以降の論文
  • /semantic-scholar "topic" - fields: all — デフォルトの研究分野フィルターを削除します
  • /semantic-scholar "topic" - sort: citations — 引用数順に並べ替えた一括検索
  • /semantic-scholar "DOI:10.1109/..." — DOI で単一の論文を取得します

ワークフロー

ステップ 1:引数を解析する

$ARGUMENTS を解析して、次の指定を確認します。

  • クエリまたは ID:主な検索語句、または論文識別子
    • DOI:10.1109/TWC.2024.1234567
    • Semantic Scholar ID:f9314fd99be5f2b1b3efcfab87197d578160d553
    • ArXiv:ARXIV:2006.10685
    • Corpus:CorpusId:219792180
  • - max: N:MAX_RESULTS を上書きします
  • - type: journal|conference|review|all:--publication-types に変換します
  • - min-citations: N:--min-citations に変換します
  • - year: RANGE:--year に変換します(例:2022-、2020-2024)
  • - fields: FIELDS:--fields-of-study を上書きします(フィルターを削除するには all を指定します)
  • - sort: citations|date:--sort citationCount:desc または publicationDate:desc を指定して search-bulk を使用します

引数が DOI のパターン(10.XXXX/...)、Semantic Scholar ID(40 文字の 16 進数)、または接頭辞付き ID(ARXIV:...、CorpusId:...)に一致する場合は、検索を省略してステップ 3 に進みます。

ステップ 2:論文を検索する

正規の厳密かつ安全なチェーンを使って $S2_FETCHER を解決します(shared-references/integration-contract.md §2 を参照)。

cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1
if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills.txt ]; then
    ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null) || true
fi
if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then
    ARIS_REPO=$(cat "$HOME/.aris/repo" 2>/dev/null) || true
fi
S2_FETCHER=".aris/tools/semantic_scholar_fetch.py"
[ -f "$S2_FETCHER" ] || S2_FETCHER="tools/semantic_scholar_fetch.py"
[ -f "$S2_FETCHER" ] || { [ -n "${ARIS_REPO:-}" ] && S2_FETCHER="$ARIS_REPO/tools/semantic_scholar_fetch.py"; }
[ -f "$S2_FETCHER" ] || S2_FETCHER=""

標準検索(デフォルト — 関連性順):

python3 "$S2_FETCHER" search "QUERY" --max MAX_RESULTS \
  --fields-of-study "Computer Science,Engineering" \
  --publication-types JournalArticle,Conference

一括検索(- sort: が指定された場合、または MAX_RESULTS > 100 の場合):

python3 "$S2_FETCHER" search-bulk "QUERY" --max MAX_RESULTS \
  --sort citationCount:desc \
  --fields-of-study "Computer Science" \
  --year "2020-"

$S2_FETCHER が空の場合(ポリシー D1 のカスケード)、urllib を使用して https://api.semanticscholar.org/graph/v1/paper/search にアクセスするインライン Python にフォールバックします。

推奨フィルターの組み合わせ(テスト結果に基づく):

目的フラグ
質の高い学術誌論文--publication-types JournalArticle --min-citations 10
CS/EE 分野の最近の論文--fields-of-study "Computer Science,Engineering" --year "2022-"
基礎的/影響力の大きい論文search-bulk --sort citationCount:desc --fields-of-study "Computer Science"
会議論文のみ--publication-types Conference

注:--venue には、「IEEE」のような部分一致ではなく、「IEEE Transactions on Signal Processing」のような会議名の完全一致が必要です。自動化されたフローでは --venue の使用を避け、--publication-types と --fields-of-study を優先してください。

ステップ 3:特定の論文の詳細を取得する

単一の論文 ID が指定された場合:

python3 "$S2_FETCHER" paper "PAPER_ID"

PAPER_ID には次の値を指定できます:

  • DOI:10.1109/TSP.2021.3071210
  • ArXiv:ARXIV:2006.10685
  • CorpusId:CorpusId:219792180
  • S2 ID:f9314fd99be5f2b1b3efcfab87197d578160d553
ステップ 4:arXiv との重複を除外する

各結果について、externalIds.ArXiv を確認します:

  • 存在する場合 → 論文は arXiv にもあります。出力にその旨を記載しますが、/arxiv 経由で再取得してはいけません。
  • 存在しない場合 → 論文は掲載先のみです(例:プレプリントがない IEEE 論文)。これがこのスキル独自の価値です。
ステップ 5:結果を提示する

結果を表として提示します:

| # | Title | Venue | Year | Citations | Authors | Type |
|---|-------|-------|------|-----------|---------|------|
| 1 | Deep Learning Enabled... | IEEE Trans. Signal Process. | 2021 | 1364 | Xie et al. | Journal |

各論文について、次の情報も表示します:

  • DOI リンク:https://doi.org/DOI(IEEE/ACM 論文の場合、これが正式なリンクです)
  • オープンアクセス PDF:openAccessPdf.url が空でない場合は表示します
  • TLDR:利用可能な場合は、1 行の要約を表示します
  • arXiv にも掲載:externalIds.ArXiv が存在する場合は、arXiv ID を記載します
ステップ 6:詳細な要約

各論文について(結果が多い場合は上位 5 件):

## [Title]

- **Venue**: [venue name] ([publicationVenue.type]: journal/conference)
- **Year**: [year] | **Citations**: [citationCount]
- **Authors**: [full author list]
- **DOI**: [doi link]
- **Fields**: [fieldsOfStudy]
- **TLDR**: [tldr.text if available]
- **Abstract**: [abstract]
- **Open Access**: [openAccessPdf.url or "Not available"]
- **Also on arXiv**: [ArXiv ID if exists, else "No"]
ステップ 7:Research Wiki を更新する(有効な場合)

プロジェクト内に research-wiki/ が存在する場合は必須です。それ以外の場合は、何も通知せずにスキップします。Wiki ディレクトリが存在する場合は、 shared-references/wiki-helper-resolution.md に記載された標準の手順(バリアント B — 警告してスキップ)に従って $WIKI_SCRIPT を解決します。externalIds.ArXiv フィールドがある結果には --arxiv-id を使います。arXiv にミラーがない掲載先のみの論文(IEEE/ACM では一般的)には、手動でメタデータを指定します:

if [ -d research-wiki/ ]; then
  cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1
  ARIS_REPO="${ARIS_REPO:-$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null)}"
  if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then
    ARIS_REPO=$(cat "$HOME/.aris/repo" 2>/dev/null) || true
  fi
  WIKI_SCRIPT=".aris/tools/research_wiki.py"
  [ -f "$WIKI_SCRIPT" ] || WIKI_SCRIPT="tools/research_wiki.py"
  [ -f "$WIKI_SCRIPT" ] || { [ -n "${ARIS_REPO:-}" ] && WIKI_SCRIPT="$ARIS_REPO/tools/research_wiki.py"; }
  [ -f "$WIKI_SCRIPT" ] || {
    echo "WARN: research_wiki.py not found; semantic-scholar results delivered, wiki ingest skipped. Fix: bash tools/install_aris.sh or smart_update.sh (refreshes ~/.aris/repo), export ARIS_REPO, or cp <ARIS-repo>/tools/research_wiki.py tools/." >&2
    WIKI_SCRIPT=""
  }
  [ -n "$WIKI_SCRIPT" ] && for each paper in results:
        if paper.externalIds.ArXiv:
            python3 "$WIKI_SCRIPT" ingest_paper research-wiki/ \
                --arxiv-id "<ArXiv>"
        else:
            python3 "$WIKI_SCRIPT" ingest_paper research-wiki/ \
                --title "<title>" --authors "<authors joined by , >" \
                --year <year> --venue "<venue>" \
                [--external-id-doi "<externalIds.DOI>"]
fi

ヘルパーがスラッグ/重複排除/ページ/インデックス/ログを処理します。papers/<slug>.md を手動で作成してはいけません。shared-references/integration-contract.md を参照してください。arXiv で入手できる論文をバックフィルするには、/research-wiki sync --arxiv-ids <id1>,<id2>,... を使います。

ステップ 8:最終出力

実行した内容を要約します:

  • Found N published papers for "query"
  • Filters applied: [publication types, fields, year range, etc.]
  • N papers are venue-only (not on arXiv)
  • Wiki-ingested N papers(research-wiki/ が存在した場合)

次に使うスキルを提案します:

/arxiv "topic"           - search arXiv preprints (complements this search)
/research-lit "topic"    - multi-source review: Zotero + local PDFs + arXiv + S2
/novelty-check "idea"    - verify novelty against literature

主なルール

  • デフォルトでフィルター付き検索を使う:ユーザーが - fields: all と指定しない限り、必ず --fields-of-study と --publication-types を適用します。フィルターがない場合、S2 は分野横断的なノイズ(言語学、心理学など)を返します。
  • 引用数は重要です:S2 の引用データは arXiv に対する主な優位点です。必ず citationCount を目立つように表示し、結果の順位付けや優先順位付けに使います。
  • 掲載先のメタデータが重要です:venue と publicationVenue.type(ジャーナルか学会か)を表示します。これにより、ユーザーが論文の質を評価しやすくなります。
  • 出版済み論文の正式な ID は DOI です:IEEE/ACM/Springer の論文では、必ず DOI リンクを表示します。
  • レート制限:API キーなしの S2 API には厳しいレート制限(約 1 リクエスト/秒、厳格なクールダウン期間)があります。HTTP 429 が発生した場合は、待ってから再試行します。より高い上限を利用するには、SEMANTIC_SCHOLAR_API_KEY 環境変数を設定するようユーザーに勧めます(https://www.semanticscholar.org/product/api#api-key-form で無料取得できます)。
  • TLDR が null の場合があります:一部の出版社(特に IEEE)では、TLDR フィールドが省略されます。その場合は、代わりに要旨の最初の文を表示します。
  • openAccessPdf が空の場合があります:IEEE の論文の多くはクローズドアクセスです。代替として、必ず DOI リンクを提示します。
  • S2 API に接続できない場合は、代替手段として /arxiv または /research-lit "topic" - sources: web を使うよう提案します。

コメント