README file from
GithubAudioPen for Obsidian
The official AudioPen plugin: syncs your AudioPen voice notes into your Obsidian vault as Markdown files. Requires an AudioPen Prime plan.
What it does
- Works in any vault: install it in your everyday vault and your notes land in
an
AudioPenfolder (you can rename it), or give AudioPen a vault of its own. - Each note becomes
AudioPen/<folder>/<title>.md, with its title, dates, folder and tags in the frontmatter, the note text as the body, and the original transcript in a collapsed callout underneath. Notes with the same title becomeTitle.md,Title (2).md, and so on. - Files carry no AudioPen note id. The plugin remembers which file belongs to which note in its own data file.
- Sync is one way, AudioPen → Obsidian. It runs on startup, on a timer (default every 5 minutes), when you switch back to Obsidian (at most once a minute), from the ribbon icon, or with the Sync now command. Setting Sync automatically to Off leaves only startup and manual syncs.
- Notes you edit in Obsidian are never overwritten. If the note later changes in AudioPen, that change is skipped and the sync notice says so.
- Notes you delete in Obsidian stay deleted. Full re-sync restores them.
- Notes you move or rename in Obsidian stay where you put them; they are still updated in place (unless you've also edited them). Moves are noticed while the plugin is enabled; a note moved while it's disabled counts as deleted until a Full re-sync, which puts a fresh copy back in the AudioPen folder.
- Notes deleted in AudioPen keep their Obsidian file. The plugin just stops tracking them.
The login token is kept in Obsidian's secret storage, not in the vault, so it isn't synced or committed along with your notes.
Disclosures
- Payment required: this plugin needs an AudioPen Prime subscription.
- Account required: you sign in with your AudioPen account (email and a one-time code).
- Network use: the plugin connects to AudioPen's servers
(
xcmm-5zfz-tplj.n7c.xano.io) to sign you in and download your notes. It only reads your notes; it never changes or deletes anything in AudioPen, and sends nothing from your vault.
How it talks to AudioPen
All calls go to the AudioPen Xano backend with Obsidian's requestUrl:
| Purpose | Endpoint |
|---|---|
| Send login code | POST api:x4ocgg3f/auth/magic-otp-post |
| Verify code → token (valid 1 year) | POST api:x4ocgg3f/auth/magic-login_otp |
| Check plan at connect time | GET api:mcp/me |
| Incremental sync feed | GET api:sync/changes?since=&until=&after_id=&per_page= |
sync/changes returns notes created or modified in the window (since, until]
plus ids of notes deleted in it. Pages are keyed on note id with until held
fixed, and the final until becomes the next sync's since.
Development
npm install
npm run dev # rebuilds main.js on change
npm test # unit tests (render + sync engine against a fake vault)
npm run build # typecheck + production main.js
To try it in a vault, copy main.js and manifest.json into
<vault>/.obsidian/plugins/audiopen/, then enable AudioPen under
Settings → Community plugins.
Testing against a Xano branch
Before the sync endpoints are on the live Xano branch, point the plugin at a
test branch: close Obsidian, edit
<vault>/.obsidian/plugins/audiopen/data.json and set
settings.branch to the branch name (for example "obsidian-sync"). Every
request then carries an X-Branch header. Set it back to "" afterwards.
Releasing
npm version patch(orminor/major) bumpsmanifest.jsonandversions.json.npm run build.- Create a GitHub release whose tag is exactly the version (no
vprefix) and attachmain.jsandmanifest.json. - First release only: sign in at community.obsidian.md, link the GitHub account that owns the repo, and add the plugin to the Community directory as Optional payment: the plugin itself is free, but it relies on a paid third-party service (AudioPen Prime). Fix anything the automated review flags and publish a new release. After that, each new GitHub release reaches users as an update.