Preface

When performing agent tasks in DeepSeek Harness (DSH), search providers are suitable for handling indexed pages and fast facts. However, if the task requires logged-in platform records, creator feeds, explicitly enabled comments, or nested replies, another execution layer is needed: one capable of launching, supervising, persisting, and exporting MediaCrawler runs.

Below introduces dsh-mediacrawler. It is an installable DSH profile bundle and a bounded stdio MCP adapter designed to connect a standalone MediaCrawler checkout to DSH.

What is this

dsh-mediacrawler is maintained by xwh-01 and is licensed under MIT.

It is not a MediaCrawler fork. It does not copy, modify MediaCrawler source code, or change MediaCrawler’s license. It provides an adapter layer between DSH and a local MediaCrawler checkout.

It solves the problem of letting DSH agents start MediaCrawler collection via MCP tools, view run status, read results, and export ZIP files with credential redaction.

Core Features

Supported Platforms and Tasks

dsh-mediacrawler supports the following platforms:

  • Xiaohongshu
  • Douyin
  • Kuaishou
  • Bilibili
  • Weibo
  • Tieba
  • Zhihu

Supported tasks include:

  • search
  • post/video detail
  • creator feeds
  • explicitly enabled comments

Comments are not enabled by default and need to be explicitly enabled in a single run.

MCP Tools

dsh-mediacrawler exposes 12 MCP tools:

  1. check
  2. collect
  3. status
  4. runs
  5. result
  6. delete_run
  7. cleanup
  8. stop
  9. logs
  10. artifacts
  11. preview
  12. export

Each run is supervised, persisted, and exposed to DSH via these MCP tools.

Browser Isolation

The default is browser_mode=isolated. It launches Google Chrome and uses an adapter-owned persistent profile. This allows subsequent runs to reuse the login state without attaching to the user’s normal Chrome session.

Export

export creates a credential-redacted ZIP and returns the path and checksum of that ZIP.

The default export limit is 256 MiB of raw run data. You can adjust the limit by setting a value between 1 and 4096 for DSH_MEDIACRAWLER_MAX_EXPORT_MIB.

Installation and Enablement

Environment Preparation

First, prepare the following runtime environment:

  • Python 3.11 or later
  • Node.js 22.19+ (from the 22.x branch) or Node.js 24+
  • pnpm
  • Google Chrome
  • A standalone installed MediaCrawler checkout with a usable Python environment
  • DeepSeek Harness 0.1.0-rc.6

The Node.js engine requirement is:

^22.19.0 || >=24.0.0

MediaCrawler and its browser dependencies are not packaged in this plugin.

Installing the Python MCP Runtime

Prepare a standalone venv for the adapter first, then install the Python package. You can do this in a POSIX environment:

python3 -m venv "$HOME/.dsh/runtimes/dsh-mediacrawler"
export DSH_MEDIACRAWLER_PYTHON="$HOME/.dsh/runtimes/dsh-mediacrawler/bin/python"
"$DSH_MEDIACRAWLER_PYTHON" -m pip install "dsh-mediacrawler @ git+https://github.com/xwh-01/dsh-mediacrawler.git@v0.3.0"

This step installs the Python MCP runtime, which DSH will use to launch the adapter later.

Installing the DSH Profile Bundle

Next, install the DSH profile bundle:

npx --yes @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web add "github:xwh-01/dsh-mediacrawler#v0.3.0"

This step adds dsh-mediacrawler as a profile bundle to the DSH web profile.

Configuring and Starting DSH

In the same shell where you start DSH, export the MediaCrawler path and Python interpreter path:

export MEDIACRAWLER_ROOT="/path/to/MediaCrawler"
export MEDIACRAWLER_PYTHON="/path/to/MediaCrawler/.venv/bin/python"

# Optional; default state directory is ~/.dsh-mediacrawler
export DSH_MEDIACRAWLER_STATE_DIR="/path/to/adapter-state"

npx --yes @deepseek-ai/dsh@0.1.0-rc.6 --profile web

DSH_* variables are treated as launch settings and should be exported in the DSH process environment.

Uninstalling

Uninstall the profile bundle:

npx --yes @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web remove dsh-mediacrawler

Typical Usage

First perform an environment check, then proceed with collection and export.

Initial Check

On first use, instruct the agent to call:

check(deep=true)

This step is used to check source paths, CLI dependencies, and browser launch readiness.

Viewing Run Status

During collection, the agent can read lifecycle status, whether user intervention is needed, and the number of results via status.

If you need to resume the most recent persistable run, you can use runs.

Reading Results and Exporting

You can use result to read results. Call export when you need to export; it returns the ZIP path and checksum.

If you only want to view an artifact preview, you can use preview; if you want to list typed JSONL artifacts, you can use artifacts.

Deleting and Cleaning Up

delete_run requires confirm=true.

cleanup defaults to dry_run=true. To actually execute it, you must explicitly use dry_run=false.

Both operations reject active runs and will not delete persistent browser profiles or login state.

Applicable Scenarios and Notes

Who is this for

If your task requires:

  • Logged-in platform records
  • Creator feeds
  • Explicitly enabled comments or nested replies
  • Repeatable, exportable run results

Then dsh-mediacrawler is suitable for incorporating MediaCrawler into DSH’s agent workflow.

It is not a replacement for a search provider; it is for scenarios requiring local collection and export.

Security and Permissions

This plugin runs with the permissions of the current DSH process. You should check the source code, dependencies, and license before installing.

Special attention is needed:

  • Only accepts QR-code login.
  • The MCP API does not accept cookies, phone numbers, or CAPTCHAs.
  • Comments are disabled by default and must be explicitly enabled in a single run.
  • Credential redaction is not the same as PII anonymization.
  • Exported content may still contain names, phone numbers, emails, locations, or other personal data.
  • Export will report pii_anonymized=false and safe_to_share=false.
  • It does not bypass login, verification, rate limits, access controls, or anti-automation systems.

Runtime Boundaries

Collection tasks must have a clear scope and a hard timeout. timeout_minutes is the hard boundary.

For certain search or creator workflows, max_items may not strictly adhere to upstream limits. The plugin will report such situations, using timeout_minutes as the final boundary.

Conclusion

With the steps above, dsh-mediacrawler can integrate a standalone MediaCrawler installation into DSH: checking runtime, launching supervised collection, viewing status, reading results, exporting ZIPs, and stopping, cleaning up, or deleting completed runs as needed.

GitHub:

https://github.com/xwh-01/dsh-mediacrawler

Community Directory: You can search for the plugin name dsh-mediacrawler in the DSH plugin directory.