Self-contained literature library for DSH with optional Zotero export: full-text PDF fetching (Unpaywall/arXiv/custom URL templates), loose Crossref-backed search, APA/GB-T 7714/MLA/Chicago citation generation, a side-panel PDF reader with highlights and notes, and AI-assisted Q&A/translation steered into the current conversation.
Install
# from npm (prebuilt)
dsh plugin --profile web add @a9i5k4/dsh-literature
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:Aik358/dsh-literature
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
· 中文 · 💬 QQ group
Detect, download, read and archive academic papers from the DeepSeek Harness side panel. DOIs / arXiv IDs / titles from the conversation drop straight into your local library with full text at hand.
Feedback & chat: join the community QQ group — Join the dsh-literature group — bug reports, usage tips, and quick responses faster than GitHub issues.
📥 Install & Download (npm)
npm package: @a9i5k4/dsh-literature
dsh plugin --profile web add @a9i5k4/dsh-literature
- Source & releases: GitHub Releases
- Local development:
dsh plugin --profile web add D:/path/to/dsh-literature(link:protocol) - Restart
dsh webafter installing; a 「Papers」 entry appears in the sidebar (or merges into the right-sidebar workbench tab when present).
✨ Features
- Built-in library — detect, download, save, read and annotate with zero external dependencies; optionally export to a Zotero-ecosystem library or a folder
- Auto-detection — parse
DOI/arXiv/PMID/ISBN/ titles from replies or pasted text, deduped - Metadata — Crossref / arXiv / OpenAlex fill in title, authors, journal, year, abstract
- Full-text download — OA multi-source chain (arXiv → OpenAlex OA → Unpaywall → DOI → publisher link), classified failures with retry; user-configured custom sources
- Citation generator — Scribbr-style: reference list / in-text / direct quote (with page) × APA 7 / GB/T 7714 / MLA 9 / Chicago 17 / BibTeX, one-click copy; right-click any card for the citation menu
- 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; tags and status filters, sorting (added time / title / year); multi-select batch export of RIS / BibTeX / CSL-JSON
- Side-panel reader — built-in PDF viewer: zoom, pages, outline, full-text search, multi-colour highlights and notes (simple Markdown notes: bold / italic / inline code); reading-position memory, keyboard shortcuts (←/→ page, +/- zoom, / search, Esc dismiss), night reading mode (follows the dark theme or forced), thumbnail sidebar (≤50 pages), one-click Markdown export of all highlights & notes, per-page loading (on-demand byte ranges — large files open without stalling)
- AI assistant — ChatPDF / SciSpace-style selection actions: translate / explain / summarize the selected passage, ask questions about the full text, or generate a paper summary — answers are steered into your current DeepSeek Harness chat, so you can keep asking follow-ups
- Search portals — every item links to Google Scholar / Baidu Xueshu / CNKI / source page
- Conflict preview — field-level diff against existing entries before saving
- Bilingual UI — switch the interface language between Follow host / 简体中文 / English; the choice applies immediately with no restart, and server-side notices and error messages follow the active language, so no Chinese text leaks into the English UI
- Fully local — loopback-only routes, no telemetry, no cloud relay, no account
🚀 Quick Start
- Open the 「Papers」 panel (or paste text to detect)
- Ask the model to call
zotero_lookup, or paste text containing DOIs / arXiv IDs - Per entry: download full text → read → save (built-in library by default)
⚙️ Configuration
Gear icon in the panel header (sections: Saving & export / Detection & download / Behaviour & UI / Import / Custom sources / Advanced):
| Setting | Description | Default |
|---|---|---|
| Save target | Built-in library (no external app) / Local library (app required) / Folder |
Built-in library |
| Export dir / Naming / Sidecars | folder target, name template, CSL-JSON/RIS choice | {author}_{year}_{title} |
| Default tags | comma separated, attached on save | empty |
| Auto-resolve / quoted titles / scan replies | detection & false-positive control | on / on / off |
| Retries / timeout | network retry & timeout control | 3 / 30s |
| Duplicate strategy | ask / keep / replace | ask |
| Entry placement | auto (right-sidebar tab first) / footer / hidden | auto |
| Panel width / reader fit / night mode | floating size & initial reader view / follow dark theme or force | 380px / fit-width / auto |
| Import folder / watch | bring local PDFs into the library (manual or every 30s) | empty / off |
| Custom download sources | your mirrors / proxies / endpoints (with headers) | empty |
🧩 dsh-better-sidebar integration
When 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.
📚 Citations
The 「Cite」 menu on every card:
| Mode | Description |
|---|---|
| Reference list | APA 7 / GB/T 7714-2015 / MLA 9 / Chicago 17 entries |
| In-text | (Vaswani et al., 2017) |
| Direct quote | page prompt → (Vaswani et al., 2017, p. 7) |
| BibTeX | full @article{...} entry, ready for JabRef / Overleaf |
🔌 Custom download sources
Within compliance bounds, add mirrors / institutional proxies / private endpoints you trust in Settings:
- URL placeholders:
{doi}{arxiv}{isbn}{title}{url} - Extra headers (one
Name: Valueper line) for token/cookie-gated endpoints - Appended after the official OA chain as fallbacks; malformed templates are skipped
Compliance: these sources are your own configuration and your responsibility; the plugin ships no pirated or infringing source.
🔒 Paywalled & login-gated papers
Only public open-access sources are fetched automatically. For login-gated papers:
- The entry is marked 「Login required」 with a reason
- 「Open login page」 lets you sign in / access via your institution
- After downloading, 「Import local PDF」 validates and saves the file automatically
🧠 How it works
Browser panel ── fetch / SSE ──▶ DSH host ──▶ local library (optional) / custom sources
- Default (built-in library) keeps entries + PDFs in the plugin's own local storage — no external app
- 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
🔐 Privacy
- Metadata & full-text requests go straight to public scholarly APIs — no third-party relay
- Loopback-only (
127.0.0.1); non-loopback requests get 403 - No telemetry, no analytics, nothing uploaded
🖥️ Compatibility
| Component | Version |
|---|---|
| DeepSeek Harness | ≥ 0.1.1-rc.2 (Cordis v4) |
| Local library (optional) | 8.x (Zotero ecosystem, Local API v3 / Connector API) |
| Node | ≥ 20 |
Independent open-source implementation, not affiliated with any library vendor.
❓ FAQ
Nothing appears after saving? Check the save target; built-in mode is fully offline and needs no app running.
Paywalled paper won't download? Marked 「Login required / paywall」: sign in via 「Open login page」, download, then 「Import local PDF」; or configure custom sources.
Settings not applied? Settings persist instantly; changing the port requires restarting the library app.
🛠️ Development
npm install
npm run build # outputs lib/
npm run smoke # logic smoke tests
npm run check:client # client bundle shape + apply matrix
npm run test # host end-to-end
src/
├── node/ # host: routes / detection / metadata / download / cite / import / shadow store
│ ├── zotero/ # local-library interaction (read-only queries + Connector writes)
│ ├── metadata/ # Crossref · arXiv · OpenAlex
│ └── fetch/ # OA chain / custom sources / retry
└── client/ # browser: panel UI / cite menus / pdf.js reader (self-bundled)
📄 License
Trademark notice: not affiliated with Zotero; "Zotero" is a trademark of its owner, used here only to describe compatibility.
Links
More in this category
Tencent/WeKnora#dsh-weknora★ 34236
Four read-only tools over a WeKnora knowledge base: list knowledge bases, hybrid passage search, reassemble one document's chunks in order, and WeKnora's own cited RAG or ReAct-agent answer with a resumable session id.
superdesigndev/treg★ 5325
Tool catalog for agents: search ~2,600 external endpoints (SEO and SERP, backlinks, social, people and company enrichment, ad libraries, scraping) by the task you want done, read each one's parameters and per-call price, then call it with the credential injected server-side. Ships the skill plus an MCP row that stays disabled until TREG_TOKEN is set.
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1137
Tencent CloudBase backend for DeepSeek Harness — scaffold and deploy full-stack apps from chat, render query results as table cards with paging, sorting and CSV export, preview a deployment on its domain, and call the CloudBase MCP toolset (`mcp__cloudbase__*`) with device-code login.
gitroomhq/postiz-agent#dsh-postiz★ 518
Connects DeepSeek Harness to Postiz over MCP: list connected social media channels, fetch per-platform posting rules, and schedule, draft, or publish posts to X, LinkedIn, Instagram, Facebook, Threads, TikTok, YouTube, Reddit, Bluesky, Mastodon, Discord, Slack, Telegram and more; adds a postiz workflow skill.
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 508
Local IMAP invoice download, OCR, archive, and Excel reimbursement summaries for DeepSeek Harness.
anysearch-team/anysearch-dsh★ 490
AnySearch-powered real-time web and vertical search provider for DeepSeek Harness.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.