ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

XHS-Downloader 完整指南:粘贴链接就能批量下载小红书作品与视频

XHS-Downloader 完整指南:粘贴链接就能批量下载小红书作品与视频

XHS-Downloader 完整指南:粘贴链接就能批量下载小红书作品与视频

【免费下载链接】XHS-Downloader小红书(XiaoHongShu、RedNote)链接提取/作品采集工具项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader

刷到一篇不错的小红书笔记想存下来?截图会掉画质,视频保存下来却是带水印的低清版,想一次保存好几篇更是纯手工活。XHS-Downloader 是一款开源的小红书作品下载工具:给它一个作品链接,它就能自动把图文、视频、动图整套文件存到你的硬盘里。如果你需要把小红书内容归档、备份或做成素材库,从零基础到会二次开发,它都能接住。

它能替你做什么

XHS-Downloader 干的是"链接进、文件出"这条流水线:丢进一个或多个作品链接,它会先取回每条作品的完整信息——标题、发布时间、点赞、评论、收藏数,再按你的偏好把对应文件写到磁盘,还顺手记着哪些作品下载过,避免重复劳动。使用形态上它给了五档选择:双击即用的图形界面、适合脚本化的命令行、在浏览器里边刷边收的用户脚本、供程序调用的API,以及能接入 AI 助手的MCP服务,五种形态跑的是同一套核心逻辑(source/application/),你可以随需求深浅随时切换。

5 分钟跑通第一次下载

不用装任何复杂环境,最短路径如下:

  1. 拿源码:git clone https://gitcode.com/gh_mirrors/xh/XHS-Downloader并进入目录(嫌麻烦也可直接下载官方程序包,解压后双击main运行);
  2. 装依赖:执行uv sync --no-dev;没有 uv 就装好 Python 3.12+ 后改用pip install -r requirements.txt;
  3. 启动程序:uv run main.py,不带参数时直接进入图形界面(命令行启动逻辑见 main.py);
  4. 粘贴链接下载:支持explore/作品ID、discovery/item/作品ID、xhslink.com短链等格式,多个链接用空格分隔一次性粘进去即可;
  5. 收文件:默认落在./Volume/Download/,配置文件./Volume/settings.json首次运行自动生成,后面所有个性化都从它开始。

界面左侧的"剪贴板模式"值得顺手打开:开启后你复制作品链接的瞬间,程序就自动开工,全程不用点任何按钮。

想拿到高清原片:配好 Cookie 这一步别省

目标:视频作品要清晰原片,而不是模糊压缩版。

怎么做:不配置 Cookie 时视频只能拿到低分辨率;配置后就能取到高清版本,而且全程不需要登录账号。获取方式:

  1. 浏览器打开https://www.xiaohongshu.com/explore;
  2. 按F12进入开发者工具,切到"网络"选项卡,勾选"保留日志";
  3. 过滤框输入cookie-name:web_session,然后点页面上任意一个作品;
  4. 选中任意一个数据包,把完整 Cookie 复制进settings.json的cookie字段。

不想文件夹变乱葬岗:自定义命名与按作者归档

目标:文件多到几百个时,打开文件夹还能一眼认出谁是谁。

默认命名是"发布时间 作者昵称 作品标题",嫌不够可以打开settings.json的name_format,把点赞数、收藏数、作品类型、作者 ID 等十几个字段自由组合。整理量大的话更推荐开启author_archive:每个作者的作品自动归入独立的"作者ID_作者昵称"文件夹,作者日后改昵称,程序还会回头把旧文件名同步改掉——相当于给文件上了保险。想给某位作者起个自己顺口的别名,在mapping_data里写一条"作者ID: 别名"即可。

边刷边存:浏览器用户脚本免开程序

目标:刷小红书时看到好作品,不用切窗口、复制链接、回程序粘贴。

装好 Tampermonkey 扩展后,把项目自带的用户脚本 static/XHS-Downloader.js 添加进去,再把配置文件里的script_server设为true、让主程序在后台常驻。之后在作品页点一下脚本菜单里的"推送下载任务",当前作品就自动送给程序处理。脚本还能一键提取推荐页、作者主页、收藏、搜索结果里的作品链接,配合程序的批量下载能力,刷一次页面就能收一整批。

下载过的自动跳过,断网了自动续传

目标:链接攒了一堆,重复的不想下两遍,下了一半断了也不想从头来。

程序会把下载成功的作品 ID 记进./Volume/ExploreID.db,再次遇到直接跳过(download_record控制该行为);文件传输本身支持断点续传并做完整性校验,网络抖一下、进程退了,重跑接着传就行。配合timeout、max_retry、chunk三个参数,基本可以放着不管。

给效率玩家:命令行、API 与 AI 接入

习惯脚本化的话,命令行模式几乎覆盖配置文件里的全部参数,链接之间用空格分隔即可批量处理:

# 一次性下载多个作品链接 python main.py --url "链接1 链接2 链接3" # 只取图文第 1、5 张图,并按作者归档 python main.py --url "作品链接" --index "1 5" --author_archive true

加--update_settings还能把本次命令行参数直接写回配置文件。想要程序间调用或接进 AI 工作流,两条命令就能起服务:

python main.py api # 启动后访问 127.0.0.1:5556/docs 查看交互式接口文档 python main.py mcp # 以 MCP 协议接入 AI 客户端(需额外安装 fastmcp)

启动时终端会输出鉴权令牌(也可用python main.py token单独生成),请求时带上即可。服务器用户则可以直接docker pull joeanamier/xhs-downloader,挂载-v卷映射/app/Volume后运行,配置与文件都会持久保留。

出问题时先自查这 4 件事

  • 视频下载下来很模糊:原因是没配 Cookie。按上文步骤抓一份web_session填进settings.json即可,无需登录。
  • 请求失败、返回空数据或被风控:原因是作品链接自带日期信息,旧链接容易失效。换最新复制的链接,并控制请求节奏——程序内置请求延时,别叠加多线程狂刷。
  • 想重下某作品,程序却自动跳过:原因是它的 ID 在下载记录库里。删掉./Volume/ExploreID.db中对应 ID,或关闭download_record参数。
  • 用户脚本点"推送下载任务"没反应:原因通常是script_server未开、主程序没在后台跑,或全局代理干扰。按顺序把这三样检查掉,代理先关掉再试。

现在就动手

XHS-Downloader 把"找链接、采信息、存文件"这一整串繁琐操作,压缩成了粘贴、回车两个动作。第一步:按上面的编号步骤把程序跑起来,粘贴你的第一条链接;第二步:配上 Cookie、打开作者归档——之后你存下的每一个小红书作品,都会安安静静躺在该在的文件夹里。

【免费下载链接】XHS-Downloader小红书(XiaoHongShu、RedNote)链接提取/作品采集工具项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进