SuperAPI AI 工具集

wjs-mining-voicedrop

写作与研究

查看项目

更新于 10-15 23:32

技能介绍

用途:把 VoiceDrop 收件箱(jianshuo.dev/files 上的 VoiceDrop-.m4a)里的未处理录音,逐条转写后交给 wjs-mining-articles 生成微信公众号草稿,是 VoiceDrop iOS app(开口即录、停即上传)的 Mac 端闭环。触发时机:用户说「处理 VoiceDrop 录音」「把新录音挖成文章」「处理一下我的口述」,或运行 /wjs-mining-voicedrop。不适用:已有 SRT 直接走 wjs-mining-articles;音频不在 R2 收件箱(本地散文件)先走 wjs-transcribing-audio 出 SRT;桶里非录音文件不处理,只认 VoiceDrop-.m4a 前缀。

前置与用法:~/code/.env 中需有 FILES_TOKEN(收件箱鉴权)和火山 ASR creds(VOLC_ASR_* / VOLC_TTS_*),用 set -a; source ~/code/.env; set +a 载入。脚本用绝对路径调用:INBOX=~/.claude/skills/wjs-mining-voicedrop/scripts/voicedrop-inbox.sh。唯一新增代码为 scripts/voicedrop-inbox.sh,支持 list / download / mark-done / mark-empty / delete。流程:Step 0 定位脚本并载入环境;Step 1 用 "$INBOX" list 列未处理录音,命令非零退出则报错停止,输出为空则结束;Step 2 逐条串行处理,先 "$INBOX" download <name> ~/code/voicedrop/archive 下载存档,再用 ffprobe 判断时长(空或损坏 mark-empty <name> corrupt,小于 1.0 秒 mark-empty <name> silent),随后交 wjs-transcribing-audio 出 SRT(中文走火山豆包 volc_asr_stream.py + build_srt_from_asr.py 并润色改错别字),转写为空则 mark-empty <name> no-speech,再把 SRT 交 wjs-mining-articles 走其完整流程(含选题人工闸),成文成功后生成 v2 JSON(schema/status/sourceAudio/articles 等)写到临时文件并执行 "$INBOX" mark-done <name> /tmp/<stem>.json;Step 3 汇报处理条数、各出几篇草稿、无语音及原因、本地存档路径、R2 剩余未处理条数。

产出:公众号草稿(~/code/wechat-publish/)、本地音频/SRT 存档(~/code/voicedrop/archive/)、R2 处理标记(articles/<stem>.json 或 .empty)、批次报告。

限制与注意事项:R2 音频永不删除,删除只属于用户在 app 中手动操作;每条录音必须落到已成文(mark-done)、无语音(mark-empty,带 reason)或失败(不标、留待下次)之一,避免重复处理;转写失败、用户未勾选题、未挖出文章时不标 done 也不标 empty,留未处理并报告原因;转写与成文不重写,复用既有技能;不认非 VoiceDrop-*.m4a 文件;服务器 miner(~/code/voicedrop/mining/mine.py,每 2h)用同一套标记约定,因此 list 常为空,本技能为手动补位。其他如收费、价格、平台支持范围等暂未提供。