Fetch voice-note emails from IMAP, transcribe audio attachments with OpenAI Whisper, and save the result as a fleeting note in your Obsidian vault.
bash
python3 {skillDir}/scripts/transcribe_voice_notes.py
Set environment variables (or let the skill read from OpenClaw config):
VariableRequiredDescriptionEMAIL_ADDRESS✅IMAP login addressEMAIL_PASSWORD✅App-specific passwordOPENAI_API_KEY✅OpenAI API keyOBSIDIAN_VAULT_PATH✅Absolute path to Obsidian vault rootEMAIL_PROVIDERProvider key: gmail (default), outlook, 163.com, 126.com``FLEETING_FOLDERVault subfolder for fleeting notes (default: 0-Inbox)VOICE_NOTE_KEYWORDSubject filter keyword (default: Voice Note)MARK_EMAIL_READ``true / false (default: true)
json5
{
skills: {
"voice-note-transcriber": {
obsidianVaultPath: "/home/user/Documents/MyVault",
fleetingFolder: "0-Inbox",
emailProvider: "gmail",
subjectKeyword: "Voice Note",
markEmailRead: true,
},
},
}
.mp3, .wav, .m4a, .webm, .ogg,
.flac) to a temp directory.whisper-1).markdown
---
tags:
- type/transcript
- source/voice-note
date: 2025-05-12
email_subject: "Voice Note — weekly recap"
email_from: sender@example.com
---
# Voice Note Transcript — 2025-05-12
## Transcript
(transcribed text here)
## Source
- **Subject:** Voice Note — weekly recap
- **From:** sender@example.com
- **Date:** Mon, 12 May 2025 08:00:00 +0800
SymptomFix"Missing OPENAI_API_KEY"Export OPENAI_API_KEY or set it in OpenClaw configNotes not appearing in ObsidianCheck OBSIDIAN_VAULT_PATH is the vault root (not a subfolder) and FLEETING_FOLDER exists inside itNo emails foundVerify EMAIL_PROVIDER, credentials, and VOICE_NOTE_KEYWORD match your mailboxAttachment not transcribedEnsure the attachment has a recognised audio extension
bash
clawhub publish ~/.openclaw/skills/voice-note-transcriber \
--slug voice-note-transcriber \
--name "Voice Note Transcriber" \
--version 1.0.0 \
--changelog "Initial release"