DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Scholar Lab — DSH Plugin for DeepSeek Harness
← Plugins

@junma11/dsh-scholar-lab

Scholar Lab

Google Scholar search agent for DSH: structured paper metadata, JCR impact factors, full abstracts, and CSV export. Installable as a profile bundle (npm) or as a dynamic Cordis plugin.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add @junma11/dsh-scholar-lab@0.1.4
READMECompatibilityVersions

Compatibility and provenance

Scholar Lab is published as @junma11/dsh-scholar-lab and currently resolves to version 0.1.4. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
npm
Registry updated
9/20/2026

Versions

0.1.4

README

dsh-scholar-lab

Google Scholar search agent for DeepSeek Harness (DSH) — publishable as an npm profile bundle (one-command install into any DSH profile) or usable as a dynamic Cordis plugin (no install, per-session).

Search Google Scholar for academic papers and get structured metadata — title, full journal name (when resolvable), JCR impact factor + quartile, authors, year, cited-by count, abstract-excerpt snippet, PDF link, versions — plus full abstracts from publisher pages and CSV export of any result set.

Feature comparison

CapabilityThis plugin (Scholar Lab for DSH)Google Scholar Labs
AccessNo login needed, works from any session/hostLogin required (no anonymous API; also no CORS from third-party pages)
Search sourceSame underlying Scholar index (classic endpoint)Same index, but an AI "research mode" on top
Structured metadata (title, authors, journal, year, citations)✅ Full structured JSON per paper✅ (the "familiar Scholar features") but as web UI, not structured data
Full journal names✅ Resolved from bundled JCR databaseShows venue as Scholar renders it
JCR impact factor + quartile✅ JCR 2025 (June 2026 release), 22.6k journals❌ Scholar doesn't show IFs
Full abstract + DOI, volume/issue/pages, publisher✅ viascholar_abstract (publisher meta tags)Labs gives summaries, not structured bibliographic records
CSV export (all loaded papers, 22 columns)✅ One click → downloads to your laptop❌ No bulk/structured export
Pagination / "load more"✅ Up to 100 papers per searchPage-based browsing, no export
Use from chat / automation✅ Model toolsscholar_search / scholar_abstract — results feed the agent❌ Browser UI only

In short

  • Scholar Labs wins on: understanding research questions — AI-generated overviews, per-paper helpfulness notes, and follow-up Q&A. It's a reading/exploration assistant.
  • This plugin wins on: structured, machine-usable data — clean metadata (title/authors/journal/year/citations), full journal names + JCR 2025 impact factors & quartiles (which Scholar never shows), full abstracts + DOIs, bulk CSV export to your laptop, pagination up to 100 papers, and deep integration with the chat agent (search results feed directly into what the assistant can reason about). No login, works everywhere.

They're complementary: use Labs when you want an AI conversation about a research area; use this plugin when you want a reproducible list of papers with bibliometrics you can export and cite-check. The panel even links to your logged-in Labs page, so both are one click apart.

Install (profile bundle — the community path)

dsh plugin --profile web add @junma11/dsh-scholar-lab
dsh web

The dsh plugin command forwards to pnpm inside the profile; any installed package declaring dsh.bundle automatically joins the profile's bundle layer stack (dsh.profile.bundles) and its cordis.patch.yml composes into the app config. Remove with:

dsh plugin --profile web remove @junma11/dsh-scholar-lab

Requires @deepseek-ai/dsh ≥ 0.1.0 and the base profile's shell service (default web profile; fetches go through curl).

What you get

SurfaceDescription
scholar_search toolChat-side search:query, max_results (1–20), start, year ("2020" or "2018-2023"), lang, export_csv (writes scholar-lab/scholar-export-*.csv into the workspace via the fs service)
scholar_abstract toolFull abstract + HighWirecitation_* metadata from a result/publisher URL
Search panel (UI)Run-card panel with search box, pagination ("Load more papers", deduped, ≤100), andDownload CSV (browser-side, nothing written to the host)
Result cardsscholar_search / scholar_abstract result views with JCR IF badges

Per-paper fields: title, authors[], authors_raw, venue, journal_full, impact_factor, jif_quartile, publisher, year, cited_by, snippet, link, pdf, versions, cluster_id, cites_id, result_id.

Package layout

FileContents
lib/host.jsPackaged host half:scholar_search / scholar_abstract tools (ctx.tools.register + defineTool from @deepseek-ai/dsh-tools), the /scholar-lab/search + /scholar-lab/export webServer routes, CSV writer
lib/client.jsPackaged client half: browser bundle in the web-shell module-table format (window.__ModuleLoader__.load), search panel + tool result cards (talks to the host over the HTTP routes)
data/journal-impact-factors.jsonJCR 2025 database (full names, IFs, quartiles) — 22,643 journals, 1.5 MB, read from the package viaimport.meta.url
cordis.patch.ymlBundle patch layer: inserts thescholar-lab host row (the browser row comes from the package's dsh.client manifest)
dynamic/plugin.host.jsDynamic Cordis plugin form (host half) — the zero-install variant; uses harness.* and host.call, no npm needed (see below)
dynamic/plugin.client.jsDynamic Cordis plugin form (client half) — host.call('scholar-search' / 'scholar-export') bridge

Develop & verify locally (before publishing)

# 1. Syntax / structure checks (dynamic halves are `return { … }` bodies —
#    wrap them in a function for node --check)
node --check lib/host.js
node --check lib/client.js
node -e "new Function('return async () => {' + require('fs').readFileSync('dynamic/plugin.host.js', 'utf8') + '}')"
node -e "new Function('return async () => {' + require('fs').readFileSync('dynamic/plugin.client.js', 'utf8') + '}')"

# 2. Pack and install into a throwaway profile (or your web profile)
pnpm pack
dsh plugin --profile web add ./junma11-dsh-scholar-lab-0.1.0.tgz

# 3. Confirm the layers compose without booting
dsh --profile web --dump-config | grep -A3 scholar-lab

# 4. Boot and test
dsh web

Publish to npm

# fill in package.json: name (real scope), repository, homepage, license holder
npm login
npm publish        # scoped packages publish private by default — `publishConfig.access: "public"` is already set

Version semver; tag releases; attach the packed tarball to GitHub releases for air-gapped installs (dsh plugin --profile web add <tarball-url>).

Notes

The packaged API was mapped from the in-box bundles (@deepseek-ai/dsh-base, @deepseek-ai/dsh-web-app, @deepseek-ai/dsh-tool-web, @deepseek-ai/dsh-client-ui-cordis). Two points should be confirmed against the running app before publishing a public release:

  1. Browser → host bridge. The client bundle talks to the host over the plain same-origin HTTP routes the host half registers (/scholar-lab/search and /scholar-lab/export, same-origin enforced on POST) — the same pattern dshmarket uses. ctx.remote.* typert namespaces are first-party only and must not be used by community client bundles. If you rename the routes, change lib/host.js and the callHost calls in lib/client.js together.
  2. Slot keys. The client injects into tool.view.cordis (panel) and tool.call.toolview (result cards, keyed by tool name). If the packaged slot names differ from the dynamic runner's, adjust the slots.inject(...) calls in lib/client.js.

If a seam turns out different, fix the one file and bump a patch version — nothing else in the package changes.

Data & legal notes

  • The journal database is from hitfyd/ShowJCR v2026-1.2.
  • Scholar's ToS / rate limits: results and abstracts are cached in memory (search 10 min, abstract 30 min); a CAPTCHA/"unusual traffic" response is returned as a clear error. Document this behavior for your users.

License

MIT — covers your code in lib/ and this repo's files. The bundled JCR data is third-party (see above).

Zero-install alternative: dynamic Cordis plugin

No npm and no local files needed — the dynamic form is versioned in this repository (dynamic/plugin.host.js / dynamic/plugin.client.js, kept in sync with the packaged lib/). Create it in any session by pasting this into chat:

Create a Cordis plugin with kind: "new", idPrefix: "schlr", name "Google Scholar Lab", purpose "Search Google Scholar for papers with full journal names, JCR impact factors, and CSV export of paper metadata". Use curl to fetch the content of https://raw.githubusercontent.com/medfm-flare/dsh-scholar-lab/main/dynamic/plugin.host.js and use it as code.host; do the same with https://raw.githubusercontent.com/medfm-flare/dsh-scholar-lab/main/dynamic/plugin.client.js for code.client. If the network is unavailable, read both files from the installed package's dynamic/ folder instead.

Optional — JCR impact factors (the plugin degrades gracefully without them): fetch https://raw.githubusercontent.com/medfm-flare/dsh-scholar-lab/main/data/journal-impact-factors.json into the working directory as journal-impact-factors.json.

Dynamic plugins are per-session and in-memory — they disappear when the process restarts.

stable
8/15/2026
0.1.3stable
8/15/2026
0.1.2stable
8/15/2026
Show 1 more versionCollapse versions
0.1.1stable
8/15/2026

Related plugins

Loading related plugins…

Latest
0.1.4
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
1.5 MB
Files
9
Surface
web
License
MIT
Source
npm
GitHub
★ 0
Weekly downloads
38
Last push
8/15/2026
View source ↗Project homepage ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in search-research.

Browser Skill Dsh Plugin@wxg-prc-cpg/browser-skill-dsh-pluginDeepSeek Harness tool plugin that exposes BrowserSkill browser automation (browser_* tools) to the modelWeknora@wxg-prc-cpg/dsh-weknoraWeKnora knowledge retrieval tools for DeepSeek Harness (dsh): semantic search, document reading and RAG/agent answers over your own knowledge bases.Free Searchdsh-free-searchFree web search for DeepSeek Harness: 13 engines (Bing/DuckDuckGo/AnySearch/SearXNG/Exa/Tavily/Keenable/Firecrawl keyless; Parallel/Perplexity/SerpBase/DeepSeek with key) + time filtering + platform search + web_fetch, with web settings UI.Find Plugindsh-find-pluginFind DeepSeek Harness plugins inside the agent — live GitHub dsh-plugin topic search, ranked by stars.