Introduction¶
In the plugin workflow of DSH (DeepSeekHarness), a common gap exists in linking scattered literature management, PDF parsing, full-text notes, and Agent retrieval into a single chain: Zotero contains bibliographic records, PDF originals need parsing, and Agent answers require traceable citations. Existing approaches usually involve manual export, running parsing scripts separately, and manually organizing wikis. dsh-zotero-wiki provides a set of DSH plugins and a CLI to address this workflow.
What is it¶
dsh-zotero-wiki is a DeepSeekHarness (dsh) × Zotero plugin, maintained by Wechsels, with an MIT license. It automatically syncs the Zotero library, uses MinerU to parse PDFs, uses DeepSeek to read full text, compiles literature into a searchable Obsidian Wiki, and enables the Agent to include traceable citations when answering.
It targets two modes of use: invoking native tools within a DSH session, and using the CLI to execute sync, parse, compile, LINT, and migration.
Core Features¶
- Dual-source sync: Supports a read-only local
zotero.sqlitecopy or incremental sync via the Zotero Web API. - Interactive range selection: Select All, specific Collections (including sub-levels), or tag filtering; selection results are persisted.
- PDF parsing: Upload, poll, and download Zip via the MinerU official open platform, writing parse artifacts to the
raw/bundle. - DeepSeek full-text notes: Uses
deepseek-chatto read the full text and generate structured notes in Chinese. - Graceful degradation: If there is no PDF or parsing fails, generates a simplified version of notes based on title and abstract; can be upgraded later.
- Parse quota and concurrency: Default max 50 items per round, concurrency 3; failures can be retried in the next round.
- Parse preview: Calling
parse_zotero_wikiwithout parameters returns candidate statistics and samples, without triggering MinerU calls. - Wiki compilation: Generates topic summaries,
index/authors/yearsindexes, cross-references, archive markers, and an append-onlylog. - LINT self-check: Checks index consistency, internal links,
rawreferences, image links, and orphan images, and supportsauto-fix. - Query archiving:
archive_zotero_querycan archive Q&A into wiki archive pages and updateindexandlog. - Agent query: Uses
minisearchin-memory full-text search with Chinese bigram tokenization, returning snippets and[Zotero key, §section]citations.
Installation and Activation¶
The environment requirements are Node.js ≥ 22.19, using the built-in node:sqlite. The sync phase requires a local Zotero library or Web API Key; the parse phase requires a MinerU Token and a DeepSeek API Key.
Configuration is stored in .env. On the first run of any CLI command, if necessary configuration is missing, an interactive configuration wizard will automatically pop up; you can use --no-wizard to skip.
After local directory preparation is complete, use the command below to register the plugin to dsh:
npx -y @deepseek-ai/dsh plugin --profile web add file:/path/to/dsh-zotero-wiki
Where file:/path/to/dsh-zotero-wiki needs to be replaced with the actual local path. After registration, you can execute the workflow in CLI or call sync, parse, query, and archive interfaces in dsh tools.
Typical Usage¶
CLI¶
The following commands are used for sync, parse, compile, self-check, and migration. First sync bibliographic records, then preview candidates to be parsed, and confirm to execute parse and compile.
node dist/cli.js sync
Incremental sync; the first run will pop up interactive range selection and persist it.
node dist/cli.js parse --dry-run
Preview candidates to be parsed, equivalent to preview mode with zero external calls.
If you need to limit the parsing scope, you can use the following parameters:
node dist/cli.js parse --topic T
node dist/cli.js parse --collection C
node dist/cli.js parse --keys K1,K2
node dist/cli.js parse --limit N
Respectively limit parsing by topic, Collection, Zotero key, or maximum number of items.
node dist/cli.js compile
Generate summaries, indexes, cross-references, and archive markers, and automatically LINT.
node dist/cli.js compile --no-review
Skip LLM summary.
node dist/cli.js lint
node dist/cli.js lint --report-only
Execute LINT checks and auto-fix, or report only.
node dist/cli.js migrate
node dist/cli.js migrate --apply
Perform a dry-run migration on old wiki single-page pages, or apply the migration.
dsh Tools¶
On the Agent side, you can call the following native tools:
query_zotero_wiki(query, topic?, max_results?)
Search Wiki, and return snippets, metadata, and citations.
sync_zotero_wiki()
Manually perform incremental sync and rebuild the query index.
parse_zotero_wiki(topic?, collection?, keys?, limit?)
Returns candidate preview without parameters; executes parse and note generation with parameters.
archive_zotero_query(title, body, topic?, source_keys?)
Archive query answers into wiki archive pages.
Sync Boundaries and Limitations¶
- Items not in any Collection will be skipped.
- When deleting entries in Zotero, the plugin will not physically delete notes but mark them
status: archived; they are automatically restored after recovery. - Parsing is controlled by quotas by default: max 50 items per round, concurrency 3.
- Explicitly not doing: Vector database, automatic clustering, multi-user server, scheduled background service, Web UI, Zotero annotation sync, citation page number extraction.
Applicable Scenarios and Notes¶
Suitable for users with a Zotero library who wish to place PDF originals, full-text notes, Obsidian Wiki, and Agent queries in the same workflow. It is more suitable for individuals or local workflows: configure local paths, API Keys, and run CLI or dsh tools as needed.
Before use, confirm that the local environment meets Node.js ≥ 22.19, and prepare Zotero access method, MinerU Token, and DeepSeek API Key. The plugin runs with the current dsh process permissions; check the source code and license before installation. License is MIT.
Conclusion¶
The value of dsh-zotero-wiki lies in putting “sync, parse, notes, compile, retrieval, citation” on a single runnable chain, rather than just being a literature index tool.
GitHub: https://github.com/Wechsels/dsh-zotero-wiki
Directory page link (this URL is from the plugin link, not appearing in the scraped data, not considered a confirmed fact in this article): https://www.skillhub.cn/plugins/Wechsels/dsh-zotero-wiki