Set up
Skills are installed by placing their folder where your agent loads skills.
The download comes from github.com/Bugliiiiii/paper-discovery itself, not from our server, so what you get is exactly what its author published.
Install instructions come from the README
README
synced Oct 26, 2026Paper Discovery
中文 | English
paper-discovery 是一个通用 agent skill(Hermes / Codex / 任意 .agents 式 skill runner 通用),用于从公开学术元数据源中发现、核验和整理论文。它适合用于文献综述、相关工作、研究计划、选题探索,以及按年份、期刊或 ISSN 限定的论文检索。
内置脚本 scripts/discover_papers.py 只使用 Python 标准库,可直接查询 Crossref、OpenAlex、PubMed、DBLP 等数据源,并通过 ISSN 白名单过滤 SCI/SSCI 期刊论文,输出 Markdown / JSON / BibTeX / RIS / CSL-JSON,也可选择直接写入本地 Zotero 库。
功能
- 从 Crossref、OpenAlex、PubMed、DBLP(期刊子集)检索论文元数据;arXiv 需显式
--sources arxiv开启;Semantic Scholar 在有SEMANTIC_SCHOLAR_API_KEY时使用,否则自动跳过。 - 支持关键词查询、年份范围、期刊名称、ISSN、来源选择。
- 按 DOI 和规范化标题去重。
- SCI/SSCI 保证:内置 SCImago 期刊 ISSN 种子白名单,可用
--scisci-list覆盖;默认标注非索引刊,--scisci-strict丢弃。 - 给候选论文计算本地相关性分数并记录匹配原因。
- 输出 APA 风格引用、DOI 链接、摘要片段和来源信息。
- 导出 BibTeX / RIS / CSL-JSON,便于进入 Zotero 或 Pandoc 引用链;可选
--zotero-sqlite直接写入本地 Zotero 库(默认不进集合,需--yes确认)。
仓库结构
paper-discovery/
├── SKILL.md
├── agents/
│ └── openai.yaml
├── references/
│ ├── sources.md
│ └── scopus-ssci-issn.txt
├── scripts/
│ └── discover_papers.py
└── tests/
安装(通用 agent skill)
推荐用 npx skills 全局安装:
npx skills add Bugliiiiii/paper-discovery -g -y
若你的 agent(如 Hermes)未被该 CLI 自动识别,可改为手动软链到其 skills 目录,例如 Hermes:
# 手动软链兜底(Hermes)
ln -s "$(pwd)" "$HOME/AppData/Local/hermes/skills/paper-discovery"
# 或 Windows PowerShell:
# New-Item -ItemType Junction -Path "$env:LOCALAPPDATA\hermes\skills\paper-discovery" -Target "D:\Workspace\paper-discovery"
安装后,在 agent 中提出类似请求即可触发(也支持 SCI/SSCI、期刊、Zotero、BibTeX 等触发词):
Find recent SCI/SSCI papers on multimodal short video engagement in health emergencies, and export BibTeX.
直接运行脚本
要求:Python 3.10+。不需要安装第三方 Python 包。
检索并导出 BibTeX(默认含 SCI/SSCI 过滤):
python .\scripts\discover_papers.py --query "short video multimodal user engagement health emergency" --years 2020:2026 --max-results 30 --format bibtex --output papers.bib
限定期刊和 ISSN(并严格只保留 SCI/SSCI):
python .\scripts\discover_papers.py --query "short video comments user perception engagement" --years 2020:2026 --issn 0306-4573 --journal "Information Processing & Management" --scisci-strict --format md --output ipm-papers.md
参数
| 参数 | 说明 |
|---|---|
--query | 检索关键词,必填。 |
--years | 年份范围,例如 2020:2026、2024、:2026。 |
--sources | 数据源,可选 crossref、openalex、pubmed、dblp、arxiv、semantic_scholar(默认不含 arxiv)。 |
--journal | 期刊名称过滤或偏好。 |
--issn | ISSN 过滤,期刊限定检索时推荐使用。 |
--max-results | 去重和排序后的最大输出数量。 |
--fetch-rows | 每个数据源抓取的原始候选数量。 |
--min-score | 最低本地相关性分数。 |
--format | 输出格式:md、json、bibtex、ris、csljson。 |
--scisci-list | SCI/SSCI 期刊 ISSN 白名单文件(覆盖内置种子)。 |
--scisci-strict | 只保留白名单内论文,丢弃非索引刊。 |
--cache | 缓存目录,命中则离线重放,省额度。 |
--zotero-sqlite | 本地 Zotero 库路径,写入条目(默认不进集合)。 |
--zotero-collection | 指定写入的集合名(需显式)。 |
--zotero-tags | 逗号分隔的标签(需显式)。 |
--yes | 跳过 Zotero 写入确认(否则只打印 dry-run)。 |
--group-by-section | Markdown 下按 Introduction/Related Work/Methods/Discussion 分组(需 LLM,默认关)。 |
--output | 输出文件路径。 |
--sleep | 请求之间的等待秒数,用于降低 API 压力。 |
使用建议
- 先把研究问题拆成 2-4 组具体查询词,再分别检索。
- 要拿 SCI/SSCI 期刊论文,依赖
--scisci-list白名单;内置种子是合理子集,精确学科覆盖请用机构 WoS/Scopus 导出覆盖。 - 期刊限定检索优先使用 ISSN,而不是只用期刊名。
- 最终引用优先保留 DOI 完整、期刊信息清晰、主题高度相关的论文。
- 不要只按关键词堆论文;如果真正相关的论文少于预期,应说明检索范围和筛选理由。
- 写入 Zotero 前务必先关 Zotero 进程;脚本已对
synced、syncCache和 8 位合法 key 做护栏,并硬编码排除「本科毕设」子树。 - 当不同来源的年份或期刊信息冲突时,应以 DOI 元数据或出版社记录为准,并标记不确定性。
许可证
本项目使用 Apache-2.0 License。详见 LICENSE。
English
中文 | English
paper-discovery is a general-purpose agent skill (works with Hermes / Codex / any .agents-style skill runner). It finds, verifies, and curates academic papers from public scholarly metadata sources, for literature reviews, related-work sections, research planning, topic exploration, and paper searches constrained by year, journal, or ISSN.
The bundled script scripts/discover_papers.py uses only the Python standard library. It queries Crossref, OpenAlex, PubMed, and DBLP (journal subset), filters for SCI/SSCI journal articles via an ISSN allowlist, and exports curated candidates as Markdown / JSON / BibTeX / RIS / CSL-JSON — or optionally writes them into a local Zotero library.
Features
- Search metadata from Crossref, OpenAlex, PubMed, DBLP (journal subset); arXiv is opt-in via
--sources arxiv; Semantic Scholar is used whenSEMANTIC_SCHOLAR_API_KEYis set, otherwise skipped automatically. - Filter by query, year range, journal name, ISSN, and source.
- Deduplicate by DOI first, then normalized title.
- SCI/SSCI guarantee: a bundled SCImago journal-ISSN seed list, overridable with
--scisci-list; non-indexed papers are flagged by default, dropped with--scisci-strict. - Score local relevance and explain why a paper matched.
- Export APA-style citations, DOI links, abstract snippets, and source metadata.
- Export BibTeX / RIS / CSL-JSON for Zotero / Pandoc citation chains; optional
--zotero-sqlitewrites into a local Zotero library (no collection by default, requires--yes).
Repository Layout
paper-discovery/
├── SKILL.md
├── agents/
│ └── openai.yaml
├── references/
│ ├── sources.md
│ └── scopus-ssci-issn.txt
├── scripts/
│ └── discover_papers.py
└── tests/
Install (general agent skill)
Install globally with npx skills:
npx skills add Bugliiiiii/paper-discovery -g -y
If your agent (e.g. Hermes) is not auto-detected by that CLI, symlink the repo into its skills directory instead, e.g. for Hermes:
# Manual symlink fallback (Hermes)
ln -s "$(pwd)" "$HOME/AppData/Local/hermes/skills/paper-discovery"
# or Windows PowerShell:
# New-Item -ItemType Junction -Path "$env:LOCALAPPDATA\hermes\skills\paper-discovery" -Target "D:\Workspace\paper-discovery"
After installation, ask your agent something like (SCI/SSCI, journal, Zotero, BibTeX also trigger it):
Find recent SCI/SSCI papers on multimodal short video engagement in health emergencies, and export BibTeX.
Run the Script Directly
Requirement: Python 3.10+. No third-party Python packages are required.
Search and export BibTeX (SCI/SSCI filtering on by default):
python .\scripts\discover_papers.py --query "short video multimodal user engagement health emergency" --years 2020:2026 --max-results 30 --format bibtex --output papers.bib
Journal and ISSN constrained search (strict SCI/SSCI only):
python .\scripts\discover_papers.py --query "short video comments user perception engagement" --years 2020:2026 --issn 0306-4573 --journal "Information Processing & Management" --scisci-strict --format md --output ipm-papers.md
Arguments
| Argument | Description |
|---|---|
--query | Search query string. Required. |
--years | Year range, such as 2020:2026, 2024, or :2026. |
--sources | Sources: crossref, openalex, pubmed, dblp, arxiv, semantic_scholar (arxiv not in default). |
--journal | Journal name filter or preference. |
--issn | ISSN filter, recommended for journal-specific discovery. |
--max-results | Maximum output count after deduplication and ranking. |
--fetch-rows | Raw candidate rows to fetch from each source. |
--min-score | Minimum local relevance score. |
--format | Output format: md, json, bibtex, ris, csljson. |
--scisci-list | SCI/SSCI journal ISSN allowlist file (overrides the bundled seed). |
--scisci-strict | Keep only allowlisted papers; drop non-indexed. |
--cache | Cache directory; replay offline on hit to save quota. |
--zotero-sqlite | Local Zotero library path; ingests entries (no collection by default). |
--zotero-collection | Target collection name (explicit opt-in). |
--zotero-tags | Comma-separated tags (explicit opt-in). |
--yes | Skip Zotero write confirmation (otherwise prints a dry-run). |
--group-by-section | Group Markdown by Introduction/Related Work/Methods/Discussion (needs LLM, off by default). |
--output | Output file path. |
--sleep | Delay in seconds between requests to reduce API pressure. |
Usage Notes
- Translate the research need into 2-4 concrete query variants before searching.
- For SCI/SSCI journal papers, rely on the
--scisci-listallowlist; the bundled seed is a reasonable subset — supply your institution's WoS/Scopus export for exact discipline coverage. - Prefer ISSN over journal-name text matching for journal-specific searches.
- For final citations, prefer papers with a DOI, clear venue metadata, and strong conceptual fit.
- Do not pad bibliographies with weak keyword matches. If fewer papers are truly relevant, state the search coverage and filtering rationale.
- Before writing to Zotero, close Zotero first; the script guards
synced,syncCache, and 8-char valid keys, and hard-excludes the 本科毕设 subtree. - When sources disagree on year or venue metadata, prefer DOI or publisher metadata and flag uncertainty.
License
This project is licensed under the Apache-2.0 License. See LICENSE.