dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
中文 | English
A DeepSeek Harness plugin that exports your own Douyin and Xiaohongshu web favorites into Markdown (topic groups + optional LLM digest). It reuses a logged-in Playwright / Chrome session. Do not use it on anyone else's account.
This is a personal backup tool, not a scraper service. Keep it that way:
Requires Node.js 20 or 22 and a Harness profile that mounts the commands and sessionQuery services (the official web / agent profiles do).
dsh plugin --profile web add dsh-favorites-digest
npx playwright install chromium
Local checkout:
dsh plugin --profile web add link:/absolute/path/to/dsh-favorites-digest
Then in any session:
/favorites login
/favorites
Files land in <session cwd>/dsh-favorites/favorites-<timestamp>.md (and .json). The browser profile is stored at ~/.dsh/favorites-digest/profile.
| Input | Result |
|---|---|
/favorites login | Open Douyin + Xiaohongshu and wait until the web session is logged in |
/favorites / /favorites run | Collect + write Markdown/JSON (LLM digest if an API key is set) |
/favorites collect | Collect only (still writes the Markdown catalog, no LLM call) |
/favorites digest | Rebuild Markdown from the latest JSON in the output dir |
/favorites --platform xiaohongshu | One site |
/favorites --limit 50 | Cap per site (debug) |
/favorites --likes | Also export Douyin 喜欢 |
/favorites --cdp-url http://127.0.0.1:9222 | Attach to an already-logged-in Chrome |
/favorites --no-llm | Skip the digest section |
/favorites --out /path | Output directory |
Same as other ctx.commands handlers: results stay off the model transcript (zero tokens).
Off by default. Set exposeTool: true on the plugin row to register favorites_digest for the agent.
- insert:
- id: favorites-digest
name: dsh-favorites-digest
config:
exposeTool: true
If OPENAI_API_KEY or DEEPSEEK_API_KEY is set, /favorites run appends an AI 综述 section. Compatible OpenAI-style bases work via OPENAI_BASE_URL / OPENAI_MODEL. Topic grouping still works with no key.
run/digest also scan titles and descriptions for open-source projects — explicit github.com/<owner>/<repo> links plus dashed/camelCase names like open-code-review or Windows-MCP — and verify them against the GitHub search API, so the Markdown gains a 开源项目 section with repo, star count and which favorite mentioned it. Anonymous GitHub search is rate-limited (10 req/min), so at most 8 candidates are checked with spacing and the step degrades silently on 403. Set identifyProjects: false to turn it off; digest re-renders the stored list without re-querying.
/user/self?showTab=favorite_collection).Site redesigns can break selectors. Captchas must be solved in the opened window.
collect aborts with 未登录 — login detection uses hard signals (Douyin sessionid cookie; Xiaohongshu avatar-vs-登录-button probe). An abort means the session really is not logged in: re-run /favorites login and scan both QR codes; it only reports success after both platforms are confirmed."/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--user-data-dir="$HOME/.dsh/favorites-digest/cdp" --remote-debugging-port=9222
# then: /favorites --cdp-url http://127.0.0.1:9222
Chrome ≥136 refuses --remote-debugging-port on the default profile, so the dedicated --user-data-dir is required.playwright ≥ 1.64.parameter property is not supported in strip-only mode) — expected; the sources target the bundler. Use npm run bundle output (lib/), which is what the published plugin runs.npm ci
npx playwright install chromium
npm run typecheck
npm test
npm run bundle