@a9i5k4/dsh-literature 0.2.1 → 0.2.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.md +83 -61
- package/README_EN.md +159 -0
- package/lib/client.js +17 -12
- package/lib/index.js +297 -232
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -1,54 +1,59 @@
|
|
|
1
1
|
# DSH Literature · 文献侧窗
|
|
2
2
|
|
|
3
|
+
[](#) · [English](./README_EN.md)
|
|
4
|
+
|
|
3
5
|
> 在 DeepSeek Harness 侧边栏里识别、下载、阅读并归档学术文献。
|
|
4
6
|
> 对话中出现的 DOI / arXiv ID / 标题,一键落入本地文献库,全文随取随读。
|
|
5
7
|
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 📥 安装与下载(npm)
|
|
11
|
+
|
|
6
12
|
[](https://www.npmjs.com/package/@a9i5k4/dsh-literature)
|
|
7
13
|
[](https://www.npmjs.com/package/@a9i5k4/dsh-literature)
|
|
8
14
|
[](LICENSE)
|
|
9
15
|
[]()
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
## 特性
|
|
14
|
-
|
|
15
|
-
- **自动识别** —— 从模型回复或粘贴文本中解析 `DOI`、`arXiv`、`PMID`、`ISBN` 与标题引用,去重后生成侧窗条目
|
|
16
|
-
- **元数据抓取** —— 内置 Crossref / arXiv / OpenAlex 解析,自动补全标题、作者、期刊、年份与摘要
|
|
17
|
-
- **全文下载** —— 按 OA 来源(arXiv、OpenAlex OA、Unpaywall、出版商 `citation_pdf_url`)抓取 PDF,失败时给出明确原因并支持重试
|
|
18
|
-
- **内置文献库** —— 识别、下载、阅读、笔记全部自给自足,**不依赖任何外部软件**;可选把条目导出到本地文献库(Zotero 生态,走官方 Connector 协议)或导出为 `PDF + .csl.json + .ris` 到任意目录
|
|
19
|
-
- **侧窗阅读** —— 内置 PDF 阅读器:缩放、翻页、目录跳转、全文搜索、高亮与笔记
|
|
20
|
-
- **冲突预览** —— 库中已有相似条目时,先展示字段级差异再决定保留 / 覆盖 / 合并
|
|
21
|
-
- **完全本地** —— 所有请求经本机回环接口转发,无遥测、无云端中转、无账号依赖
|
|
22
|
-
|
|
23
|
-
## 安装
|
|
24
|
-
|
|
25
|
-
要求:DeepSeek Harness(`dsh` CLI)已安装,Node ≥ 20。
|
|
17
|
+
**npm 包:** [`@a9i5k4/dsh-literature`](https://www.npmjs.com/package/@a9i5k4/dsh-literature)
|
|
26
18
|
|
|
27
19
|
```bash
|
|
28
20
|
dsh plugin --profile web add @a9i5k4/dsh-literature
|
|
29
21
|
```
|
|
30
22
|
|
|
31
|
-
|
|
23
|
+
- 源码与发布版:[GitHub Releases](https://github.com/Aik358/dsh-literature/releases)
|
|
24
|
+
- 本地开发:`dsh plugin --profile web add D:/path/to/dsh-literature`(`link:` 协议)
|
|
25
|
+
- 安装后重启 `dsh web`,侧边栏出现「文献」入口(若装有右侧栏工作台则并入其 tab)
|
|
32
26
|
|
|
33
|
-
|
|
27
|
+
---
|
|
34
28
|
|
|
35
|
-
##
|
|
29
|
+
## ✨ 特性
|
|
36
30
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
- **内置文献库** —— 识别、下载、保存、阅读、笔记全程自给自足,**不依赖任何外部软件**;可选导出到本地文献库(Zotero 生态)或目录
|
|
32
|
+
- **自动识别** —— 从模型回复或粘贴文本解析 `DOI` / `arXiv` / `PMID` / `ISBN` / 标题,自动去重
|
|
33
|
+
- **元数据抓取** —— Crossref / arXiv / OpenAlex,自动补全标题、作者、期刊、年份、摘要
|
|
34
|
+
- **全文下载** —— OA 多源(arXiv → OpenAlex OA → Unpaywall → DOI → 出版商链接),失败明确分类并支持重试;可配置自定义下载源
|
|
35
|
+
- **引用生成器** —— Scribbr 风格:参考文献 / 文内引用 / 直接引用(带页码)× APA 7 / GB/T 7714 / MLA 9 / Chicago 17,一键复制
|
|
36
|
+
- **库管理** —— 扫描导入文件夹(文件名自动识别 DOI/arXiv/标题)、从本地文献库批量导入、自动监控新 PDF、条目增删
|
|
37
|
+
- **侧窗阅读** —— 内置 PDF 阅读器:缩放、翻页、目录跳转、全文搜索、高亮与笔记
|
|
38
|
+
- **全网入口** —— 每条文献直达 Google Scholar / 百度学术 / 知网 / 来源页
|
|
39
|
+
- **冲突预览** —— 库中已有相似条目时,先展示字段级差异再决定保留 / 覆盖 / 合并
|
|
40
|
+
- **完全本地** —— 所有请求经本机回环接口转发,无遥测、无云端中转、无账号依赖
|
|
41
|
+
|
|
42
|
+
## 🚀 快速开始
|
|
43
|
+
|
|
44
|
+
1. 点击「文献」打开侧窗(或粘贴文本识别)
|
|
45
|
+
2. 让模型调用 `zotero_lookup`,或直接粘贴含 DOI / arXiv ID 的文本
|
|
46
|
+
3. 条目入窗后:**下载全文 → 阅读 → 保存**(默认存内置文献库)
|
|
40
47
|
|
|
41
48
|
```
|
|
42
|
-
对话回复 侧窗动作
|
|
43
|
-
───────────────────────────── ─────────────────────────────
|
|
44
49
|
"参考 DOI: 10.1038/xxxx" → 条目出现,自动解析元数据
|
|
45
50
|
"arXiv:1706.03762" → 一键下载全文 PDF
|
|
46
|
-
点击「保存」 →
|
|
51
|
+
点击「保存」 → 存入内置文献库(可随时导出)
|
|
47
52
|
```
|
|
48
53
|
|
|
49
|
-
## 配置
|
|
54
|
+
## ⚙️ 配置
|
|
50
55
|
|
|
51
|
-
侧窗右上角齿轮进入设置(分类:保存与导出 / 识别与下载 / 行为与界面 /
|
|
56
|
+
侧窗右上角齿轮进入设置(分类:保存与导出 / 识别与下载 / 行为与界面 / 导入管理 / 自定义下载源 / 高级):
|
|
52
57
|
|
|
53
58
|
| 项 | 说明 | 默认 |
|
|
54
59
|
|---|---|---|
|
|
@@ -58,84 +63,101 @@ dsh plugin --profile web add @a9i5k4/dsh-literature
|
|
|
58
63
|
| 自动解析 / 标题识别 / 自动扫描回复 | 识别策略与误报控制 | 开 / 开 / 关 |
|
|
59
64
|
| 重试次数 / 下载超时 | 网络重试与超时控制 | 3 次 / 30s |
|
|
60
65
|
| 重复条目策略 | 询问 / 保留库中 / 覆盖为新版本 | 询问 |
|
|
66
|
+
| 入口位置 | 自动(优先右侧栏 tab)/ 固定左侧栏 / 隐藏 | 自动 |
|
|
61
67
|
| 面板宽度 / 阅读器默认缩放 | 浮窗尺寸与阅读初始视图 | 380px / 适应宽度 |
|
|
62
|
-
|
|
|
63
|
-
|
|
|
68
|
+
| 导入文件夹 / 自动扫描 | 本机 PDF 入库(手动或每 30s 自动) | 空 / 关 |
|
|
69
|
+
| 自定义下载源 | 自建镜像 / 机构代理 / 专属端点(含请求头) | 空 |
|
|
70
|
+
|
|
71
|
+
## 🧩 与 dsh-better-sidebar 集成
|
|
72
|
+
|
|
73
|
+
安装了 [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar) 时,插件自动把「文献」注册为**右侧栏 tab**(`ctx.get('betterSidebar').registerTab`),不再占用左侧栏按钮位;未安装则回退为左侧栏入口 + 浮窗,并持续探测,检测到后自动迁移。
|
|
74
|
+
|
|
75
|
+
## 📚 引用生成
|
|
76
|
+
|
|
77
|
+
每条文献卡片的「引用」菜单:
|
|
78
|
+
|
|
79
|
+
| 模式 | 说明 |
|
|
80
|
+
|---|---|
|
|
81
|
+
| 参考文献 | APA 7 / GB/T 7714-2015 / MLA 9 / Chicago 17 完整条目 |
|
|
82
|
+
| 文内引用 | `(Vaswani et al., 2017)` / `(Vaswani等,2017)` |
|
|
83
|
+
| 直接引用 | 输入页码后生成 `(Vaswani et al., 2017, p. 7)` 等 |
|
|
84
|
+
|
|
85
|
+
## 🔌 自定义下载源
|
|
64
86
|
|
|
65
|
-
|
|
87
|
+
合规前提下,你可以在设置里添加**自己信任**的镜像 / 机构代理 / 专属端点:
|
|
66
88
|
|
|
67
|
-
|
|
89
|
+
- URL 模板变量:`{doi}` `{arxiv}` `{isbn}` `{title}` `{url}`
|
|
90
|
+
- 自定义请求头(每行 `名称: 值`),适配带 token / cookie 的端点
|
|
91
|
+
- 作为官方 OA 链之后的兜底;缺变量或非法模板自动跳过
|
|
68
92
|
|
|
69
|
-
|
|
93
|
+
> 合规提醒:这些源由你自行配置并对其合法性负责,插件不内置任何破解或侵权来源。
|
|
70
94
|
|
|
71
|
-
|
|
95
|
+
## 🔒 付费墙与需要登录的文献
|
|
72
96
|
|
|
73
|
-
|
|
74
|
-
2. 点击「打开登录页」在浏览器中完成登录 / 机构访问
|
|
75
|
-
3. 下载 PDF 后回到侧窗点「导入本地 PDF」选择文件
|
|
76
|
-
4. 插件校验文件、写入影子库并自动执行保存流程(入库或导出目录)
|
|
97
|
+
全文抓取仅使用公开的开放获取来源。当文献需要**登录或机构订阅**时:
|
|
77
98
|
|
|
78
|
-
|
|
99
|
+
1. 条目标记「需要登录」并给出原因
|
|
100
|
+
2. 「打开登录页」在浏览器完成登录 / 机构访问
|
|
101
|
+
3. 下载 PDF 后点「导入本地 PDF」,插件校验并自动执行保存流程
|
|
79
102
|
|
|
80
|
-
## 工作原理
|
|
103
|
+
## 🧠 工作原理
|
|
81
104
|
|
|
82
105
|
```
|
|
83
|
-
浏览器侧窗
|
|
84
|
-
· 识别/状态/进度
|
|
85
|
-
· PDF 阅读器
|
|
106
|
+
浏览器侧窗 ── fetch / SSE ──▶ DSH 宿主进程 ──▶ 本地文献库(可选)/ 自定义源
|
|
107
|
+
· 识别/状态/进度 · 解析与下载 · 内置库 / OA 链
|
|
108
|
+
· PDF 阅读器 · 影子索引与笔记
|
|
86
109
|
```
|
|
87
110
|
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
- 高亮与笔记保存在插件自己的影子存储中,不侵入文献库数据
|
|
91
|
-
- 保存目标为文献库当前选中位置;如需归类集合,先在文献库中选择对应集合
|
|
111
|
+
- 默认(内置文献库)把条目与全文存放在插件自己的本地存储,**不依赖任何外部软件**
|
|
112
|
+
- 导出到本地文献库(Zotero 生态)时:浏览器无法直连(CORS 仅放行特定来源),读写经 DSH 宿主转发,写入走官方 Connector 协议两步提交
|
|
92
113
|
|
|
93
|
-
## 数据与隐私
|
|
114
|
+
## 🔐 数据与隐私
|
|
94
115
|
|
|
95
|
-
-
|
|
96
|
-
- 插件仅监听 `127.0.0.1`
|
|
116
|
+
- 元数据与全文请求直连公开学术 API(Crossref / arXiv / OpenAlex / Unpaywall),**不经任何第三方中转**
|
|
117
|
+
- 插件仅监听 `127.0.0.1` 回环路由,非本机请求一律 403
|
|
97
118
|
- 无遥测、无统计、不上传任何本地数据
|
|
98
119
|
|
|
99
|
-
## 兼容性
|
|
120
|
+
## 🖥️ 兼容性
|
|
100
121
|
|
|
101
122
|
| 组件 | 版本 |
|
|
102
123
|
|---|---|
|
|
103
124
|
| DeepSeek Harness | ≥ 0.1.1-rc.2(Cordis v4) |
|
|
104
|
-
|
|
|
125
|
+
| 本地文献库(可选) | 8.x(Zotero 生态,Local API v3 / Connector API) |
|
|
105
126
|
| Node | ≥ 20 |
|
|
106
127
|
|
|
107
128
|
> 本插件与文献库官方无任何附属关系,为独立的开源兼容实现。
|
|
108
129
|
|
|
109
|
-
## 常见问题
|
|
130
|
+
## ❓ 常见问题
|
|
110
131
|
|
|
111
|
-
|
|
112
|
-
|
|
132
|
+
**保存后没看到条目?**
|
|
133
|
+
确认保存方式;内置库模式完全离线,无需任何应用运行。
|
|
113
134
|
|
|
114
135
|
**付费文献下载失败?**
|
|
115
|
-
|
|
136
|
+
条目标记「需要登录/付费墙」:先「打开登录页」完成登录,下载后「导入本地 PDF」即可入库;或配置自定义下载源。
|
|
116
137
|
|
|
117
138
|
**修改设置后没生效?**
|
|
118
|
-
|
|
139
|
+
设置即时落盘;修改端口后需重启文献库应用使其生效。
|
|
119
140
|
|
|
120
|
-
## 开发
|
|
141
|
+
## 🛠️ 开发
|
|
121
142
|
|
|
122
143
|
```bash
|
|
123
144
|
npm install
|
|
124
145
|
npm run build # 产物输出到 lib/
|
|
125
146
|
npm run smoke # 逻辑冒烟
|
|
126
|
-
npm run
|
|
147
|
+
npm run check:client # 前端 bundle 结构 + apply 矩阵
|
|
148
|
+
npm run test # 宿主侧端到端
|
|
127
149
|
```
|
|
128
150
|
|
|
129
151
|
```
|
|
130
152
|
src/
|
|
131
|
-
├── node/ # 宿主侧:路由 / 识别 / 元数据 / 下载 /
|
|
153
|
+
├── node/ # 宿主侧:路由 / 识别 / 元数据 / 下载 / 引用 / 导入 / 影子库
|
|
132
154
|
│ ├── zotero/ # 与本地文献库交互(只读查询 + Connector 写入)
|
|
133
155
|
│ ├── metadata/ # Crossref · arXiv · OpenAlex
|
|
134
|
-
│ └── fetch/ # OA
|
|
135
|
-
└── client/ # 浏览器侧:侧窗 UI / PDF 阅读器(pdf.js 自捆)
|
|
156
|
+
│ └── fetch/ # OA 全文获取 / 自定义源 / 重试
|
|
157
|
+
└── client/ # 浏览器侧:侧窗 UI / 引用菜单 / PDF 阅读器(pdf.js 自捆)
|
|
136
158
|
```
|
|
137
159
|
|
|
138
|
-
## License
|
|
160
|
+
## 📄 License
|
|
139
161
|
|
|
140
162
|
[MIT](LICENSE)
|
|
141
163
|
|
package/README_EN.md
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# DSH Literature · Side Panel
|
|
2
|
+
|
|
3
|
+
[](README_EN.md) · [中文](./README.md)
|
|
4
|
+
|
|
5
|
+
> Detect, download, read and archive academic papers from the DeepSeek Harness
|
|
6
|
+
> side panel. DOIs / arXiv IDs / titles from the conversation drop straight
|
|
7
|
+
> into your local library with full text at hand.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 📥 Install & Download (npm)
|
|
12
|
+
|
|
13
|
+
[](https://www.npmjs.com/package/@a9i5k4/dsh-literature)
|
|
14
|
+
[](https://www.npmjs.com/package/@a9i5k4/dsh-literature)
|
|
15
|
+
[](LICENSE)
|
|
16
|
+
[]()
|
|
17
|
+
|
|
18
|
+
**npm package:** [`@a9i5k4/dsh-literature`](https://www.npmjs.com/package/@a9i5k4/dsh-literature)
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
dsh plugin --profile web add @a9i5k4/dsh-literature
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
- Source & releases: [GitHub Releases](https://github.com/Aik358/dsh-literature/releases)
|
|
25
|
+
- Local development: `dsh plugin --profile web add D:/path/to/dsh-literature` (`link:` protocol)
|
|
26
|
+
- Restart `dsh web` after installing; a 「Papers」 entry appears in the sidebar
|
|
27
|
+
(or merges into the right-sidebar workbench tab when present).
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## ✨ Features
|
|
32
|
+
|
|
33
|
+
- **Built-in library** — detect, download, save, read and annotate with **zero
|
|
34
|
+
external dependencies**; optionally export to a Zotero-ecosystem library or a folder
|
|
35
|
+
- **Auto-detection** — parse `DOI` / `arXiv` / `PMID` / `ISBN` / titles from replies or pasted text, deduped
|
|
36
|
+
- **Metadata** — Crossref / arXiv / OpenAlex fill in title, authors, journal, year, abstract
|
|
37
|
+
- **Full-text download** — OA multi-source chain (arXiv → OpenAlex OA → Unpaywall → DOI → publisher link), classified failures with retry; user-configured custom sources
|
|
38
|
+
- **Citation generator** — Scribbr-style: reference list / in-text / direct quote (with page) × APA 7 / GB/T 7714 / MLA 9 / Chicago 17, one-click copy
|
|
39
|
+
- **Library management** — scan an import folder (DOI/arXiv/title inferred from file names), batch-import from a Zotero-ecosystem library, optional folder watch, add/remove entries
|
|
40
|
+
- **Side-panel reader** — built-in PDF viewer: zoom, pages, outline, full-text search, highlights and notes
|
|
41
|
+
- **Search portals** — every item links to Google Scholar / Baidu Xueshu / CNKI / source page
|
|
42
|
+
- **Conflict preview** — field-level diff against existing entries before saving
|
|
43
|
+
- **Fully local** — loopback-only routes, no telemetry, no cloud relay, no account
|
|
44
|
+
|
|
45
|
+
## 🚀 Quick Start
|
|
46
|
+
|
|
47
|
+
1. Open the 「Papers」 panel (or paste text to detect)
|
|
48
|
+
2. Ask the model to call `zotero_lookup`, or paste text containing DOIs / arXiv IDs
|
|
49
|
+
3. Per entry: **download full text → read → save** (built-in library by default)
|
|
50
|
+
|
|
51
|
+
## ⚙️ Configuration
|
|
52
|
+
|
|
53
|
+
Gear icon in the panel header (sections: Saving & export / Detection & download / Behaviour & UI / Import / Custom sources / Advanced):
|
|
54
|
+
|
|
55
|
+
| Setting | Description | Default |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| Save target | `Built-in library` (no external app) / `Local library` (app required) / `Folder` | Built-in library |
|
|
58
|
+
| Export dir / Naming / Sidecars | folder target, name template, CSL-JSON/RIS choice | `{author}_{year}_{title}` |
|
|
59
|
+
| Default tags | comma separated, attached on save | empty |
|
|
60
|
+
| Auto-resolve / quoted titles / scan replies | detection & false-positive control | on / on / off |
|
|
61
|
+
| Retries / timeout | network retry & timeout control | 3 / 30s |
|
|
62
|
+
| Duplicate strategy | ask / keep / replace | ask |
|
|
63
|
+
| Entry placement | auto (right-sidebar tab first) / footer / hidden | auto |
|
|
64
|
+
| Panel width / reader fit | floating size & initial reader view | 380px / fit-width |
|
|
65
|
+
| Import folder / watch | bring local PDFs into the library (manual or every 30s) | empty / off |
|
|
66
|
+
| Custom download sources | your mirrors / proxies / endpoints (with headers) | empty |
|
|
67
|
+
|
|
68
|
+
## 🧩 dsh-better-sidebar integration
|
|
69
|
+
|
|
70
|
+
When [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar) is installed, the plugin registers a **right-sidebar tab** via `ctx.get('betterSidebar').registerTab` and stops using the sidebar footer; otherwise it falls back to the footer entry + floating panel, probing continuously and migrating automatically.
|
|
71
|
+
|
|
72
|
+
## 📚 Citations
|
|
73
|
+
|
|
74
|
+
The 「Cite」 menu on every card:
|
|
75
|
+
|
|
76
|
+
| Mode | Description |
|
|
77
|
+
|---|---|
|
|
78
|
+
| Reference list | APA 7 / GB/T 7714-2015 / MLA 9 / Chicago 17 entries |
|
|
79
|
+
| In-text | `(Vaswani et al., 2017)` |
|
|
80
|
+
| Direct quote | page prompt → `(Vaswani et al., 2017, p. 7)` |
|
|
81
|
+
|
|
82
|
+
## 🔌 Custom download sources
|
|
83
|
+
|
|
84
|
+
Within compliance bounds, add mirrors / institutional proxies / private endpoints you trust in Settings:
|
|
85
|
+
|
|
86
|
+
- URL placeholders: `{doi}` `{arxiv}` `{isbn}` `{title}` `{url}`
|
|
87
|
+
- Extra headers (one `Name: Value` per line) for token/cookie-gated endpoints
|
|
88
|
+
- Appended after the official OA chain as fallbacks; malformed templates are skipped
|
|
89
|
+
|
|
90
|
+
> Compliance: these sources are your own configuration and your responsibility; the plugin ships no pirated or infringing source.
|
|
91
|
+
|
|
92
|
+
## 🔒 Paywalled & login-gated papers
|
|
93
|
+
|
|
94
|
+
Only public open-access sources are fetched automatically. For login-gated papers:
|
|
95
|
+
|
|
96
|
+
1. The entry is marked 「Login required」 with a reason
|
|
97
|
+
2. 「Open login page」 lets you sign in / access via your institution
|
|
98
|
+
3. After downloading, 「Import local PDF」 validates and saves the file automatically
|
|
99
|
+
|
|
100
|
+
## 🧠 How it works
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Browser panel ── fetch / SSE ──▶ DSH host ──▶ local library (optional) / custom sources
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
- Default (built-in library) keeps entries + PDFs in the plugin's own local storage — no external app
|
|
107
|
+
- Exporting to a Zotero-ecosystem library: browsers cannot reach it directly (CORS), so reads/writes go through the DSH host using the official Connector protocol
|
|
108
|
+
|
|
109
|
+
## 🔐 Privacy
|
|
110
|
+
|
|
111
|
+
- Metadata & full-text requests go straight to public scholarly APIs — no third-party relay
|
|
112
|
+
- Loopback-only (`127.0.0.1`); non-loopback requests get 403
|
|
113
|
+
- No telemetry, no analytics, nothing uploaded
|
|
114
|
+
|
|
115
|
+
## 🖥️ Compatibility
|
|
116
|
+
|
|
117
|
+
| Component | Version |
|
|
118
|
+
|---|---|
|
|
119
|
+
| DeepSeek Harness | ≥ 0.1.1-rc.2 (Cordis v4) |
|
|
120
|
+
| Local library (optional) | 8.x (Zotero ecosystem, Local API v3 / Connector API) |
|
|
121
|
+
| Node | ≥ 20 |
|
|
122
|
+
|
|
123
|
+
> Independent open-source implementation, not affiliated with any library vendor.
|
|
124
|
+
|
|
125
|
+
## ❓ FAQ
|
|
126
|
+
|
|
127
|
+
**Nothing appears after saving?**
|
|
128
|
+
Check the save target; built-in mode is fully offline and needs no app running.
|
|
129
|
+
|
|
130
|
+
**Paywalled paper won't download?**
|
|
131
|
+
Marked 「Login required / paywall」: sign in via 「Open login page」, download, then 「Import local PDF」; or configure custom sources.
|
|
132
|
+
|
|
133
|
+
**Settings not applied?**
|
|
134
|
+
Settings persist instantly; changing the port requires restarting the library app.
|
|
135
|
+
|
|
136
|
+
## 🛠️ Development
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
npm install
|
|
140
|
+
npm run build # outputs lib/
|
|
141
|
+
npm run smoke # logic smoke tests
|
|
142
|
+
npm run check:client # client bundle shape + apply matrix
|
|
143
|
+
npm run test # host end-to-end
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
src/
|
|
148
|
+
├── node/ # host: routes / detection / metadata / download / cite / import / shadow store
|
|
149
|
+
│ ├── zotero/ # local-library interaction (read-only queries + Connector writes)
|
|
150
|
+
│ ├── metadata/ # Crossref · arXiv · OpenAlex
|
|
151
|
+
│ └── fetch/ # OA chain / custom sources / retry
|
|
152
|
+
└── client/ # browser: panel UI / cite menus / pdf.js reader (self-bundled)
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## 📄 License
|
|
156
|
+
|
|
157
|
+
[MIT](LICENSE)
|
|
158
|
+
|
|
159
|
+
Trademark notice: not affiliated with Zotero; "Zotero" is a trademark of its owner, used here only to describe compatibility.
|