anbang278388 downloadsTranscribe audio into Markdown and generate configurable AI meeting notes and analysis.
English | 简体中文
Echo Notes is a personal action capture and AI memory-building plugin for Obsidian. Starting from audio transcription, it turns meetings, ideas, study notes, interviews, and everyday thinking into Markdown text, then uses configurable AI analysis templates to turn raw voice into searchable, linkable, reviewable, and reusable personal knowledge assets.
The goal is not just to turn speech into text. Echo Notes is designed to help your actions, thoughts, and decisions continuously enter your personal knowledge system, so they can eventually become long-term context for a Personal Agent. Every recording captures a real moment of action; every transcript becomes a memory that AI can understand; every structured analysis adds experience to a future AI version of yourself.
The workflow is simple: insert or link an audio file in a Markdown note, run a transcription command, and Echo Notes creates a .transcript.md file and inserts a "view transcript" link back into the source note. If AI analysis is enabled, Echo Notes can choose an analysis template from nearby keywords and write structured analysis back into the matching transcript. The experimental Echo Memory workflow can then turn a transcript and its successful analyses into traceable meeting pages, candidate memories, and managed long-term profiles.
Privacy notice: Echo Notes makes network requests only when you start real-time transcription, transcribe an existing file, trigger AI analysis, or enable automatic Echo Memory extraction. Real-time mode continuously sends microphone PCM to Volcengine AgentPlan. Offline mode sends the selected audio to the configured offline provider. AI analysis sends final transcript text to the configured analysis provider. Memory extraction sends transcript text and the successful analyses selected for that run to a separately configured memory provider. Do not process content that should not be sent to external services.
Most transcription tools produce one generic text output, but different recording scenarios require different reading lenses.
Echo Notes uses configurable prompt templates so the same transcription workflow can produce documents that fit the actual scenario. You can use the built-in work minutes, study notes, product requirement mining, and role-based work templates, or define your own templates, recognition keywords, and prompts.
Many meeting-minutes and transcription products can generate useful content, but the result often stays in a separate platform instead of becoming part of the Obsidian system you already use every day.
That creates several problems:
Echo Notes keeps the original recording, full transcript, and AI analysis inside the current vault, with Markdown links back to the source note. Audio can then connect naturally with daily notes, projects, meetings, learning records, and requirement management.
Echo Notes is not only an audio transcription plugin, and not only a meeting-minutes tool. Its deeper idea is that human thinking, actions, judgment, and reflection should be captured with as little friction as possible, then turned into personal context that AI can understand and use.
Traditional knowledge management usually records conclusions: a note, a document, a meeting summary, or a task list. But what truly shapes a person's ability is often not the isolated conclusion. It is the process behind it: why a judgment was made, what information was available, how people discussed the issue, which assumptions were raised, which actions were taken or abandoned, and whether the final result validated the original thinking.
These processes used to be difficult to preserve because they are scattered across meetings, voice memos, chats, temporary ideas, tasks, project execution, and retrospectives. Echo Notes starts from the most natural input: record the voice, transcribe it into text, structure the text, and let the result become Memory and Context that a personal AI can use over time.
From this perspective, each recording is more than a file. It is evidence of action. Each transcript is more than text. It is a captured thinking scene. Each AI analysis is more than a summary. It compresses human experience into reusable cognitive assets for the future.
Long term, Echo Notes aims to help users build a more complete AI version of themselves: one that knows which projects you worked on, which meetings you attended, and who you discussed problems with; one that understands how you judged requirements, decomposed problems, and made tradeoffs; one that learns your expression style, decision preferences, knowledge structure, and working methods. When a similar problem appears in the future, a Personal Agent can give advice based on your real history, not only generic knowledge.
The real goal is not to help you write a few fewer meeting notes. It is to continuously capture your real-world action trail and turn it into personal context infrastructure that future AI can understand, retrieve, reason over, and collaborate with. This direction should respect user control over data: personal memory should stay in your Obsidian vault whenever possible, and external providers should only be called when you explicitly configure and trigger them.
.transcript.md, and progressively writes provisional text, definite utterances, speakers, and time ranges.status: done.analysis_status, scheduled template ids, pending/done/failed template ids, provider, model, timestamps, and the latest sanitized analysis error..review.md sidecar, with per-assertion approval, correction, rejection, reset, and append-only event history.Real-time transcription:
doubao-seed-asr-2.0 and the official bigmodel_async endpoint, with speaker diarization and utterance timestamps. It requires Obsidian desktop and a local filesystem vault.Offline transcription providers:
qwen3-asr-flashFunAudioLLM/SenseVoiceSmall and TeleAI/TeleSpeechASR, plus custom model IDsmoss-transcribe plain transcription or moss-transcribe-diarize speaker diarization/audio/transcriptions endpoint/audio/transcriptions endpointAgentPlan real-time transcription keeps its official bigmodel_async Base URL and model read-only. MOSI locks its official Base URL and derives its read-only model from the Speaker diarization toggle: enabled uses moss-transcribe-diarize, while disabled uses moss-transcribe. Other offline-provider defaults remain editable. The settings tab switches language, microphone, and offline-provider fields with the selected mode and shows the relevant endpoint, size, chunking, timestamp, and diarization capabilities.
The settings tab also includes a local "Check transcription configuration" action. It checks API key presence, Base URL format, example URLs, non-local HTTP risks, model hints, endpoint shape, and known capability limits. This check does not upload audio and does not call the provider.
AI analysis supports SiliconFlow, Alibaba Bailian, DeepSeek, Volcengine AgentPlan, Ollama, LM Studio, and a custom OpenAI-compatible endpoint, in that order. The global default remains Alibaba Bailian deepseek-v4-pro; SiliconFlow defaults to Qwen/Qwen3.5-4B. Selecting AgentPlan locks the Base URL to the plan-specific https://ark.cn-beijing.volces.com/api/plan/v3 endpoint and provides a model picker for the currently documented text models, including Doubao Seed 2.0 Mini/Lite/Pro, Doubao Seed Evolving, DeepSeek V4, MiniMax M2.7/M3, GLM-5.2, and Kimi K2.6/K2.7 Code/K3. Kimi K3 requires Medium or higher, and preview models may be rate-limited during peak traffic. AgentPlan analysis remains isolated from AgentPlan ASR configuration and secrets by purpose.
AgentPlan officially limits its text-generation and embedding benefits to AI-tool scenarios. Before enabling this integration, confirm that your Echo Notes usage complies with the current plan terms. Using the dedicated Base URL and API key outside permitted AI-tool scenarios may lead to subscription suspension or account restrictions.
Echo Notes makes network requests only when transcription, AI analysis, or Echo Memory extraction is triggered.
https://api.siliconflow.cnhttps://dashscope.aliyuncs.com/compatible-mode/v1https://api.mosi.cn/v1/audio/transcriptionswss://openspeech.bytedance.com/api/v3/plan/sauc/bigmodel_asynchttps://ark.cn-beijing.volces.com/api/plan/v3http://localhost:11434/v1http://localhost:1234/v1https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions endpoint.Offline transcription sends the selected audio to the configured offline provider. With MOSI, Echo Notes uploads multipart audio to api.mosi.cn through a synchronous non-streaming request. Diarization is optional: enabled mode requests speaker segments and timestamps, while disabled mode requests plain text only. No temporary segment files are created in the vault.
Real-time mode does not create or convert a complete WAV first. Echo Notes runs two local paths in parallel: MediaRecorder appends WebM Opus chunks to the vault about once per second, while Web Audio continuously downmixes and resamples the microphone to 16 kHz, 16-bit, mono PCM and sends 200 ms packets over one authenticated optimized bidirectional AgentPlan WebSocket. The recording, transcript, audio embed, and transcript link are created as soon as the session starts. Confirmed second-pass utterances are written progressively; unconfirmed text stays in a temporary region. If AgentPlan disconnects, local recording continues and already persisted audio and text remain available.
Real-time AgentPlan and diarization-enabled MOSI speaker IDs distinguish voices but do not identify real names. MOSI speaker IDs remain local to each independently submitted segment. AI analysis reads only completed final transcript text; when AgentPlan analysis is selected, that text is sent to its plan-specific Chat API and consumes plan quota. Echo Memory sends the transcript body and successful analyses included in the run to the memory provider. Transcription, analysis, and memory API keys remain isolated by provider and purpose in Obsidian SecretStorage. Keys are not written to plugin settings, transcripts, candidate packages, or logs. Recordings, transcripts, AI analysis output, and Echo Memory files remain in the Obsidian vault.
If "Confirm before manual transcription upload" is enabled in settings, Echo Notes shows a confirmation dialog before manual transcription uploads. The dialog lists the provider, Base URL, model, file size, and HTTP risk warnings. Automation skips uploads while this confirmation mode is enabled so audio is not sent in the background without user confirmation.
If "Redact transcript before AI analysis" is enabled, Echo Notes masks common sensitive values only in the transcript text sent to the analysis provider. The local transcript file is not modified. The current redaction covers labeled customer/contact/company/address fields, email addresses, phone numbers, Chinese ID numbers, long numeric identifiers, amounts, and common Chinese address fragments.
Markdown-link automation also skips source notes marked with Echo Notes privacy flags. Add any of these frontmatter values to a sensitive note:
echo_notes_private: true
echo_notes_disable_automation: true
echo_notes_disable_auto_transcribe: true
You can also use tags such as #echo-notes-private, #echo-notes-no-auto, #echo-notes-disable-automation, or #echo-notes-disable-auto-transcribe. These flags only disable background Markdown-link automation; manual commands still work when you explicitly run them.
mp3mp4mpegmpgam4aoggwavwebmProvider limits:
doubao-seed-asr-2.0: real-time mode is fixed to bigmodel_async and requires Obsidian desktop with a local filesystem vault. Speaker clustering and utterance timestamps are always enabled. A standard Ark API key is not interchangeable with the dedicated AgentPlan API key.500/502/503/504 responses use 1-second and 3-second backoff retries before falling back to chunking. A persistently failing chunk alone is bisected; 413 splits immediately, down to 60 seconds and at most four levels. Authentication, quota, rate-limit, and invalid-model errors are not split.qwen3-asr-flash: local files are encoded as Base64 Data URLs. If the full file would exceed the 10 MB Base64 input limit, Echo Notes decodes the file locally, converts it to 16 kHz mono WAV segments, transcribes each segment in order, and writes completed segments back to the same transcript draft.moss-transcribe-diarize, version moss-transcribe-diarize-20260325, and diarize=true; disabling it uses plain moss-transcribe with version moss-transcribe-v1 and omits diarize. Both modes use the documented synchronous, non-streaming multipart request. Files longer than three minutes are split locally into roughly three-minute WAV segments and written back progressively. HTTP 500/502/503/504 retries use one- and three-second delays; a persistent server failure, 413, or an explicit too-long/too-large response shrinks only the failing segment down to 30 seconds and at most four levels. MOSI does not publish a stable file-size limit. See the MOSI transcription API reference.For chunked Alibaba Bailian, SiliconFlow, and MOSI runs, every successful segment is stored in a managed, source-readable checkpoint with the source path/size/mtime, Provider, model, a secret-free configuration fingerprint, time range, text, trace ID, and diarized utterances when available. A retry reuses only a continuous prefix whose identity and segment boundaries still match. Changed audio or configuration, and damaged checkpoint data, safely start a fresh run.
Capability matrix:
| Provider family | Upload mode | Endpoint shape | Limit | Echo Notes chunking | Language parameter | Timestamp | Speaker diarization |
|---|---|---|---|---|---|---|---|
Volcengine AgentPlan real-time doubao-seed-asr-2.0 |
microphone PCM over authenticated optimized bidirectional WebSocket | /api/v3/plan/sauc/bigmodel_async |
desktop and local filesystem vault only | No; one live session | Chinese or auto | Yes, utterance level | Yes |
Alibaba Bailian qwen3-asr-flash |
Base64 Data URL | /chat/completions + input_audio |
10 MB encoded input | Yes | Yes | No | No |
SiliconFlow FunAudioLLM/SenseVoiceSmall / TeleAI/TeleSpeechASR / custom model |
multipart | dedicated SiliconFlow endpoint | 50 MB and one hour per request | Yes; ~10-minute chunks with adaptive shrinking | No | No | No |
MOSI moss-transcribe / moss-transcribe-diarize |
multipart | /v1/audio/transcriptions |
Determined by MOSI | Yes; ~3-minute chunks with adaptive shrinking | No | Diarization mode only, segment level | Optional |
| Ollama and LM Studio | multipart | /audio/transcriptions |
25 MB audio file | No | Yes | No | No |
Long-audio chunking belongs to the offline path and currently applies to Alibaba Bailian qwen3-asr-flash, SiliconFlow official or custom transcription models, and MOSI. M4A, MP4, and WebM still require full local decoding and may hit device memory limits; Echo Notes does not install or invoke FFmpeg. A real-time AgentPlan session consumes microphone PCM directly: provisional text is coalesced about every 500 ms, while new definite utterances, stop, completion, and failure force a write. If AgentPlan fails, local recording continues; after stopping, Task Center offers an offline retry but does not upload automatically. Chunked MOSI transcripts retain headings such as ## Segment 01(00:00-03:00); diarization-enabled MOSI speaker numbering restarts within each segment while timestamps remain absolute to the original audio. MOSI plain mode keeps the same segment headings but emits no speaker labels.
Default transcription language is sent only to providers that support a language parameter, such as Alibaba Bailian, Ollama, and LM Studio. AgentPlan speaker diarization supports Chinese or an omitted language; selecting another language while AgentPlan is active automatically switches it to auto. SiliconFlow and MOSI do not receive a language field from Echo Notes; those providers detect the audio language.
AgentPlan and diarization-enabled MOSI transcripts show speaker labels. MOSI exposes a separate Speaker diarization toggle; when it is disabled, the Speaker label style setting is hidden and the transcript contains plain text. When labels are enabled, the style setting selects either speaker-only labels or the default speaker-and-time form:
**Speaker 1 (00:00-00:12)**
Transcript text.
Real-time commands:
Echo Notes: Start realtime transcriptionEcho Notes: Stop realtime transcriptionEcho Notes: Open active realtime transcriptThe real-time ribbon is visible in real-time mode; while recording, clicking it stops the session. Switching notes does not move the session: files remain bound to the source note active at start.
Recommended defaults:
| Provider | Base URL | Model | Default language |
|---|---|---|---|
| Volcengine AgentPlan (real-time) | wss://openspeech.bytedance.com/api/v3/plan/sauc/bigmodel_async |
doubao-seed-asr-2.0 |
zh |
| 阿里百炼(Alibaba Bailian) | https://dashscope.aliyuncs.com/compatible-mode/v1 |
qwen3-asr-flash |
zh |
| 【免费】硅基流动(SiliconFlow) | https://api.siliconflow.cn |
FunAudioLLM/SenseVoiceSmall |
auto |
| MOSI(可选说话人分离) | https://api.mosi.cn/v1 |
moss-transcribe-diarize by default; moss-transcribe when disabled |
auto |
| Ollama | http://localhost:11434/v1 |
whisper-1 |
zh |
| LM Studio | http://localhost:1234/v1 |
whisper-1 |
zh |
Obsidian's Audio recorder core plugin is used only by the offline workflow: it saves a complete recording after stop, then Echo Notes transcribes that file with the offline provider. Real-time mode uses Echo Notes' own recorder because the core recorder exposes no stable public live-audio chunk API. The core-plugin controls appear in the offline settings section.
That section can save hotkeys directly to Obsidian's core Audio recorder commands. Echo Notes does not assign default hotkeys, so it will not override common actions such as Save or Undo:
| Action | Command | Hotkey |
|---|---|---|
| Start the Obsidian core plugin audio recorder | audio-recorder:start |
User configured |
| Stop the Obsidian core plugin audio recorder | audio-recorder:stop |
User configured |
| Transcribe all audio files in the current note | Echo Notes: Transcribe all audio files in current note |
User configured |
Echo Notes no longer registers proxy commands for starting or stopping the core recorder. When you click Save, it updates Obsidian's hotkey settings for audio-recorder:start or audio-recorder:stop; if your Obsidian version does not expose the internal hotkey manager, configure those core commands manually in Obsidian Hotkeys.
https://dashscope.aliyuncs.com/compatible-mode/v1 and deepseek-v4-pro; SiliconFlow defaults to https://api.siliconflow.cn/v1 and Qwen/Qwen3.5-4B. AgentPlan locks its plan-specific Base URL to https://ark.cn-beijing.volces.com/api/plan/v3 and defaults to doubao-seed-2.0-lite; choose another supported plan model from the dropdown when needed.Built-in template groups:
The template manager uses a fixed category switcher and shows one group at a time. Switch groups by clicking or with the Left/Right Arrow, Home, and End keys. The selected group remains active when template changes redraw the settings page.
The v2 built-in prompts use role-specific Markdown structures while sharing a neutral evidence policy. They separate facts, decisions, suggestions, and inferences; do not invent owners, dates, budgets, metrics, priorities, or sales stages; and treat transcript content as untrusted data rather than instructions. Action-item templates use a consistent table with item, owner, due date, and acceptance signal/next step.
Custom templates support a role group, name, recognition keywords, system prompt, template task, and enabled switch. Enabled templates participate in keyword matching; disabled templates keep their configuration but are not used automatically. During migration, an untouched v1 built-in preset is upgraded to v2 while preserving its enabled state. Any built-in template whose editable content was changed remains untouched until you explicitly restore its default.
Echo Memory is disabled by default. Open the Memory extraction stage in Echo Notes settings, then:
Echo Memory.SecretStorage and are never reused from AI analysis.The default Chinese workspace layout is:
Echo Memory/
|-- 00 首页.md
|-- 01 会议/
|-- 02 记忆候选/ (candidate `.md` and review `.review.md` files)
|-- 03 实体/人物, 组织, 项目/
|-- 04 User/SOUL.md and 01-08 profile documents
|-- 05 聚合/项目.md, 人物.md, 时间线.md
|-- 06 上下文包/ (previewable Personal Agent context packages)
`-- 99 系统/echo-memory.json, echo-memory-checkpoints.json, echo-memory-relations.json, and 运行日志/
Each candidate package contains a readable Markdown table and plugin-managed JSON and remains unchanged by review. Its same-directory review sidecar stores per-assertion status, effective value, note, review time, and full event history inside an echo-memory-review:managed block while preserving manual text outside that block. Its input fingerprint covers the transcript body, included analyses, schema and prompt versions, output language, initialized user, Provider, and model. Repeating the same input reuses the existing candidate without calling the model again. A legacy candidate receives a fully pending sidecar when first reviewed or rebuilt and is never silently approved. Profile compilation consumes approved assertions only, replaces content between echo-memory:managed markers, and preserves user-authored text outside those markers.
Memory extraction has a 15-minute limit shared by all chunks. Running and failed memory tasks can be retried from Task Center. Retry first aborts the current wait and waits for the old attempt to exit, so late responses cannot write candidate data. Timeout, failure, and retry events are written to the Echo Memory run log without storing API keys or full model responses.
For a chunked extraction, each successful response is evidence-validated before its structured assertions are written to 99 系统/echo-memory-checkpoints.json (or 99 System in an English workspace). Each completed chunk is limited to 24,000 characters of structured result data; the shared store is limited to 25,000,000 characters and 100 unfinished transcripts. It never contains API keys, authorization headers, full requests, or raw Provider responses. A failure retains the current transcript entry for an explicit retry; a successful candidate, review sidecar, manifest record, meeting page, and optional profile compilation remove only that transcript entry while keeping the shared store. These checkpoints contain sensitive derived memory and can be removed or archived manually when recovery is not wanted. Resumed output is still a pending candidate and requires review before it can enter a profile.
Approved-memory relations are stored as readable JSON in 99 系统/echo-memory-relations.json (or 99 System). Open a candidate or its review sidecar and run Manage current memory relations. Only approved assertions from different candidates for the same normalized subject can be linked. Confirmed conflicts and supplements keep both assertions visible with relation IDs and candidate/review backlinks. Supersession and invalidation remove the target from compiled profiles while preserving its audit backlink on the source; revocation restores it on rebuild. If either review is no longer approved or its effective value changes, the active relation becomes non-applicable and suppresses nothing until the user reconfirms it. The store is limited to 5,000 relations, 100 events per relation, and 10,000,000 characters. It contains approved derived-memory snapshots and should be handled as sensitive Vault data; it never rewrites candidate packages.
Every profile rebuild also regenerates three relationship-aware Markdown views under 05 聚合 (or 05 Aggregations): projects grouped by normalized project, people grouped by normalized person, and a stable chronological timeline across all current approved assertions. Superseded or invalidated targets are omitted, conflicts and supplements remain visible, and every row links back to its transcript, candidate, review, and applicable relation. These files and the home-page navigation use dedicated managed blocks, so manual text outside the blocks is preserved. Existing v1 manifests gain the additive paths on their next rebuild without changing the Schema version.
Run Create personal agent context package to preview and generate a local Markdown context package under 06 上下文包 (or 06 Context Packages). Project and person filters use OR semantics; optional start/end dates filter the assertion observedAt day, and the character budget is bounded to 4,000-100,000 characters with a 12,000-character default. Entries are ordered newest-first, preserve evidence plus transcript/candidate/review/relation backlinks, and show how many matching entries were omitted by the budget. Generation uses only approved, relation-resolved memory, updates only the echo-memory-context:managed block, preserves manual text outside the block, and makes no network request or external Agent call.
Commands:
Echo Notes: Initialize Echo MemoryEcho Notes: Extract memory from current transcriptEcho Notes: Review current memory candidateEcho Notes: Manage current memory relationsEcho Notes: Open Echo Memory homeEcho Notes: Open Echo Memory timelineEcho Notes: Create personal agent context packageEcho Notes: Rebuild memory profiles and aggregations from candidatesThe current MVP does not include external Agent CLIs, semantic retrieval, a vector database, cross-vault sync, or automatic calendar and note actions; context packages are local, previewable Markdown only.
Select an audio reference in the current Markdown note:
![[Recording 20260531001942.m4a]]
Run the command Echo Notes: Transcribe selected audio.
Echo Notes resolves the audio file, calls the configured provider, creates a transcript, and inserts a transcript link below the audio reference.
If AI analysis is enabled, Echo Notes first checks the source note frontmatter for echo_notes_analysis_template, echo_notes_template, or analysis_template. The value can be one or more enabled template ids or template names, either as a comma-separated value, an inline YAML array, or a YAML list. If no enabled frontmatter template is found, Echo Notes checks frontmatter tags and inline #tags against enabled template ids, names, and recognition keywords. If no tag matches, Echo Notes reads the three lines above and below the audio link and selects every enabled template whose keyword appears in that context. After the transcript link is inserted, AI analysis runs in the background; when each model call returns, the result is written before the transcript section in the same .transcript.md file. If no keyword is found, Echo Notes uses the configured default template.
Add one or more audio links to a note:
![[Recording 20260531001942.m4a]]
![[Recording 20260531002010.m4a]]
Run the command Echo Notes: Transcribe all audio files in current note.
If AI analysis is enabled, each audio link is matched independently. Different recordings in the same note can use different templates, or multiple templates, by placing different keywords near each audio link.
AI analysis runs automatically after a transcript is created or reused. Echo Notes inserts the transcript link first and does not wait for the model response. If "skip existing transcript" is enabled, running the transcription command again reuses only a status: done transcript whose source audio path, size, mtime, provider, and model still match, then generates or updates AI analysis in the background.
Each AI analysis task has a 15-minute limit shared by chunk extraction and final synthesis. On timeout, Echo Notes marks the task as failed, preserves the error state in the transcript, and keeps the Task Center retry action available. For a chunked run, each successful chunk is immediately stored in a template-isolated hidden Obsidian comment in the same transcript. A retry skips the matching completed prefix and always reruns final synthesis; changed transcript text, redaction mode, template content/version, Provider, Base URL, model, language, chunk settings, or boundaries starts safely from the first chunk.
An unfinished analysis checkpoint may contain up to 12,000 characters of derived model output per completed chunk. It never stores API keys or raw Provider responses and is removed after the final analysis has been written successfully. Because failed work keeps these derived outputs in the vault for recovery, treat the transcript file as sensitive data and remove it manually if you do not want to retain the failed run.
To run analysis manually, open a .transcript.md file and run Echo Notes: Analyze current transcript with selected template, then choose any enabled template.
Echo Notes writes AI analysis into a controlled block before the transcript section. Running the same template again replaces that template's existing result instead of stacking duplicates; different matched templates are appended inside the same AI analysis block.
Each generated analysis result starts with Dataview inline fields prefixed with echo_notes_analysis_. These fields make template id, template name, template version, provider, model, generated time, and trace id queryable without parsing the generated Markdown body.
Transcript frontmatter also records the current AI analysis lifecycle. While analysis is running, analysis_status is analysis_pending; once all scheduled templates finish, it becomes analysis_done, analysis_failed, or analysis_partial_failed. The frontmatter keeps analysis_template_ids, analysis_pending_template_ids, analysis_done_template_ids, and analysis_failed_template_ids so Dataview can find transcripts that still need review or retry.
Frontmatter template selection applies to the whole source note and has priority over tags and nearby keywords. Tags apply to the whole source note and have priority over nearby keywords. Keywords are matched only against the source note lines around the audio link, not against the transcript body. If multiple templates match the same context, Echo Notes runs all matching enabled templates in settings order.
Input:
![[Recording 20260531001942.m4a]]
Output:
![[Recording 20260531001942.m4a]]
[[Recording 20260531001942/Recording 20260531001942.transcript|查看转写稿]]
Generated file:
Recording 20260531001942/Recording 20260531001942.transcript.md
Inline AI analysis example:
Original recording: ![[Recording 20260531001942.m4a]]
Source note: [[2026-06-05]]
<!-- echo-notes-analysis:start -->
# Analysis Recording 20260531001942
<!-- echo-notes-analysis-item:start work-minutes -->
## Work minutes
- [echo_notes_analysis_template_id:: work-minutes]
- [echo_notes_analysis_template_name:: Work minutes]
- [echo_notes_analysis_template_version:: 1]
- [echo_notes_analysis_provider:: aliyun-bailian]
- [echo_notes_analysis_model:: deepseek-v4-pro]
- [echo_notes_analysis_generated_at:: 2026-06-01T10:00:00.000Z]
_Generated at: 2026-06-01T10:00:00.000Z; Provider: aliyun-bailian; Model: deepseek-v4-pro_
### Summary
This is the generated analysis content.
<!-- echo-notes-analysis-item:end work-minutes -->
<!-- echo-notes-analysis:end -->
# Transcribed manuscript Recording 20260531001942
This is the full transcript text.
Transcript frontmatter after AI analysis may include:
analysis_status: "analysis_done"
analysis_template_ids: [work-minutes, study-notes]
analysis_done_template_ids: [work-minutes, study-notes]
analysis_provider: "aliyun-bailian"
analysis_model: "deepseek-v4-pro"
analysis_started_at: "2026-06-01T10:00:00.000Z"
analysis_updated_at: "2026-06-01T10:03:00.000Z"
analysis_completed_at: "2026-06-01T10:03:00.000Z"
Echo Notes can optionally watch for Markdown audio links and newly created audio files.
echo_notes_private, echo_notes_disable_automation, echo_notes_disable_auto_transcribe, or Echo Notes private tags.All automation options are disabled by default.
Echo Notes' long-term goal is to evolve from an audio transcription tool into a personal AI Memory Layer. Echo Memory now validates the transcript-to-candidate-to-review-to-relation-to-cross-record-view path. Future work will explore:
npm install
npm run lint
npm run typecheck
npm test
npm run build
Development requires Node.js 22 or newer.
The isolated real-chain gate uses non-private fixtures in the dedicated test vault and removes its temporary Obsidian profile after the run. It validates SiliconFlow FunAudioLLM/SenseVoiceSmall transcription followed by Volcengine AgentPlan doubao-seed-2.0-lite analysis and Echo Memory extraction. Provide the two keys only through the process environment; the script writes the AgentPlan key into separate analysis and memory SecretStorage entries and never prints either value.
read -s "SILICONFLOW_API_KEY?SiliconFlow API Key: "
export SILICONFLOW_API_KEY
read -s "AGENTPLAN_API_KEY?AgentPlan API Key: "
export AGENTPLAN_API_KEY
npm run verify:real-chain
unset SILICONFLOW_API_KEY AGENTPLAN_API_KEY
.obsidian/plugins/echo-notes/.npm install and npm run build.qwen3-asr-flash, SiliconFlow official or custom transcription models, and MOSI.For questions, feedback, or collaboration, contact the author on WeChat.
ccanbang