No description
Find a file
DenizOkcu bc145a8675 Prepare 1.4.0 release
Refresh README and changelog for mobile voice capture workflows, update release metadata, and document production readiness behavior for reliable capture and iOS shortcuts.
2026-05-22 16:31:11 +02:00
.claude feat: add post-processing checkbox with global settings persistence 2025-10-20 11:46:29 +02:00
.github/workflows Fix attest action version (v2 → v4) 2026-05-13 22:03:31 +02:00
docs Add mobile capture reliability 2026-05-22 15:16:37 +02:00
src Improve voice note insertion 2026-05-22 16:15:17 +02:00
.editorconfig git init 2025-10-19 14:07:15 +02:00
.gitignore git init 2025-10-19 14:07:15 +02:00
.npmrc git init 2025-10-19 14:07:15 +02:00
AGENTS.md git init 2025-10-19 14:07:15 +02:00
CHANGELOG.md Prepare 1.4.0 release 2026-05-22 16:31:11 +02:00
CLAUDE.md Fix Obsidian plugin policy compliance issues 2026-05-13 21:32:43 +02:00
CODE_RESEARCH.md Fix build, lint errors, and remove dead code 2026-05-13 16:44:26 +02:00
esbuild.config.mjs Fix Obsidian review issues: types, deps, and linting 2026-05-13 16:23:24 +02:00
eslint.config.mjs Fix Obsidian review issues: types, deps, and linting 2026-05-13 16:23:24 +02:00
LICENSE prepare plugin submission 2025-10-19 23:39:38 +02:00
main.ts Improve voice note insertion 2026-05-22 16:15:17 +02:00
manifest.json Prepare 1.4.0 release 2026-05-22 16:31:11 +02:00
package-lock.json Prepare 1.4.0 release 2026-05-22 16:31:11 +02:00
package.json Prepare 1.4.0 release 2026-05-22 16:31:11 +02:00
README.md Prepare 1.4.0 release 2026-05-22 16:31:11 +02:00
styles.css Fix Obsidian plugin policy compliance issues 2026-05-13 21:32:43 +02:00
tsconfig.json Fix build, lint errors, and remove dead code 2026-05-13 16:44:26 +02:00
update-version.mjs Add release workflow with artifact attestation 2026-05-13 21:57:19 +02:00
versions.json Prepare 1.4.0 release 2026-05-22 16:31:11 +02:00

Voice MD

Capture thoughts before they disappear. Voice MD is a mobile-friendly voice capture plugin for Obsidian that records quick ideas, meeting recaps, and conversations, then turns them into Markdown notes you can actually use.

Use it when you are walking, commuting, leaving a meeting, or sitting at your desk and want speech to land directly in your vault.

GitHub release

Why Voice MD

  • Fast capture: Start recording from the ribbon, command palette, or an iPhone Action Button shortcut.
  • Obsidian-native output: Insert at the cursor, append to your daily note, and save raw/structured Markdown files in your vault.
  • Safer on mobile: Stopped recordings are saved locally before transcription, so network failures can be retried.
  • Meeting-ready: Optional speaker identification for conversations and meeting recordings.
  • Transparent AI: Audio and optional transcript post-processing use OpenAI; no telemetry or hidden services.

Quick start

  1. Install Voice MD from Settings → Community plugins → Browse.
  2. Add your OpenAI API key in Settings → Voice MD.
  3. Open a note and select the microphone ribbon icon, or run Start voice recording from the command palette.
  4. Speak, stop, and your transcription appears as a new paragraph at the cursor.

Common workflows

Quick thought capture

Open any note, start recording, and stop when you are done. Voice MD inserts the transcript as a new paragraph at your current cursor position, so you can capture ideas without breaking your writing flow.

Daily note capture from iPhone Action Button

Voice MD registers an Obsidian URL action for iOS Shortcuts:

obsidian://voice-md?record=true&daily=true&autostart=true

Add this URL to an iOS Shortcut using Open URLs, then assign that shortcut to the iPhone Action Button. Voice MD opens or creates today's configured daily note, waits for the editor, starts recording, and appends the result at the end under a time heading:

## 14:32

Remember to follow up with Sam about the launch notes...

A bare obsidian://voice-md URL does nothing safe. Recording requires record=true, and microphone auto-start requires autostart=true.

For multi-vault setups, include the vault name if needed:

obsidian://voice-md?vault=Your%20Vault&record=true&daily=true&autostart=true

You can also pass an explicit vault-relative note path:

obsidian://voice-md?record=true&file=Daily%2F2026-05-22.md&autostart=true

Meeting and conversation notes

Enable Meeting mode in the recording modal to use speaker-aware transcription. This works best with 26 speakers and recordings longer than 30 seconds.

Example output:

**Speaker A:** Let's review the Q3 numbers.

**Speaker B:** Revenue was up 12%, mostly driven by enterprise.

**Speaker A:** What about churn?

Structured notes from raw transcripts

Enable Post-processing to ask a chat model to format the transcript into clean Markdown with headings, lists, and paragraphs. Voice MD saves both:

  • Voice Transcriptions/transcription-YYYY-MM-DD-HHMMSS-raw.md — raw transcript
  • Voice Transcriptions/transcription-YYYY-MM-DD-HHMMSS.md — structured note linked back to the raw transcript

Raw transcripts are saved before structuring, so a formatting failure does not discard the transcription.

Mobile reliability

Voice MD is designed for mobile use, not just desktop dictation.

  • Stopped recordings are saved locally in IndexedDB before transcription starts.
  • Failed or offline transcriptions become retryable pending jobs.
  • Run Retry pending voice transcriptions from the command palette when you are back online.
  • Successful audio is deleted from local storage after completion.
  • Failed/pending audio is retained for the configured number of days.

Note: if iOS or Android terminates Obsidian while recording is still active, audio that has not reached the stopped/saved state may still be lost.

Settings

Settings → Voice MD

Setting Description Default
OpenAI API key Required for transcription. Stored with Obsidian SecretStorage when available
Max recording duration Maximum seconds per recording 300
Auto-start recording Start recording immediately when the modal opens Off
Retain failed audio Days to keep local audio for pending/failed retry jobs 7
Daily note folder Folder used by obsidian://voice-md?...daily=true shortcuts Vault root
Daily note date format Date format used by daily-note shortcuts YYYY-MM-DD
Use 24-hour time Use 24-hour timestamps for URL-appended recordings On
Language Force a language code, or leave blank for auto-detect Auto
Enable post-processing Default for the post-processing checkbox Off
Chat model Model used for post-processing. You can enter a current OpenAI model name gpt-4o-mini
Custom formatting prompt Override the default formatting instructions

Installation

Community plugins

  1. Open Settings → Community plugins → Browse.
  2. Search for Voice MD.
  3. Install and enable the plugin.

Manual install

  1. Download the latest GitHub release.
  2. Copy main.js, manifest.json, and styles.css to <vault>/.obsidian/plugins/voice-md/.
  3. Reload Obsidian and enable Voice MD in Settings → Community plugins.

Beta with BRAT

  1. Install BRAT.
  2. Open BRAT settings and add beta plugin DenizOkcu/voice-md.

Privacy and data flow

  • Audio is sent to OpenAI only when you transcribe.
  • Optional post-processing sends transcript text to OpenAI.
  • Stopped recordings are stored locally in browser IndexedDB so failed mobile/network attempts can be retried.
  • Successful recordings are deleted from local audio storage after completion.
  • Raw transcripts and structured notes are saved in your vault.
  • Uploads above OpenAI's 25 MB transcription limit are blocked before upload.
  • API keys use Obsidian SecretStorage when available; older Obsidian versions fall back to local plugin data.
  • Voice MD has no telemetry, tracking, ads, or background analytics.

Troubleshooting

Problem Fix
No API key error Add your OpenAI API key in Settings → Voice MD
Recording will not start Grant microphone permission to Obsidian in your OS settings
Transcription fails Check your API key, credits, and network. If audio was saved, run Retry pending voice transcriptions
Daily note shortcut opens the wrong place Set Daily note folder and Daily note date format to match your Daily Notes setup; include vault= for multi-vault iOS setups
No speaker labels Meeting mode works best with 26 speakers and recordings over 30 seconds
Long meeting formatting is incomplete Try a model with a larger output/context limit or keep raw transcripts enabled as the source of truth

License

MIT