dsh-douyin-mac: Google Chrome-only Douyin DSH Plugin for macOS

Introduction

When writing tools for agent developers, a common scenario is hoping the assistant can browse content autonomously according to its persona and interests, rather than drafting a behavioral script each time. The dsh-douyin-mac in the community directory is such an attempt. It ports the upstream dsh-douyin-agent 1.4.6 implementation into a DSH plugin, constrained to the form factor of macOS + Google Chrome. It recognizes only dedicated Chrome windows, without bundling a standalone Windows application or Electron package.

Below is an introduction to its origin, capabilities, installation method, and known limitations. It is published and maintained by asd45183. The author field in the project’s package.json is LockyBee (upstream author), and the README also states this is a third-party adaptation and not an official DeepSeek release.

Basic Positioning

The plugin form has only one: the setting entry is in DSH’s “Settings → Brushing Douyin”. The main model directly uses the provider and model configured in DSH (must support images). State, persona, interests, and memory are saved in ~/.dsh/douyin-browser/. The dedicated Chrome profile directory is ~/.dsh/douyin-browser/cli-profile, isolated from the daily browser.

Browser control is achieved by starting Chrome from this independent profile directory via Playwright and then connecting to the local CDP (Chrome DevTools Protocol). Starting from Chrome 136, the default profile directory does not allow remote debugging. The README explains that the dedicated directory is intended to circumvent this limitation.

Verified Core Capabilities

Autonomous Viewing: Select a time period in “Video Viewing”, optionally expand “Advanced Options” to set daily viewing minutes and daily model requests (both optional), and enable “Allow Auto Viewing”. The plugin selects videos, stays, switches, or stops within the quota, while retaining manual start/pause buttons. Persona and interests share one profile; interests are updated based on actual playback progress, viewing ratio, and confirmed interactions. Seeing a topic does not imply liking it.

Friend Interaction: A master switch manages permission for new message replies from sessions and autonomous sharing during viewing; enabled by default. The user must manually check permission for friends or group chats. The plugin does not add sessions itself, nor does it set business limits on number of people, reply requests, or share counts (model calls still consume quota). Records that are recalled and system notifications are not automatically replied to.

Group Chat Reply: Only replies to messages in permitted group chats where the bot is @mentioned or called by the set nickname. Old @mentions in quote previews do not trigger group replies.

Autonomous Sharing: Sends the currently observed work card via the official panel. Recipients are bound to stable platform identities. Deduplication is done by work and session. Multi-object sharing is sent sequentially; the current sharing progress is displayed at the top of the page. When the result is unclear, subsequent sharing is paused and receipts are retained; no automatic resend.

Public Comments: Independent switch, disabled by default; retains daily and per-viewing attempt limits; does not comment on the same work multiple times.

Silent Viewing: Continuously muted. After verifying window ownership, attempts to minimize. Still uses the Chrome window.

Optional Audio: Local Whisper transcription for dialogue; for video audio, MiMo or MiniMax cloud backends can be selected. The README notes this use case fails if ffmpeg is not installed locally and Whisper is missing; audio functionality remains disabled by default.

Daily Viewing Report: Generates Markdown from local viewing history; does not make additional model calls.

Storyboard Sampling: For viewing decisions, video replies, and video observation, multiple JPEG samples of the same work are stitched into one image with frame numbers, with a default total pixel budget of 480,000. Time per cell is written in a model-readable list. There is also a douyin_video_zoom tool to read specific original frames by storyboardSampleId, cell, and videoId; limited to samples from the last minute.

Self-Check and Usage: One-click diagnostics, limited repair suggestions, actual requests vs. reported token usage, and in-progress status.

Each item above comes from the feature list and body of the README. The descriptions are summaries organized by myself; field names and values are based on the README.

Installation and Activation

Environment Requirements: macOS, Google Chrome, Node.js 22.13+, compatible DSH (where engines.dsh is >=0.2.1-rc.2 <0.3.0-0). Install to web profile from npm:

dsh plugin --profile web add dsh-douyin-mac@0.1.15

For local development, you can also install from the source directory: after npm install, run dsh plugin --profile web add .. Do not use both methods simultaneously.

Changes to DSH configuration take effect after restarting the same DSH instance.

First Use

Follow the four steps in the README:

  1. Select a provider and model supporting images in “Brushing Douyin → Basic Settings → DSH Model”.
  2. Click “Open Douyin”, manually login or complete the CAPTCHA in the dedicated Chrome; the login state is saved in the dedicated profile directory.
  3. Select a time period in “Video Viewing”, optionally expand “Advanced Options” to set daily minutes and daily requests, then enable “Allow Auto Viewing”.
  4. In “Friend Interaction”, read the current session, verify stable identities, and check permission for friends or group chats, filling in group chat response nicknames as needed.

Normal settings are saved automatically; text input is submitted when leaving the input box; failures retain drafts. The audio Key is entered in the password box in “Audio & Key”; it is not echoed back after saving.

Changing Nickname, Bio, and Avatar

The plugin comes with an editing script that performs a preview by default; it only saves when explicitly using --apply:

cd dsh-douyin-mac

# Preview: only fills in/preview, does not save
node scripts/profile-edit.mjs --nickname "New Nickname" --bio "New Bio"

# Save (nickname ≤20 chars, bio ≤200 chars)
node scripts/profile-edit.mjs --nickname "New Nickname" --bio "New Bio" --apply

# Change avatar (png/jpg/webp/bmp), will enter platform review after saving
node scripts/profile-edit.mjs --avatar /absolute/path/avatar.png --apply

The script operates on the dedicated Chrome via local port 9227; you must first “Open Douyin” in the plugin. Three points to note: Modifying profile may trigger SMS verification for Douyin; the script will prompt for the verification code and will not falsely report success. After saving the avatar, it shows “Display after approval”; the profile page may still show the old image during review. The settings page “Douyin Account → Edit Profile” also provides entry points for nickname/bio/avatar; this is also a preview plus a second confirmation to save.

Applicable Scenarios and Notes

Suitable for developers already using DSH who want the assistant to maintain an interest profile based on a fixed persona long-term, and are willing to accept the “dedicated Chrome with window” operational form. All behaviors run under the permissions of the current dsh process; what the plugin can do is constrained by the directories and network scope that process can access. Before installation, it is recommended to open the repository root directory to verify the source code and license: original code uses MIT, third-party notices are in THIRD_PARTY_NOTICES.md, source attribution is in docs/reuse.md and desktop/UPSTREAM.md, model usage instructions are in skill/SKILL.md.

Regarding verification boundaries, the README is quite direct: macOS ported real-world results and known failures are in docs/verification/mac-0.1.0-20261104.md. Recommended feeds may still fail to switch videos; confirmation of real public comments published, continuous two-hour playback, real group chats, and multi-recipient sharing are still pending verification. Results from historical Windows versions are retained in the original version records and do not automatically apply to this port.

Several operational boundaries are also written here to avoid misinterpretation: Only one autonomous viewing runs at a time; pausing, restarting, or changing settings does not clear daily usage. Invalid or truncated viewing decisions do not execute actions; judgment is made after re-observation. If three consecutive invalid attempts occur, viewing is stopped for this session, and every model call is counted against the daily budget. You are responsible for judging risks regarding upgrades, configuration, privacy, and permissions.

Test commands:

npm test
npm run test:native

The README reminds that tests use temporary directories, synthetic models, or temporary browsers; passing tests should not be written as passing real platform integration. Running status, Keys, login profiles, private messages, and contact records do not enter the repository.

Conclusion

The value of dsh-douyin-mac lies in encapsulating “autonomous viewing + persona memory + permission-based friend interaction” into a clearly bounded plugin, and converging the form to macOS’s Google Chrome. Its capability ceiling depends on the upstream implementation and the local environment; what has been verified and what remains pending are explained in the README.

Directory Page: https://www.skillhub.cn/plugins/asd45183/dsh-douyin-mac
GitHub: https://github.com/asd45183/dsh-douyin-mac

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye