papersearch 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +292 -0
- package/README.md +203 -125
- package/carsi/README.md +8 -2
- package/carsi/paper_search_carsi/__init__.py +1 -4
- package/carsi/paper_search_carsi/adapters/__init__.py +1 -1
- package/carsi/paper_search_carsi/adapters/base.py +2 -0
- package/carsi/paper_search_carsi/adapters/frontiers/__init__.py +45 -0
- package/carsi/paper_search_carsi/adapters/mdpi/__init__.py +33 -1
- package/carsi/paper_search_carsi/adapters/platforms/figshare/__init__.py +185 -0
- package/carsi/paper_search_carsi/adapters/thieme/__init__.py +6 -5
- package/carsi/paper_search_carsi/browser/__init__.py +8 -1
- package/carsi/paper_search_carsi/browser/backend.py +23 -147
- package/carsi/paper_search_carsi/browser/challenge_interaction.py +137 -0
- package/carsi/paper_search_carsi/browser/challenges.py +57 -0
- package/carsi/paper_search_carsi/browser/engine.py +2 -2
- package/carsi/paper_search_carsi/browser/preview.py +44 -26
- package/carsi/paper_search_carsi/browser/profiles.py +161 -0
- package/carsi/paper_search_carsi/browser/watchdog.py +71 -14
- package/carsi/paper_search_carsi/download_diagnostics.py +1 -1
- package/carsi/paper_search_carsi/engine/batch.py +129 -68
- package/carsi/paper_search_carsi/engine/batch_access.py +8 -3
- package/carsi/paper_search_carsi/engine/batch_capture.py +53 -8
- package/carsi/paper_search_carsi/engine/batch_common.py +27 -14
- package/carsi/paper_search_carsi/engine/batch_diagnostics.py +20 -15
- package/carsi/paper_search_carsi/engine/batch_login.py +47 -27
- package/carsi/paper_search_carsi/engine/batch_runs.py +2 -7
- package/carsi/paper_search_carsi/engine/batch_waits.py +82 -42
- package/carsi/paper_search_carsi/engine/bridge.py +16 -8
- package/carsi/paper_search_carsi/engine/supplements.py +22 -3
- package/carsi/paper_search_carsi/log.py +13 -7
- package/carsi/paper_search_carsi/orchestrator.py +7 -1
- package/carsi/paper_search_carsi/progress_bar.py +39 -18
- package/carsi/paper_search_carsi/server.py +8 -1
- package/carsi/pyproject.toml +1 -1
- package/dist/capabilities/citation-expansion/schemas.d.ts +2 -2
- package/dist/capabilities/metadata-search/MultiSourceSearchService.d.ts.map +1 -1
- package/dist/capabilities/metadata-search/MultiSourceSearchService.js +17 -4
- package/dist/capabilities/metadata-search/MultiSourceSearchService.js.map +1 -1
- package/dist/capabilities/metadata-search/handler.d.ts.map +1 -1
- package/dist/capabilities/metadata-search/handler.js +6 -0
- package/dist/capabilities/metadata-search/handler.js.map +1 -1
- package/dist/capabilities/metadata-search/schemas.d.ts +3 -3
- package/dist/capabilities/metadata-search/schemas.d.ts.map +1 -1
- package/dist/capabilities/metadata-search/schemas.js +1 -0
- package/dist/capabilities/metadata-search/schemas.js.map +1 -1
- package/dist/capabilities/metadata-search/tools.js +1 -1
- package/dist/capabilities/metadata-search/tools.js.map +1 -1
- package/dist/capabilities/pdf-discovery/DownloadTier.d.ts +11 -0
- package/dist/capabilities/pdf-discovery/DownloadTier.d.ts.map +1 -1
- package/dist/capabilities/pdf-discovery/OpenAccessFallbackService.d.ts.map +1 -1
- package/dist/capabilities/pdf-discovery/OpenAccessFallbackService.js +31 -1
- package/dist/capabilities/pdf-discovery/OpenAccessFallbackService.js.map +1 -1
- package/dist/capabilities/pdf-discovery/arxiv.d.ts +4 -0
- package/dist/capabilities/pdf-discovery/arxiv.d.ts.map +1 -0
- package/dist/capabilities/pdf-discovery/arxiv.js +42 -0
- package/dist/capabilities/pdf-discovery/arxiv.js.map +1 -0
- package/dist/capabilities/pdf-discovery/batch.d.ts +1 -1
- package/dist/capabilities/pdf-discovery/batch.d.ts.map +1 -1
- package/dist/capabilities/pdf-discovery/batch.js +56 -16
- package/dist/capabilities/pdf-discovery/batch.js.map +1 -1
- package/dist/capabilities/pdf-discovery/carsi/CarsiAttempt.d.ts.map +1 -1
- package/dist/capabilities/pdf-discovery/carsi/CarsiAttempt.js +2 -0
- package/dist/capabilities/pdf-discovery/carsi/CarsiAttempt.js.map +1 -1
- package/dist/capabilities/pdf-discovery/carsi/CarsiMcpClient.d.ts.map +1 -1
- package/dist/capabilities/pdf-discovery/carsi/CarsiMcpClient.js +3 -3
- package/dist/capabilities/pdf-discovery/carsi/CarsiMcpClient.js.map +1 -1
- package/dist/capabilities/pdf-discovery/carsi/CarsiReadiness.d.ts +2 -1
- package/dist/capabilities/pdf-discovery/carsi/CarsiReadiness.d.ts.map +1 -1
- package/dist/capabilities/pdf-discovery/carsi/CarsiReadiness.js +3 -1
- package/dist/capabilities/pdf-discovery/carsi/CarsiReadiness.js.map +1 -1
- package/dist/capabilities/pdf-discovery/carsi/CarsiResultNormalizer.d.ts +1 -1
- package/dist/capabilities/pdf-discovery/carsi/CarsiResultNormalizer.d.ts.map +1 -1
- package/dist/capabilities/pdf-discovery/carsi/CarsiResultNormalizer.js +4 -4
- package/dist/capabilities/pdf-discovery/carsi/CarsiResultNormalizer.js.map +1 -1
- package/dist/capabilities/pdf-discovery/carsi/types.d.ts +2 -0
- package/dist/capabilities/pdf-discovery/carsi/types.d.ts.map +1 -1
- package/dist/capabilities/pdf-discovery/handler.d.ts.map +1 -1
- package/dist/capabilities/pdf-discovery/handler.js +3 -2
- package/dist/capabilities/pdf-discovery/handler.js.map +1 -1
- package/dist/capabilities/pdf-discovery/oaHosts.d.ts +1 -1
- package/dist/capabilities/pdf-discovery/oaHosts.d.ts.map +1 -1
- package/dist/capabilities/pdf-discovery/oaHosts.js +4 -4
- package/dist/capabilities/pdf-discovery/outputLayout.d.ts +29 -0
- package/dist/capabilities/pdf-discovery/outputLayout.d.ts.map +1 -0
- package/dist/capabilities/pdf-discovery/outputLayout.js +144 -0
- package/dist/capabilities/pdf-discovery/outputLayout.js.map +1 -0
- package/dist/capabilities/pdf-discovery/tiers/directPdfUrl.d.ts.map +1 -1
- package/dist/capabilities/pdf-discovery/tiers/directPdfUrl.js +6 -0
- package/dist/capabilities/pdf-discovery/tiers/directPdfUrl.js.map +1 -1
- package/dist/capabilities/pdf-discovery/tiers/entitledAccess.d.ts +2 -1
- package/dist/capabilities/pdf-discovery/tiers/entitledAccess.d.ts.map +1 -1
- package/dist/capabilities/pdf-discovery/tiers/entitledAccess.js +8 -1
- package/dist/capabilities/pdf-discovery/tiers/entitledAccess.js.map +1 -1
- package/dist/capabilities/pdf-discovery/tiers/preprint.d.ts +5 -0
- package/dist/capabilities/pdf-discovery/tiers/preprint.d.ts.map +1 -0
- package/dist/capabilities/pdf-discovery/tiers/preprint.js +80 -0
- package/dist/capabilities/pdf-discovery/tiers/preprint.js.map +1 -0
- package/dist/capabilities/pdf-discovery/tiers/primary.js +2 -0
- package/dist/capabilities/pdf-discovery/tiers/primary.js.map +1 -1
- package/dist/capabilities/pdf-discovery/tiers/unpaywall.d.ts.map +1 -1
- package/dist/capabilities/pdf-discovery/tiers/unpaywall.js +12 -3
- package/dist/capabilities/pdf-discovery/tiers/unpaywall.js.map +1 -1
- package/dist/capabilities/pdf-discovery/types.d.ts +6 -0
- package/dist/capabilities/pdf-discovery/types.d.ts.map +1 -1
- package/dist/core/handleToolCall.d.ts.map +1 -1
- package/dist/core/handleToolCall.js +12 -0
- package/dist/core/handleToolCall.js.map +1 -1
- package/dist/core/schemas.d.ts +26 -1
- package/dist/core/schemas.d.ts.map +1 -1
- package/dist/core/schemas.js +13 -0
- package/dist/core/schemas.js.map +1 -1
- package/dist/core/searchers.d.ts +2 -0
- package/dist/core/searchers.d.ts.map +1 -1
- package/dist/core/searchers.js.map +1 -1
- package/dist/core/tools.d.ts.map +1 -1
- package/dist/core/tools.js +30 -0
- package/dist/core/tools.js.map +1 -1
- package/dist/infrastructure/arxiv.d.ts +5 -0
- package/dist/infrastructure/arxiv.d.ts.map +1 -0
- package/dist/infrastructure/arxiv.js +36 -0
- package/dist/infrastructure/arxiv.js.map +1 -0
- package/dist/infrastructure/pdf/PdfDownload.d.ts +2 -0
- package/dist/infrastructure/pdf/PdfDownload.d.ts.map +1 -1
- package/dist/infrastructure/pdf/PdfDownload.js +14 -0
- package/dist/infrastructure/pdf/PdfDownload.js.map +1 -1
- package/dist/infrastructure/runlog/RunLedger.d.ts.map +1 -1
- package/dist/infrastructure/runlog/RunLedger.js +17 -1
- package/dist/infrastructure/runlog/RunLedger.js.map +1 -1
- package/dist/management/carsi/installer.d.ts +1 -1
- package/dist/platforms/ArxivSearcher.d.ts +62 -0
- package/dist/platforms/ArxivSearcher.d.ts.map +1 -0
- package/dist/platforms/ArxivSearcher.js +544 -0
- package/dist/platforms/ArxivSearcher.js.map +1 -0
- package/dist/platforms/SemanticScholarSearcher.d.ts.map +1 -1
- package/dist/platforms/SemanticScholarSearcher.js +4 -4
- package/dist/platforms/SemanticScholarSearcher.js.map +1 -1
- package/dist/registry/platformFactories.d.ts.map +1 -1
- package/dist/registry/platformFactories.js +2 -0
- package/dist/registry/platformFactories.js.map +1 -1
- package/dist/registry/platformMetadata.d.ts +1 -1
- package/dist/registry/platformMetadata.d.ts.map +1 -1
- package/dist/registry/platformMetadata.js +16 -0
- package/dist/registry/platformMetadata.js.map +1 -1
- package/package.json +2 -2
- package/skills/paper-search/SKILL.md +7 -4
- package/skills/paper-search/references/browser-download.md +7 -6
- package/skills/paper-search/references/capability-routing.md +4 -3
- package/skills/paper-search/references/cli-contract.md +10 -3
- package/skills/paper-search/references/publisher-support.md +6 -4
- package/skills/paper-search/references/troubleshooting.md +1 -1
- package/README.zh.md +0 -214
package/README.zh.md
DELETED
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
# PaperSearch
|
|
2
|
-
|
|
3
|
-
简体中文 | [English](README.md)
|
|
4
|
-
|
|
5
|
-
PaperSearch 是给 AI 工具和终端用的学术文献命令 `paper-search`,随包附带一份 Skill,教 Claude Code、Codex、Cursor 等 AI 工具怎么调用它。它能检索论文、核验 DOI/PMID、查施引文献和参考文献、查期刊影响因子和分区、在正文片段里找方法学写法,以及下载论文 PDF 和补充材料。输出默认是 JSON,方便 AI 和脚本读取。
|
|
6
|
-
|
|
7
|
-
默认是开放版本:装好就能检索和下载开放获取的论文。需要用学校订阅下载时,可以另装机构下载扩展。
|
|
8
|
-
|
|
9
|
-

|
|
10
|
-

|
|
11
|
-

|
|
12
|
-
[](https://linux.do)
|
|
13
|
-
|
|
14
|
-
[整体逻辑](#整体逻辑) | [快速开始](#快速开始) | [两种下载方式](#两种下载方式) | [检索来源](#检索来源) | [配置](#配置) | [Agent Skill](#agent-skill) | [命令](#命令) | [排障](#排障)
|
|
15
|
-
|
|
16
|
-
## 整体逻辑
|
|
17
|
-
|
|
18
|
-
```text
|
|
19
|
-
用户的文献请求
|
|
20
|
-
│
|
|
21
|
-
├─ 找论文、核验 DOI/PMID → paper-search search(Crossref、PubMed、OpenAlex 等)
|
|
22
|
-
│ └─ 确认条目、需要全文 → 转到下面的“下载”
|
|
23
|
-
├─ 查施引文献、参考文献 → paper-search run get_paper_citations / get_paper_references
|
|
24
|
-
├─ 查影响因子、分区 → paper-search journal-metrics(需要 EasyScholar key)
|
|
25
|
-
├─ 找 Methods 写法、参数 → paper-search run search_semantic_snippets(需要 Semantic Scholar key)
|
|
26
|
-
│
|
|
27
|
-
└─ 下载正文、补充材料 → paper-search download / run download_with_fallback / run download_batch
|
|
28
|
-
同一个下载命令,按顺序尝试:
|
|
29
|
-
├─ ① 开放下载(默认就有):来源自带的下载、PMC、Unpaywall、出版社接口
|
|
30
|
-
├─ ② Sci-Hub 兜底(默认开启,可关闭)
|
|
31
|
-
├─ ③ 机构下载(可选扩展):浏览器经 CARSI 登录你的学校,在出版社网站取 PDF 和补充材料
|
|
32
|
-
├─ 每一步拿到文件都核对首页的 DOI 和题名;通过就保存,后面的步骤不再试
|
|
33
|
-
└─ 都没拿到 → paper-search failures 说明原因
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## 快速开始
|
|
37
|
-
|
|
38
|
-
要求 Node.js 18 及以上和 npm。
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
npm install -g papersearch
|
|
42
|
-
paper-search setup
|
|
43
|
-
paper-search doctor --format text
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
`paper-search setup` 会依次问三件事:API key 和邮箱;要把 Skill 装到哪些 AI 工具(Claude Code、Codex、Cursor 等);要不要安装机构下载扩展。每一步都可以跳过。`doctor` 显示现在能用哪些功能、还缺什么配置。
|
|
47
|
-
|
|
48
|
-
Skill 是教 AI 工具调用 `paper-search` 的说明文件,用 AI 工具做文献任务时要装。跳过了可以随时补装,`--targets` 换成你用的工具(`claude`、`codex`、`cursor`、`gemini`、`agents`,或 `all`):
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
paper-search skills update --targets claude
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
也可以把下面这段话发给你的 AI 工具,让它帮你装:
|
|
55
|
-
|
|
56
|
-
```text
|
|
57
|
-
请帮我安装 PaperSearch:运行 npm install -g papersearch,再运行 paper-search skills update --targets <你自己对应的目标:Claude Code 用 claude,Codex 用 codex,Cursor 用 cursor>,最后运行 paper-search doctor --format text,告诉我哪些功能能用、还缺哪些 key。API key 我会自己在终端运行 paper-search setup 输入,不要让我发到聊天里。
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
**从旧包 `paper-search-cli` 升级**:先运行 `npm uninstall -g paper-search-cli`,再 `npm install -g papersearch`。两个包提供同一个 `paper-search` 命令,不能同时装;配置、Skill、学校登录和下载记录都会保留。
|
|
61
|
-
|
|
62
|
-
**以后升级**:`npm install -g papersearch@latest`。升级后第一次运行 `paper-search` 时,它会自动把你装过的 Skill 更新到新版本。
|
|
63
|
-
|
|
64
|
-
试一下各个功能:
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
paper-search search "machine learning clinical prediction" --platform crossref --max-results 3 --pretty
|
|
68
|
-
paper-search search "large language models" --sources no-key --max-results 5 --pretty
|
|
69
|
-
paper-search run get_paper_citations --arg doi="10.1038/nature12373" --arg limit=5 --pretty
|
|
70
|
-
paper-search journal-metrics "Nature" "BMJ" --pretty
|
|
71
|
-
paper-search download PMC11466435 --platform pmc --save-path ./downloads
|
|
72
|
-
paper-search run search_semantic_snippets --arg query="propensity score matching" --arg limit=3 --pretty
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## 两种下载方式
|
|
76
|
-
|
|
77
|
-
| | 开放下载(默认) | 机构下载(可选扩展) |
|
|
78
|
-
|---|---|---|
|
|
79
|
-
| 能不能直接用 | 装好就能用 | 要另外安装:`paper-search carsi install` |
|
|
80
|
-
| 能拿到什么 | 开放获取的正文 | 你的学校订阅的正文;部分出版社还能取补充材料 |
|
|
81
|
-
| 怎么拿 | 程序直接下载,通常几秒,不用登录:来源自带的下载、元数据里的 PDF 地址、PubMed Central、Unpaywall、出版社接口(你自己的 Elsevier/Springer key);最后是默认开启的 Sci-Hub 兜底 | 打开一个浏览器,经 CARSI 登录你的学校,在出版社网站上取 PDF |
|
|
82
|
-
| 你要做的事 | 无 | 第一次在浏览器里输入学校账号密码、遇到人机验证时点一下;选学校由程序完成 |
|
|
83
|
-
|
|
84
|
-
两种方式用同一个下载命令,不需要分开调用:先试开放下载,拿不到时,装了机构下载才继续用学校权限。
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
paper-search download "<DOI>" --platform crossref --save-path ./downloads
|
|
88
|
-
paper-search run download_batch --json-args '{"items":[{"doi":"<DOI-1>"},{"doi":"<DOI-2>"}],"savePath":"./downloads"}'
|
|
89
|
-
paper-search failures --format text
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
- 几十到几百篇用一次 `download_batch`;结束后 `paper-search failures` 把没下载到的篇目分成四类说明:没权限(附页面原话等依据)、需要你处理(登录、验证、等待)、暂不支持的网站、原因不明。
|
|
93
|
-
- 不想用 Sci-Hub 时,在 `download_with_fallback` / `download_batch` 里设 `"useSciHub": false`。
|
|
94
|
-
- 每个保存的 PDF 都核对首页的 DOI 和题名,不是这篇文章的不保存。
|
|
95
|
-
|
|
96
|
-
### 机构下载扩展
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
paper-search carsi install
|
|
100
|
-
paper-search carsi status --format text
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
- 安装时会问你的学校(CARSI 成员学校,中文名、英文名或域名都可以),并下载专用浏览器 Camoufox,共约 3 GB;macOS 上 `--browser ego` 改用 ego lite,约 0.5 GB。`--skip-school` 可以以后再选学校。
|
|
104
|
-
- 目前用 CARSI(中国高校身份联盟)登录学校;出版社的机构列表里没有 CARSI 或你的学校时,程序会立即说明,建议在校园网或学校 VPN 下下载。
|
|
105
|
-
- 下载时会出现进度窗口:可以跳过本篇、标记本刊或出版社无权限、终止整个任务,右上角齿轮可以调整等待时间。停在学校登录页默认最多等 3 分钟,停在其他页面(人机验证、出版社页面等)默认 1 分钟后结束这一篇。
|
|
106
|
-
- `paper-search carsi update` 在 PaperSearch 升级后更新扩展,`paper-search carsi uninstall` 卸载(默认保留浏览器和学校配置)。
|
|
107
|
-
- Windows:PowerShell 拦住 `npm.ps1` 时改用 `npm.cmd` 或命令提示符;下载要在桌面会话里运行,经 SSH 或系统服务启动时浏览器窗口打不开。
|
|
108
|
-
|
|
109
|
-
### 补充材料
|
|
110
|
-
|
|
111
|
-
`download_with_fallback` / `download_batch` 的 `content` 选择下载内容:`main`(默认,只要正文)、`both`(正文加补充材料)、`supplements`(只要补充材料)。补充材料只经机构下载取得,存在 `<保存目录>/<DOI>_supplements/`,附 `manifest.json` 写明每个文件的状态。
|
|
112
|
-
|
|
113
|
-
各出版社能不能下正文、能不能下补充材料,见 [出版社支持表](skills/paper-search/references/publisher-support.md)。正文和补充材料都实测取得的有 Elsevier、Wiley、Springer Nature、OUP、Wolters Kluwer、Taylor & Francis、Sage、ACS、NEJM、ASCE、Dove 等;IEEE、Thieme 等目前只取正文;表里没有的网站按通用规则尝试。
|
|
114
|
-
|
|
115
|
-
## 检索来源
|
|
116
|
-
|
|
117
|
-
| 类别 | 来源 | 需要的配置 |
|
|
118
|
-
|---|---|---|
|
|
119
|
-
| 综合学术元数据 | Crossref、OpenAlex、Semantic Scholar、Google Scholar | 不需要;Semantic Scholar 的正文片段检索需要 key;Google Scholar 要明确指定 |
|
|
120
|
-
| 生物医学 | PubMed、PubMed Central、Europe PMC | 可选 PubMed key |
|
|
121
|
-
| 预印本和会议稿 | bioRxiv、medRxiv、OpenReview、IACR ePrint | 不需要 |
|
|
122
|
-
| 计算机和工程 | DBLP、ACM、USENIX、IEEE Xplore | IEEE 需要 key |
|
|
123
|
-
| 开放获取和仓储 | CORE、OpenAIRE、Unpaywall | Unpaywall 需要邮箱;CORE key 可选 |
|
|
124
|
-
| 引文库和出版社 | Web of Science、Scopus、ScienceDirect、Springer Nature | 需要各自的 key;只提供元数据(Elsevier、Springer 的 key 也用于出版社接口取全文) |
|
|
125
|
-
| 期刊指标 | EasyScholar | 需要 EasyScholar key |
|
|
126
|
-
|
|
127
|
-
- 单个来源用 `--platform`,多个用 `--sources a,b,c`;`--sources no-key` 是不需要任何 key 的组合(Crossref、PubMed、Europe PMC、OpenReview)。
|
|
128
|
-
- Google Scholar 是网页解析,容易触发验证,不在 `--sources all` 里;需要时用 `--platform googlescholar`。
|
|
129
|
-
- Sci-Hub 不是检索来源,只在下载时按 DOI 兜底。
|
|
130
|
-
|
|
131
|
-
## 配置
|
|
132
|
-
|
|
133
|
-
多数免费来源不需要配置。建议先运行 `paper-search setup`,把 key 写入用户配置:
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
paper-search setup
|
|
137
|
-
paper-search config list --pretty
|
|
138
|
-
paper-search config set SEMANTIC_SCHOLAR_API_KEY <你的 key>
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
配置文件在 `~/.config/paper-search-cli/config.json`(权限 `0600`;文件夹沿用旧名,升级不丢设置),`config list` 和 `doctor` 会把 key 脱敏显示。
|
|
142
|
-
|
|
143
|
-
| 配置项 | 用途 | 什么时候配置 |
|
|
144
|
-
|---|---|---|
|
|
145
|
-
| `SEMANTIC_SCHOLAR_API_KEY` | 正文片段检索,更稳定的 Semantic Scholar 请求 | 要查方法细节,或经常用 Semantic Scholar |
|
|
146
|
-
| `UNPAYWALL_EMAIL` | 按 DOI 找开放获取 PDF | 推荐配置;填邮箱即可 |
|
|
147
|
-
| `CROSSREF_MAILTO` | Crossref 优先通道 | 长任务或高频检索 |
|
|
148
|
-
| `CORE_API_KEY` | CORE 仓储检索 | 经常用 CORE 或遇到限流 |
|
|
149
|
-
| `EASYSCHOLAR_KEY` | 期刊指标 | 要查影响因子、分区;用 `paper-search setup EASYSCHOLAR_KEY` 隐藏输入 |
|
|
150
|
-
| `PUBMED_API_KEY`、`NCBI_EMAIL` | PubMed 更高限额 | 经常用 PubMed |
|
|
151
|
-
| `WOS_API_KEY`、`IEEE_API_KEY`、`ELSEVIER_API_KEY`、`SPRINGER_API_KEY` | 各自的元数据;Elsevier、Springer 的 key 也用于出版社接口取全文(权限跟随你的网络或 key) | 要用对应来源时 |
|
|
152
|
-
| `ELSEVIER_INSTTOKEN` | 校外经 Elsevier 接口取全文 | 校外需要全文时;校园网不需要 |
|
|
153
|
-
| `GOOGLE_SCHOLAR_PROXY_URL` | Google Scholar 的出口代理 | 直连反复被拦时,用有授权的代理 |
|
|
154
|
-
| `PAPER_SEARCH_CARSI_ENABLED` | 机构下载扩展的开关 | `paper-search carsi install` 自动设置 |
|
|
155
|
-
| `PAPER_SEARCH_SKILL_AUTO_UPDATE` | 设为 `false` 时,升级后不再自动更新已安装的 Skill | 默认开启,想自己管理 Skill 时设置 |
|
|
156
|
-
|
|
157
|
-
申请入口:[EasyScholar](https://www.easyscholar.cc/console/user/open) · [Semantic Scholar](https://www.semanticscholar.org/product/api) · [Unpaywall](https://unpaywall.org/products/api) · [CORE](https://core.ac.uk/services/api) · [NCBI](https://ncbiinsights.ncbi.nlm.nih.gov/2017/11/02/new-api-keys-for-the-e-utilities/) · [Web of Science](https://developer.clarivate.com/apis) · [IEEE Xplore](https://developer.ieee.org/docs/read/Searching_the_IEEE_Xplore_Metadata_API) · [Elsevier](https://dev.elsevier.com/apikey/manage) · [Springer Nature](https://dev.springernature.com/) · [OpenAIRE](https://develop.openaire.eu/)
|
|
158
|
-
|
|
159
|
-
## Agent Skill
|
|
160
|
-
|
|
161
|
-
Skill 随 npm 包发布(`skills/paper-search/`),全中文,开头有整体逻辑图,按需读这些参考文件:功能路由与开放下载的各个渠道、命令约定、机构下载的安装和使用、[出版社支持表](skills/paper-search/references/publisher-support.md)、排障。它只告诉 AI 怎么调用 `paper-search`,不保存 key、Cookie 或账号。
|
|
162
|
-
|
|
163
|
-
```bash
|
|
164
|
-
paper-search skills status --pretty
|
|
165
|
-
paper-search skills update --targets claude
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
- 支持的目标:`agents`、`codex`、`claude`、`cursor`、`gemini`、`antigravity`、`all`。更新会覆盖包里管理的文件,保留你在 Skill 目录里自己加的文件。
|
|
169
|
-
- **升级后自动更新**:升级 PaperSearch 后第一次运行 `paper-search`(`skills`、`setup` 除外)时,它把你已经装过的 Skill 更新到新版本:只更新原来装过的位置;被替换的旧文件备份在 `~/.local/share/paper-search-cli/skill-backups/`;并在 stderr 写一行说明。一个都没装时只提示一次怎么装。不想自动更新:`paper-search config set PAPER_SEARCH_SKILL_AUTO_UPDATE false`。
|
|
170
|
-
- `paper-search doctor` 显示 Skill 装在哪里、是否最新。
|
|
171
|
-
|
|
172
|
-
## 命令
|
|
173
|
-
|
|
174
|
-
| 命令 | 用途 |
|
|
175
|
-
|---|---|
|
|
176
|
-
| `paper-search search` | 检索论文元数据 |
|
|
177
|
-
| `paper-search journal-metrics` | 期刊指标(EasyScholar) |
|
|
178
|
-
| `paper-search download` | 下载已核验论文的 PDF |
|
|
179
|
-
| `paper-search run <工具>` | 精确调用某个工具,参数用 `--arg` 或 `--json-args` |
|
|
180
|
-
| `paper-search failures` | 汇总下载失败的原因 |
|
|
181
|
-
| `paper-search carsi` | 机构下载扩展的安装、状态、更新、卸载 |
|
|
182
|
-
| `paper-search setup` / `config` | 配置 key、Skill 和扩展 |
|
|
183
|
-
| `paper-search doctor` | 健康检查:配置、可用功能、Skill 和扩展的状态 |
|
|
184
|
-
| `paper-search skills` | Skill 的状态、差异和更新 |
|
|
185
|
-
| `paper-search smoke` | 离线或真实的自检 |
|
|
186
|
-
| `paper-search tools` | 列出所有工具名和参数 |
|
|
187
|
-
|
|
188
|
-
命令默认输出 JSON,`--pretty` 排版,`--format text` 输出给人看的报告。完整命令见 `paper-search tools --pretty` 或 [命令约定](skills/paper-search/references/cli-contract.md)。
|
|
189
|
-
|
|
190
|
-
## 排障
|
|
191
|
-
|
|
192
|
-
| 问题 | 怎么办 |
|
|
193
|
-
|---|---|
|
|
194
|
-
| 找不到 `paper-search` 命令 | `npm install -g papersearch` 重新安装 |
|
|
195
|
-
| 安装时报 `EEXIST` | 旧包还在:先 `npm uninstall -g paper-search-cli` |
|
|
196
|
-
| 某个功能不能用 | `paper-search doctor --format text` 看缺什么,再 `paper-search setup` 配置 |
|
|
197
|
-
| 学校订阅的文章下载不到 | `paper-search carsi status --format text` 看扩展是否装好;`paper-search failures --format text` 看每篇的原因 |
|
|
198
|
-
| 来源限流 | 减小 `--max-results`、配置对应 key,或换来源 |
|
|
199
|
-
| Google Scholar 出验证页 | 等一会儿再试,或改用 `--sources no-key` |
|
|
200
|
-
| AI 读到的 Skill 是旧的 | `paper-search skills status --pretty`,再 `paper-search skills update --targets <工具>`;新开一个 AI 会话 |
|
|
201
|
-
|
|
202
|
-
## 使用边界
|
|
203
|
-
|
|
204
|
-
部分来源受平台条款、机构订阅或当地法律约束,只在你有相应访问权时使用。机构下载用的是你自己的学校账号和订阅;结果里的来源标记只用于诊断,不能当作授权证明。
|
|
205
|
-
|
|
206
|
-
## 项目来源
|
|
207
|
-
|
|
208
|
-
- 感谢 [LinuxDo](https://linux.do) 社区:命令 + Skill 的路线和工作流改进来自社区交流与开源分享。
|
|
209
|
-
- [openags/paper-search-mcp](https://github.com/openags/paper-search-mcp):本项目参考了它的思路,并改成独立的命令行工具。
|
|
210
|
-
- [Rimagination/scansci-pdf](https://github.com/Rimagination/scansci-pdf)(MIT):机构下载后端(`carsi/`)由它裁出,只保留机构访问这一段(CARSI 等联盟登录、出版社网站抓取、会话复用、PDF 捕获),再逐家补充出版社规则;原项目的版权声明保留在 `carsi/NOTICE`。
|
|
211
|
-
|
|
212
|
-
## License
|
|
213
|
-
|
|
214
|
-
MIT
|