ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

抖音视频下载保姆级实战指南:从单个链接到作者主页批量归档一学就会

2026/8/15 12:39:56 拓冰建站 浏览量
抖音视频下载保姆级实战指南:从单个链接到作者主页批量归档一学就会

抖音视频下载保姆级实战指南:从单个链接到作者主页批量归档一学就会

【免费下载链接】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就是来终结这个循环的:一个开源、免费、跨平台的抖音批量下载工具,主打去水印、保原画,支持视频、图集、合集、音乐(原声),甚至能把整个作者主页批量归档到本地。更关键的是,它不只是一台"下载机",而是一套带着数据库、清单、重试机制和浏览器兜底方案的完整内容管理工具。

这篇文章不打算按"功能清单式"的套路平铺直叙,而是沿着一条真实的操作路径走:先聊聊它为什么好用,再亲手跑通第一次下载,最后把批量归档、直播录制、热搜抓取这些深水区能力一个个挖出来。

先认识三个"反直觉"的设计

很多同类工具只关心"视频文件到没到硬盘",但douyin-downloader的出发点不太一样。如果你先理解了下面三个反直觉的设计,后面用起来会顺很多。

反直觉之一:它下载的是"一份作品档案",而不只是一个视频文件。

默认配置下,每个作品除了mp4主文件,还会自动带上封面图、背景音乐、作者头像,以及一份完整的data.json元数据。换句话说,你下载的不是"一段视频",而是"这个作品在抖音上的全部公开信息快照"。对于需要收集创作素材、整理选题、做数据分析的人,这层"连带资源"往往比视频本身更有价值。

反直觉之二:文件归档以"作品发布时间"为锚点,而不是下载当天。

多数下载器喜欢用下载日期命名文件,结果同一个作者的作品在文件夹里乱成一锅粥。这里默认的命名模板是{date}_{title}_{id},其中date取自作品的create_time(发布时间)。同样是今天批量下载,两年前的旧作品会整齐地按它当年发布的日子归档,文件夹天然就是一条时间线。

反直觉之三:双重去重机制,让"重复下载"这件事几乎不可能发生。

程序同时维护 SQLite 数据库记录和本地文件两个维度:下载前先查库、扫文件,命中任何一个就跳过。更进一步,同一作者的postlikemixmusic多种模式同时开时,也会跨模式去重——同一个作品绝不会因为既在主页又在点赞里,就被下载两遍。

打个比方,它更像一个"私人档案馆"而不是"下载器":你要做的只是把链接丢进去,剩下按作者、按类型、按日期整理归类的事,它全包了。

十五分钟,跑通你的第一次下载

环境要求很宽松:Python 3.8+,Windows / macOS / Linux 都行。接下来四步走完,你就能看到第一个无水印视频落地。

第一步:把项目拉到本地

git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt

如果你打算用上"浏览器兜底"(后面会讲到,翻页被风控时很有用)或自动获取 Cookie,再补一句:

pip install playwright python -m playwright install chromium

第二步:复制配置文件并填入 Cookie

cp config.example.yml config.yml

抖音接口需要登录态,Cookie 是绕不开的一环。手工从浏览器开发者工具里复制那串字符容易出错,推荐用内置的自动获取器:

python -m tools.cookie_fetcher --config config.yml

命令会拉起一个浏览器窗口,扫码登录抖音后回到终端按回车,程序会自动把 Cookie 写进配置文件,省去手抄的麻烦。

第三步:写一个最小可用配置

打开config.yml,把link换成你想下载的链接,modenumber控制下载范围和数量:

link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx # 作者主页 path: ./Downloaded/ mode: - post # 下载发布作品 number: post: 10 # 最多 10 个,0 表示不限

这里link的弹性很大:单个视频/video/{id}、图集/note/{id}、合集/collection/{id}、音乐/music/{id}、短链v.douyin.com/...都能直接填,程序会自动识别链接类型。

第四步:启动下载

python run.py -c config.yml

终端里会出现 Rich 渲染的进度条,逐项展示视频、封面、音乐的下载状态;已经存在的文件会被标记"跳过已存在",不会重复拉取。跑完之后,界面会汇总成功/失败/跳过三个数字,一目了然。

下载完成后,文件到底被放到了哪里

这是很多人最容易"迷路"的地方。默认folderstyle: true时,输出目录长这样:

Downloaded/ ├── download_manifest.jsonl # 每次下载的独立清单 └── 作者名/ └── post/ └── 2024-02-07_作品标题_aweme_id/ ├── 2024-02-07_作品标题_aweme_id.mp4 ├── ..._cover.jpg # 封面 ├── ..._music.mp3 # 背景音乐 ├── ..._avatar.jpg # 作者头像 └── ..._data.json # 完整元数据

目录是"作者 → 模式(post/like/mix/music/live)→ 单作品文件夹"的三级结构,最里层以发布时间开头命名,排序即时间线。

除此之外还有两条"隐藏线索":

  • download_manifest.jsonl:追加式的下载清单,每行一条 JSON,记录作品 ID、标题、作者、标签、文件路径等,相当于一份可追溯的"下载账本",方便日后按标签检索。
  • dy_downloader.db:SQLite 数据库,负责去重和历史记录。想查历史?一条命令即可:
sqlite3 dy_downloader.db "SELECT aweme_id, title, author_name, datetime(download_time, 'unixepoch', 'localtime') FROM aweme ORDER BY download_time DESC LIMIT 20;"

从"一个链接"到"一整座内容库":批量与增量

工具真正的价值,在批量场景下才完全释放。把作者主页链接放进link,然后同时打开多个模式:

link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post # 发布作品 - like # 点赞作品 - mix # 合集作品 - music # 音乐(原声)作品 number: post: 0 # 0 = 全量下载 like: 50 mix: 0

配合number限量、start_time/end_time按时间窗筛选,你完全可以做到"只拉这位作者今年发布的、发布作品全部、点赞前 50 个"这种颗粒度很细的定制。

如果这位作者你打算长期跟踪,增量模式是刚需:

increase: post: true # 只下载新增作品 database: true # 增量依赖数据库记录

开启后,每次跑任务只会补齐上次之后的新内容,配合上面的双重去重,长期挂着做"订阅式"更新非常省心。

不想频繁改配置文件?命令行也可以直接追加参数,比如临时提高并发、换保存目录:

python run.py -c config.yml -u "https://www.douyin.com/video/7604129988555574538" -t 8 -p ./Downloaded

-u可重复传多个链接,-t指定并发线程数,-p指定输出路径。

藏得有点深的能力:直播、评论、热搜与转写

批量下载只是冰山一角,配置文件里还埋着几块"惊喜"。

录制直播。把直播间链接填进link(如https://live.douyin.com/房间号),配置live参数即可录制,录到主播下播为止:

link: - https://live.douyin.com/123456789 live: max_duration_seconds: 0 # 0 = 录到下播

录制的 FLV 会保存在作者名/live/下,主播下播或中途断开时,已录的字节会被保留下来,不会白白丢进度。

采集评论。开启后每个作品会额外生成一份*_comments.json

comments: enabled: true include_replies: false # 是否带二级回复 max_comments: 500 # 0 = 不限

抓热搜与关键词。不需要写配置,两个子命令直接出 JSONL 结果:

python run.py --hot-board 30 -p ./Downloaded # 热搜榜前 30 条 python run.py --search "猫咪" --search-max 100 -p ./Downloaded # 关键词搜索

视频转写与完成通知。配置transcript可调用 Whisper 类接口把视频转成文字稿(图文作品不转写);配置notifications可在任务结束后推送到 Bark / Telegram / Webhook,适合"挂着下载,忙别的去"的长任务。此外--serve还能以 REST API 服务模式运行,把下载能力暴露成接口,方便接进自己的脚本或网页。

不想敲命令?还有一条桌面版的路

命令行灵活,但不是所有人都习惯终端。项目另外维护了一套桌面客户端,底层复用同一套下载引擎,界面化操作更直观:左侧导航把"下载、关注同步、任务中心、作品档案、设置"都收拢到一起,右侧粘贴链接、选择类型(作品/喜欢/合集)即可开始,还能同步关注列表、按粉丝数排序,批量给关注的博主安排下载。

如果你是内容创作者,需要高频批量收集素材,桌面版的任务中心和下载档案页能让你少折腾不少命令行参数。

用顺手的五个小提醒

① 只能抓到 20 条作品?多半是翻页被风控了。打开browser_fallback,让程序在 API 分页受限时启动浏览器兜底采集;浏览器弹出验证时手动完成,别急着关窗口:

browser_fallback: enabled: true headless: false max_scrolls: 240

② Cookie 失效了?重新跑一次python -m tools.cookie_fetcher --config config.yml即可,程序检测到登录态失效时也会尝试自动重登。

③ 下载太慢?先确认网络稳定,再试着调小并发thread(默认 5)或换个时段。批量下载没必要把线程拉到顶,稳定比激进更重要。

④ 想重新下载某个作品?记住一条铁律:程序是"数据库 + 本地文件"双重判断的,两个都得清理才会真正重下。只删文件不删库会触发重下(库里记录在但文件没了);只删库不删文件则不会(扫描文件名里的aweme_id就跳过了)。

⑤ 目录变乱了?author_dir支持三种作者目录命名(昵称 / sec_uid / 昵称_sec_uid),重度用户推荐nickname_uid,直观且稳定唯一,避免重名合并、改名分裂。

下一步,从一个链接开始

回头看,douyin-downloader解决的核心问题其实很朴素:把"收藏抖音内容"这件事,从手动录屏、在线解析、反复粘贴的琐碎循环里解放出来,变成一条命令、一套自动归档的流程。它适合个人收藏爱好者,也适合做素材收集的创作者,更适合一切需要把短视频内容批量沉淀下来的场景。

动手的顺序很简单:克隆项目 → 装依赖 → 跑一次 Cookie 获取 → 填一个链接 → 运行python run.py -c config.yml。五分钟后,你硬盘里就会多出一个结构清晰、无水印、带完整元数据的视频档案。

最后提醒一句:工具好用,也要用得克制。请只下载自己有权保存或合理使用的内容,尊重原创作者的版权,不用于商业传播或侵权用途。合规使用,这个"私人档案馆"才能长久地当你的素材库。

【免费下载链接】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),仅供参考