VoiceDrop 的入口。所有能力都在 MCP 里(voicedrop.cn/mcp,32 个工具:文章读写与版本、文风与蒸馏、挖矿与重写、社区与投币、算力、分享/公众号/小红书)。本 skill 只做一件事——把你接上那个 MCP:用它的 login 工具做 6+4 手机配对登录拿到令牌,然后接进客户端。触发词:"voicedrop"、"登录 voicedrop"、"voicedrop 登录"、"接 voicedrop mcp"、"voicedrop token"、"/wjs-voicedrop"。
npx skills add https://github.com/jianshuo/claude-skills --skill wjs-voicedrop
VoiceDrop 的全部能力都在 MCP 里。这个 skill 唯一的作用,是把你接上去。
会话里已经有 list_articles、read_style、community_feed、credit_balance 这些工具?
接上了。停止阅读本文件,直接用工具。
工具自带完整说明(参数、语义、花不花算力都写在描述里)。本文件有意不重复它们——重复就会漂移:改了 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 位码 + 手机上误点一下就能被接管。
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)"
}
call login '{"code":"a3f2b1"}'
# → {"pairing":"…", "next":"看手机——App 里会弹出一个 4 位数字码…"}
call login '{"verify_code":"7391","pairing":"<上一步返回的 pairing 原样粘回来>"}'
# → {"token":"anon_…", "scope":"users/anon-…/", "next":"…"}
| 报错 | 含义 / 怎么办 |
|---|---|
| 没找到这个账号 | 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 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 讲了架构和几个不显然的约束)。
Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take jianshuo/wjs-voicedrop from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.