Q&A Log67 downloadsRecord and transcribe conversations, then turn them into structured Markdown notes with your own AI provider.
English | 简体中文
Turns conversations into structured knowledge.
Open-source conversation intelligence for Obsidian: record, transcribe, and organize meetings, interviews, talks, and voice notes into Markdown you can reuse.
QnALog ships no API keys and works without an account: you configure your own speech-to-text (ASR) service and, optionally, your own large language model (LLM). Recordings and generated notes stay in your vault.
Supports desktop and mobile Obsidian. Mobile recording uses the device microphone. System audio, virtual audio devices, multichannel capture, desktop device diagnostics, and realtime streaming ASR providers that need custom authentication headers require the desktop app.
Origin. QnALog is derived from LexVoice by Lynnx, based on its last MIT-licensed release (2.1.2). Upstream relicensed to a proprietary license from 2.2.0 onward; QnALog is an independent project, not a newer version of LexVoice and not a continuation of that release line. It has since been reworked into a plugin with its own name, data namespace, and settings. See NOTICE and MAINTAINING.md.
There is no data path between the two.
qnalog / QnALog namespace only.qnalog, different from LexVoice's lexvoice, so Obsidian manages them as two separate plugins.Chapters grow as you record. After recording, chapters link to the player — click a chapter to jump to that position in the audio. When recording stops, AI completes the chapters into a full set of notes.
While recording, jot live notes under the outline. The first character can trigger different handling:
Trigger the AI assistant:
#term — the AI explains the term in the context of the current discussion.?question — the AI answers using the current transcript and outline.!highlight — marks something important and has the final notes treat it accordingly.Mark only (no AI call):
@assignee — record "@alice follows up"; the final notes prefer assigning that todo to them./todo — capture an explicit todo candidate.Half-width and full-width symbols are both accepted. In-meeting notes are fed into the final summarization prompt as clearly-labeled "live supplementary material", never mixed into the raw transcript.
Ask follow-up questions when the final notes miss a detail or you want to revisit a specific part of the discussion. QnALog answers from both the organized note and the preserved raw transcript. Useful answers can be written back to one compact Ask this note section in the Markdown file.
In standard meeting and learning-note modes, long recordings are organized in recoverable parts instead of relying on one all-or-nothing LLM response. QnALog builds a global topic map, saves each completed part as a local checkpoint, and assembles the final note in time order.
If a request is interrupted or a model reaches its output limit, completed work is reused and only unfinished parts are retried. The raw transcript remains available, and an incomplete result is shown as partially completed rather than being saved as an empty note.
The processing panel separates transcription, AI organization, and Markdown writing. It shows the active stage, recent activity, failures, and retry or cancel actions. Failed transcription and failed AI organization remain distinct so you can resume from the step that actually failed.
After each note, AI splits the content into three candidate groups:
Confirmed items become standalone Obsidian objects — people profiles, todo cards, and ASR hotwords — and the sidebar can assemble confirmed todos into a todo wall. When the same person comes up again, a note links to the existing profile instead of creating a duplicate.
Edit owner, due date and sub-tasks inline at the candidate stage — no dialogs. Stored todos use standard Markdown task syntax (recognized by plugins like Tasks). Source information is preserved on delete / redo for traceability.
From one set of notes you can generate an HTML report, a PDF report, or an .eml email draft — same content, different presentation.
The sidebar can organize recent notes by folder or by time. Folder groups can be collapsed, the open note is highlighted, and search and template filters remain available in either view.
Default folders (all configurable in settings). Names are chosen once at first install, from the interface language:
| Content | Chinese interface | English interface |
|---|---|---|
| Recordings | QnALog/录音 |
QnALog/Recordings |
| Transcribed notes | QnALog/转写纪要 |
QnALog/Transcribed notes |
| Meeting materials | QnALog/会议资料 |
QnALog/Meeting materials |
| People | QnALog/资料库/人员 |
QnALog/Library/People |
| Todo cards | QnALog/资料库/待办 |
QnALog/Library/Todos |
| Views | QnALog/资料库/视图 |
QnALog/Library/Views |
| Glossary | QnALog/资料库/词汇表.md |
QnALog/Library/Glossary.md |
| Diagnostics log | QnALog/系统/诊断日志 |
QnALog/System/Diagnostics log |
| Archive | QnALog/资料库/归档 |
QnALog/Library/Archive |
| HTML reports | QnALog/HTML报告 |
QnALog/HTML reports |
| Email drafts | QnALog/邮件草稿 |
QnALog/Email drafts |
| Segment cache | QnALog/.cache/segments |
QnALog/.cache/segments |
A Chinese interface gets the left column; every other language gets the right one (only Chinese and English names exist). Changing the language later does not move folders that already exist. Default folders use the
QnALog/prefix; they are ordinary paths and can be changed in settings at any time.
Required:
Recommended:
Capturing system audio cross-platform from the Obsidian desktop app is unreliable, so recording online meetings, web video, courses, or anything played by the computer usually needs a virtual audio device:
On Windows with VB-Cable, mind the naming:
If the level meter does not move, run the device check before starting a long recording.
No ads, no analytics, no telemetry. Plugin settings are stored locally in .obsidian/plugins/qnalog/data.json; API keys are stored through Obsidian SecretStorage, not in that file. When using another Obsidian installation, confirm that SecretStorage has the keys and re-enter any that are missing.
Network use. QnALog works offline unless you configure a service that needs the network. When you do, requests go only to the endpoints you configure:
manifest.json from this project's GitHub release page only when you click Check for updates in Settings > About or run Check for Updates from the command palette. Plugin startup makes no update-check requests. It never downloads or installs anything.Where recordings live. The current version has no QnALog backend: it keeps no recordings, transcripts, or notes on servers of its own, and everything it writes — recordings and generated notes — stays in the local vault path you choose.
Optional subscription (planned). A paid subscription may be added later for users who would rather not manage API keys: sign in, and transcription and AI organization run through that service without any provider setup. It stays optional. If you turn it on, the audio and text of a recording go to that service instead of your own endpoints; recordings and notes are still written to your vault. If you leave it off, everything described above is unchanged.
Files outside your vault. The optional external inbox feature can watch a folder outside your vault (an absolute path, for example a synced recordings directory) and import audio from it. That access happens only if you configure such a path, and it is limited to reading the files you point it at.
For sensitive content (client data, medical, legal, HR, recruiting, internal strategy), prefer local transcription with a local model, and obtain consent before recording. Details: PRIVACY.md.
The directory's LexVoice entry is a different plugin — see Relationship to LexVoice.
qnalog/qnalog.You can also download the release assets (main.js, manifest.json, styles.css, plus LICENSE and NOTICE) straight from the releases page into <vault>/.obsidian/plugins/qnalog/. Each release is built from its own tag by CI, which rebuilds the bundle and byte-compares it before uploading.
git clone https://github.com/qnalog/qnalog.git
cd qnalog
npm ci
npm run build
npm run install:vault -- "/path/to/your/vault"
install:vault copies main.js, manifest.json, styles.css, LICENSE, and NOTICE into <vault>/.obsidian/plugins/qnalog/, and snapshots anything it overwrites (including data.json) into <vault>/.obsidian/qnalog-install-backups/<timestamp>/. It only touches the qnalog folder: settings are never inherited from other plugins. The settings folder follows the plugin id, so a build installed from source and a BRAT install keep their settings in the same folder.
Then reload Obsidian (Ctrl/Cmd + R) and enable QnALog.
QnALog keeps your settings when the stored schema is older: it migrates them forward and your API keys, service configuration, prompts, paths, and device choices are preserved. Settings are only discarded when they cannot be recognized at all (written by a different project, or corrupted) — in that case the original file is backed up under <plugin folder>/settings-backups/ before defaults are used.
Every install snapshots the plugin folder it is about to overwrite, so rollback is one command:
npm run restore:vault -- "<vault>/.obsidian/qnalog-install-backups/<timestamp>" "/path/to/your/vault"
restore:vault reads the plugin id and version from the backup's manifest.json, restores that folder, and snapshots your current folder first — so the rollback itself is undoable (the undo command is printed). It also tells you which plugin id Obsidian currently has enabled; add --set-enabled to rewrite community-plugins.json instead of switching in the UI. Pass the vault path explicitly when the backup lives outside a vault.
Other development and check commands: see CONTRIBUTING.md.
MIT — see LICENSE, NOTICE, and the maintenance policy in MAINTAINING.md.
Copyright (c) 2026 Lynnx (original LexVoice work); modifications copyright (c) 2026 Q&A Log Team.