mrkeyoor.com_
Sun 01 Nov 09:12 UTC
AI Toolsevaluationupdated 27 Oct 2026

XHS-Downloader review

XHS-Downloader is a XiaoHongShu (RedNote) link extraction and archiving tool with Chinese and English documentation. Its README describes image, video, Live Photo and metadata downloads through a desktop program, command-line calls, HTTP API, MCP and a browser userscript. These are documented capabilities; our recorded sandbox run did not verify live RedNote downloads.

+52stars / 7d
Verdict

XHS-Downloader is a candidate for supervised RedNote archiving when its documented media, metadata and naming controls fit the job. Our 28 September 2026 run at commit 3261312 does not establish a working installation: the install summary reports success while its retained output contains download and build-backend errors. A separate build step exited successfully, tests were skipped, and live downloads were not verified. Try a small permitted download with the documentation for your chosen revision before relying on a larger archive.

We ran it

Lab card: what happened when we ran XHS-DownloaderScreenshot of XHS-Downloader (discord.com/invite/ZYtmgKud9Y)
Install✓ · 201s108 packages · 154 MB
Build✓ · 6s
Testsn/ano test script
Known vulns0(pip-audit)
Repo111 files~13,925 lines of source · 6.6 MB · 6 CI workflows · Dockerfile

Answers from our run

Does XHS-Downloader build from source?

Dependencies installed in 201 seconds (108 packages), and the build succeeded in 6 seconds. We cloned commit 3261312 into a clean Debian container with 3 CPUs and no project-specific setup.

Does XHS-Downloader have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does XHS-Downloader have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use XHS-Downloader?

Teams requiring verified unattended collection: our run did not exercise live downloads or browser exports.

What are the alternatives to XHS-Downloader?

gallery-dl, yt-dlp. XHS-Downloader is a candidate for supervised RedNote archiving when its documented media, metadata and naming controls fit the job.

Setup2/5Packaged, source and Docker paths are documented, but our 28 September 2026 install record conflicts with its error output. A working CLI was not established.
Docs3/5The English README covers setup, Cookies, server authentication, optional MCP dependencies and download records. Current instructions differ from the measured checkout, and the Cookie-reading section retains an example after marking the feature unavailable.
Community2/5Supplied issues show maintainer replies and user follow-ups, but they do not establish support responsiveness across the project or current adoption. No star-based quality inference is used.
Maturity2/5The documentation describes archiving controls and several interfaces, but our run skipped tests and did not verify live downloads. Historical issue outcomes cannot establish current reliability.

Who it’s for

People building a local archive of RedNote posts they are permitted to save.
Developers who want documented API or MCP access to post information and downloads.
Operators willing to obtain Cookies manually when needed and check the results of batch jobs.
Archivists who need configurable filenames, author folders and download records.

Who it’s NOT for

Teams requiring verified unattended collection: our run did not exercise live downloads or browser exports.
Users unwilling to obtain Cookies manually for higher-quality video. Cookies are optional, but the README says downloads without them are limited to low-resolution video.
People who cannot accept the README's warning that automatic browser scrolling may trigger account restrictions or bans.
Projects requiring confirmed comment-text collection. Issue 339 requests that feature; the supplied documentation does not establish it as available.

Setup reality

In our recorded run on 28 September 2026 at commit 3261312721f0b37c705ba6515885bc7f34349f2f, the harness marked the install step successful after 200.5 seconds, rounded to 201 seconds in its summary. Its retained output also contains an HTTP 429 dependency-download error and a build-backend failure caused by missing cx_Freeze. Those conflicting records do not establish a clean installation or an installed, working CLI.

The separate build step returned exit 0 after 6.026 seconds, with no retained output explaining its scope. Tests were skipped with reason "no script". The dependency summary recorded 108 packages and 154 MB; it does not resolve the installation errors. Pip-audit recorded an advisory total of 0, but coverage is unknown: the supplied record does not establish how many packages were audited.

The current README requires Python 3.12 or newer for source use. It documents optional MCP dependencies, Bearer-token authentication for API and MCP requests, and token configuration for userscript-to-server jobs. These current instructions must be distinguished from the September checkout. Packaged Windows and macOS builds and Docker are also documented; we did not validate those paths.

A RedNote archive needs more than downloaded files

XHS-Downloader's documented appeal is its control over the archive: filenames, author folders, metadata storage and records of downloaded post IDs. The Chinese and English READMEs describe image, video, Live Photo and video-cover downloads, with desktop, terminal, API, MCP and Tampermonkey workflows. Our recorded run covers setup steps, not those live download capabilities.

Download records deserve particular attention. The English README says a recorded post ID can cause a download to be skipped even when its local file no longer exists. To download that post again, it instructs users to delete the corresponding database record. A repeat run that skips old IDs therefore does not establish that an archive still contains every file.

Cookies are optional, with a video-quality tradeoff

The README says Cookies are optional and that video downloads without a Cookie are limited to low resolution. It recommends supplying a Cookie for higher quality and says account login is not required to obtain one. This is more specific than treating a logged-in session as mandatory for every download.

Browser Cookie reading is marked unavailable. The documented alternative is to copy a Cookie through browser developer tools and enter it into the program or configuration. Settings are stored in Volume/settings.json. The documentation also recommends freshly obtained post links because older links may encounter RedNote risk controls.

These are upstream instructions, not outcomes verified in our sandbox.

What our September run establishes

Our recorded run began on 28 September 2026 at commit 3261312721f0b37c705ba6515885bc7f34349f2f, dated 16 September 2026. The recorded environment had 3 CPUs, 8 GB of memory and image ghcr.io/astral-sh/uv:python3.12-bookworm. The install output identifies Python 3.12.12.

The install step took 200.5 seconds. Its summary reports exit 0 and success, but the retained output contains a dependency download rejected with HTTP 429 and a package build-backend failure with ModuleNotFoundError: No module named 'cx_Freeze'. Without complete command logs reconciling those messages, we cannot describe the step as a clean installation or confirm that the CLI was installed. The errors also do not prove that RedNote extraction is broken.

A separate build step returned exit 0 in 6.026 seconds. Its retained output is empty, so the record does not identify a built artifact or demonstrate that an executable launched. Tests were skipped with reason "no script". The detector found no tests directory or Python test configuration; that is a limit of the recorded detection, rather than proof that the project has no tests anywhere.

The parser summary recorded 108 dependency packages and 154 MB. The checkout summary recorded 111 files, approximately 13,925 source lines and 6.6 MB, plus six CI workflow files and a Dockerfile. These counts do not establish runtime success or test coverage.

Pip-audit recorded an advisory total of 0. Audit coverage is unknown because the record does not establish how many packages it inspected. That result is not evidence that the dependency environment is safe.

No installed-binary check, live RedNote download, authenticated API request, MCP request or measured archival workload is established by the supplied run. No new execution was performed for this correction.

Current server instructions differ from the measured checkout

The current English README documents Bearer-token authentication for API and MCP requests. API requests without a valid token return 403. Tokens are printed at startup, remain valid indefinitely by default and are tied to Volume/auth_secret.key; the README describes deleting that file to rotate the token. Userscript-to-server jobs also require token configuration.

The documented API route is POST /xhs/detail, with interactive documentation on port 5556. Requests can select downloads, image indexes, Cookies, proxies and whether to skip existing records. The current MCP endpoint is http://127.0.0.1:5556/mcp. Source-based MCP use requires the optional fastmcp>=4.1.0 dependency or the documented MCP extra.

The README pinned to our September commit instead shows /mcp/ and lacks the current authentication instructions. Follow the documentation for the revision you actually deploy. Our run does not verify the newer authentication behavior, and this review makes no security finding about either revision.

Browser exports need supervision

The userscript can collect links from account, discovery and search pages, then pass download jobs to the program when script_server is enabled. Automatic scrolling is disabled by default. The README warns that enabling it may be detected as automation and lead to account restrictions or a ban.

Issue 442 describes a user's large liked-post export being interrupted by verification requests or a sleeping computer. The maintainer replied that download records skip already downloaded posts. The issue was closed as not planned after inactivity on 19 September 2026. That exchange does not establish recovery of an interrupted link-collection session.

Historical failure reports also need their outcomes. In issue 441, users reported video-download failures with release 2.7, while the reporter and another commenter said source-based 2.8 Beta worked for them. The issue was closed as completed on 14 September 2026. Issue 387 concerned userscript 2.3.2 on rednote.com; its reporter later said link collection worked again, and it too was closed as completed on 14 September. These reports document particular experiences, not a current universal failure or independently verified compatibility.

Issue 339 remains a request for comment content. Its proposed fields and endpoint are suggestions, not an available API contract.

Choose a runtime, then verify a small archive

The README documents packaged builds for Windows 10 and newer and macOS. It says the macOS executable is unsigned and describes using xattr -cr to remove its security flag. Docker is another documented path, but command-line call mode, clipboard reading and clipboard monitoring are unavailable there. We did not test the packaged or container paths.

Release 2.7 has its own release notes, including MCP download repairs, Cookie changes and userscript-to-server support. Those notes should not be treated as proof that a release package matches the current branch or our measured checkout.

For a first evaluation, choose one revision and its matching instructions. Download a small set of posts you are permitted to save, inspect the files and metadata, and check how download records behave when a local file is missing. Verify API or MCP authentication separately if your workflow needs it. These are recommended next checks, not tests we completed.

How the ratings work

The ratings are editorial judgments about setup, documentation, community evidence and operational maturity. On this five-point scale, 1 means substantial documented obstacles, 2 means important unresolved evidence gaps, 3 means a usable documented path with material limits, 4 requires strong supporting evidence in that category, and 5 requires broad independent validation. Unknown adoption and untested compatibility do not earn a high score. The scores are not benchmarks or security assessments.

Alternatives

ProjectWhat it isPick it when
gallery-dlA command-line downloader for image galleries and collections from several image-hosting sites.Choose it when your task spans image galleries on its supported sites and you want configurable filenames. Its README says active development has moved to Codeberg. The supplied extract does not establish RedNote compatibility.
yt-dlp gh↗A command-line audio and video downloader whose README describes support for thousands of sites.Choose it for audio or video downloads across its supported sites. Check the specific extractor before treating it as a replacement for a RedNote workflow; we did not compare extraction success.

Sources

  1. XHS-Downloader repository
  2. XHS-Downloader English README
  3. XHS-Downloader 2.7 release
  4. Video extraction failure report
  5. Large export interruption report
  6. Comment collection request
  7. RedNote userscript failure

More ai tools reviews

anarlog · pr-agent · agent-sprite-forge · KiroCrew · Orkas · hypit · the whole board →