抖音无水印批量下载完整教程:douyin-downloader 实战指南
【免费下载链接】douyin-downloaderA practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具,去水印,支持视频、图集、合集、音乐(原声)。项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader
喜欢的内容随手就存、存下来的干净无水印、攒多了还能自动整理归档——这是很多人对抖音下载工具的朴素期待。开源项目 douyin-downloader 把这三件事打包成了开箱即用的命令行工具,支持视频、图集、合集、音乐、创作者主页批量下载,并附带直播录制、评论采集与自动化接口。本文按"入门 → 实战 → 进阶 → 排障"的路径,带你从零跑通整套流程。
一、先说个扎心的事实:你的抖音收藏正在悄悄"缩水"
上个月我要找一个半年前收藏的美食教程,打开收藏夹却只看到一片灰色占位图——那位博主删号了,内容永远消失了。
这样的场景,刷抖音的人多少都经历过:
- 创作者的视频今天还在首页,明天可能就无影无踪;
- 想手动保存,录屏画质打折、满屏水印,BGM 和封面信息全丢;
- 攒了几十个文件之后,命名乱成一锅粥,想找某个片段得翻半天。
手动收藏的痛点,总结起来就三句话:存不下来、存得不干净、存得没条理。而这些问题,恰恰是一个专业的下载工具能一次性解决的。
douyin-downloader 是一款面向实际使用场景的开源抖音下载器,它的核心承诺很简单:把心仪的内容真正变成你硬盘里可管理的资产。接下来,我会从安装配置讲到自动化进阶,全程用大白话,保证你照着做就能跑通。
二、一张表看懂它的"家底":douyin-downloader 核心能力盘点
在动手之前,先花一分钟搞清楚这个工具到底能干什么。它远不止"下载视频"这么简单,我把它的能力按四层拆开来看:
| 能力层 | 具体功能 | 说明 |
|---|---|---|
| 内容类型 | 单视频 / 图文 / 合集 / 音乐 | 支持/video、/note、/collection、/music等链接 |
| 批量下载 | 用户主页发布、点赞、合集、音乐 | mode: post/like/mix/music,0 表示全量 |
| 附加资源 | 封面、背景音乐、头像、元数据 | 每个作品可同步保存 mp4 + jpg + mp3 + json |
| 工程质量 | 并发下载、失败重试、限速、去重 | 默认 5 线程、指数退避重试、SQLite 双重去重 |
| 进阶玩法 | 直播录制、评论采集、热搜、搜索、REST API、通知推送、语音转写 | 覆盖"下载之外"的完整内容管理链路 |
值得一提的是它的几个"反直觉"细节:去水印是自动的,工具会优先选择无水印视频源;清晰度是挑最高的,基于bit_rate数组自动选择最优码率;重复是天然防住的,数据库记录 + 本地文件双重校验,同一作品不会下两遍。
命令行版运行效果:自动识别作品数量、逐项展示下载进度,最后输出统计结果。
三、零基础起步:抖音下载工具安装与首次配置步骤
先看环境要求:Python 3.8 及以上,Windows / macOS / Linux 都能跑。整个安装过程五分钟内可以完成。
第一步:拉取代码并安装依赖
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader/douyin-downloader pip install -r requirements.txt如果你打算使用浏览器兜底功能(翻页受限时的补救方案),再补两步:
pip install playwright python -m playwright install chromium第二步:获取 Cookie(推荐自动方式)
抖音的接口需要有效的登录凭证,项目提供了自动获取脚本,省去手动复制粘贴的麻烦:
python -m tools.cookie_fetcher --config config.yml运行后会弹出浏览器,扫码登录抖音,回到终端按回车,Cookie 会自动写入配置文件。这些凭证只保存在你本地,不会上传到任何服务器。
第三步:生成配置文件并填写最小配置
cp config.example.yml config.yml打开config.yml,把链接换成你想下载的内容:
link: - https://v.douyin.com/EXAMPLE/ path: ./Downloaded/ music: true # 保存背景音乐 cover: true # 保存封面图 json: true # 保存作品元数据第四步:跑起来看看
python run.py -c config.yml第一次运行建议就用单个视频链接测试,确认环境没问题后,再逐步扩展到批量场景。
桌面版(Douzy)粘贴链接后自动识别链接类型,勾选要下载的作品、喜欢还是合集内容。
配置项比较多时别慌,完整的参数解释都在 README.zh-CN.md 和 config.example.yml 里,遇到不认识的字段查一下即可。
四、第一类实战:单条链接下载与命令行常用参数
单个链接是最简单也最适合新手练手的场景。工具支持的类型比想象中丰富,链接粘贴进去就能自动识别:
| 内容类型 | 链接示例 |
|---|---|
| 视频 | https://www.douyin.com/video/7604129988555574538 |
| 图文 | https://www.douyin.com/note/7341234567890123456 |
| 合集 | https://www.douyin.com/collection/7341234567890123456 |
| 音乐 | https://www.douyin.com/music/7341234567890123456 |
| 短链 | https://v.douyin.com/...(自动解析) |
除了写进配置文件,链接也可以临时通过命令行参数传入,适合随手下载的场景:
python run.py -c config.yml \ -u "https://www.douyin.com/video/7604129988555574538" \ -t 8 \ -p ./Downloaded这里-t 8表示把并发线程临时调到 8,-p指定下载目录。常用参数汇总如下:
| 参数 | 作用 |
|---|---|
-c, --config | 指定配置文件 |
-u, --url | 临时追加链接(可重复传入多个) |
-p, --path | 指定下载目录 |
-t, --thread | 并发下载数 |
-v, --verbose | 显示更详细的运行日志 |
五、第二类实战:创作者主页批量下载的正确姿势
单个链接只是热身,这个工具真正的价值在"主页整包搬走"。当你发现一个宝藏创作者,想一次性保存他全部作品时:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post number: post: 50 # 下载最近 50 个作品,0 表示全部mode是核心开关,除了post(发布作品),还支持:
like:下载作者点赞过的作品;mix:下载作者创建的所有合集;music:批量下载作者使用过的音乐原声;collect/collectmix:下载当前登录账号的收藏夹内容。
这几个模式可以自由组合,同一个aweme_id在不同模式下会自动去重,不会重复下载:
mode: - post - like - mix - music批量任务跑起来后,你可以实时看到每个任务的进度和事件日志:
批量下载进行中:任务队列、处理进度、事件日志一目了然,支持随时取消。
如果你是桌面版用户,还可以先把关注列表同步进来,之后逐个或批量下载关注博主的内容,管理体验更直观。
六、第三类实战:直播录制与评论采集
直播也能录?当然可以
把链接换成直播间地址即可:
link: - https://live.douyin.com/123456789 live: max_duration_seconds: 3600 # 录制 1 小时,0 表示录到主播下播 chunk_size: 65536 idle_timeout_seconds: 30录制过程有两点很贴心:一是主播下播、网络空闲或手动中断时,已经录制的字节会保留下来,不会白录;二是录制的 FLV 文件会连同直播间元数据一起存进Downloaded/{作者}/live/目录。
录制直播时会先解析出直播间信息和清晰度选项,选择后开始拉流保存。
评论也能结构化采集
对内容研究、竞品分析类需求,工具还支持按作品抓取评论,可含二级回复:
comments: enabled: true include_replies: false # true 会额外拉取每条评论的回复 max_comments: 500 # 0 表示不限 page_size: 20开启后会为每个作品生成独立的*_comments.json文件,数据是结构化 JSON,方便后续做文本分析。
七、高手进阶:增量下载、时间过滤与自定义命名
增量下载:只补新的,不重下旧的
收藏了某位创作者后,隔几天想看看有没有新作品,不用全量重来。开启增量模式后,工具会基于数据库记录自动跳过已下载内容:
increase: post: true database: true # 增量模式依赖 SQLite 记录配合去重机制,你甚至可以把这个工具当作"内容监控器",定期跑一次就自动补齐新增作品。
时间过滤:只要某段时间的内容
只想保留某个作者某个时间段内的作品?加两个字段就行:
start_time: "2024-06-01" end_time: "2024-06-30"工具会严格按作品发布时间过滤,把范围外的内容全部跳过,非常适合"只想要某个月合集"的场景。
自定义命名:让文件库井井有条
默认情况下,每个作品会单独建一个文件夹,命名模板支持丰富的变量:
folderstyle: true filename_template: "{date}_{title}_{id}" folder_template: "{date}_{title}_{id}"可用的变量包括{id}、{title}、{author}、{date}、{year}、{month}、{day}等,注意模板里至少保留{id},避免重名覆盖。桌面版的设置界面可以直接可视化配置这些规则。
命名模板支持 {date}{title}{id} 等变量自由组合,可配置项超过 15 个。
最终落盘的文件结构大致长这样:
Downloaded/ └── 作者名/ ├── post/ │ └── 2024-02-07_作品标题_aweme_id/ │ ├── xxx.mp4 # 无水印视频 │ ├── xxx_cover.jpg # 高清封面 │ ├── xxx_music.mp3 # 背景音乐 │ ├── xxx_data.json # 完整元数据 │ └── xxx_avatar.jpg # 作者头像 ├── mix/ ... └── live/ ...下载完成后按日期与标题命名的文件夹,视频、封面、音乐各归其位。
八、自动化玩法:热搜、搜索、REST API 与完成通知
当下载这件事变得日常化,你就需要"让它自己跑"的能力了。
热搜榜与关键词搜索
不指定具体作者,直接从平台抓取当下热点:
# 抓取热搜榜前 30 条 python run.py --hot-board 30 -p ./Downloaded # 按关键词搜索作品 python run.py --search "猫咪" --search-max 100 -p ./Downloaded两种方式都会把结果导出为 JSONL 文件,适合做数据采集和选题参考。
REST API 服务模式
想把这个下载能力集成到自己的系统里?可以以 API 服务方式运行:
pip install fastapi uvicorn python run.py --serve --serve-port 8000启动后提供四个接口:提交下载任务(POST /api/v1/download)、查询任务状态(GET /api/v1/jobs/{job_id})、任务列表(GET /api/v1/jobs)和健康检查(GET /api/v1/health)。做自动化流水线时,这是最省事的接入方式。
下载完成通知
长时间批量下载时,不想一直盯着屏幕?配置通知推送即可:
notifications: enabled: true on_success: true on_failure: true providers: - type: bark url: https://api.day.app/YOUR_DEVICE_KEY - type: telegram bot_token: "123456:ABC..." chat_id: "987654321"支持 Bark、Telegram 和通用 Webhook(企业微信、飞书、钉钉机器人也能用),多个渠道并发推送,单个失败不影响主流程。
作品档案与历史查询
所有下载记录都会沉淀到 SQLite 数据库(dy_downloader.db),桌面版的"作品档案"页面可以直接按作者、标题关键词、发布时间筛选:
作品档案页面集中展示下载历史、常看博主列表,支持筛选与后续操作。
命令行用户也可以用 SQL 直接查:
sqlite3 dy_downloader.db "SELECT aweme_id, title, author_name, datetime(download_time, 'unixepoch', 'localtime') FROM aweme ORDER BY download_time DESC LIMIT 20;"语音转写(可选)
如果还想更进一步,可以开启视频转写功能,调用 OpenAI 的 Transcriptions API,为每个视频生成*.transcript.txt和*.transcript.json:
transcript: enabled: true model: gpt-4o-mini-transcribe response_formats: - txt - json这样你的抖音内容库不仅是视频,连文字稿都有了,检索起来非常方便。相关实现可以参考 core/user_modes/ 下的各模式策略代码。
九、高频问题排查手册
用了一段时间,难免遇到几个坎。我按"症状 → 原因 → 解决"整理了最常见的五个问题:
| 症状 | 原因 | 解决方案 |
|---|---|---|
| 报 403 / 提示未登录 | Cookie 过期或失效 | 重新运行python -m tools.cookie_fetcher --config config.yml,建议每周更新一次 |
| 只能抓到 20 条作品 | 翻页触发风控 | 开启browser_fallback.enabled: true且headless: false,弹窗出现后手动完成验证,别急着关 |
| 下载速度慢或反复中断 | 网络波动或并发过低 | 调高thread并发数、检查代理配置,中断后重跑会基于已下载文件续传 |
| 同一作品反复下载 | 去重机制没生效 | 确认database: true已开启,数据库记录与本地文件是双重校验关系 |
| 没有生成转写文件 | 配置或环境问题 | 依次检查transcript.enabled、下载的必须是视频、API Key 是否有效 |
另外提醒一句:直播录制的 HLS 源目前只保存 playlist 文件,需要配合 ffmpeg 做后处理;FLV 则可以直接播放,日常录制建议优先选 FLV。
十、写在最后:把"收藏"变成"资产"
最后聊聊我的使用心得,也算是给新手的几条建议:
- 从单个视频起步,先把环境跑通,别一上来就挑战上千作品的主页;
- 批量任务先设数量上限,比如
number.post: 50,确认命名和目录符合预期后再全量; - 善用增量模式,把下载工具变成定期运行的内容备份脚本;
- 定期检查硬盘空间,批量下载高清视频相当吃容量,建议预留充足空间;
- 遵守版权规则,下载内容请用于个人学习、研究和备份,尊重创作者的劳动成果。
适合这个工具的人群很清晰:想备份教学视频的学员、需要做竞品分析的运营、收集素材的创作者,以及单纯想"把喜欢的都存下来"的普通用户。命令行版功能全面、适合自动化和服务器部署;如果你更习惯图形界面,同项目的桌面版 Douzy 也提供了更直观的操作体验。
现在,打开终端,跑通你的第一个抖音下载任务吧。真正开始动手之后你会发现:管理抖音内容,原来可以这么简单。🚀
【免费下载链接】douyin-downloaderA practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具,去水印,支持视频、图集、合集、音乐(原声)。项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考