semantic-scholar について
semantic-scholarは、Semantic Scholarでジャーナルや会議の論文を探す研究向けスキルです。引用数や掲載先の情報を確認し、arXivのプレプリントと出版済み論文を区別できます。
主な機能
- 01トピックや識別子で論文を検索
- 02分野・種別・年・引用数で絞り込み
- 03掲載先と引用数の情報を表示
- 04DOIやIDから論文の詳細を取得
- 05利用可能な場合にTLDRとオープンアクセスPDFを表示
活用シーン
- 01研究分野の出版済み論文を探す
- 02DOIや識別子から論文を特定
- 03引用数を基に論文を優先
- 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 に対する出版済み論文向けのものです。
| スキル | ソース | 最適な用途 |
|---|---|---|
/arxiv | arXiv API | 最新のプレプリント、最先端の未査読研究 |
/semantic-scholar | Semantic 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
- DOI:
- 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を使うよう提案します。