Kuhakucai/douyin-mcp
GitHub: Kuhakucai/douyin-mcp
本地运行的抖音创作者数据 MCP Server,将创作者中心运营指标和视频音轨文案结构化后提供给 AI Agent 进行内容复盘分析。
Stars: 28 | Forks: 7
douyin-mcp
让 AI 同时读懂你的抖音创作数据和视频内容
本地运行 · 音轨文案按需提取 · 数据可追溯 · 面向个人创作者的 MCP Server
增量同步作品列表、播放、点赞、评论、分享、收藏、完播率和涨粉等页面可见指标。 | 🎙️ **提取视频音轨文案**
将公开视频中的说话内容转成带时间戳的本地文案,供 AI 理解选题、钩子、结构和观点。 | | 🧠 **结合内容与数据分析**
对比视频讲了什么、怎么讲以及最终表现,生成更有依据的内容复盘。 | ⚡ **文案按需加载**
启用后不处理全部历史视频;只预热近期内容,分析缺失文案时自动补齐。 | | 🧾 **结论附带证据**
返回采集时间、缓存新鲜度、字段覆盖率、缺失原因和质量警告,不用猜测值填空。 | 🔒 **登录凭证留在本地**
Cookie 与浏览器状态保存在专用 profile 中,MCP 不向 Agent 返回认证材料。 | 它解决的是一个具体问题: 抖音创作者中心(指标 + 公热视频音轨) → 本地结构化数据 → MCP → AI Agent 视频文案采用**按需加载**,而不是首次启动就批量处理全部历史视频。这样能更快完成首次同步,减少不必要的媒体下载、CPU 占用和本地存储;当用户真正分析某条视频时,缺失文案会自动进入后台提取队列。 当前范围为 **macOS 或 Windows、本机运行、单用户、单抖音账号**。本项目不提供多账号托管、云端采集、数据转售、未公开接口抓取,或绕过登录、安全验证、权限及风控的能力。 ## 快速开始 ### 环境要求 - macOS 或 Windows 10/11 - Python 3.11 或更高版本 - Google Chrome - 一个支持 MCP 和终端操作的 Agent 视频文案是首次安装后的可选功能;需要时只要告诉 Agent“启用视频文案”,由它说明额外依赖、下载和磁盘占用,并在取得同意后完成配置。 ### 推荐:让 Agent 完成安装和配置 用户只需要对 Agent 说: 帮我克隆并安装配置 https://github.com/Kuhakucai/douyin-mcp.git 项目 Agent 必须先阅读本 README,并自行完成以下步骤,而不是要求用户逐条输入命令: 1. 检查 macOS/Windows、Python 3.11+ 和 Google Chrome;缺少系统级前置条件时,说明原因并先征得用户同意再安装。 2. 克隆仓库后,macOS 运行 `bash ./easy-install.sh`;Windows 运行 `powershell -ExecutionPolicy Bypass -File .\easy-install.ps1`。脚本仅创建项目专用 `.venv`、安装基础依赖、生成 `.env`、初始化数据库和执行诊断,不修改全局 Python 或系统 PATH。 3. 不假定 `douyin-mcp` 已在全局 PATH:macOS 使用 `./.venv/bin/douyin-mcp`,Windows 使用 `.\.venv\Scripts\douyin-mcp.exe`。运行 `doctor` 并确认 `ready=true`;失败时先诊断和修复。 4. 运行 `init`,读取输出的 `mcp_config`。展示平台风险并取得用户明确确认后,执行 `acknowledge-platform-risk --yes`;随后将完整的 `mcp_config` 写入用户当前使用的 MCP 客户端,包括 Codex、Claude Code、Wintful、Kiro、Cursor 或其他兼容客户端。Agent 应先识别自身所在客户端和其配置方式;无法识别时,只询问用户正在使用哪个客户端,不要求用户自行寻找配置文件。Agent 无法写入客户端配置时,应给出完整配置和明确的放置位置,不能省略本地路径或猜测配置文件。 5. 配置完成后运行 `login --timeout 180`,打开项目专用 Chrome 让用户扫码;不得绕过登录或安全验证。扫码后保持该 Chrome 打开,不要切换账号、手动跳转页面或关闭窗口。登录后验证 MCP 连接,再同步作品列表和最近 20 条作品详情,并汇报安装、登录、同步和数据覆盖情况。 6. 完成安装后必须向用户交接:说明 MCP 已连接、当前登录与数据同步状态;用简明语言说明可查询作品和指标、比较作品表现、分析内容表现、导出数据等功能;给出 3 个可直接发送给 Agent 的首选示例请求。用户未启用视频文案时,明确说明音轨文案分析暂不可用,并提示用户可在需要时说“启用视频文案”。 7. 初次安装不启用视频文案,也不安装 FFmpeg、ASR 模型或其他系统软件;仅当用户明确要求“启用视频文案”时,才说明下载量、磁盘占用和系统改动并征得同意。 ### 备用:手动安装
展开查看 PowerShell 安装命令
git clone https://github.com/Kuhakucai/douyin-mcp.git cd douyin-mcp python -m venv .venv .\.venv\Scripts\Activate.ps1 python -m pip install -e . Copy-Item .env.example .env douyin-mcp init douyin-mcp doctor 也可以在已克隆的项目中运行一键脚本: powershell -ExecutionPolicy Bypass -File .\easy-install.ps1展开查看 macOS 安装命令
git clone https://github.com/Kuhakucai/douyin-mcp.git cd douyin-mcp bash ./easy-install.sh查看 CLI、MCP 工具与文案运行方式
### CLI 以下命令中的 `douyin-mcp` 是简写:macOS 请使用 `./.venv/bin/douyin-mcp`,Windows 请使用 `.\.venv\Scripts\douyin-mcp.exe`。也可以先激活对应的 `.venv`,再直接运行 `douyin-mcp`。 常用命令: # 首次登录或登录失效 douyin-mcp login --timeout 180 # 同步作品列表 douyin-mcp sync # 查看作品并取得 video_id douyin-mcp videos --limit 20 # 每批最多处理 10 条;根据 next_cursor 继续 douyin-mcp details --recent-limit 20 douyin-mcp details --recent-limit 20 --cursor 10 # 查询单条作品表现 douyin-mcp performance查看完整 CLI 命令表
| 命令 | 用途 | |---|---| | `init` | 初始化目录和数据库,输出 MCP 配置 | | `doctor` | 检查运行环境,不打开浏览器 | | `acknowledge-platform-risk` | 确认已阅读并理解平台自动化访问风险 | | `login` | 打开浏览器并等待登录 | | `status` | 查看登录、缓存、同步任务和覆盖率 | | `sync` | 同步作品列表和列表页指标 | | `details` | 分批同步指定或近期作品详情 | | `videos` | 分页查询本地作品 | | `performance` | 查询单条作品快照和派生指标 | | `export` | 导出 JSON 或 CSV | | `purge` | 清除本地数据和专用浏览器 profile |查看 MCP 工具列表
| 工具 | 用途 | |---|---| | `douyin_browser_login_start` | 打开可见 Chrome,处理首次登录或重新登录 | | `douyin_browser_login_status` | 查询当前浏览器登录状态 | | `douyin_browser_get_status` | 查询新鲜度、任务、覆盖率、账号绑定和 profile 锁 | | `douyin_browser_sync_if_needed` | 按 TTL 同步列表、详情或全部数据 | | `douyin_browser_sync_creator_data` | 同步作品列表和列表指标 | | `douyin_browser_sync_video_details` | 分批同步指定或近期作品详情指标 | | `douyin_browser_list_videos` | 分页查询作品和最新指标 | | `douyin_browser_get_video_performance` | 查询单作品快照和派生指标 | | `douyin_browser_compare_videos` | 对比 2~20 条作品 | | `douyin_browser_get_metric_coverage` | 查询字段覆盖率和缺失原因 | | `douyin_browser_rank_video_potential` | 使用透明、带版本的规则进行轻量排序 | | `douyin_browser_generate_review` | 生成带证据和警告的复盘上下文 | | `douyin_browser_export_data` | 导出 JSON 或 CSV | | `douyin_browser_submit_transcript_run` | 提交指定/近期文案任务;`all_public=true` 时显式回溯全部公开视频 | | `douyin_browser_get_transcript_run` | 查询逐视频阶段和逐 run 计数 | | `douyin_browser_list_transcript_runs` | 分页列出历史文案任务 | | `douyin_browser_cancel_transcript_run` | 取消当前 run 的需求,不误停共享 job | | `douyin_browser_retry_transcript_run` | 为失败视频创建新的重试 run | | `douyin_browser_get_transcript_capabilities` | 诊断 FFmpeg、FFprobe、本地模型和功能门禁 | | `douyin_browser_get_transcript_backfill_plan` | 只读预估全量历史回溯的数量、耗时和存储 | | `douyin_browser_get_video_transcript` | 按不可变 revision 分页返回原始时间戳分片 | | `douyin_browser_get_video_analysis_context` | 返回确定性分析段落;默认自动排队补齐缺失文案 |PowerShell 找不到 douyin-mcp
激活虚拟环境:
.\.venv\Scripts\Activate.ps1
或者直接运行:
.\.venv\Scripts\douyin-mcp.exe doctor
PowerShell 阻止安装脚本
下面的执行策略只作用于本次命令: powershell -ExecutionPolicy Bypass -File .\easy-install.ps1登录后仍提示需要操作
保持项目专用 Chrome 打开,完成扫码、验证码或安全验证,再重试同步。不要使用日常 Chrome profile 替换项目专用 profile。返回 profile_in_use
另一个同步进程仍在使用专用浏览器。等待它结束后重试;如果原进程已经退出,锁会在安全确认后自动恢复。
详情同步返回 partial
查看 `failures`、`coverage` 和 `next_cursor`。常见原因包括作品暂不支持详情、页面未展示某项指标,或当前批次仍需继续。
文案功能显示未启用或环境不可用
先让 Agent 调用 `douyin_browser_get_transcript_capabilities`。重点检查: - `TRANSCRIPT_INGESTION_ENABLED` 是否为 `true` - 是否安装了 `.[asr]` 可选依赖 - `TRANSCRIPT_ASR_MODEL_DIR` 是否指向有效的本地模型目录 - `ffmpeg` 和 `ffprobe` 是否可以执行 修改 `.env` 后应重新运行 `douyin-mcp init`,更新 MCP 客户端配置并新建会话。分析视频时返回 preparing 或 run_id
这是按需加载的正常状态,表示该视频尚无可用文案,后台任务已经创建。不要反复提交同一视频;让 Agent 使用返回的 `run_id` 查询进度,任务完成后再次读取分析上下文即可。媒体获取结束后,ASR 会在本地后台执行,不需要一直播放视频。
文案任务完成但结果是 no_speech
`no_speech` 是成功终态,表示模型没有在音轨中检测到可用语音。纯音乐、静音、语音过短或被背景声覆盖的视频可能出现该结果。原始 ASR 也可能误识别专有名词和英文缩写;建议保留原文作为证据,在展示或报告阶段再做纠错。
展开开发环境、项目结构和验收说明
### 开发环境 macOS: git clone https://github.com/Kuhakucai/douyin-mcp.git cd douyin-mcp python3 -m venv .venv source .venv/bin/activate python -m pip install -e . python -m pip install pytest cp .env.example .env Windows: git clone https://github.com/Kuhakucai/douyin-mcp.git cd douyin-mcp python -m venv .venv .\.venv\Scripts\Activate.ps1 python -m pip install -e . python -m pip install pytest Copy-Item .env.example .env ### 项目结构 src/douyin_creator_mcp/ ├── server.py # 无副作用 FastMCP 构造 ├── runtime.py # 实例锁、迁移、executor/worker 生命周期 ├── cli.py # 用户 CLI ├── config.py # 环境配置 ├── browser/ │ ├── session.py # Playwright 与持久化 profile │ ├── executor.py # 唯一同步 Playwright 所有者线程 │ ├── commands.py # 纯值浏览器命令 │ ├── media_observer.py # 多 representation 收敛 │ ├── extractors.py # 列表/详情提取和规范化 │ └── profile_lock.py # 跨进程 profile 锁 ├── services/ │ ├── browser_service.py # 同步、查询、对比、复盘和导出 │ ├── transcript_coordinator.py # 持久后台 job、lease 与恢复 │ ├── transcript_policy.py # 首次预热、增量入队和分析按需补齐 │ ├── transcript_query.py # revision 游标与分析上下文 │ └── metrics.py # 派生指标与排序公式 ├── storage/ │ ├── db.py # SQLite、迁移与备份 │ ├── transcripts.py # run/job/asset/revision 事务仓储 │ ├── migrations/ # 有序、带校验和的不可变迁移 │ └── schemas.sql # 数据表结构 ├── content/ │ ├── media.py # 受控下载、FFprobe 与轨道选择 │ └── asr.py # FFmpeg 与本地 faster-whisper └── tools/ ├── browser_tools.py # 原 13 个 MCP 工具契约 └── transcript_tools.py # 9 个文案 MCP 工具契约 easy-install.ps1 # Windows 一键安装 easy-install.sh # macOS/Linux 一键安装 ### 扩展原则 1. 页面读取和 DOM 处理放在 `browser/`。 2. 可测试的业务逻辑放在 `services/`。 3. MCP 工具只做参数声明、服务调用和统一错误响应。 4. 原始数据、派生指标和不同采集来源分开保存。 5. 新字段必须定义缺失语义、数据来源、解析版本和测试样例。 6. 不读取或返回浏览器认证材料,不接入未公开私有接口。 ### 基础验证 以下命令可在 macOS 或 Windows 的已激活虚拟环境中运行;未激活时,请按前文的平台对应路径调用 `douyin-mcp`。 python -m compileall -q src python -m pip check douyin-mcp doctor ### 真实浏览器验收 涉及 DOM、指标提取或浏览器生命周期的变更,还应使用测试账号运行: douyin-mcp doctor douyin-mcp login --timeout 180 douyin-mcp sync douyin-mcp details --recent-limit 5 douyin-mcp status 验收时应核对登录态复用、页面声明数量、加载数量、解析数量、重复同步幂等性、详情身份校验、覆盖率和失败原因。真实账号数据和验收产物不得提交到仓库。如果这个项目对你有帮助,欢迎点一个 Star。
Built for local, evidence-backed creator analytics.
标签:MCP Server, Python, 代码示例, 抖音, 数据分析, 无后门, 本地工具, 自动化集成, 逆向工具, 音视频文案提取