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.

Ab Publish — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

dsh-ab-publish

Ab Publish

Browser-automation publishing tool that logs into and posts to arbitrary websites, in one publishable plugin package

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-ab-publish@0.1.12
READMECompatibilityVersions

Compatibility and provenance

Ab Publish is published as dsh-ab-publish and currently resolves to version 0.1.12. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
npm
Registry updated
10/16/2026

Versions

0.1.12stable
10/13/2026
0.1.11stable
10/11/2026
0.1.10stable
10/11/2026
Show 8 more versionsCollapse versions
0.1.9stable
10/11/2026
0.1.8stable
10/11/2026
0.1.7stable
10/9/2026
0.1.6stable
10/9/2026
0.1.5stable
10/9/2026
0.1.3stable
10/9/2026
0.1.2stable
10/9/2026
0.1.1stable
10/8/2026

Related plugins

Loading related plugins…

Latest
0.1.12
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
241 kB
Files
34
Surface
web
License
MIT
Source
npm
GitHub
★ 250.9k
Weekly downloads
1,825
Last push
10/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

Related plugins

More verified plugins in integrations-communication.

Acp App@deepseek-ai/dsh-acp-appThe dsh ACP profile bundle: automation-only JSON-RPC stdio and process lifecycle over dsh-baseAb Wechat Scrapedsh-ab-wechat-scrape--- description: "The out-of-tree wechat_scrape tool: retrieves WeChat official-account articles, filters promotional blocks, and saves each as a Markdown file, for maintainers of this machine's dsh profiles." kind: "package-reference" ---Remote Web Ui@linxin666/dsh-remote-web-uiScan-to-pair remote access for the dsh web GUI that shares one official interface: a QR beside the settings button pairs phones and PCs into the same Web GUI (a portrait-touch adaptation layer for phones, full desktop on PCs) through one-time tokens and rIm@xmanrui/dsh-im把微信、飞书、企微、钉钉、QQ、Telegram、WhatsApp、Slack、Discord、Matrix接入DSH。 Connect Telegram, WhatsApp, Slack, Discord, Matrix, WeChat, Feishu, WeCom, DingTalk, and QQ to DSH.

README

dsh-ab-publish

Publish information to an arbitrary website from a model tool call. The plugin drives a real browser (Playwright, defaulting to the system Edge channel so no Chromium download is required) to log in, fill a form, upload files, and submit — the same capability the agent-browser skill exposes, packaged as a first-class DSH wire tool.

It is an out-of-tree, npm-publishable plugin: it never edits the deepseek-harness framework source, mounts through cordis.patch.yml alone, and is installed purely from the npm registry (no symlink / link:).

Tools

  • publish_to_site — open url, fill the named form fields, upload any files, click the submit control, wait for the result, and report status. Reuses a saved login session so credentials survive daemon restarts.
  • login_to_site — authenticate once and persist the session (cookies + storage state) under the workspace; returns a session id the model can reuse.

The two tools are platform-agnostic: any site (Xiaohongshu, Douyin (抖音), or your own admin form) is driven by a site preset in sitesFile, not by code. Site-specific quirks that the generic engine cannot express — Xiaohongshu's QR-free phone login and shadow-root publish button, Douyin's QR-scan login and image-text composer — live as operator toolkits under src/xhs/ and src/dy/ (see below).

Professional domain handling

  • Robust field resolution (selector.ts): each field key is tried as a CSS selector, then by id / name / placeholder / aria-label, then by a <label> whose text contains the key and points at the control. A form with no stable selectors still fills.
  • CAPTCHA / 2FA detection (detect.ts): before submitting, the page is scanned for verification challenges (reCAPTCHA, hCaptcha, 验证码, 双重认证, SMS/2FA). When one is present the call stops with status needs_human instead of burning a retry on a wall it cannot pass.
  • Login persistence (store.ts): sessions are written under the session workspace root, so a scheduled publish that runs after the browser daemon restarts still has its credentials.
  • Human-in-the-loop login (engine.ts): when a login preset marks a field with the __HUMAN__ sentinel (an SMS code, 2FA, a slider), the engine skips that field, forces a visible browser, waits for the person to finish, and then saves the session — so a phone-number login that needs a verification code becomes a one-time manual step, reused automatically on every later publish_to_site via session.
  • Retries with backoff, bounded field/file sizes, and a step log persisted next to each screenshot for auditability.

Configuration

Every bound is a .required() Schemastery guard, so a deployment states the size it is willing to carry instead of inheriting a hidden default; omitting any of them fails activation with $.<field>: missing required value. The install script writes the deployment's values into the profile's cordis.patch.yml as an id-only row.

FieldMeaning
publishDirWorkspace subdir for sessions, logs, and screenshots.
maxRetriesSubmit attempts before giving up.
timeoutMsPer-action timeout (navigation, fill, wait).
headlessRun the browser without a visible window.
browserChannelPlaywright channel; default msedge.
waitNetworkIdleMsIdle wait after navigation / submit.
maxFieldBytesCap on one field value's length.
maxFilesPerCallMost file uploads per call.
maxFileBytesCap on one uploaded file's size.

Optional: defaultUserAgent, defaultLocale, humanWaitMs (most ms login_to_site waits for a __HUMAN__ step; defaults to 300000).

Architecture

src/index.ts        composition root: Config, Schemastery schema, self-aware
                    routing gate, agent/pre-step auto-invocation, the two tools
src/engine.ts       pure publish pipeline (Playwright), no registry in sight
src/selector.ts     field -> control resolution strategies
src/detect.ts       CAPTCHA / 2FA / anti-bot challenge detection
src/store.ts        persist sessions, step logs, screenshots under the workspace
src/sandbox.ts      per-call sandbox fence (workspace-rooted writes)
src/trigger.ts      auto-invocation intent detection
src/card.ts         PublishCardMeta projector the browser card redraws from
src/client/*         browser half: the publish result card
src/xhs/*            Xiaohongshu operator toolkit (login / recon / verify scripts)
src/dy/*             Douyin operator toolkit (login / recon / verify scripts)

The host and browser halves ship from one package; the browser half is built to the out-of-tree window.__ModuleLoader__.load contract and the card redraws from the logged call alone.

Site-specific toolkits

The generic engine carries no site knowledge, so each platform that needs a login or composer quirk the engine cannot express ships an operator toolkit inside the package:

  • src/xhs/README.md — Xiaohongshu (小红书): phone-code login, media-first composer, shadow-root publish button resolved through submitPosition.
  • src/dy/README.md — Douyin (抖音): QR-scan login (dy-login.mjs), image-text (图文) composer whose title/caption appear only after upload (handled by the engine's deferred fill pass), and a douyin-image preset.

Both toolkits are .mjs scripts run by hand (pnpm run xhs:* / pnpm run dy:*); they are not imported by src/index.ts and tsc never compiles them, so they cannot change how any other site publishes.

Build & verify

pnpm install
pnpm verify      # typecheck && build && test && lint