← 返回文章列表

Douyin TikTok Download API:一个开源、自托管的抖音 / TikTok 数据 API

介绍 Douyin_TikTok_Download_API v5 的链接解析、作品与评论获取、内容归档、媒体下载及 API/MCP 接入,并整理 Docker 部署、身份池配置、健康检查和升级维护中的关键步骤。

Douyin TikTok Download API:一个开源、自托管的抖音 / TikTok 数据 API

支持 REST API、MCP、CLI 和 Web Console,可以读取作品、作者、评论、搜索、合集等数据,也能接进自己的脚本、后台服务或 Agent 工作流。

项目还支持媒体解析、身份池、任务系统和本地数据归档,适合需要自己部署和管理数据接口的开发者。

想把自己的抖音、TikTok 作品做备份,或者把链接解析、作者资料和评论接入已有系统,可以看看 Evil0ctal 的 Douyin_TikTok_Download_API。它把平台访问、任务处理和数据保存放进一套可自部署的服务里,日常使用有 Web 控制台,程序接入则提供 REST API、MCP 和 CLI。

本文依据 2026 年 9 月 24 日查阅的官方仓库整理,面向当前 main 分支的 v5。这是功能介绍与部署指引,未在本文环境中完成服务器部署或平台下载实测;后续参数以你使用版本的文档为准。

一、它能做什么

  • 解析作品链接:支持抖音、TikTok 的作品地址、分享短链,以及包含链接的分享文案,可获取视频或图集的作品详情。

  • 获取内容数据:包括作者资料、作者作品、喜欢列表、合集或播放列表、评论及回复。当前能力表中,粉丝和关注列表仅 TikTok 支持,抖音没有开放这两个接口。

  • 归档与下载:作品数据可以归档,媒体文件可下载到自己的磁盘;还提供按作者批量下载、去重和定时收集能力。

  • 查看运行状态:控制台可管理身份池、任务调度、资料库和请求日志,排查失败不必只盯着一次接口响应。

项目所说的“无水印”是选取平台已有的对应媒体流,不是对任意视频进行画面修复。实际可获取范围仍取决于作品状态、访问身份和平台限制。功能概览见官方中文 README

二、先分清 v4 和 v5

v5 是一次重写,部署方式、鉴权和数据存储均有变化。当前版本围绕抖音、TikTok 展开,暂不包含 v4 的哔哩哔哩能力。看到旧教程里的 python start.pyconfig.yaml 或单容器端口映射时,先核对教程分支。

新安装建议沿着 v5 文档操作。已有 v4 服务应固定对应版本标签,并单独评估迁移;不要把跟随 main 的 latest 当成旧版的小更新。版本差异同样可在README 的 v4/v5 章节核对。

三、部署前准备什么

下面的命令使用 Linux Bash,也可在合适的 WSL2 环境中执行,不能原样粘贴进 Windows PowerShell。需要 Git、OpenSSL,以及 Docker Engine 和 Docker Compose v2;官方部署文档按所用功能建议 Compose 2.24 或更新版本。

选机器时,核心服务建议预留 4 GiB 内存;需要浏览器自动身份功能时,可按官方完整推荐档的 4 vCPU / 8 GiB 规划,并预留约 15 GB 可用磁盘以及后续媒体空间。小规格机器需要调整容器资源上限,不能只看静息内存。镜像和浏览器构建还需要可用的外网连接。

数据库依赖包含 PostgreSQL + TimescaleDB 和 Redis。普通 PostgreSQL 镜像不能直接替代带 TimescaleDB 的配置。详细规格及小机器覆盖配置见安装与部署文档

四、方式一:使用官方引导脚本

第一次部署可优先使用官方脚本,下载后先阅读,再执行:

curl -fsSL https://raw.githubusercontent.com/Evil0ctal/Douyin_TikTok_Download_API/main/install/install.zh.sh -o install.zh.sh
less install.zh.sh
bash install.zh.sh

脚本会引导选择安装目录、监听地址、浏览器容器、媒体下载以及镜像或源码构建,并按宿主机调整资源配置。要把视频保存到服务器磁盘,请确认启用了媒体下载;要自动生成游客身份,还需启用浏览器容器,小内存机器不要直接接受不适合自己的配置。

后续管理已有实例,可再次运行:

bash install.zh.sh --manage

管理菜单提供状态查看、版本升级、备份恢复和日志等入口。这里的脚本命令用于 v5;具体选项及行为见官方安装脚本说明

五、方式二:手动使用 Docker Compose

如果希望知道每一步做了什么,可以手动部署。这一节从全新的安装目录开始,已有实例不要重新生成并覆盖密钥。以下采用源码构建,首次启动需要拉取依赖、构建前后端,耗时取决于网络和机器性能。

1. 获取代码并创建配置

git clone https://github.com/Evil0ctal/Douyin_TikTok_Download_API.git
cd Douyin_TikTok_Download_API

umask 077
POSTGRES_PASSWORD=$(openssl rand -hex 24)
REDIS_PASSWORD=$(openssl rand -hex 24)
cat > .env <<EOF
DTK_SECRET_KEY=$(openssl rand -base64 48)
POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
REDIS_PASSWORD=${REDIS_PASSWORD}
DTK_DATABASE_URL=postgresql+asyncpg://dtk:${POSTGRES_PASSWORD}@postgres:5432/dtk
DTK_REDIS_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
DTK_BIND_HOST=127.0.0.1
DTK_BIND_PORT=8000
EOF

.env 包含数据库密码和凭据加密密钥,应单独保管,不要上传到公开仓库。DTK_SECRET_KEY 需要在重启和升级后保持一致,否则已保存的 Cookie 等凭据可能无法解密。变量定义见官方环境变量示例

2. 启动核心服务

export COMPOSE_ENV_FILES=.env
docker compose -p dtk -f docker/compose.yml up -d --build --wait
docker compose -p dtk -f docker/compose.yml logs --tail=100 api

这些命令在仓库根目录执行。显式设置 COMPOSE_ENV_FILES,可以让 Compose 读取同一份配置用于变量插值。基础栈包含数据库、Redis、API、worker,以及执行后退出的迁移任务;基础启动不会自动开启 browser 和 downloader 两个可选 profile。服务定义见官方 compose.yml

3. 创建管理员并访问控制台

在 API 日志中找到首次初始化链接和令牌,打开后创建管理员账号。默认访问地址为 http://127.0.0.1:8000。如果服务部署在远程服务器上,这个地址指向服务器本机,可先通过 SSH 隧道访问:

# 在你自己的电脑执行,替换用户名和服务器地址
ssh -L 8000:127.0.0.1:8000 user@your-server

保持隧道连接,在电脑浏览器中访问本机 8000 端口,再使用日志中的初始化令牌。长期通过域名访问时,可在现有反向代理上配置 HTTPS 并转发到该端口。初始化步骤见官方首次安装说明

六、开启媒体下载与自动身份

媒体下载:profile 和 URL 都要配置

在仓库根目录的 .env 中新增或修改下面这一项,避免重复添加同名配置:

DTK_DOWNLOADER_URL=http://downloader:9100

然后执行:

export COMPOSE_ENV_FILES=.env
docker compose -p dtk -f docker/compose.yml --profile downloader up -d --build --wait

媒体落在 media-data 数据卷中,元数据归档与媒体文件保存是两件事。未开启下载器时,下载接口会返回功能未启用的提示。还要检查控制台的 media.max_bytes:官方文档写明默认容量为 2 GiB,超限会清理最旧的未固定下载,重要内容应调整保留设置并另做备份。参见Docker 组件说明

自动游客身份:还需要浏览器版本固定

只导入自己的 Cookie,可以不开浏览器容器。若需要自动生成游客身份,在 .env 中配置:

DTK_BROWSER_RPC_URL=http://browser-rpc:9000
CLOAKBROWSER_COMMIT=f04c23da285b3b3d3cf10c8f9d282e7adc1d52ce

上面的提交值来自查阅时的官方示例,是其已验证的起点;安装新版本时应核对对应版本的 .env.example。然后同时启用两个 profile:

export COMPOSE_ENV_FILES=.env
docker compose -p dtk -f docker/compose.yml --profile browser --profile downloader up -d --build --wait

浏览器镜像需要本机构建,并有较高的资源与网络要求。只启动容器、不配置 URL,或者构建时遗漏浏览器 commit,都可能导致自动身份功能不可用。配置依据见环境变量示例Docker 说明

七、装完后怎样确认可以用

先在服务器检查容器状态与依赖就绪情况:

docker compose -p dtk -f docker/compose.yml ps -a
curl -fsS http://127.0.0.1:8000/healthz
curl -fsS http://127.0.0.1:8000/readyz
docker compose -p dtk -f docker/compose.yml logs --tail=100 api worker

/healthz 用于确认服务存活,/readyz 进一步检查数据库与 Redis。迁移容器成功执行后退出属于正常状态。探针通过后,还应进入控制台,用一条自己拥有或获授权的作品链接完成解析,再测试一次媒体下载,核对任务结果和文件。页面能打开不代表平台请求和下载链路都已成功。

程序接入时,从控制台创建具有所需权限的 API Key,按当前实例的 /docs/swagger 对接;AI 客户端接入可从 /mcp-guide 查看配置。不要把管理员凭据写进前端代码。

八、遇到问题,先查哪一层

  • 镜像或浏览器构建失败:先定位无法访问的依赖源,区分拉镜像失败与本地构建失败。

  • 控制台正常,作品请求失败:检查身份池、Cookie 有效性、出站网络和请求日志,再核对作品可访问性。

  • 作品解析成功,文件没有保存:检查 downloader profile、URL 配置、下载任务状态和媒体容量。

  • 浏览器容器能启动,身份却不可用:核对构建时使用的 commit、浏览器后端和日志,不能只凭容器正在运行就判断正常。

  • 小机器启动报 CPU 或内存问题:按官方部署文档调整覆盖配置,再重试;不要反复重启同一套超规格配置。

维护时,先备份数据库、媒体和 .env,再按对应版本的升级步骤操作。用脚本安装的实例可使用管理菜单升级;手动部署则应检查目标版本及迁移说明。日常停机不要随手加 down -v,它会删除数据卷。

对我来说,这个项目适合用作个人作品备份或已有系统的数据接入组件。先跑通“一条链接 → 一个成功任务 → 一份可用结果”,再考虑批量处理,后续维护会清楚得多。

本文为基于官方资料独立整理的介绍。项目源码采用 Apache-2.0 许可证;项目开源与媒体内容的使用授权是两回事,请在有权处理的内容范围内使用。

相关文章

本地 AI 模型需要多少显存?Can I Run AI 硬件评估与试跑教程DeepSeek 本地部署教程:Windows 安装 Ollama、运行模型与接口排错

一起聊聊

留下你的想法,评论审核通过后展示。