MCP

SnapAny 提供托管 MCP server(Model Context Protocol,Streamable HTTP)。配好之后,你在 Claude Code、Codex、Cursor 里直接说「帮我提取这个链接里的视频和图片」,AI 就会调用 SnapAny——不需要写代码。与 REST API 使用同一个 key、同一套计费。

端点:https://api.snapany.com/mcp

开始之前

配置前你需要一个 API key,两步:

  1. 到 API Keys 创建一个 key,再到控制台领取 50 个免费积分
  2. 记下这个 key,形如 sk_snapany_ 开头的一长串

下面所有配置里的 sk_snapany_xxx 都是占位符,必须换成你自己的真实 key。直接复制粘贴不会报错,但之后每次调用都会失败。

key 的轮换与权限说明见鉴权。

Claude Code

claude mcp add --transport http snapany https://api.snapany.com/mcp \
  --header "Authorization: Bearer sk_snapany_xxx"

默认只在执行命令的那个目录生效。想让所有项目都能用,加 -s user。

Codex

# ~/.codex/config.toml
[mcp_servers.snapany]
url = "https://api.snapany.com/mcp"
http_headers = { "Authorization" = "Bearer sk_snapany_xxx" }

~ 指你的用户主目录;文件不存在就自己新建。改完需要重启 Codex。

通用 JSON 配置(Cursor 等)

Cursor 写进 ~/.cursor/mcp.json(全局生效)或项目根目录的 .cursor/mcp.json(仅该项目)。其他客户端参考各自文档的 MCP 配置文件位置。

{
  "mcpServers": {
    "snapany": {
      "url": "https://api.snapany.com/mcp",
      "headers": { "Authorization": "Bearer sk_snapany_xxx" }
    }
  }
}

改完需要重启客户端。

确认连上了

Claude Code 在终端执行:

claude mcp list

看到 snapany 且状态为已连接即成功,也可以在会话里输入 /mcp 查看。其他客户端一般在设置的 MCP 面板里能看到这个 server——列出下面 7 个工具就说明通了。

可用工具

工具作用
extract_post提取单个帖子的媒体/元数据(1 积分)
extract_playlist提取播放列表/频道一页(2 积分)
extract_subtitles提取字幕轨道与下载直链(1 积分)
youtube_proxy_download获取 YouTube 代理下载链接,最高 1080p(4 积分/10 分钟)
transcribe提交转录任务(每开始一分钟 4 个 API 积分)
get_transcription轮询转录结果(免费)
get_docs在 Agent 内直接读本文档(免费)

extract_post、extract_playlist、extract_subtitles 返回的是直链与元数据,不是文件本身;youtube_proxy_download 返回与 extract_post 相同的结构,并为 1080p 及以下的 YouTube 档位附上代理链接(*_proxy_url),自响应起 30 分钟到 1 小时内有效。要真正存到本地,让你的 Agent 拿到链接后再下载一次即可——多数客户端可以直接做到。YouTube 直链下载报 403 时,让它改调 youtube_proxy_download 并下载 *_proxy_url。

extract_subtitles 支持 YouTube 与 B 站已有字幕。B 站返回 BCC JSON,如需 SRT/VTT 等格式,可自行转换。同语言可能有多条字幕。没有字幕时返回 no_subtitles 工具错误。详见字幕提取。

外链转录

transcribe 通过 fileUrl 接收音频或视频文件地址,可以来自 SnapAny 提取接口,也可以使用你自备的地址。可选的 fileHeaders 用于传入下载该文件所需的请求头,例如 Referer、User-Agent。如果有独立音频地址,可以直接提交音频。文件最大 512 MiB,不限制时长。

调用成功后立即返回 { "id": "...", "status": "processing" },每 3–5 秒用这个 id 调用 get_transcription 查询结果。文件处理期间,duration 为 null;取得实际音频时长后,它会变为以秒为单位的数值。每开始一分钟消耗 4 个 API 积分,确认实际时长后、开始转录前预扣;尚未取得时长时不扣积分。

视频没有音轨或下载失败时,任务会变为 failed,不扣积分。如果通过最低余额预检后,确认实际时长时余额不足以支付完整费用,任务也会变为 failed,并返回 errorCode: "insufficient_credits",不扣积分。通过 get_transcription 读取 errorCode 和 error,例如 audio_track_missing、download_failed、insufficient_credits。如果已经预扣积分后转录失败,积分会自动退回。

每次调用 transcribe 都会创建独立任务并分别计费。查看已有任务时,请使用 get_transcription,不要重新提交。完整参数和响应示例见转录。

积分

新开发者可在控制台领取 50 个免费积分,永久有效、不过期。余额与充值也在那里,逐笔用量在积分明细。

transcribe 创建任务前会检查是否至少有 4 个 API 积分。不足时立即返回 insufficient_credits 工具错误,不创建任务、不扣积分(REST API 返回 HTTP 402)。通过最低预检后,如果完整费用超过余额,get_transcription 返回 status: "failed" 和 errorCode: "insufficient_credits",不扣积分。其他收费工具返回 Insufficient credits。完整计费规则见积分与计费。

连不上怎么办

现象多半是
连接失败 / 401sk_snapany_xxx 没换成真实 key,或漏了 Bearer 前缀(Bearer 后有一个空格)
配置改了但工具没出现没重启客户端
429 rate_limited触发限流(与 REST API 共用配额,1200 次/分钟)

下一步

试试对你的 Agent 说:"提取这个 YouTube 视频并带说话人标签转录音频:https://..."