首页 / 教程 / Douyin / TikTok Download API:Docker 自托管部署与 MCP 使用指南

云端部署

Douyin / TikTok Download API:Docker 自托管部署与 MCP 使用指南

用 Docker 自托管 Douyin / TikTok 数据服务,配置 REST API、MCP、CLI 和 Web 控制台,并完成第一次解析调用。

BINBHO · 图文教程

用 Docker 在自己的机器上部署一套抖音 / TikTok 数据服务,同时获得 REST API、MCP、CLI 和 Web 控制台。本文基于开源项目公开文档整理,具体版本和命令请以项目仓库当前说明为准。

重要说明

Douyin_TikTok_Download_API 是第三方开源项目,并非抖音或 TikTok 官方 API。自托管后仍会受到账号权限、IP、风控和平台条款限制。请只在授权和合规范围内使用。

这套项目能做什么

Douyin_TikTok_Download_API(作者 Evil0ctal)是一套开源、可自托管的抖音 / TikTok 数据接口。

早期它主要用于解析分享链接和获取媒体地址。到了 v5,项目已经更接近一套完整的数据服务:

能力 说明
REST API /api/v1/...,适合网站、脚本和后端调用
MCP 默认 /mcp,可接 Claude Code、Claude Desktop、Codex 等
CLI 在终端中通过 dtk 使用
Web Console 管理身份池、任务、资料库、下载、日志和 API Key
本地归档 PostgreSQL 保存解析结果,Redis 负责任务与缓存

版本更新较快,具体版本请以项目的 Latest Release 为准。

如果只想先体验界面,可以打开公开 Demo:

Demo 是共享实例,存在限流。不要向公开 Demo 提交个人 Cookie 或其他敏感信息。

和官方 TikTok MCP 有什么区别

搜索 “TikTok MCP” 时,很容易和 TikTok for Business MCP Server 混淆。

对比项 Douyin_TikTok_Download_API TikTok for Business MCP
性质 第三方开源 TikTok 官方
主要用途 内容数据,例如作品、作者、评论 广告投放与报表
自托管 支持 使用官方服务
MCP 支持 支持

如果你要管理广告、受众和投放数据,应该使用官方 Business MCP。

如果你的目标是内容读取、归档、自建接口或接入 Agent,可以继续看这套项目。

可以获取哪些数据

当前项目覆盖的数据类型大致包括:

  • 单条视频 / 图集
  • 作者公开资料与作品列表
  • 作者喜欢列表
  • 合集 / 播放列表
  • 评论与回复
  • 关键词搜索
  • 媒体地址
  • 收藏夹
  • 归档后的历史数据

TikTok 还支持部分粉丝、关注和转发数据。

抖音的粉丝 / 关注列表通常需要登录会话,游客身份不一定能获取,因此不要把这类数据理解成稳定的普通公开接口。

REST、MCP、CLI 怎么选

方式 适合场景
REST API 网站、后台、Python 脚本、自动化
MCP Claude Code、Claude Desktop、Codex 等 Agent
CLI(dtk 直接在服务器终端操作
Web Console 管理实例、身份、任务和 API Key

REST、MCP 和 CLI 共用同一套 service 层。MCP 并非简单转发 REST,而是直接使用同一业务逻辑。

部署完成后,可以访问这些文档入口:

/docs
/swagger
/redoc

部署前先确认几件事

开始之前,建议先确认以下条件:

  1. 用途合规:能够解析链接,不代表拥有转载或再分发内容的权利。
  2. 运行环境:需要 Docker 和 Docker Compose,建议使用较新的 Compose。
  3. 服务依赖:v5 至少包含 API、Worker、PostgreSQL、Redis;浏览器组件可以按需开启。
  4. 大陆网络环境:如果拉取镜像较慢,可能需要先按官方说明配置镜像源。

使用 Docker 部署

1. 拉取项目

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

2. 生成 .env

不要直接复制网上别人使用过的固定密钥。

可以在本机生成随机密码:

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
EOF

这里会分别生成:

  • DTK_SECRET_KEY
  • PostgreSQL 密码
  • Redis 密码
  • PostgreSQL 连接地址
  • Redis 连接地址

3. 启动服务

如果希望本地构建:

docker compose -p dtk -f docker/compose.yml up -d
docker compose -p dtk -f docker/compose.yml logs api

第一次构建可能会比较慢。

如果希望直接使用已发布镜像,可以先执行:

export DTK_IMAGE=evil0ctal/douyin_tiktok_download_api
export DTK_IMAGE_TAG=latest
docker compose -p dtk -f docker/compose.yml pull
docker compose -p dtk -f docker/compose.yml up -d

先执行 pull 可以减少 Compose 又回到本地 build 的情况。

4. 打开 Web Console

默认地址:

http://127.0.0.1:8000

查看 API 日志:

docker compose -p dtk -f docker/compose.yml logs api

首次启动时,日志会打印初始化令牌。

使用这个令牌创建管理员账号,然后在 Web Console 中创建 API Key。

项目也提供一键安装脚本:

install.zh.sh

建议先阅读脚本内容,再决定是否执行,不要直接运行来源不明的远程安装脚本。

第一次调用 API

v5 的数据接口默认采用异步任务方式。

如果请求时没有传 wait,常见结果是:

202 + task_id

这表示任务已经接受并继续处理,并不代表请求失败。

下面是一次基本解析请求:

API_KEY='dtk_...'

curl -sS -X POST   'http://127.0.0.1:8000/api/v1/parse?wait=25'   -H "X-API-Key: ${API_KEY}"   -H 'content-type: application/json'   -d '{"url":"你的抖音或 TikTok 分享链接"}'

返回结果可以这样理解:

结果 含义
200 + 正文 在等待时间内已经处理完成
202 + task_id 任务仍在处理,需要继续查询

如果返回 task_id,可以继续轮询:

curl -sS "http://127.0.0.1:8000/api/v1/tasks/{task_id}"   -H "X-API-Key: ${API_KEY}"

实例侧的等待上限常见约为 30 秒。wait 超过实例允许的范围时会直接返回参数错误。

为什么需要 PostgreSQL 和 Redis

v5 已经不只是一个简单的链接解析进程。

组件 主要作用
PostgreSQL 保存归档、身份、任务、设置等需要长期保留的数据
Redis 保存任务状态、缓存和调度过程中的快速数据

公开技术栈还包括 FastAPI、SQLAlchemy、React、TypeScript、TimescaleDB 等。

一般部署这套项目时,不需要额外再搭 Kafka、Elasticsearch 或 Kubernetes。

v5 的身份池

v4 常见的方式是手动把 Cookie 放进配置文件,Cookie 失效后需要自己替换。

v5 把 Cookie 和浏览器环境整理成了身份池

可选浏览器组件可以自动生成游客身份,并提供:

  • 健康度管理
  • 身份轮换
  • 限流
  • 熔断

对于需要登录权限的数据,仍然可以手动导入 Cookie。

但如果只是使用公开能力,Cookie 并不是启动整套服务的必填项。

“无水印”是什么意思

这里的“无水印”并不是用 AI 去除已经绘制在画面上的水印。

项目做的是从平台返回的数据里选择平台本身提供的干净媒体流。

如果上游没有提供对应媒体流,接口也无法凭空生成一份原始无水印视频。

v4 和 v5 的主要区别

v5 基本可以理解为一次重写,不能按普通小版本升级来处理。

项目 v4 v5
身份 手工 Cookie 身份池 + 可选自动游客身份
调用方式 更多同步调用 默认异步任务
数据 解析后直接使用 PostgreSQL + Redis,可归档
访问控制 相对简单 API Key、Scope、角色
管理界面 PyWebIO React Web Console
接口方式 REST REST + MCP + CLI
平台 曾包含 B 站等 当前主线为抖音、TikTok

旧版仍可以在 v4 分支中找到。

如果从 v4 迁移到 v5,应按新的部署和接口重新适配,不建议把它理解成只修改版本号即可升级。

安全与合规建议

部署完成后,至少注意以下几点:

  • DTK_SECRET_KEY、PostgreSQL 密码、Redis 密码都应该独立生成并妥善保存。
  • PostgreSQL、Redis 和管理控制台不要在没有保护的情况下直接暴露公网。
  • 需要远程访问时,建议使用 HTTPS、反向代理、API Key 或专网。
  • 开源许可证只授权项目代码,不代表平台授权大规模采集或再分发内容。
  • 自托管后依然可能受到上游限流。
  • 身份健康、轮换和熔断只能帮助隔离问题,不能保证上游接口永久有效。

常见问题

这是官方 API 吗?

不是。这是第三方开源项目。

必须自己准备 Cookie 吗?

不一定。

启用浏览器身份后,可以自动生成游客身份。只有需要登录权限的数据,才可能需要手动导入登录态。

为什么请求返回 202?

这是异步任务的正常行为。

拿到 task_id 后继续查询任务状态,或者调用解析接口时使用 ?wait=N 等待结果。

可以接 Claude Code 或 Codex 吗?

可以。

项目提供 /mcp,可以接入支持 MCP 的 Agent。

v4 可以直接升级到 v5 吗?

不能按普通小版本升级理解。

建议把 v5 当成新的部署和接口重新适配。

项目资源

用途 地址
GitHub https://github.com/Evil0ctal/Douyin_TikTok_Download_API
文档站 https://douyin.wtf/
在线 Demo https://demo.douyin.wtf/
最新 Release https://github.com/Evil0ctal/Douyin_TikTok_Download_API/releases/latest

完成以上步骤后,本机应该能够打开 Web Console,并完成第一次 parse 请求。

如果部署过程中卡在拉镜像、初始化令牌或 202 任务轮询,可以优先检查对应服务日志和任务状态。