Every recording you make is already structured data an agent can read and write.
Here are all the slash commands and skills available.
Bottom tab "Settings" → "Account" → tap "Copy Access Token". The token looks like anon_xxxx….
TOKEN=anon_xxxxxxxx... # paste the token you just copied
The token only lasts for the current shell session. To keep it permanently, add export VOICEDROP_TOKEN=… to your ~/.zshrc.
/wjs-voicedropVoiceDrop's companion skill, with two modes: list (list your recordings and articles) and distill (distill a writing style from your articles and upload it to CLAUDE.md).
Trigger phrases — say it however you like:
Say "voicedrop list" and the agent lists everything in your VoiceDrop space, grouped into:
.m4a files not yet turned into articles)articles/*.json, each with title + body + transcript + SRT)articles/*.empty — the original recording had no speech)CLAUDE.md you uploaded)Say "voicedrop distill" and the agent extracts 15–20 actionable writing rules from your recent articles, shows you a preview for confirmation, then uploads them to your CLAUDE.md — the server picks them up automatically the next time it mines articles.
Once uploaded, it also shows up in the VoiceDrop app under "Settings → Writing Style" — both are the same data.
/wjs-distilling-styleA general-purpose style-distillation skill. Give it a few articles by any author and it extracts a precise, executable writing fingerprint — not just for VoiceDrop users; use it to learn any writer's craft.
Trigger phrases:
~/code/style-cards/<author-slug>/style-card.md.How it differs from /wjs-voicedrop distill: this skill does the full, fine-grained 9-axis distillation; voicedrop distill is the quick mode that only extracts differential rules to append to VoiceDrop's CLAUDE.md.
Every skill above calls this same API under the hood — you can also use it directly in your agent prompt:
BASE=https://jianshuo.dev/files/api
# List all files
curl -s -H "Authorization: Bearer $TOKEN" $BASE/list
# Download an article JSON
curl -s -H "Authorization: Bearer $TOKEN" \
"$BASE/download/users/<your-id>/articles/VoiceDrop-xxxx.json"
# Download writing style settings
curl -s -H "Authorization: Bearer $TOKEN" \
"$BASE/download/CLAUDE.md"
# Upload / update writing style settings
curl -s -X PUT \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: text/markdown; charset=utf-8" \
--data-binary @/tmp/style.md \
"$BASE/upload/CLAUDE.md"
Article JSON format: { title, body, transcript, srt }.
Speak → VoiceDrop transcribes it and mines it into an article → /wjs-voicedrop list reads it out → /wjs-voicedrop distill or /wjs-distilling-style distills your writing style → written back to CLAUDE.md → the next article sounds more like you.
Throughout the whole loop, the agent works with your own data and your own token — no second backend, no lock-in. That's exactly what VoiceDrop is built for: plugging voice seamlessly into the agent ecosystem.