jacobinwwey5k downloadsIntegrates with various LLMs to process notes, generate wiki-links, and create concept notes
Notemd (Note + EMD — Enhanced Markdown Documents) turns LLM-powered reading into persistent knowledge: wiki-links, concept notes, research summaries, translations, and diagrams all write back to your Obsidian vault.
English | 简体中文 | Español | Français | Deutsch | Italiano | Português | 繁體中文 | 日本語 | 한국어 | Русский | العربية | हिन्दी | বাংলা | Nederlands | Svenska | Suomi | Dansk | Norsk | Polski | Türkçe | עברית | ไทย | Ελληνικά | Čeština | Magyar | Română | Українська | Tiếng Việt | Bahasa Indonesia | Bahasa Melayu
📚 Read docs in more languages: Language Hub
📖 Browse repository docs: Docs Hub
🖼️ Inspect shipped diagram types and production previews: Diagram Gallery
❓ New: Frequently Asked Questions (FAQ)
==================================================
_ _ _ _ ___ __ __ ___
| \ | | ___ | |_| |___| | \/ |___ \
| \| |/ _ \| __| |___| | |\/| | | |
| |\ | (_) | |_| |___ | | | |___| |
|_| \_|\___/ \__|_|___| | | | |____/
==================================================
AI-Powered Multi-Languages Knowledge Enhancement
==================================================
Notemd is an open-source Obsidian plugin that integrates with 30+ Large Language Models (LLMs) to transform your notes into a structured, searchable knowledge base.
Unlike chat-based AI tools where insights disappear after the session, Notemd writes results directly into your vault as:
Result: Your reading and research accumulate into a persistent, evolving knowledge graph that stays with you.
If you love using Notemd, please consider ⭐ Give a Star on GitHub or ☕️ Buy Me a Coffee.
Version: 1.9.7
Mainline reliability update (not a new release): cancellation now reaches concurrent LLM work and retry waits; failed diagram saves preserve conflicting edits and report recovery copies. Existing Drawnix companion folders are retained for inspection. Local knowledge batches use an immutable read snapshot, and PowerPoint tables preserve individual border sides, opacity and merged-cell edges. Circuitikz NAND/NOR and transmission-gate exports have clearer wiring and readable labels in mirrored layouts. Implementation and acceptance evidence records the tested environments and remaining limits.
Drawnix supports native tree editing; its exported cross-branch arrows use fixed coordinates and can detach when Drawnix rearranges nodes. Use the SVG preview to inspect connectivity. Cancellation cannot undo earlier writes or stop provider-side work when the host transport cannot physically abort it.
Settings -> Notemd, select your LLM provider (like OpenAI or a local one like Ollama), and enter your API key/URL.[[wiki-links]] to key concepts.That's it! Explore the settings to unlock more features like web research, translation, and content generation.
| Concern | Scope | Default | Notes |
|---|---|---|---|
UI Locale |
Plugin UI text only (settings, sidebar, notices, dialogs) | auto |
Follows Obsidian locale; current UI catalogs are en, ar, de, es, fa, fr, id, it, ja, ko, nl, pl, pt, pt-BR, ru, th, tr, uk, vi, zh-CN, zh-TW. |
Task Output Language |
LLM-generated task output (links, summaries, generation, extraction, translation target) | en |
Can be global or per-task when Use different languages for tasks is enabled. |
Disable auto translation |
Non-Translate tasks keep source-language context | false |
Explicit Translate tasks still enforce the configured target language. |
| Locale fallback | Missing UI key resolution | locale -> en |
Implementation safety net; supported visible surfaces are regression-tested and should not silently fall back during normal use. |
en, ar, de, es, fa, fr, id, it, ja, ko, nl, pl, pt, pt-BR, ru, th, tr, uk, vi, zh-CN, zh-TW.requestUrl with transient network errors such as ERR_CONNECTION_CLOSED, Notemd now retries the same attempt through environment-specific fallback transport before entering the configured retry loop: desktop builds use Node http/https, while non-desktop environments use browser fetch. This reduces false failures on slow gateways and reverse proxies.requestUrl fallback (which can still upgrade to streamed parsing when needed). This reduces false negatives where providers complete buffered responses but streaming pipes are unstable.http/https and non-desktop fetch, and the remaining direct OpenAI-style provider entrypoints reuse that same shared fallback path.Qwen, Qwen Code, Doubao, Moonshot, Xiaomi MiMo, GLM, Z AI, MiniMax, Huawei Cloud MaaS, Baidu Qianfan, and SiliconFlow in addition to the existing global and local providers.Relax input file restrictions toggle can expand selected source-preserving tasks beyond flat .md / .txt input. When enabled, Translate current file, Batch translate folder, Extract concepts (current/folder), Summarise as Mermaid diagram, Generate diagram, and Check duplicates in current file can also read broader text-like files and PDF text extracted through Obsidian's PDF runtime. Source-mutating, Markdown-structure-dependent, and verbatim-comparison workflows remain intentionally restricted.One-Click Extract and Batch generate from titles) use stronger text contrast for better readability across themes.One-Click Extract workflow is included out of the box.relativePath vs basename targets, and explicit subfolder-scope control.[[wiki-links]] to core concepts within your processed notes based on LLM output._processed.md when processing files for links.Generate from title, Batch generate from titles, Research & Summarize, and Generate diagram can optionally retrieve context from a local knowledge base built from configured vault-relative file/folder paths, with optional task-specific overrides and no cloud retrieval service or external daemon.Chunk word count setting before sending them to the LLM. The translated chunks are then seamlessly combined back into a single document.[foldername]_complete or a custom name) to avoid reprocessing.Experimental Diagram Pipeline:
ref/diagram-design is development-only and its original screenshots are never bundled or shown.mindmap, flowchart, sequenceDiagram, classDiagram, erDiagram, and stateDiagram-v2.bar, line, area, and point charts, plus controlled scatter, pie, and table layout hints that map onto safe built-in Vega-Lite templates.dataChart plans, the planner now seeds preferred Vega-Lite chart templates (line, pie, scatter, table, or fallback bar) so omitted layoutHints.chartType values do not silently collapse to the wrong chart shape.mermaid.parse before the renderer returns them, so malformed diagrams fail early instead of quietly leaking into preview/export steps..canvas and .json artifacts are saved through the same output-path policy as Mermaid summaries, and preview surfaces now cover Mermaid, JSON Canvas, and Vega-Lite results..html summaries when a richer renderer is not available, and the preview modal can open them through the iframe fallback path instead of only showing escaped source text..svg, .png, and .pdf files beside the source note or beside the generated artifact. Raster export accepts any integer from 72 to 600 DPI (300 by default; 100/300/600 are common presets) and writes PNG density metadata.Architecture_preview_mermaid-2.svg) in source order and continue after an individual panel failure; each panel header also exposes SVG/PNG/PDF export for one diagram or image at a time..drawnix metadata by default, so generation does not create a separate .assets tree. The Also export complete Mermaid visuals setting opts in to Mermaid source, SVG, and manifest companions under .assets for handoff or external editing. Existing artifacts with .assets remain readable; if a legacy Mermaid companion is missing but its source text remains in metadata, preview rebuilds the visual. Resolved binary source visuals are embedded as data-backed SVG when possible, so the default path remains self-contained. Drawnix relation labels use node-aware orthogonal routing, measured wrapping, and a final label layer so long explanations are not hidden by node rectangles; native arrow text and SVG previews share the same wrapped lines. The title/summary header is a protected route region and is rendered last with an opaque guard band, so perimeter dashed routes cannot obscure it._summ.md, _diagram.canvas, _diagram.json, _diagram.drawio, _diagram.drawnix, _diagram.tex), so validation and handoff do not require rerunning the LLM step.intent: "circuit" plus circuitikz render target. They require a validated CircuitSpec, write deterministic .tex, and attach an SVG preview companion for Obsidian viewing and SVG/PNG/PDF export; the companion is not a LaTeX/TikZJax compile result.uiLocale: auto follows Obsidian), and preview/export theme defaults to the active Obsidian light/dark theme so Mermaid, JSON Canvas, Vega-Lite, and HTML fallback previews do not stay locked to the wrong palette after a theme switch.| Target | Generated artifact | Inline preview | Export SVG | Export PNG | Export PDF | Save raw source | Notes |
|---|---|---|---|---|---|---|---|
| Mermaid | _summ.md |
Yes | Yes | Yes | Yes | Yes | Mermaid auto-fix remains available for Mermaid-only flows. |
| JSON Canvas | _diagram.canvas |
Yes | Yes | Yes | Yes | Yes | Preview/export uses a theme-aware Canvas palette. |
| Vega-Lite | _diagram.json |
Yes | Yes | Yes | Yes | Yes | Preview/export uses a theme-aware Vega-Lite config patch. |
| Editable HTML/SVG | _diagram.html |
Yes | Yes | Yes | Yes | Yes | SVG is generated from the semantic figure model. |
| Draw.io | _diagram.drawio + companion SVG/MD |
SVG companion | Yes | Yes | Yes | Yes | No diagrams.net runtime is bundled. |
| Drawnix | _diagram.drawnix with inline Mermaid/source visuals by default; optional .assets companions when complete Mermaid export is enabled |
SVG companion | Yes | Yes | Yes | Yes | Self-contained previews, legacy .assets compatibility, node-aware labelled arrows, obstacle-aware cross-root routing, and no Drawnix or Plait runtime bundled. |
| Circuitikz | _diagram.tex + companion SVG/MD |
SVG companion | Yes | Yes | Yes | Yes | Requires intent: "circuit" and validated CircuitSpec; no runtime LaTeX compile. |
| HTML | _diagram.html |
Yes (iframe fallback) | No | No | No | Yes | Current pipeline does not promise raster/vector export for generic HTML fallback artifacts yet. |
Simple Formula Format Correction:
$ to standard double $$ blocks.Check for Duplicates in Current File: This command helps identify potential duplicate terms within the active file.
Duplicate Detection: Basic check for duplicate words within the currently processed file's content (results logged to console).
Check and Remove Duplicate Concept Notes: Identifies potential duplicate notes within the configured Concept Note Folder based on exact name matches, plurals, normalization, and single-word containment compared to notes outside the folder. The scope of the comparison (which notes outside the concept folder are checked) can be configured to the entire vault, specific included folders, or all folders excluding specific ones. Presents a detailed list with reasons and conflicting files, then prompts for confirmation before moving identified duplicates to system trash. Shows progress during deletion.
Batch Mermaid Fix: Applies Mermaid and LaTeX syntax corrections to all Markdown files within a user-selected folder.
mermaid_error_{foldername}.md report listing files that still contain potential Mermaid errors after processing.mermaid.parse before attempting fixes, saving processing time and avoiding unnecessary edits.| :--- |) from aggressive debug fixes.%) into the edge label (e.g., A -- Label --> B; % Comment becomes A -- "Label(Comment)" --> B;).A -- "Label -->" B becomes A -- "Label" --> B).X <-- Y arrows to Y --> X.direction keyword is lowercase inside subgraphs (e.g., Direction TB -> direction TB).// comments into edge labels (e.g., A --> B; // Comment -> A -- "Comment" --> B;).Node["Label"]["Label"] -> Node["Label"]).--|> to the standard -->./) and better support for custom note syntax (note for ...), ensuring artifacts like trailing brackets are cleanly removed.Node[Label [Text]] -> Node["Label [Text]"]), ensuring compatibility with complex diagrams like Stellar Evolution paths. Also corrects malformed edge labels (e.g., --["Label["--> to -- "Label" -->). Additionally converts inline comments (Consensus --> Adaptive; # Some advanced consensus to Consensus -- "Some advanced consensus" --> Adaptive) and fixes incomplete quotes at line ends (;" at the end replaced with "]).
- Note Conversion: Automatically converts note right/left of and standalone note : comments into standard Mermaid node definitions and connections (e.g., note right of A: text becomes NoteA["Note: text"] linked to A), preventing syntax errors and improving layout. Now supports both arrow links (-->) and solid links (---).
- Extended Note Support: Automatically converts note for Node "Content" and note of Node "Content" into standard linked note nodes (e.g. NoteNode[" Content"] linked to Node), ensuring compatibility with user-extended syntax.
- Enhanced Note Correction: Automatically renames notes with sequential numbering (e.g., Note1, Note2) to prevent aliasing issues when multiple notes are present. - Parallelogram/Shape Fix: Corrects malformed node shapes like [/["Label["/] to standard ["Label"], ensuring compatibility with generated content.
- Standardize Pipe Labels: Automatically fixes and standardizes edge labels containing pipes, ensuring they are properly quoted (e.g., -->|Text| becomes -->|"Text"| and -->|Math|^2| becomes -->|"Math|^2"|).>|"Label"| A --> B becomes A -->|"Label"| B).
- Merge Double Labels: Detects and merges complex double labels on a single edge (e.g., A -- Label1 -- Label2 --> B or A -- Label1 -- Label2 --- B) into a single, clean label with line breaks (A -- "Label1<br>Label2" --> B).
- Unquoted Label Fix: Automatically quotes node labels that contain potentially problematic characters (e.g., quotes, equals signs, math operators) but are missing outer quotes (e.g., Plot[Plot "A"] becomes Plot["Plot "A""]), preventing render errors.
- Intermediate Node Fix: Splits edges that contain an intermediate node definition into two separate edges (e.g., A -- B[...] --> C becomes A --> B[...] and B[...] --> C), ensuring valid Mermaid syntax.
- Concatenated Label Fix: Robustly fixes node definitions where the ID is concatenated with the label (e.g., SubdivideSubdivide... becomes Subdivide["Subdivide..."]), even when preceded by pipe labels or when the duplication isn't exact, by validating against known node IDs.
- Extract Specific Original Text: - Define a list of questions in settings.
- Extracts verbatim text segments from the active note that answer these questions.
- Merged Query Mode: Option to process all questions in a single API call for efficiency.
- Translation: Option to include translations of the extracted text in the output.
- Custom Output: Configurable save path and filename suffix for the extracted text file.- LLM Connection Test: Verify API settings for the active provider.README.md for packaged reference, but manual installation only requires main.js, styles.css, and manifest.json.<YourVault>/.obsidian/plugins/.notemd.main.js, styles.css, and manifest.json into the notemd folder.Notemd has a broad settings surface because providers, note workflows, diagrams, batch processing, slides, and developer diagnostics have different controls. The settings page now provides field-aware search, large category navigation, a collapsible discovery toolbar, and per-setting favorites. Click ★ Favorites to open a dedicated, navigable favorite-settings list; each entry can jump to its setting or be removed directly. Favorites are stored for the current Vault and remain available after restarting Obsidian.
Important newer settings include:
tectonic or pdflatex installation, or installs a pinned managed Tectonic runtime after explicit confirmation. SVG, PNG, and preview PDF export continue to work without LaTeX.Completed diagram previews are indexed at Vault scope and ordered by completion time, newest first. The preview keeps the diagram canvas primary: one Export menu provides SVG, PNG, and PDF, while History opens the searchable index in a right drawer without closing the preview. The same history view is available from the command palette (Notemd: Open diagram history) and sidebar even when no note is active. Search by title, note, diagram type, source format, or export format and browse results in pages of 20. History stores lightweight metadata and artifact paths rather than duplicating SVG, PNG, PDF, or source contents. Removing a history entry does not delete its generated files.
Notemd does not embed a complete TeX distribution in the plugin bundle. On desktop, open CircuitikZ native compile environment from diagram settings or the command palette to reuse a system tectonic/pdflatex compiler, choose a custom executable, or explicitly install/repair the pinned managed Tectonic runtime. The environment panel shows readiness, download progress, install path, bounded logs, and removal controls. Mobile and users who skip installation keep dependency-free preview plus SVG, PNG, and preview PDF export.
Before a title-generation batch starts, Notemd validates the selected folder once:
Access plugin settings via: Settings → Community Plugins → Notemd (Click the gear icon).
New API, OVMS, and the generic OpenAI Compatible preset when your endpoint accepts anonymous or placeholder access.gpt-4o, claude-3-5-sonnet-20240620, google/gemini-flash-1.5, grok-4, moonshotai/kimi-k2-instruct-0905, accounts/fireworks/models/kimi-k2p5, anthropic/claude-3-7-sonnet-latest). Ensure the model is available at your endpoint/provider.2024-02-15-preview).Temperature, Top-p, reasoning hints, DeepSeek thinking mode, and the provider-specific output-token override now live behind Show advanced settings. If a provider already has saved advanced overrides, this section auto-expands so existing behavior stays visible instead of being silently hidden./models presets across DeepSeek/OpenAI/Mistral, China-focused hosted endpoints such as Qwen, Qwen Code, Doubao, Moonshot, Xiaomi MiMo, GLM, Z AI, MiniMax, Baidu Qianfan, and SiliconFlow, fast hosted inference presets such as Groq, Fireworks, Nebius, Cerebras, and Hugging Face, gateways such as OpenRouter, Requesty, LiteLLM, AIHubMix, GitHub Models, PPIO, and New API, local LMStudio servers, OVMS, and Together's dedicated /models response shape. It also covers Anthropic GET /models, xAI's dedicated /v1/language-models registry with bounded fallback to /v1/models, Huawei Cloud MaaS's dedicated v2/models registry endpoint, GitHub Models' bounded hosted catalog/models + /v1/models merge, PPIO's bounded chat + embedding + reranker registry merge, OVMS's preferred local /v3/models endpoint with bounded fallback to legacy /v1/config, a bounded Vercel AI Gateway merge of the official /v1/models catalog plus v3/ai/config, Ollama tags, and Google Gemini model listing. OpenRouter now uses a bounded merge of its chat and embedding catalogs instead of relying on a single endpoint, while Anthropic and Google discovery now also follow bounded multi-page registry traversal when the provider returns paginated model catalogs. The broader OpenAI-compatible discovery path now follows the same bounded traversal principle when registries expose next_url, links.next, nextPageToken, next_cursor, or similar continuation signals, so larger gateway catalogs do not silently truncate to the first page and later-page failures do not discard already-fetched valid rows. For providers that expose broader registries, the fetched list is intentionally filtered toward generation-ready models so embedding, reranker, speech, and classifier entries do not clutter the model picker, and the shared parser now also tolerates wider proxy-style payloads such as list/items, rows/records, value/values, object-shaped catalogs, nested data/result collections, hosted types classifiers, publisherModels-style registries, wrapped data.provider_models / result.data.publisherModels style containers, wrapped registry / registries / services catalogs, LiteLLM-style litellm_params + model_info metadata, endpoint-type metadata, transient display labels, max-output-token hints, richer capability/modality/status signals, richer identifier fields such as uid, identifier, modelId, and provider_model_id, and resource-style names such as models/<id> or publishers/<owner>/models/<id> that are normalized back to usable model IDs. Azure OpenAI still stays manual-first. The generic OpenAI Compatible entry now auto-upgrades to the matching bounded discovery family for known hosts such as OpenRouter, Requesty, Together, xAI, Huawei Cloud MaaS, Vercel AI Gateway, AIHubMix, GitHub Models, PPIO, local LiteLLM-style proxies, and OVMS-style local /v3 endpoints; otherwise it still falls back to the standard /models flow when your custom endpoint exposes it. Shared OpenAI-compatible URL normalization also now tolerates users pasting endpoint roots all the way down to /responses, /chat/completions, or /models, even when the pasted URL still includes query strings or hash fragments, without breaking fetch-model-list or runtime calls. When that generic preset points at a known official host such as OpenAI, DashScope/Qwen, Xiaomi MiMo, Fireworks, or Hugging Face, model-aware token guidance can also reuse the upstream provider's known output-token caps for bare model IDs instead of requiring provider-prefixed names. The fetched list is transient suggestions only; your saved Model string remains the source of truth.Qwen, Qwen Code, Doubao, Moonshot, Xiaomi MiMo, GLM, Z AI, MiniMax, Huawei Cloud MaaS, Baidu Qianfan, SiliconFlow, Groq, Together, Fireworks, LMStudio, and OpenAI Compatible probe chat/completions directly, while providers with a reliable /models endpoint can still use model listing first. If the first probe fails with a transient network disconnect such as ERR_CONNECTION_CLOSED, Notemd automatically falls back to the stable retry sequence instead of failing immediately.notemd-providers.json file within the plugin's configuration directory. This allows for easy backup and sharing.Qwen, Qwen Code, Doubao, Moonshot, Xiaomi MiMo, GLM, Z AI, MiniMax, Huawei Cloud MaaS, Baidu Qianfan, SiliconFlow, xAI, Groq, Together, AIHubMix, GitHub Models, PPIO, New API, OVMS, Fireworks, LiteLLM, Nebius, Cerebras, Hugging Face, Vercel AI Gateway, Requesty, and a generic OpenAI Compatible target for custom proxies.auto mode follows Obsidian's current UI language.fr-CA uses French, es-419 uses Spanish, pt-PT uses Portuguese, zh-Hans uses Simplified Chinese, and zh-Hant-HK uses Traditional Chinese.requestUrl now retry the same attempt through an environment-aware fallback first. Desktop builds use Node http/https; non-desktop environments use browser fetch. Those fallback attempts now use protocol-aware streaming parsing across the built-in LLM paths, covering OpenAI-compatible SSE, Azure OpenAI SSE, Anthropic Messages SSE, Google Gemini SSE, and Ollama NDJSON output, so slow gateways can return body chunks earlier. The remaining direct OpenAI-style provider entrypoints reuse that same shared fallback path.direct streaming -> direct non-stream -> requestUrl (with streamed fallback when needed) before counting as a failed attempt. This prevents overly aggressive failures when only one transport mode is flaky.direct streaming, direct buffered, requestUrl-only) besides runtime modes.Notemd_Provider_Diagnostic_*.txt in vault root.Customize Processed File Save Path:
YourNote_processed.md) are saved in the same folder as the original note.Processed File Folder Path: (Visible only when the above is enabled) Enter a relative path within your vault (e.g., Processed Notes or Output/LLM) where processed files should be saved. Folders will be created if they don't exist. Do not use absolute paths (like C:...) or invalid characters.
Use Custom Output Filename for 'Add Links':
_processed.md suffix (e.g., YourNote_processed.md).Custom Suffix/Replacement String: (Visible only when the above is enabled) Enter the string to use for the output filename.
_linked), it will be appended to the original base name (e.g., YourNote_linked.md). Ensure the suffix doesn't contain invalid filename characters.Remove Code Fences on Add Links:
[[linked concepts]] is disabled.Concepts or Generated/Topics) where new concept notes should be saved. Folders will be created if they don't exist. Must be filled if customization is enabled. Do not use absolute paths or invalid characters.generate xx concepts md file
1. concepts1
2. concepts2
...
n. conceptsn
Logs/Notemd) where the log file should be saved. Must be filled if customization is enabled.Generate.log.ConceptCreation.log). Must be filled if customization is enabled.# Concept)..md and .txt files in a selected folder._Extracted suffix.mermaid_error_{foldername}.md report.contains, regex, or glob.relativePath or basename.Developer mode and then enable Advanced batch file selection to expose those controls. Otherwise batch folder tasks stay on the simpler legacy picker flow for regular users.Generate from title, Batch generate from titles, Research & Summarize, and Generate diagram run without local retrieval context.Generate from title, Batch generate from titles, Research & Summarize, and Generate diagram can each use their own file/folder path list. Leave an override blank to inherit the default path list.Translations) where translated files should be saved. Folders will be created if they don't exist._translated.md suffix (e.g., YourNote_translated.md)._es or _fr).Batch Mermaid Fix manually or add it to a custom workflow.[OriginalFolderName]_complete relative to the original folder's parent (or Vault_complete if the original folder was the root).Generated Content, _complete). Invalid characters are not allowed. Defaults to _complete if left empty. This folder is created relative to the original folder's parent directory.One-Click Extract chains Process File (Add Links), Batch Generate from Titles, and Batch Mermaid Fix.This feature allows you to override the default instructions (prompts) sent to the LLM for specific tasks, giving you fine-grained control over the output.
Enable Custom Prompts for Specific Tasks:
Use Custom Prompt for [Task Name]: (Visible only when the above is enabled)
Custom Prompt Text Area: (Visible only when a task's custom prompt is enabled)
{TITLE}: The title of the current note.{RESEARCH_CONTEXT_SECTION}: The content gathered from web research.{USER_PROMPT}: The content of the note being processed./ as the separator (e.g., Reference Material/Papers or Daily Notes). These folders cannot be the same as or inside the Concept Note Folder.Tavily (requires API key, recommended) and DuckDuckGo (experimental, often blocked by the search engine for automated requests). Used for "Research & Summarize Topic" and optionally for "Generate from Title".basic (default) or advanced. Note: advanced provides better results but costs 2 API credits per search instead of 1.Process File (Add Links) -> Batch Generate from Titles -> Batch Mermaid Fix.This is the core functionality focused on identifying concepts and adding [[wiki-links]].
Important: This source-mutating workflow intentionally stays limited to .md or .txt files. Even if Relax input file restrictions is enabled in Developer settings, PDF and other expanded formats are still blocked here to keep add-links and source-diff semantics stable. If you need PDF input, convert it to Markdown first with a tool such as Mineru.
.md or .txt file.Ctrl+P or Cmd+P):Notemd: Process Current File.Notemd: Process Folder, then select the folder. Files are processed in the background without being opened in the editor.\boxed{ and trailing } lines if found in the final processed content before saving.Summarise as Mermaid diagram:
Notemd: Summarise as Mermaid diagram (via command palette or sidebar button).Translate Note/Selection:
Notemd: Translate Note/Selection (via command palette or sidebar button).Batch Translate:
Notemd: Batch Translate Folder from the command palette and select a folder, or right-click a folder in the file explorer and choose "Batch translate this folder".Notemd: Research and Summarize Topic (via command palette or sidebar button).Generate Content from Title:
Notemd: Generate Content from Title (via command palette or sidebar button).Batch Generate Content from Titles:
Notemd: Batch Generate Content from Titles (via command palette or sidebar button)..md file in the folder (excluding _processed.md files and files in the designated "complete" folder), generating content based on the note's title and replacing existing content. Files are processed in the background without being opened in the editor.Check and Remove Duplicate Concept Notes:
Notemd: Check and Remove Duplicate Concept Notes (via command palette or sidebar button).Extract Concepts (Pure Mode):
Notemd: Extract concepts (create concept notes only) from the command palette or click the "Extract concepts (current file)" button in the sidebar.Notemd: Batch extract concepts from folder from the command palette or click the "Extract concepts (folder)" button in the sidebar, then select a folder to process all its notes.Create Wiki-Link & Generate Note from Selection:
Notemd: Create Wiki-Link & Generate Note from Selection (it is recommended to assign a hotkey to this, like Cmd+Shift+W).[[wiki-link]].Extract Concepts and Generate Titles:
Notemd: Extract Concepts and Generate Titles from the command palette (it is recommended to assign a hotkey to this).Extract Specific Original Text:
Batch Mermaid Fix:
mermaid_error_{foldername}.md file.| Provider | Type | API Key Required | Notes |
|---|---|---|---|
| DeepSeek | Cloud | Yes | Native DeepSeek endpoint with reasoning-model handling |
| Qwen | Cloud | Yes | DashScope compatible-mode preset for Qwen / QwQ models |
| Qwen Code | Cloud | Yes | DashScope coding-focused preset for Qwen coder models |
| Doubao | Cloud | Yes | Volcengine Ark preset; usually set the model field to your endpoint ID |
| Moonshot | Cloud | Yes | Official Kimi / Moonshot endpoint |
| Xiaomi MiMo | Cloud | Yes | Xiaomi MiMo OpenAI-compatible endpoint for chat, coding, and multimodal models |
| GLM | Cloud | Yes | Official Zhipu BigModel OpenAI-compatible endpoint |
| Z AI | Cloud | Yes | International GLM/Zhipu OpenAI-compatible endpoint; complements GLM |
| MiniMax | Cloud | Yes | Official MiniMax chat-completions endpoint |
| Huawei Cloud MaaS | Cloud | Yes | Huawei ModelArts MaaS OpenAI-compatible endpoint for hosted models |
| Baidu Qianfan | Cloud | Yes | Official Qianfan OpenAI-compatible endpoint for ERNIE models |
| SiliconFlow | Cloud | Yes | Official SiliconFlow OpenAI-compatible endpoint for hosted OSS models |
| OpenAI | Cloud | Yes | Supports GPT and o-series models |
| Anthropic | Cloud | Yes | Supports Claude models |
| Cloud | Yes | Supports Gemini models | |
| Mistral | Cloud | Yes | Supports Mistral and Codestral families |
| Azure OpenAI | Cloud | Yes | Requires Endpoint, API Key, deployment name, and API Version |
| OpenRouter | Gateway | Yes | Access many providers through OpenRouter model IDs |
| xAI | Cloud | Yes | Native Grok endpoint |
| Groq | Cloud | Yes | Fast OpenAI-compatible inference for hosted OSS models |
| Together | Cloud | Yes | OpenAI-compatible endpoint for hosted OSS models |
| AIHubMix | Gateway | Yes | Hosted multi-provider gateway preset with dedicated registry lookup |
| GitHub Models | Gateway | Yes | Hosted catalog-backed gateway preset |
| PPIO | Gateway | Yes | Multi-provider gateway with bounded chat/embedding/reranker discovery |
| OVMS | Local | Optional | OpenVINO Model Server preset with bounded local model discovery |
| Fireworks | Cloud | Yes | OpenAI-compatible inference endpoint |
| LiteLLM | Gateway | Optional | Self-hosted OpenAI-compatible proxy preset; default local endpoint is http://localhost:4000/v1 |
| New API | Gateway | Optional | Self-hosted OpenAI-compatible gateway preset |
| Nebius | Cloud | Yes | Nebius AI Studio OpenAI-compatible endpoint |
| Cerebras | Cloud | Yes | Cerebras Cloud OpenAI-compatible endpoint for fast hosted inference |
| Hugging Face | Gateway | Yes | Hugging Face hosted inference router preset |
| Vercel AI Gateway | Gateway | Yes | Vercel multi-provider gateway preset with dedicated model discovery |
| Requesty | Gateway | Yes | Multi-provider router behind one API key |
| OpenAI Compatible | Gateway | Optional | Generic preset for LiteLLM, vLLM, Perplexity, Vercel AI Gateway, etc. |
| LMStudio | Local | Optional (EMPTY) |
Runs models locally via LM Studio server |
| Ollama | Local | No | Runs models locally via Ollama server |
Note: For local providers (LMStudio, Ollama), ensure the respective server application is running and accessible at the configured Base URL.
Note: For OpenRouter and Requesty, use the provider-prefixed/full model identifier shown by the gateway (for example google/gemini-flash-1.5 or anthropic/claude-3-7-sonnet-latest).
Note: Doubao usually expects an Ark endpoint/deployment ID in the model field rather than a raw model family name. The settings screen now warns when the placeholder value is still present and blocks connection tests until you replace it with a real endpoint ID.
Note: Z AI targets the international api.z.ai line, while GLM keeps the mainland China BigModel endpoint. Choose the preset that matches your account region.
Note: China-focused presets use chat-first connection checks so the test validates the actual configured model/deployment, not only API-key reachability.
Note: Vercel AI Gateway now uses a bounded dual-source discovery path that merges the official /v1/models catalog with v3/ai/config, instead of pretending it is just another generic OpenAI-compatible /models endpoint.
Note: Azure OpenAI still stays manual-first because deployment-mode endpoints need deployment names rather than a generic model list. OpenRouter now uses a bounded merge of its chat and embedding catalogs, Hugging Face now shares the bounded OpenAI-compatible /models discovery path, LiteLLM uses a bounded /models + /model/info merge, Huawei Cloud MaaS uses its dedicated v2/models registry endpoint, AIHubMix uses its hosted /api/v1/models registry, GitHub Models uses a bounded catalog/models + /v1/models merge, PPIO uses a bounded chat + embedding + reranker registry merge, OVMS prefers the current local /v3/models surface and only falls back to legacy /v1/config when needed, New API reuses the shared bounded OpenAI-compatible /models flow, and the generic OpenAI Compatible preset now auto-resolves known hosts such as OpenRouter / Requesty / Together / Huawei Cloud MaaS / Vercel AI Gateway / AIHubMix / GitHub Models / PPIO / local LiteLLM-style proxies / OVMS-style local /v3 endpoints into the matching bounded discovery family before falling back to a plain /models request. The same shared normalization also tolerates users pasting /responses, /chat/completions, or /models endpoint forms directly. Known-host inference can still reuse official provider token-cap metadata for bare model IDs on trusted hosts such as OpenAI, DashScope/Qwen, Xiaomi MiMo, Fireworks, and Hugging Face.
Note: OpenAI Compatible is intended for custom gateways and proxies. Set the Base URL, API key policy, and model ID according to your provider's documentation.
Notemd runs locally inside Obsidian, but some features send outbound requests.
Notemd_Provider_Diagnostic_*.txt and Notemd_Error_Log_*.txt)..obsidian/plugins/notemd/data.json.manifest.json, main.js, styles.css are in the correct folder (<Vault>/.obsidian/plugins/notemd/) and restart Obsidian. Check the Developer Console (Ctrl+Shift+I or Cmd+Option+I) for errors on startup..md or .txt extension. Notemd currently only supports these text-based formats.http://localhost:1234/v1 for LMStudio).error_processing_filename.log file in your vault root for detailed error messages for each failed file. The Developer Console or error modal might show a summary or general batch error.Notemd_Error_Log_[Timestamp].txt in your vault's root directory. This file contains the error message, stack trace, and session logs. If you encounter persistent issues, please check this file. Enabling "API Error Debugging Mode" in settings will populate this log with even more detailed API response data.Notemd_Provider_Diagnostic_*.txt in vault root.npm run diagnose:llm -- \
--transport openai-compatible \
--provider-name OpenRouter \
--base-url https://openrouter.ai/api/v1 \
--api-key "$OPENROUTER_API_KEY" \
--model anthropic/claude-3.7-sonnet \
--prompt-file ./tmp/prompt.txt \
--content-file ./tmp/content.txt \
--mode compare \
--timeout-ms 360000 \
--output ./tmp/openrouter-diagnostic.txt
The generated report contains per-attempt timing (First Byte, Duration), sanitized request metadata, response headers, raw/partial body fragments, parsed stream fragments, and transport-layer failure points.
OLLAMA_ORIGINS environment variable. You can do this by running set OLLAMA_ORIGINS=* in your command prompt before starting Ollama. This allows requests from any origin.Processed, Notes/Concepts) and not absolute paths (e.g., C:\Users\..., /Users/...).* " \ / < > : | ? # ^ [ ]. Note that \ is invalid even on Windows for Obsidian paths. Use / as the path separator..svg / .png export. HTML artifacts support iframe fallback preview and raw-source save only.system. If you switch Obsidian theme while the preview modal is already open, close and reopen the modal before exporting so the new theme is baked into the snapshot._preview.svg and _preview.png files are snapshots. Re-export after editing the source artifact or changing theme if the saved preview is stale..md, .canvas, .json, or .html content manually.Notemd is independently maintained. We thank the open-source projects and communities that informed documented design decisions or provide integration foundations. Listing a project recognizes influence or interoperability only; it does not imply endorsement, affiliation, bundled code, or a claim of code reuse.
Contributions are welcome! Please refer to the GitHub repository for guidelines: https://github.com/Jacobinwwey/obsidian-NotEMD
npm run cli:helpnpm run cli:invoke -- --vault docs --operation content.split-note-by-chapters --input-json '{"sourcePath":"index.zh-CN.md","splitHeadingLevel":"h2"}' --prettynpm run verify:vault-bundle -- --vault <vault-path> (fails closed on missing files, hash drift, or manifest version drift)--vault docs, JSON path inputs stay vault-relative: use index.zh-CN.md and maintainer, not docs/index.zh-CN.md or docs/maintainer.MIT License - See LICENSE file for details.
Notemd v1.9.7 - Enhance your Obsidian knowledge graph with AI.
Quarterly chronicle rendered in the original repo-saga visual style. The slicing is now produced directly by repo-saga itself with quarter granularity.
Last refreshed for release tag 1.9.7 on 2026-08-31. Latest commit date: 2026-08-31.