VoiceDrop
SkillAI & modelsEntry 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.
No other account needed.
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_articles、read_style、community_feed、credit_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)"
}
-
问用户要手机 设置 → 账户 里的 6 位十六进制码:
call login '{"code":"a3f2b1"}' # → {"pairing":"…", "next":"看手机——App 里会弹出一个 4 位数字码…"} -
手机上会弹出 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