Skip to main content

chem-paper-search

Searches Semantic Scholar and the open web for chemistry / chemical engineering / materials science papers given a topic and keyword sets. Returns a triaged table with title, first author, year, citation count, PDF availability, and one-line summary. Used as a sub-skill by `paper-mentor` during Phase 2; can also be invoked directly. Triggers on phrases like "find papers on", "幫我找文獻", "search Semantic Scholar", "literature on X".

インストールへ移動

ソース情報

リポジトリ
DennisWei9898/paper-mentor
ソースの最終更新活動
2026年5月6日 17:53
検出された SKILL.md の言語
英語
スター
26
フォーク
9

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
chem-paper-search
description
Searches Semantic Scholar and the open web for chemistry / chemical engineering / materials science papers given a topic and keyword sets. Returns a triaged table with title, first author, year, citation count, PDF availability, and one-line summary. Used as a sub-skill by `paper-mentor` during Phase 2; can also be invoked directly. Triggers on phrases like "find papers on", "幫我找文獻", "search Semantic Scholar", "literature on X".
version
0.1.0
# chem-paper-search — Chemistry / Materials Paper Discovery ## What this does Given a research topic + 3-5 keyword sets, this skill returns a curated list of 10-20 papers, prioritizing those with open-access PDFs. This is a sub-skill called by `paper-mentor` Phase 2. When invoked directly, it produces the same output as the literature search step. ## Inputs (when called) ```yaml topic: "narrow bandgap Sn-Pb perovskite stability" keyword_sets: - english_broad: "Sn-Pb perovskite stability" - english_narrow: "GASCN additive Sn-Pb perovskite crystallization" - chinese_optional: "錫鉛鈣鈦礦 穩定性" target_count: 15 # default year_min: 2020 # default (last 5 years from current) ``` ## Workflow ### Step 1: Semantic Scholar search (primary) Use `WebFetch` to call Semantic Scholar API: ``` https://api.semanticscholar.org/graph/v1/paper/search?query={keywords} &fields=title,authors,year,abstract,citationCount,openAccessPdf,tldr &limit={target_count} &sort=citationCount ``` **For each keyword set**, run the API call and merge results. Deduplicate by title. ### Step 2: WebSearch fallback If Semantic Scholar API rate-limits (429) or returns <5 results: **First**: retry with exponential backoff (10s, 30s, 60s) — most 429s clear within a minute. **If still failing**, fall back to WebSearch: ``` WebSearch: site:semanticscholar.org {topic} {year_min}..{current_year} ``` Then `WebFetch` the Semantic Scholar pages to extract metadata. ⚠️ **Known limitation**: WebFetch-scraped metadata loses structured fields (citationCount, openAccessPdf, tldr). When fields are missing: - Mark `cites = unknown`, `pdf = unknown`, `summary = unknown` - **Do NOT auto-filter** these papers — show them all and let the user / orchestrator decide - Note in output: "⚠️ Step 3 filter ran with reduced metadata; manual review recommended" ### Step 3: Filter Apply filters in order: - ✅ Has openAccessPdf → PRIORITY - ✅ citationCount > 20 (or > 5 for papers <2 years old) - ✅ year >= year_min - ❌ Predatory journal flag (use Beall's list — check journal name) - ❌ Off-topic (manual review of abstract) ### Step 4: Triage Mark each paper as: - 🔴 **Must-read** (必讀): Direct competitor, foundational, or very high citations - 🟡 **Reference** (參考): Useful method or comparison data - ⚪ **Skippable** (可略): Low rigor or off-topic borderline ### Step 5: Output ```markdown # Literature Search Results — [topic] **Date**: 2026-MM-DD **Searches run**: [list keyword sets] **Total found**: N (after dedup + filter) ## Triaged table | # | Tag | Title | First author | Year | Cites | PDF | Summary | |---|-----|-------|--------------|------|-------|-----|---------| | 1 | 🔴 | ... | ... | 2024 | 142 | ✅ | One-line tldr from Semantic Scholar | | ... | ## Recommended reading order 1. [#1] — start here because [reason] 2. [#3] — read for method comparison 3. [#7] — read for competing mechanism interpretation ## Searches that returned nothing (if any) Document any keyword sets that returned 0 results — this is **valuable evidence of a gap** for the gap report. ``` ## Backup search engines If Semantic Scholar is down or insufficient: | Engine | URL pattern | When to use | |--------|------------|-------------| | Elicit | https://elicit.com/search?q={query} | When you need AI-extracted research questions | | Connected Papers | https://www.connectedpapers.com/search?q={query} | When you want a citation graph view | | Google Scholar | (manual via WebSearch) | Last resort, low metadata quality | ## Hard rules 1. **Never invent papers**. If 0 results, say so explicitly. 2. **Always show searches that returned nothing** — these are evidence of gaps. 3. **Always verify citation count** with a second source if it seems high (>500). 4. **Filter out predatory journals** — names ending in "International Journal of [Field] Research" with sketchy publishers should be excluded. 5. **Quote exact API responses** when uncertain — do not paraphrase metadata. ## Common issues | Issue | Fix | |-------|-----| | Semantic Scholar returns 429 | Wait 10s, retry. If persists, switch to WebSearch fallback. | | All papers are too old | Drop year_min by 2 years and retry; if still old, the field is dormant. | | No open PDFs | Switch search to include arXiv preprints (they have open PDF). | | Topic is too narrow | Loosen by removing 1-2 keywords; the field may not have studied it. | | Topic is too broad | Tighten by adding specific technique or material; expect 100+ raw results. | ## Output downstream This output feeds into: - **paper-mentor Phase 2 Step 3**: passes the table to `chem-nlm-helper` for NotebookLM ingestion - **Direct invocation**: returned to user as-is for manual reading
GitHubで見る