No description
Find a file
WiseGuru f94856eae3 1.2.1
Community-review remediation (no behavior change):
- Remove eslint-disable in realtime/pcm.ts; reach the deprecated ScriptProcessor
  API through local type-aliases so no-deprecated never fires.
- Raise minAppVersion to 1.6.6 for FileManager.trashFile (@since 1.6.6).
- Enable the reviewer's type-checked lint rules locally for src/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 22:35:06 -07:00
.claude 1.2.0 2026-07-08 21:38:30 -07:00
.github/workflows code review + and new pre-release process 2026-07-07 15:06:43 -07:00
docs 1.2.1 2026-07-08 22:35:06 -07:00
scripts Add four UX features and bundle pending pre-release work 2026-05-26 10:13:42 -07:00
src 1.2.1 2026-07-08 22:35:06 -07:00
test 1.2.0 2026-07-08 21:38:30 -07:00
wiki 1.2.0 2026-07-08 21:38:30 -07:00
.editorconfig Initial commit 2026-05-24 09:48:48 -07:00
.gitignore code review + and new pre-release process 2026-07-07 15:06:43 -07:00
.npmrc Initial commit 2026-05-24 09:48:48 -07:00
AGENTS.md Initial commit 2026-05-24 09:48:48 -07:00
CLAUDE.md 1.2.1 2026-07-08 22:35:06 -07:00
dev-tools.config.example.json 1.2.0 2026-07-08 21:38:30 -07:00
esbuild.config.mjs Initial commit 2026-05-24 09:48:48 -07:00
eslint.config.mts 1.2.1 2026-07-08 22:35:06 -07:00
LICENSE Fix Obsidian developer-guideline conflicts 2026-06-14 22:56:49 -07:00
local-review.mjs 1.2.0 2026-07-08 21:38:30 -07:00
manifest.json 1.2.1 2026-07-08 22:35:06 -07:00
obsidian-voice-notes-spec.md code review + and new pre-release process 2026-07-07 15:06:43 -07:00
package-lock.json 1.2.1 2026-07-08 22:35:06 -07:00
package.json 1.2.1 2026-07-08 22:35:06 -07:00
prepare-release-vault.mjs code review + and new pre-release process 2026-07-07 15:06:43 -07:00
README.md 1.2.0 2026-07-08 21:38:30 -07:00
styles.css 1.2.0 2026-07-08 21:38:30 -07:00
tsconfig.json Initial commit 2026-05-24 09:48:48 -07:00
version-bump.mjs code review + and new pre-release process 2026-07-07 15:06:43 -07:00
versions.json 1.2.1 2026-07-08 22:35:06 -07:00
vitest.config.ts code review + and new pre-release process 2026-07-07 15:06:43 -07:00

ReWrite (Voice Notes)

An Obsidian plugin that captures speech (live recording or pasted transcript), runs it through a transcription provider, cleans and structures it with an LLM, and inserts the result into your vault.

You bring your own provider keys. Nothing is sent to a ReWrite server; the plugin only talks to the endpoints you configure. It can also run entirely on-device: pair the plugin-managed whisper.cpp transcription with a local OpenAI-compatible LLM (Ollama or llama.cpp) and no audio or text ever leaves your machine.

Highlights

  • Record in Obsidian, or paste and reprocess existing audio, then clean and structure it with an LLM and insert it into your vault.
  • Bring-your-own keys across 8 transcription and 5 LLM providers, cloud or fully local; nothing goes to a ReWrite server.
  • 10 editable Markdown templates (general cleanup, todo, daily note, meeting, lecture, podcast, guides, book log, and more) plus a shared-core baseline you edit once.
  • Speaker diarization, saved-audio embeds, spoken ad-hoc instructions, known-nouns preservation, and per-run destination overrides.
  • Background recording from the main modal, real-time dictation at the cursor (Deepgram / AssemblyAI), and auto-ingest folders that batch-process audio dropped in from outside Obsidian.
  • API keys encrypted at rest (OS secret storage, or an Argon2id/PBKDF2 passphrase) on desktop and mobile.

Quick start

1. Install

Community plugins (recommended): in Obsidian, Settings, Community plugins (Restricted mode off), Browse, search "ReWrite (Voice Notes)", Install, Enable.

Manual install: download main.js, manifest.json, and styles.css from the latest release, drop them into <YourVault>/.obsidian/plugins/rewrite-voice-notes/, then enable the plugin in Community plugins.

2. Configure a provider

Open Settings, ReWrite (Voice Notes). Configure the profile active on this device: pick a transcription provider (audio to text) and an LLM provider (cleanup), enter the API keys, and choose a model for each. The first key you save sets up encryption at rest. Text-only? An LLM alone is enough.

3. Populate templates

In Settings, Templates, click Populate. This seeds ReWrite/Templates/ with 10 starter templates, plus SharedCore.md, AssistantPrompt.md, and KnownNouns.md. It is non-destructive. The template format is documented in Creating templates.

4. Create your first note

Click the mic ribbon icon (or run the Open command), pick the Daily note template, then Record your voice or Paste a transcript. The plugin transcribes, cleans the text, and writes a new dated note (Calendar / Goals / Tasks pulled out, then a Braindump). Recorded audio is saved to your attachments folder and linked back with an ![[...]] embed.

The full step-by-step, including faster capture and reprocessing existing audio, is in the Quick start wiki page.

Tested providers

"Tested" means a maintainer has run the full record/transcribe/cleanup/insert flow against that service. "Untested" means the adapter is implemented to the provider's documented API shape but not yet verified against a live account (unverified, not broken). For setup of each, see Providers.

Transcription Status LLM (cleanup) Status
Local whisper.cpp (plugin-managed) Tested Anthropic Claude Tested
Mistral Voxtral Tested Mistral Tested
AssemblyAI Tested OpenAI-compatible (Ollama, LM Studio) Tested (local Ollama)
OpenAI Whisper Untested OpenAI GPT Untested
OpenAI-compatible (whisper.cpp) Untested Google Gemini Untested
Groq Untested DeepSeek / Kimi / Qwen / GLM Untested
Deepgram Untested
Rev.ai Untested

Documentation

Full documentation lives in the wiki:

These pages are maintained in the wiki/ folder of this repo and mirrored to the GitHub Wiki automatically.

Known limitations

  • No audio playback or waveform display.
  • LLM responses are not streamed; you see the cleaned output once the whole response arrives.
  • No long-audio chunking; clips that exceed the active provider's size or duration limit error out instead of being split.
  • Anthropic Claude calls go through Obsidian's requestUrl, which bypasses browser CORS.

Vault access

ReWrite lists the files in your vault for two features: finding audio files you can reprocess, and falling back to your most recently edited note when you run an insert with no editor open. It uses these listings for file paths only; it never reads a note's contents except the specific note or selection you act on, and it only writes the notes (and saved-audio attachments) produced by a run you trigger.

Acknowledgements

  • Magic Mic by Drew McDonald (MIT, archived): originator of the MIME-type fallback and MediaRecorder patterns this plugin borrows.
  • Scribe by Mike Alicea: prior art for the record, transcribe, cleanup, and templated-insert flow inside Obsidian.
  • obsidian-sample-plugin: the scaffold this repository was built on.

License

0BSD. See LICENSE.