Skip to main content
Glama

Douyin Reader

一个**自行部署(self-hosted)**的抖音视频口播提取工具。

本仓库只提供源代码和搭建教程,不提供公共 API、公共 Render 实例或共享的 Cloudflare 配额。

每位使用者都需要使用自己的 Render、Cloudflare 和 API Key。

最终工作流

抖音分享
→ iPhone 快捷指令
→ 你自己的 Render
→ 你自己的 Cloudflare Workers AI Whisper
→ 自动复制文案
→ 自动打开 ChatGPT

当前正式跑通的平台是抖音。

Related MCP server: douyin-video-mcp

目录

.
├── Dockerfile
├── pyproject.toml
├── README.md
├── LICENSE
├── NOTICE
├── .env.example
├── .gitignore
├── .dockerignore
└── douyin_mcp_server/
    ├── __init__.py
    ├── __main__.py
    ├── media_router.py
    ├── server.py
    └── remote_server.py

这是一份已经精简过的远程部署版本,不再依赖旧项目中的本机 faster-whisper、Playwright、WebUI 或远程 MCP 入口。

1. 准备 Cloudflare

创建自己的 Cloudflare 账号,并准备:

CLOUDFLARE_ACCOUNT_ID
CLOUDFLARE_API_TOKEN

推荐使用 Workers AI 的 API Token。

默认模型:

@cf/openai/whisper-large-v3-turbo

2. 部署 Render

在 Render 创建 Web Service:

Source: 你自己的 GitHub 仓库
Runtime: Docker
Branch: main

设置环境变量:

CLOUDFLARE_ACCOUNT_ID=你的 Account ID
CLOUDFLARE_API_TOKEN=你的 Token
SHORTCUT_API_KEY=你自己生成的随机字符串

可选:

CLOUDFLARE_MODEL=@cf/openai/whisper-large-v3-turbo

部署后测试:

https://YOUR-SERVICE.onrender.com/health

正常返回:

{
  "status": "ok",
  "service": "douyin-reader-self-hosted"
}

3. 快捷指令接口

创建任务

GET https://YOUR-SERVICE.onrender.com/shortcut/start?url=<编码后的抖音URL>

请求头:

X-API-Key: YOUR_SHORTCUT_API_KEY

返回:

{
  "status": "accepted",
  "job_id": "..."
}

查询状态

GET https://YOUR-SERVICE.onrender.com/shortcut/status/<job_id>

同样携带:

X-API-Key: YOUR_SHORTCUT_API_KEY

可能返回:

{"status":"queued"}
{"status":"processing"}

成功:

{
  "status": "success",
  "transcript": "..."
}

失败:

{
  "status": "failed",
  "error": "..."
}

快捷指令成功判断必须使用 success,不是 completed。

4. iPhone 快捷指令

建议:

接收分享内容
→ 转成文本
→ 正则匹配第一个 https:// URL
→ URL 编码
→ GET /shortcut/start
   Header: X-API-Key
→ 获取 job_id
→ 循环:
   等待约 10 秒
   → GET /shortcut/status/<job_id>
      Header: X-API-Key
   → 获取 status
      success:
        获取 transcript
        复制到剪贴板
        打开 ChatGPT
        停止快捷指令
      failed:
        显示 error
        停止快捷指令
      queued / processing:
        继续下一轮

安全

  • 不要把真实 Token 或 Key 写入仓库

  • 不要把 Key 放在 URL 路径里

  • 使用 X-API-Key

  • .env 已加入 .gitignore

  • 如果密钥曾出现在截图或公开日志里,请轮换

  • 本仓库不提供作者的在线实例

  • 每位用户应该部署自己的 Render 和 Cloudflare

已知限制

  • Render 免费实例休眠后第一次请求可能较慢

  • 任务状态暂存在进程内存;服务重启会丢失未完成任务

  • 抖音页面结构变化后解析逻辑可能需要调整

  • 唱歌、纯音乐或背景音乐过强时,Whisper 识别可能较差

后续扩展

media_router.py 已经保留平台分流结构。

以后可以新增:

  • 小红书

  • Bilibili

  • 其他媒体平台

尽量复用后半段:

Render
→ Cloudflare Whisper
→ 异步任务
→ 快捷指令轮询
→ 剪贴板
→ ChatGPT

上游来源

本项目基于以下社区项目继续修改:

  • dvdxfv/douyin-mcp-server

  • yzfly/douyin-mcp-server

上游项目使用 Apache License 2.0。本仓库保留相应许可证与来源说明。

免责声明

本项目仅供学习、研究和个人工具用途。使用者应自行遵守适用的平台规则、法律法规及内容版权要求。

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers