XHS-Downloader 实操教程:3 种用法把小红书收藏变成本地文件
【免费下载链接】XHS-Downloader小红书(XiaoHongShu、RedNote)链接提取/作品采集工具项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader
右键另存了一下午,打开文件夹里全是电脑打不开的 HEIC 图,视频存回来只有标清,跟手机上看到的完全两码事——这就是手动存小红书素材的常态。XHS-Downloader 是一款免费开源的小红书下载工具:它在浏览器里帮你批量圈出作品链接,在本地解析作品信息、下载图文与视频,格式转换和归档也一并处理好。
先跑起来:四行命令装好并启动
运行方式有三种:源码、Docker 容器、打包好的可执行文件。想最快看到效果就走源码运行,前提是 Python 3.12 及以上版本:
git clone https://gitcode.com/gh_mirrors/xh/XHS-Downloader cd XHS-Downloader pip install -r requirements.txt python main.py习惯 uv 的话,把后两条换成uv sync --no-dev和uv run main.py即可。
启动后进的是 TUI 界面,长得像图形软件但操作全靠键盘。正中间是一个大输入框,把作品链接贴进去就行,多条链接用空格隔开,程序会自动筛出有效链接;输入框正下方是一排按钮,"下载作品文件"触发下载,"读取剪贴板"能把剪贴板内容直接填进输入框。界面底部有快捷键提示,按S进设置,按M开启剪贴板监听——开启后你在任何地方复制一条小红书链接,程序就自动开始下载,连粘贴都省了。它兼容explore、discovery/item、user/profile三种作品链接和xhslink.com短链。
从单条下载到小红书批量下载:三种使用深度
跑通之后,按你的情况挑深度。
刷到好内容顺手存:从浏览器批量提取小红书作品链接
适合"逛着逛着想囤点素材"的人。装法就三步:给浏览器装 Tampermonkey 扩展;新建脚本,把仓库里static/XHS-Downloader.js的内容整段粘进去保存;刷新小红书页面。
跑起来之后,页面上会多出脚本菜单,能提取账号发布、收藏、点赞、专辑的作品链接,也能提取搜索结果里的作品、用户和推荐页作品。提取结果自动写入剪贴板,逛一圈页面,几十条链接就躺在剪贴板里了,切回主程序直接粘。菜单里还有"推送下载任务":把Volume/settings.json里的script_server设为true、保持主程序后台运行,浏览器一点,任务直接送到本地程序下载,全程不用切窗口。
容易踩的坑:脚本默认不自动滚动页面,你得自己往下滑加载内容再提取。设置里可以打开自动滚动,但官方明确提醒过,开启后可能被平台判定为自动化操作、有账号风控风险。低频操作,手动滚一滚更稳妥。
手里有一批链接,丢进命令行批处理
适合"明确知道自己要下载什么"的人。命令行模式把主程序的设置全变成了参数,python main.py --help看一眼就能上手。三条最高频命令:
python main.py --url "https://www.xiaohongshu.com/explore/作品ID?xsec_token=XXX"多条链接整体加引号、空格分隔:
python main.py --url "链接1 链接2 链接3"长图集只挑几张,用--index指定序号:
python main.py --url "作品链接" --index "1 3 5"其余参数收进这张速查表:
| 参数 | 作用 | 什么时候用 |
|---|---|---|
--index "1 3 5" | 只下指定序号的图片 | 长图集只要精选几张 |
--image_format JPEG | 指定图片格式 | 不想收到 HEIC/WEBP 时 |
--folder_mode | 每个作品独立文件夹 | 作品文件多、想分门别类 |
--author_archive | 按作者归档 | 长期追更某几个博主 |
--update_settings | 把本次参数写回配置文件 | 试到顺手想固化下来 |
--cookie "..." | 本次运行临时指定 Cookie | 不想改配置文件时 |
坑有两个:一是加了--index就只处理第一条链接,多条批量时别带它;二是--update_settings会把参数写回Volume/settings.json,之后所有模式都沿用这套设置,写之前想清楚。
写脚本或搭 AI 工作流,把下载能力当接口用
适合做内容运营、写自动化脚本、搭 AI 工作流的人。启动 API 服务一条命令:
python main.py api服务默认跑在http://127.0.0.1:5556,浏览器打开/docs是自动生成的交互文档。最小可用调用就这几行,download为true时顺便下载文件,cookie和proxy不传就沿用配置文件里的值:
from httpx import post resp = post( "http://127.0.0.1:5556/xhs/detail", json={ "url": "https://www.xiaohongshu.com/explore/作品ID?xsec_token=XXX", "download": True, "index": [1, 3, 5], }, timeout=60, ) print(resp.json())MCP 模式是给 AI 助手留的门:运行python main.py mcp,在支持 MCP 的客户端里配置 Streamable HTTP 服务,地址填http://127.0.0.1:5556/mcp/,之后直接用自然语言让它取作品信息或下载文件。坑就一个:批量任务里记得把skip设为true,已有下载记录的作品会被跳过,不会白跑一遍。
调几个配置参数,修掉常见问题
所有模式的参数最后都汇总到Volume/settings.json,首次运行自动生成,改完重启生效;不想碰 JSON 就在 TUI 里按S,效果一样。下面 7 个参数是体感差异最大的,按新手到进阶排序:
| 参数 | 默认值 | 什么情况下值得改 | 改成什么 |
|---|---|---|---|
cookie | 空 | 视频想要高画质,不配只能拿标清 | 浏览器里取到的web_session,无需登录 |
image_format | JPEG | 想要接近原图质量 | AUTO,跟随服务器返回格式 |
folder_mode | false | 作品文件多、想单独一个文件夹 | true |
author_archive | false | 长期追更博主、按作者归档 | true |
name_format | 发布时间 作者昵称 作品标题 | 想用自己的归档命名习惯 | 换入点赞数量、作品ID 等字段 |
download_record | true | 文件误删后想重新下载 | 先清掉Volume/ExploreID.db里的对应 ID |
video_preference | resolution | 存储紧张、想优先小体积 | size或bitrate |
高频问题直接给解法。
现象:下载回来的视频只有标清。原因:没配 Cookie,未登录状态下只能拿到低分辨率版本。解法:浏览器打开小红书任意页面按 F12,在"网络"面板过滤web_session,从任意请求里复制完整 Cookie 填进配置文件即可,全程不需要登录账号。
现象:明明没下载过,程序却直接跳过。原因:下载记录默认存进Volume/ExploreID.db,只要记录里有这个作品 ID,哪怕文件已被你删掉也会被当作"已下载"。解法:删掉数据库里对应的记录;或者把download_record临时关掉,程序会改为检查文件是否存在。
现象:链接经常报错、请求失败。原因:作品链接自带日期信息,用很久之前提取的链接容易触发风控;也可能是网络本身不稳。解法:改用最新提取的链接下载,同时调大配置文件里的max_retry和timeout,网络特殊再补上proxy,比反复重启程序有效。
明天先下 5 个作品试试手,再把folder_mode和author_archive打开。跑顺之后,刷小红书时复制即下载。想再往深走,项目根目录的README.md是完整说明,example.py里的XHS类调用示例是把它嵌进自己脚本的起点。
【免费下载链接】XHS-Downloader小红书(XiaoHongShu、RedNote)链接提取/作品采集工具项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考