← ClaudeAtlas

wjs-mining-voicedroplisted

Use when 王建硕 wants to turn his uploaded VoiceDrop voice memos into 微信公众号 article drafts — pulling the unprocessed recordings sitting on jianshuo.dev/files (the R2 inbox), transcribing them, and mining articles from each. Triggers — "处理 VoiceDrop 录音", "把新录音挖成文章", "口述备忘变文章", "处理一下我的录音", "/wjs-mining-voicedrop".
jianshuo/claude-skills · ★ 83 · AI & Automation · score 85
Install: claude install-skill jianshuo/claude-skills
# wjs-mining-voicedrop VoiceDrop 收件箱(`jianshuo.dev/files` 上的 `VoiceDrop-*.m4a`)→ 逐条转写 → 交给 `wjs-mining-articles` 出公众号草稿。这是 VoiceDrop iOS app(开口即录、停即上传)的 Mac 端闭环。 ## Core Principle **复用,不重写。** 本 skill 只做两件本身没有的事:**收件箱的进出**(列/下载/删)和**逐条编排**。转写交 `wjs-transcribing-audio`,成文交 `wjs-mining-articles`,一行都不重写。 **R2 当收件箱。** 「未处理」= 桶里现有的所有 `VoiceDrop-*.m4a`。一条**成功**跑完文章后,音频已存档到本地,再从 R2 删——桶里永远只剩还没处理的。**没成功就不删**,留着下次再来。 ## When This Skill Fires - 用户说「处理 VoiceDrop 录音」「把新录音挖成文章」「处理一下我的口述」 - 用户跑 `/wjs-mining-voicedrop` ## When NOT to use - **已经有 SRT** → 直接 `wjs-mining-articles` - **音频不在 R2 收件箱**(本地散文件)→ 直接 `wjs-transcribing-audio` 出 SRT,再 `wjs-mining-articles` - **桶里是别的机器传的非录音文件** → 本 skill 只认 `VoiceDrop-*.m4a` 前缀,其余不碰 ## 前置 - `~/code/.env` 里有 `FILES_TOKEN`(收件箱鉴权)和火山 ASR creds(`VOLC_ASR_*` / `VOLC_TTS_*`,转写用)。`set -a; source ~/code/.env; set +a`。 ## Workflow 唯一的新增代码:`scripts/voicedrop-inbox.sh`(`list` / `download` / `delete`,token 运行时从 `~/code/.env` 读,绝不落代码)。从 skill 根目录跑。 ### Step 1 · 列收件箱 ```bash scripts/voicedrop-inbox.sh list # 打印未处理的 VoiceDrop-*.m4a,一行一个 ``` 空 → 报「收件箱没有新录音」结束。非空 → 拿到这一批文件名。 ### Step 2 · 逐条闭环(串行,一条跑完再下一条) **串行**,因为删除安全依赖「这一条彻底成功」。对每个 `<name>`: 1. **先下载存档**(绝不先删 R2): ```bash scripts/voicedrop-inbox.sh download <name> ~/code/voicedrop/archive ``` 音频落 `~/code/voicedrop/archive/<name>`。**这一步就是存档**——之后即使删了 R2,本地也有。 2. **快速看一眼是不是真录音**:`ffprobe` 查时长。≈0 秒 / 几字节的误传/测试文件 → 跳过、向用户报告,**不删**(让用户自己决定清不清)。 3. **转写** → SRT:载入 **`wjs-transcribing-audio`*