三个入口,一套逻辑
126 个操作的 REST 接口、给 AI agent 用的 MCP 服务端、以及 dtk 命令行。
MCP 不是在 HTTP 上再包一层:三者调的是同一个 service 层,
所以一次工具调用省掉了第二跳和第二次认证。
数据读取于 2026-10-27,构建时写进页面,不是页面去请求的。
Douyin_TikTok_Download_API 是一个开源、自部署的抖音、
TikTok 和 B 站数据接口服务。
你用一条 docker compose up 把它跑在自己的机器上。没有托管版、不用注册、没有配额,
链路上也没有第三方。
它能取作品、作者和评论,还有声音、话题、直播间、热榜和搜索结果;下载视频和图集时拿到的是 无水印的流 —— 它挑的是平台本来就提供的那条干净流,而不是「去掉」了什么,抖音实况图背后的 那段视频也一并拿到。采集到的内容归档在你自己的 PostgreSQL 里,所以上游删掉的作品,本地还读得到。
下载下来的视频可以在同一台机器上转成文字。可选的转写服务在一个没有出网路由的容器里跑 FunASR 模型, 音频不会离开这台机器,也不调用任何语音接口。
麻烦的部分它替你处理了,而不是丢给你:抖音的 a_bogus、X-Bogus 请求签名、TikTok 的签名
和 B 站的 WBI 都是纯 Python 实现;短链会先展开再对照白名单校验,然后才发出任何请求;作品 ID 会先按
平台自己的编码规则验一遍,所以一个不可能存在的 ID 不会浪费一次上游请求。

三个入口,一套逻辑
126 个操作的 REST 接口、给 AI agent 用的 MCP 服务端、以及 dtk 命令行。
MCP 不是在 HTTP 上再包一层:三者调的是同一个 service 层,
所以一次工具调用省掉了第二跳和第二次认证。
cookie 不再是负担
游客身份按时自动铸造 —— 抖音和 TikTok 用无头浏览器,B 站直接走 HTTP。 池子自己测试、冷却和退休它们。 你自己的登录态 cookie 是可选增强,不是前提。
签名是纯 Python
a_bogus、X-Bogus、TikTok 的签名和 B 站的 WBI 都在进程内算,微秒级。
浏览器留作兜底,同时也是漂移探测器 —— 平台换了算法,是它先发现的。
它会告诉你自己不舒服
每次请求都有结构化记录,每个身份和每个端点都有实时健康度。 风控信号会在池子烧穿之前触发熔断。
不只是作品
除了作品和作者,还有作品旁边的推荐、一段声音和用它的作品、话题、关键词搜索、 作者自己的合集、直播间和热榜 —— 每个平台只开放游客能拿到的那部分。
下载、留存、转写
下载由一个小小的 Go 边车完成,进度实时可见,B 站的多 P 视频可以按 P 下载。 下载完的视频可以离线转写 —— 普通话,带标点,两核 CPU 上每分钟音频约一秒。
在浏览器里
demo。在终端里
不用注册:演示账号的口令是实例自己在 /api/v1/auth/demo 公布的。
登录拿到的是会话 cookie,不是 bearer token。
PASS=$(curl -s https://demo.douyin.wtf/api/v1/auth/demo | jq -r .data.password)
curl -s -c jar -o /dev/null \ -X POST https://demo.douyin.wtf/api/v1/auth/login \ -H 'content-type: application/json' \ -d "{\"username\":\"demo\",\"password\":\"$PASS\"}"
curl -s -b jar -X POST 'https://demo.douyin.wtf/api/v1/parse?wait=25' \ -H 'content-type: application/json' \ -d '{"url":"https://www.douyin.com/video/7675505205047348543"}' \| jq '.data | {platform, kind, description}'?wait=25 是让这次调用变同步的开关:它会挂住连接直到任务完成,然后用 200 把结果给你。
不加它就是 202 加一个 task id,那是正常的异步路径。这个实例的上限是 30 秒。
接口文档也不用登录就能看 ——
/swagger、
/redoc、
/openapi.json,中英双语。
TikHub 付费出现在这一页上,这个项目才得以保持免费和 Apache-2.0。整个安排就这么简单: 这里没有付费档、没有被留一手的功能,也没有任何东西会因为你从不点它而停止工作。
git clone https://github.com/Evil0ctal/Douyin_TikTok_Download_API.gitcd Douyin_TikTok_Download_APIcp .env.example .env # 然后设置 DTK_SECRET_KEYCOMPOSE_ENV_FILES=.env docker compose -p dtk -f docker/compose.yml up -d打开 http://localhost:8000,在浏览器里完成初始化。
完整版在快速开始。
一个 bash 脚本,会识别你的发行版、给出对应的 Docker 安装方式、按机器大小调好 容器上限、生成密钥、把整套跑起来。再跑一次它就变成运维菜单: 状态、升级、改口令、备份、改设置、清磁盘。
bash <(curl -fsSL https://raw.githubusercontent.com/Evil0ctal/Douyin_TikTok_Download_API/main/install/install.zh.sh)英文版是 install/install.sh。两份都在安装与部署里有说明。
Apache-2.0。源码、issue 和发布都在 GitHub · 在 demo.douyin.wtf 上试 · English。