npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

paper-search-cli

v0.3.4

Published

Agent-friendly CLI for searching and downloading academic papers from multiple sources.

Readme

Paper Search CLI

简体中文 | English

Paper Search CLI 是一个面向 AI agent 的 Skill + CLI 包,基于独立的 Node.js 命令行工具构建,用于学术文献工作。它为 AI agent、终端用户和脚本提供一个可复现的命令层,并通过 agent 友好的 JSON 输出覆盖文献元数据检索、施引/参考文献扩展、期刊指标检索、PDF 获取/下载和论文正文片段检索。

Node.js TypeScript License Platforms Version LinuxDo

快速开始 | 架构说明 | 配置 | Agent Skill | 支持平台 | 命令 | 排障

核心功能

| 功能 | 主要命令 | 返回内容 | | --- | --- | --- | | 文献元数据检索 | paper-search search, paper-search run search_* | 题名、作者、年份、期刊、DOI、PMID/PMCID、arXiv ID、URL、摘要和来源元数据 | | 引文扩展 | paper-search run get_paper_citations, paper-search run get_paper_references | 已知 Semantic Scholar paper ID、DOI 或 arXiv ID 对应论文的施引文献和参考文献 | | 期刊指标检索 | paper-search journal-metrics, paper-search run query_journal_metrics | 影响因子、5 年 IF、JCR/SSCI 分区、中科院分区、JCI、ESI、预警和等级字段 | | PDF 获取和下载 | paper-search download, paper-search run download_with_fallback | 通过原生来源、开放获取、已配置权限来源和启用时的 Sci-Hub fallback 获取 PDF | | 正文片段检索 | paper-search run search_semantic_snippets | Semantic Scholar Open Access 正文片段,用于查方法、参数和写法线索 |

架构说明

paper-search 不是 MCP Server,而是普通 CLI。AI 工具可以通过随包发布的 Skill 调用它,终端用户和脚本也可以直接调用同一个 paper-search 命令。

| 层 | 负责什么 | | --- | --- | | CLI 本体 | 执行文献检索、引文扩展、期刊指标检索、PDF 获取/下载、正文片段检索和稳定 JSON 输出 | | Bundled Skill | 随包发布 skills/paper-search,提供 agent 路由规则和 focused references;不保存密钥、cookie 或账号信息 | | Friendly Management Layer | 围绕五个主要能力 metadata_searchcitation_expansionjournal_metricspdf_discoverybody_snippet_search 提供 doctorsmokeskillsconfigtoolsdoctor 健康报告包含脱敏配置、Capability Profile、平台/来源状态、缺失项和降级项;smoke 检查命令入口连通性和 live 可用性;skills 负责同步随包发布的 Skill |

五个主要能力由 CLI 本体执行,由管理层报告和检查。Capability Profile 也会报告 entitled_access,让用户看到出版商 API key、数据库 key、TDM token 或机构权限是否已配置。某一个能力缺少配置或降级,不会导致其他独立能力不可用。

快速开始

要求 Node.js >= 18.0.0 和 npm。

npm install -g paper-search-cli
paper-search setup
paper-search doctor --pretty

尝试五个主要功能:

paper-search search "machine learning clinical prediction" --platform crossref --max-results 3 --pretty
paper-search run get_paper_citations --arg doi="10.1038/nature12373" --arg limit=5 --pretty
paper-search journal-metrics "Nature" "BMJ" --pretty
paper-search download 10.48550/arxiv.1201.0490 --platform arxiv --save-path ./downloads
paper-search run search_semantic_snippets --arg query="propensity score matching" --arg limit=3 --pretty

常用检查:

paper-search tools --pretty
paper-search doctor --format text
paper-search smoke --mock --pretty
paper-search skills status --pretty

支持平台

平台组表适合快速选来源;下面的能力矩阵用于更清楚地判断每个平台实际能做什么。

平台组

| 平台组 | 平台 | 主要用途 | | --- | --- | --- | | 综合学术元数据 | Crossref, OpenAlex, Semantic Scholar, Google Scholar | 广覆盖发现、DOI 元数据、引用线索、文献初筛 | | 期刊指标 | EasyScholar | 影响因子、JCR/SSCI 分区、中科院分区、JCI、ESI、预警 | | 生物医学和生命科学 | PubMed, PubMed Central, Europe PMC | 生物医学元数据、PMID/PMCID 核验、开放全文 | | 预印本和会议稿 | arXiv, bioRxiv, medRxiv, OpenReview, IACR ePrint | 预印本、AI/ML 投稿、密码学 ePrint | | 计算机和工程 | DBLP, ACM metadata, IEEE Xplore, USENIX | CS 目录、工程元数据、会议论文 | | 开放获取和仓储 | CORE, OpenAIRE, Unpaywall | 仓储发现和开放获取 PDF fallback | | 引文库和出版商 | Web of Science, Scopus, ScienceDirect, Springer Nature/SpringerLink, Wiley | 机构权限元数据、出版商记录、entitled access | | DOI 定向 fallback | Sci-Hub | 启用时作为 DOI 定向 PDF fallback |

能力矩阵

综合学术元数据

| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 | | --- | --- | --- | --- | --- | --- | --- | | Crossref | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ✅ 支持 | ❌ 不需要 | 默认广覆盖元数据来源 | | OpenAlex | ✅ 支持 | 🟡 条件支持 | ❌ 不支持 | ✅ 支持 | ❌ 不需要 | 免费元数据;记录含 OA 链接时可帮助 PDF fallback | | Semantic Scholar | ✅ 支持 | 🟡 条件支持 | ✅ 正文片段 | ✅ 支持 | 🟡 可选;正文片段需要 SEMANTIC_SCHOLAR_API_KEY | 适合 AI/CS、引文扩展和正文片段线索 | | Google Scholar | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ✅ 支持 | ❌ 不需要 | 基于页面解析的广覆盖发现 |

期刊指标

| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 | | --- | --- | --- | --- | --- | --- | --- | | EasyScholar | 🟡 仅期刊指标 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 | ✅ 必需 EASYSCHOLAR_KEY | 影响因子、JCR/SSCI 分区、中科院分区、JCI、ESI、预警和等级字段 |

生物医学和生命科学

| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 | | --- | --- | --- | --- | --- | --- | --- | | PubMed | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 | 🟡 可选 PUBMED_API_KEY, NCBI_EMAIL, NCBI_TOOL | NCBI E-utilities 生物医学元数据 | | PubMed Central | ✅ 支持 | ✅ 支持 | ✅ 支持 | ❌ 不支持 | ❌ 不需要 | 生物医学开放全文和 PMC PDF | | Europe PMC | ✅ 支持 | 🟡 条件支持 | 🟡 条件支持 | ❌ 不支持 | ❌ 不需要 | 生物医学元数据和开放全文链接 |

预印本和会议稿

| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 | | --- | --- | --- | --- | --- | --- | --- | | arXiv | ✅ 支持 | ✅ 支持 | ✅ 支持 | ❌ 不支持 | ❌ 不需要 | 物理、计算机、数学等预印本 | | bioRxiv | ✅ 支持 | ✅ 支持 | ✅ 支持 | ❌ 不支持 | ❌ 不需要 | 生物学预印本 | | medRxiv | ✅ 支持 | ✅ 支持 | ✅ 支持 | ❌ 不支持 | ❌ 不需要 | 医学预印本 | | OpenReview | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不需要 | 公开 OpenReview notes、评审和投稿记录 | | IACR ePrint | ✅ 支持 | ✅ 支持 | ✅ 支持 | ❌ 不支持 | ❌ 不需要 | 密码学 ePrint 论文 |

计算机和工程

| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 | | --- | --- | --- | --- | --- | --- | --- | | DBLP | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不需要 | 官方 DBLP 计算机文献目录 | | ACM metadata | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ✅ 支持 | ❌ 不需要 | 通过 Crossref 的 ACM DOI 前缀元数据检索;不抓取 ACM 页面 | | USENIX | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不需要 | 基于 DBLP 的 USENIX 元数据;不抓取 USENIX 搜索页 | | IEEE Xplore | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ✅ 支持 | ✅ 必需 IEEE_API_KEY | 官方 IEEE Xplore Metadata API |

开放获取和仓储

| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 | | --- | --- | --- | --- | --- | --- | --- | | CORE | ✅ 支持 | 🟡 条件支持 | 🟡 条件支持 | ❌ 不支持 | 🟡 可选 CORE_API_KEY | 仓储记录可能暴露 PDF 或全文链接 | | OpenAIRE | ✅ 支持 | 🟡 条件支持 | ❌ 不支持 | ❌ 不支持 | 🟡 可选 OPENAIRE_API_KEY | 公开检索通常不需要 key | | Unpaywall | 🟡 仅 DOI 查询 | 🟡 条件支持 | ❌ 不支持 | ❌ 不支持 | ✅ 必需 UNPAYWALL_EMAILPAPER_SEARCH_UNPAYWALL_EMAIL | DOI 开放获取 PDF 定位;需要邮箱,不是 API key |

引文库和出版商

| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 | | --- | --- | --- | --- | --- | --- | --- | | Web of Science | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ✅ 支持 | ✅ 必需 WOS_API_KEY | 引文数据库元数据、日期排序、年份范围 | | ScienceDirect | ✅ 支持 | 🟡 条件支持 | ❌ 不支持 | ✅ 支持 | ✅ 必需 ELSEVIER_API_KEY | Elsevier 元数据;ScienceDirect 和 Scopus 产品权限需要分别开通 | | Springer Nature / SpringerLink | ✅ 支持 | 🟡 条件支持 | ❌ 不支持 | ❌ 不支持 | ✅ 必需 SPRINGER_API_KEY;🟡 可选 SPRINGER_OPENACCESS_API_KEY | springerlink 是现有 Springer 集成的别名 | | Wiley | ❌ 不支持关键词搜索 | ✅ DOI 下载 | ✅ 支持 | ❌ 不支持 | ✅ 必需 WILEY_TDM_TOKEN | TDM API;先通过其他元数据来源找到 DOI 再下载 | | Scopus | ✅ 支持 | 🟡 条件元数据 | ❌ 不支持 | ✅ 支持 | ✅ 必需 ELSEVIER_API_KEY | 摘要和引文数据库;ScienceDirect 和 Scopus 产品权限需要分别开通 |

DOI 定向 fallback

| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 | | --- | --- | --- | --- | --- | --- | --- | | Sci-Hub | ❌ 不支持 | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不需要 | DOI/URL 定向查询;启用时作为 PDF 最后 fallback |

说明:

  • 元数据检索指发现和初筛论文,不等于 PDF 下载或正文证据。
  • pdf_discovery 会区分开放获取来源、已配置权限来源,以及单独标识的 Sci-Hub 最后 fallback。
  • EasyScholar 是期刊指标来源,不是论文检索来源。
  • Sci-Hub 不属于 metadata_search,只作为 DOI/URL 定向 PDF fallback。
  • 🟡 条件支持 表示只有记录暴露 DOI、开放获取链接、PDF URL,或用户配置了相应权限时才可用。
  • API key 只在使用对应 key-backed 来源或工作流时才需要。

配置

多数免费元数据来源无需配置。为了稳定支持 agent 工作流,建议先运行 setup,把凭证写入用户级配置:

paper-search setup
paper-search config list --pretty
paper-search doctor --pretty

默认配置路径:

~/.config/paper-search-cli/config.json

配置文件权限会写成 0600config listdoctor 和相关命令都会脱敏密钥。

API Key 分级

| 等级 | 配置项 | 用途 | 什么时候配置 | | --- | --- | --- | --- | | 多数用户推荐 | SEMANTIC_SCHOLAR_API_KEY | 正文片段检索,以及更稳定的 Semantic Scholar 请求 | 需要查方法细节或高频使用 Semantic Scholar 时配置 | | 多数用户推荐 | UNPAYWALL_EMAILPAPER_SEARCH_UNPAYWALL_EMAIL | DOI 开放获取 PDF 解析 | setup 时配置;需要的是邮箱,不是 API key | | 多数用户推荐 | CROSSREF_MAILTO | Crossref polite pool | 长任务或高频元数据检索时配置 | | 多数用户推荐 | CORE_API_KEY | CORE 仓储检索 | 依赖 CORE 或遇到匿名限流时配置 | | 期刊指标 | EASYSCHOLAR_KEY | EasyScholar 影响因子、JCR/SSCI、中科院分区、JCI、ESI、预警 | 需要期刊指标时配置;建议用 paper-search setup EASYSCHOLAR_KEY 隐藏输入 | | 生物医学高频 | PUBMED_API_KEY, NCBI_EMAIL, NCBI_TOOL | NCBI E-utilities 稳定性和更高限额 | 高频使用 PubMed 时配置 | | 机构或出版商权限 | WOS_API_KEY, IEEE_API_KEY, ELSEVIER_API_KEY, SPRINGER_API_KEY, SPRINGER_OPENACCESS_API_KEY, WILEY_TDM_TOKEN | Web of Science、IEEE、Scopus、ScienceDirect、Springer、Wiley 元数据或权限访问 | 只有具备对应 API 或机构权限时配置 | | 通常可选 | OPENAIRE_API_KEY | OpenAIRE 账号或配额场景 | 公开检索通常不需要 |

常用申请入口:

| 服务 | 链接 | | --- | --- | | EasyScholar | EasyScholar Open API | | Semantic Scholar | Semantic Scholar API | | Unpaywall | Unpaywall API | | CORE | CORE API | | PubMed | NCBI API Keys | | Web of Science | Clarivate Developer Portal | | IEEE Xplore | IEEE Xplore Metadata API | | Elsevier | Elsevier Developer Portal | | Springer Nature | Springer Nature Developers | | Wiley TDM | Wiley Text and Data Mining | | OpenAIRE | OpenAIRE APIs |

Agent Skill

npm 包会随包发布 agent Skill,位置是 skills/paper-search/SKILL.md。终端用户可以只用 CLI;AI agent 工作流应安装或同步 Skill,让 agent 正确路由五个主要功能。

paper-search setup --install-skills agents
paper-search skills status --pretty
paper-search skills diff --targets agents --format text
paper-search skills update --targets agents --pretty

支持的 target 包括 agentscodexclaudecursorgeminiantigravityall。Skill 更新会覆盖 package-managed Skill 文件,同时保留 installed Skill 目录里的 extra files。

Skill 只告诉 agent 如何调用 paper-search CLI。API key 仍然应通过 paper-search setuppaper-search config.env 或 shell 环境变量配置。

命令

| 命令 | 用途 | | --- | --- | | paper-search search | 集成式元数据检索 | | paper-search journal-metrics | EasyScholar 期刊指标检索 | | paper-search download | 对已核验 paper ID 或 DOI 下载 PDF | | paper-search run | 用 --arg--json-args 精确调用工具 | | paper-search tools | 运行时工具名和 schema | | paper-search doctor | 脱敏配置、Capability Profile 和平台状态 | | paper-search smoke | mock 或 live 自检 | | paper-search skills | Bundled Skill 状态、diff 和同步 | | paper-search config | 用户级配置管理 |

完整命令和工具 schema:运行 paper-search tools --pretty,或查看 skills/paper-search/references/cli-contract.md

输出

命令默认返回 JSON。需要格式化 JSON 时使用 --pretty;需要可读报告时再使用 --format text

paper-search search "machine learning" --platform crossref --max-results 1 --pretty
paper-search doctor --format text

排障

| 问题 | 首先检查 | | --- | --- | | 找不到命令 | 用 npm install -g paper-search-cli 重新全局安装 | | 能力缺失 | 运行 paper-search doctor --pretty,再用 paper-search setup 配置缺失 key | | 平台限流 | 降低 --max-results,配置对应 key,或切换来源 | | Skill 似乎过期 | 运行 paper-search skills status --pretty,再运行 paper-search skills update --targets agents --pretty | | 需要完整 CLI 细节 | 运行 paper-search tools --pretty |

使用边界

部分来源可能受平台条款、机构订阅或本地法律约束。只有在具备相应访问权和授权时才使用受限集成。

项目来源

本项目感谢 LinuxDo 社区。CLI + Skill 路线和 paper-search 工作流改进来自社区交流与开源分享。

本项目也参考了 openags/paper-search-mcp 的思路,并将工作流调整为独立 CLI。

License

MIT