VoiceDrop

SkillAI & models

Entry point for VoiceDrop. All capabilities live in the MCP (voicedrop.cn/mcp, 44 tools: article read/write and versioning, style and distillation, mining and rewriting, community and tipping, compute power, sharing/WeChat Official Account/Xiaohongshu, bookshelf reading and writing/revising books).

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the VoiceDrop skill

What this skill tells your AI

The instructions your AI receives, as published by jianshuo/claude-skills in wjs-voicedrop/SKILL.md and read by ahel’s review.

VoiceDrop 的全部能力都在 MCP 里。这个 skill 唯一的作用,是把你接上去。

先看:接上了吗?

会话里已经有 list_articlesread_stylecommunity_feedcredit_balance 这些工具?

接上了。停止阅读本文件,直接用工具。

工具自带完整说明(参数、语义、花不花算力都写在描述里)。本文件有意不重复它们——重复就会漂移:改了 MCP 忘了改这里,你就会照着过期的文档干活。单一真源是 MCP 自己。

没接上的话,往下走。全程两步:登录拿令牌 → 接进客户端。


第一步:登录(MCP 的 login 工具,6+4 手机配对)

一个工具,调两次。 靠字段分辨阶段——第一步只传 code,第二步只传 verify_code + pairing

login(code="a3f2b1")                    → 手机弹出 4 位码,返回 pairing 句柄
login(verify_code="7391", pairing="…")  → 返回 anon_ 令牌

为什么两次往返省不掉:4 位码是服务端在第一步才随机生成的——第一步之前它不存在。而且它是安全性的核心:6 位码可能同时匹配多个账号(最多 10 个),服务端给每个候选推不同的 4 位码。报对了,才同时证明「手机在你手上」和「你要的是哪个账号」。省掉它,猜个 6 位码 + 手机上误点一下就能被接管。

MCP 还没接上,怎么调它的工具?

login唯一免 token 的工具(要 token 才能登录、要登录才能拿 token,那是死锁)。所以不必先接 MCP,也不必装任何东西——curl 直接打端点:

VD=https://voicedrop.cn/mcp
call() {  # $1=工具名  $2=参数 JSON
  curl -s -X POST "$VD" -H 'Content-Type: application/json' \
    -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"$1\",\"arguments\":$2}}" \
    | python3 -c "import json,sys;r=json.load(sys.stdin)['result'];t=r['content'][0]['text'];print('ERR: '+t if r['isError'] else t)"
}
  1. 问用户要手机 设置 → 账户 里的 6 位十六进制码

    call login '{"code":"a3f2b1"}'
    # → {"pairing":"…", "next":"看手机——App 里会弹出一个 4 位数字码…"}
    
  2. 手机上会弹出 4 位数字码(也会收到一条推送「有新设备要登录」)。问用户要那个码:

    call login '{"verify_code":"7391","pairing":"<上一步返回的 pairing 原样粘回来>"}'
    # → {"token":"anon_…", "scope":"users/anon-…/", "next":"…"}
    

节奏很重要(这几条是真机上流血换来的)

  • 配对只活 2 分钟。 拿到 6 位码立刻发起,拿到 4 位码立刻完成。中间不要聊天、不要解释、不要顺手干别的——超时就得整个重来。
  • 用户报完 4 位码后,多半会切回电脑。 App 一进后台,服务端的「放行」消息就送不到手机。这时手机会收到第二条推送「确认登录」——提醒用户立刻点它;或者手动把 App 切回前台,登录会自动完成(服务端存着待办,回前台自动补送)。
  • 手机没弹码? 让用户把 App 切到前台就行——码会自动补送出来,不必重新发起。

报错对照

报错含义 / 怎么办
没找到这个账号6 位码抄错,或手机离线/未登录该账号
验证码不对,还能再试 N 次4 位码错了。配对还活着,报个对的重调一次 login 就行,别重来
验证码不对,还能再试 ? 次注意那个 ? —— 它说明配对已经不存在了(多半超过 2 分钟过期),必须重新发起,不是码错
手机没有响应手机没放行。让用户点「确认登录」推送,或把 App 切回前台
你在手机上点了「不是我」用户拒绝了这次登录

安全须知(用户没听过就说一遍)

login 返回的是账号的完整密钥anon_…)——不可吊销、不会过期,谁拿到它就拥有该账号的全部权限。而且它会进入模型上下文和会话记录。别贴到任何公开的地方。

不想走配对?App 里 设置 → 账户 → 访问令牌 可以直接复制,效果一样。


第二步:接进客户端

claude mcp add voicedrop --transport http https://voicedrop.cn/mcp \
  --header "Authorization: Bearer <上一步拿到的 token>"

其它客户端(Claude 桌面版自定义连接器等):URL 填 https://voicedrop.cn/mcp,自定义头填 Authorization: Bearer <token>

接上后用 /mcp 确认工具已加载,然后正常使唤即可,不用再回到本文件

令牌的能力边界(决定了哪些工具会报错):

令牌限制
anon(6+4 配对 / App 复制的)不能发社区、不能投币——那需要 Apple 或微信登录后的身份
Apple / 微信 session全功能

碰到 需要 Apple 登录 之类的报错,就是这个原因:让用户在 App 里用 Apple/微信登录,再重新复制令牌。


MCP 唯一做不到的事

上传录音/照片这类二进制文件。

这是物理限制,不是偷懒:MCP server 跑在远端,读不到你本地的文件;唯一的办法是把文件 base64 塞进模型上下文——几 MB 的二进制流进 LLM,是灾难。

正常路径是在 App 里录。真要从命令行传:

# 文件名必须纯 ASCII;leaf 是 VoiceDrop-*.m4a 会自动触发挖矿
curl -s -X PUT -H "Authorization: Bearer <token>" -H "Content-Type: audio/mp4" \
  --data-binary @rec.m4a \
  "https://jianshuo.dev/files/api/upload/VoiceDrop-<ts>-<dur>-<weekday>-<period>.m4a"

传完用 MCP 的 trigger_mining 催一下,list_articles 看结果。


MCP 源码~/code/jianshuo.dev/mcp/README.md 讲了架构和几个不显然的约束)。

Signals

GitHub stars
129
Forks
21
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
wjs-voicedrop
Source
github.com/jianshuo/claude-skills