Profile
Back to NewsBack
GitHub Trending 32 min
Reader Mode
Jacobinwwey/obsidian-NotEMD: A Easy way to create your own Knowledge-base! Notemd enhances your Obsidian workflow by integrating with various Large Language Models (LLMs) to process your notes, automatically generate wiki-links for key concepts, crea

Jacobinwwey/obsidian-NotEMD: A Easy way to create your own Knowledge-base! Notemd enhances your Obsidian workflow by integrating with various Large Language Models (LLMs) to process your notes, automatically generate wiki-links for key concepts, crea

12 hours ago

GitHub Release</a> GitHub Downloads</a> !GitHub Repo stars

Discord</a> !QQ

Notemd — AI-Powered Knowledge Base Builder for Obsidian

Notemd transforms notes into linked Markdown, concept notes, research summaries, translations and diagrams. Choose the model, inspect the output and keep the results in 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

Each diagram preview has independent zoom, pan, fit and actual-size controls. Ctrl/Command + wheel zooms; ordinary wheel scrolls. Large PNG exports retain the selected 72–600 PPI (default 300). SVG is vector-based; PPI applies only to raster exports.

Generate images compatible with Obsidian — Enabled by default. Check PNG decoding in Obsidian; if it fails, keep the requested original and add a lower-PPI copy. Both filenames show their PPI. Off exports only the requested PNG. (note_drawnix_300ppi.png, note_drawnix_obsidian_87ppi.png).

Start Here

| Reader | Entry point | Outcome | |---|---|---| | Newcomer | Quick start | Configure a provider and verify one note | | User | Workflows | Control folders, outputs and recovery | | Developer | Developer guide | Build, test and extend existing contracts | | Agent | Agent guide | Discover four supported export commands |

What is Notemd?

Notemd is an MIT-licensed Obsidian plugin for file-based knowledge work. It supports cloud providers, gateways and local model servers. Stored outputs stay in the vault; cloud tasks send content to the selected endpoint, and web research uses the network.

Version: 1.9.10

1.9.10 — Safer previews and Vault-local settings

Imported SVG previews remove active content and external resources while preserving Chinese labels and panel styles. Device-only providers are now isolated by Vault; use the explicit legacy import action in settings, which preserves the old list and existing configurations. Presentation previews use a loopback server with shared-consumer lifecycle control. Failed favorites saves and clipboard writes report errors; deletion follows Vault preferences. PNG compatibility stays enabled by default, preserving the requested original and adding a verified lower-PPI copy only when needed. Drawnix has no fixed relation quota; presentation exports keep separate settings. Install matching release files, reload, and test one note before batching.

  • Select several chart types in one run and choose multiple output formats independently for each type. Unchecking a type retains its format preferences; leaving every type unchecked uses automatic analysis.
  • Selected files are exported automatically beside the source note, or directly into the configured output folder. Names include the type, such as topic_drawnix.pdf and topic_flowchart.svg; collisions add -2, -3 and so on without overwriting existing files.
  • Drawnix preserves all explicit directed relationships without a fixed total or per-node limit. Identical claims are deduplicated; different predicates and reverse directions remain distinct. Overlapping exterior routes use separate tracks, disjoint routes reuse tracks, and labels receive separate measured rows. The canvas grows to retain relationships. Unlabeled, generic or redundant hierarchy arrows remain in metadata with reasons. Boxed relation text stays visible in PDF, including older cached SVG. Cross-branch arrows remain static and may detach after rearrangement in Drawnix.
The 36 provider presets and 33 executable diagram entries already existed in 1.9.7. Read the upgrade guide and check the public Release for availability.

Drawnix cross-branch arrows remain static after rearrangement. Mermaid/SVG in PPTX may use image fallback. Cancellation is not undo and does not guarantee remote generation or billing stops. Physical mobile devices and Obsidian 0.15.0 remain unverified.

Documentation hub · Language Hub · Diagram Gallery · FAQ

If you love using Notemd, please consider ⭐ Give a Star on GitHub or ☕️ Buy Me a Coffee.

Table of Contents

Quick Start

  1. Install and enable Notemd from Settings → Community plugins → Browse. Installation guide.
  2. In Settings → Notemd, configure the exact provider endpoint, credentials and model. Run Test Connection, then verify generation with the next task. A model-list response alone does not prove chat access.
  3. Create an empty trial-concepts folder and select it as Concept note folder; the initial setting is empty. Prepare a disposable Notemd trial.md containing a short paragraph you can send to the provider.
  4. Run Process file (add links) and inspect Notemd trial_processed.md beside the preserved source. Review links and any concept notes instead of assuming the model output is correct.
  5. Reopen the disposable source note, then try One-Click Extract with that test folder. It adds links, generates eligible folder notes from titles and repairs Mermaid in the complete folder; existing eligible notes can be included.
One-Click Extract::process-current-add-links>batch-generate-from-titles>batch-mermaid-fix

Research and diagram generation are separate actions. After cancellation, wait for the task to settle and inspect completed/recovery outputs before repeating.

Interface examples

show multi-langu NEW FEATURE

Language Support

Language Behavior Contract

| 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. |

  • Maintainer source docs are English and Simplified Chinese, and the published README translations are linked in the header above.
  • In-app UI locale coverage currently matches the explicit code catalog: en, ar, de, es, fa, fr, id, it, ja, ko, nl, pl, pt, pt-BR, ru, th, tr, uk, vi, zh-CN, zh-TW.
  • English fallback remains an implementation safety net, but supported visible surfaces are regression-tested and should not silently fall back during normal use.
  • Further details and contributing guidelines are tracked in the Language Hub.

Features

AI-Powered Document Processing

  • Multi-LLM Support: Connect to various cloud and local LLM providers (see Supported LLM Providers).
  • Smart Chunking: Automatically splits large documents into manageable chunks based on word count for processing.
  • Content Preservation: Aims to maintain original formatting while adding structure and links.
  • Progress Tracking: Real-time updates via the Notemd Sidebar or a progress modal.
  • Cancellable Operations: Cancel any processing task (single or batch) initiated from the sidebar via its dedicated cancel button. Command palette operations use a modal which can also be cancelled.
  • Multi-Model Configuration: Use different LLM providers and specific models for different tasks (Add Links, Research, Generate Title, Translate) or use a single provider for all.
  • Stable API Calls (Retry Logic): Optionally enable automatic retries for failed LLM API calls with configurable interval and attempt limits.
  • Resilient Provider Connection Tests: If the first provider test hits a transient network disconnect, Notemd now falls back to the stable retry sequence before failing, covering OpenAI-compatible, Anthropic, Google, Azure OpenAI, and Ollama transports.
  • Runtime Environment Transport Fallback: When a long-running provider request is dropped by 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.
  • OpenAI-Compatible Stable Long-Request Chain Hardening: In stable mode, OpenAI-compatible calls now use an explicit 3-stage order for each attempt: primary direct streaming transport, then direct non-stream transport, then 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.
  • Protocol-Aware Streaming Fallback Across LLM APIs: Long-running fallback attempts now upgrade to protocol-aware streamed parsing across every built-in LLM path, not just OpenAI-compatible endpoints. Notemd now handles OpenAI/Azure-style SSE, Anthropic Messages streaming, Google Gemini SSE responses, and Ollama NDJSON streams on both desktop http/https and non-desktop fetch, and the remaining direct OpenAI-style provider entrypoints reuse that same shared fallback path.
  • China-Ready Provider Presets: Built-in presets now cover 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.
  • Batch Request Scheduling: Staggered calls reduce bursts during concurrent work. Provider request/token quotas and competing clients can still cause rate limits; measure a small batch before increasing concurrency.
  • Accurate Progress Reporting: Progress distinguishes completed, failed and cancelled work. Inspect per-file results and reported paths when a run is interrupted.
  • Robust Parallel Batch Processing: The scheduler settles active work and reports partial failures instead of treating an interrupted folder as an all-or-nothing transaction.
  • Progress Bar Accuracy: Fixed a bug where the progress bar for the "Create Wiki-Link & Generate Note" command would get stuck at 95%, ensuring it now correctly shows 100% upon completion.
  • Enhanced API Debugging: The "API Error Debugging Mode" now captures full response bodies from LLM providers and search services (Tavily/DuckDuckGo), and also records a per-attempt transport timeline with sanitized request URLs, elapsed duration, response headers, partial response bodies, parsed partial stream content, and stack traces for better troubleshooting across OpenAI-compatible, Anthropic, Google, Azure OpenAI, and Ollama fallbacks.
  • Developer Mode Panel: Settings now include a dedicated developer-only diagnostics panel that stays hidden unless "Developer mode" is enabled. It supports selecting diagnostic call paths and running repeated stability probes for the selected mode.
  • Developer-Gated Relaxed Input Types: A separate 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.
  • Redesigned Sidebar: Built-in actions are grouped into focused sections with clearer labels, live status, cancellable progress, and copyable logs to reduce sidebar clutter. The progress/log footer now stays visible even when every section is expanded, and the ready state uses a clearer standby progress track.
  • Sidebar Interaction & Readability Polish: Sidebar buttons now provide clearer hover/press/focus feedback, and colorful CTA buttons (including One-Click Extract and Batch generate from titles) use stronger text contrast for better readability across themes.
  • Single-File CTA Mapping: Colorful CTA styling is now reserved for single-file actions only. Batch/folder-level actions and mixed workflows use non-CTA styling to reduce action-scope misclicks.
  • Custom One-Click Workflows: Turn built-in sidebar utilities into reusable custom buttons with user-defined names and assembled action chains. A default One-Click Extract workflow is included out of the box.
  • Welcome Modal Release Digest: On first install, the welcome modal now includes the latest two release summaries in a scrollable panel so new users can quickly see what changed before configuring providers.
  • Settings Reset Controls: Settings now include both a complete reset and a partial reset that preserves provider configuration while restoring the rest of the plugin defaults.
  • Folder-Task File Selection Profiles: Folder tasks now support reusable named file-selection profiles with regex/glob matching, relativePath vs basename targets, and explicit subfolder-scope control.

Knowledge Graph Enhancement

  • Automatic Wiki-Linking: Identifies and adds [[wiki-links]] to core concepts within your processed notes based on LLM output.
  • Concept Note Creation (Optional & Customizable): Automatically creates new notes for discovered concepts in a specified vault folder.
  • Customizable Output Paths: Configure separate relative paths within your vault for saving processed files and newly created concept notes.
  • Customizable Output Filenames (Add Links): Optionally overwrite the original file or use a custom suffix/replacement string instead of the default _processed.md when processing files for links.
  • Link Integrity Maintenance: Obsidian owns link updates on rename according to its settings. Deleting a target can leave unresolved links; inspect ambiguous same-named notes.
  • Pure Concept Extraction: Extract concepts and create corresponding concept notes without modifying the original document. This is ideal for populating a knowledge base from existing documents without altering them. This feature has configurable options for creating minimal concept notes and adding backlinks.
  • Concept Extraction Guardrails: When concept-note generation prerequisites are not configured correctly, relevant flows now warn before execution and can deep-link directly into the required settings.
  • Concept Synonym Suppression: An optional extraction rule can tell the model to avoid extracting synonyms, semantically similar core concepts, or near-duplicate keywords when processing notes.
  • Local Knowledge Retrieval: 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.
  • Chapter Split + TOC Extraction: Split a note into heading-based chapter files beside the source note, generate a linked TOC with front-matter metadata, and clean up stale generated files on reruns.

Translation

  • AI-Powered Translation:
- Translate note content using the configured LLM. - Large File Support: Automatically splits large files into smaller chunks based on the Chunk word count setting before sending them to the LLM. The translated chunks are then seamlessly combined back into a single document. - Supports translation between multiple languages. - Customizable target language in settings or in UI. - The single-file command opens the saved translation in the workspace. Inspect the reported output path; its pane position is not guaranteed.
  • Batch Translate:
- Translate eligible direct-child files by default; advanced selection profiles can change the scope. Existing translated destinations can be overwritten. - Uses the configured batch concurrency, which defaults to one. - Uses custom prompts for translation if configured. - Adds a "Batch translate this folder" option to the file explorer context menu.
  • Disable auto translation: When this option is enabled, non-Translate tasks will no longer force outputs into a specific language, preserving the original language context. The explicit "Translate" task will still perform translation as configured.

Web Research & Content Generation

  • Web Research & Summarization:
- Perform web searches using Tavily (requires API key) or DuckDuckGo (experimental). - Improved Search Robustness: DuckDuckGo search now features enhanced parsing logic (DOMParser with Regex fallback) to handle layout changes and ensure reliable results. - Summarize search results using the configured LLM. - The output language of the summary can be customized in the settings. - Append summaries to the current note. - Configurable token limit for research content sent to the LLM.
  • Content Generation from Title:
- Use the note title to generate initial content via LLM, replacing existing content. - Optional Research: Configure whether to perform web research (using the selected provider) to provide context for generation.
  • Batch Content Generation from Titles: Generate content for eligible folder notes, with optional research. The default destination is the sibling [foldername]_complete folder; a custom name can be configured. An occupied destination prevents the move, not the preceding generation. Generated and moved counts are reported separately.
  • Mermaid Auto-Fix Coupling: When Mermaid auto-fix is enabled, Mermaid-related workflows now automatically repair generated files or output folders after processing. This covers Process, Generate from Title, Batch Generate from Titles, Research & Summarize, Summarise as Mermaid, and Translate flows.

Utility Features

  • Summarise as Mermaid diagram:
- This feature allows you to summarize the content of a note into a Mermaid diagram. - The output language of the Mermaid diagram can be customized in the settings. - Mermaid Output Folder: Configure the folder where the generated Mermaid diagram files will be saved. - Translate Summarize to Mermaid Output: Optionally translate the generated Mermaid diagram content into the configured target language. - SUMM
  • Experimental Diagram Pipeline:
- Output choices open in a compact multi-select dropdown with a selection summary. Compatible formats appear first; other requests remain discoverable. Escape closes the menu without closing Obsidian settings, and the selected chart retains its production-rendered preview. - Drawnix preserves all explicit directed relationships without a fixed total or per-node limit. Identical claims are deduplicated; different predicates and reverse directions remain distinct. Overlapping exterior routes use separate tracks, disjoint routes reuse tracks, and labels receive separate measured rows. The canvas grows to retain relationships. Unlabeled, generic or redundant hierarchy arrows remain in metadata with reasons. Boxed relation text stays visible in PDF, including older cached SVG. Cross-branch arrows remain static and may detach after rearrangement in Drawnix. metadata.notemd.omittedRelations. - In 1.9.9: select multiple chart types and independent output formats per type. Use the checkbox to include a chart; click its name to include it and edit its formats. Hover or keyboard focus switches the production preview without saving. Compatible formats appear first; incompatible formats remain visible and disabled. Removing a type preserves its formats. Generation runs sequentially from a frozen selection; one failure does not stop other types, and cancellation stops pending types. Presentation export retains separate settings, dependencies and environment requirements; PPTX/MP4 remain in that workflow. - Diagram HTML (html-diagram) contains a zoomable SVG preview. Structured summary HTML (html-summary, formerly generic “HTML”) contains the specification's text, structure and evidence; it is not a second graphic format. “Editable HTML/SVG” remains an internal renderer name, not a promise of an in-browser diagram editor. Export the native source for native editing. - Multi-format generation saves selected files directly beside the source note (or directly in the configured custom folder, including the Vault root). Each type uses _ filenames, such as topic_drawnix.pdf and topic_flowchart.svg, with numeric suffixes on collision. Native sources use their own extension; structured summaries use .summary.html. Cache UUIDs are independent of delivery names; v1/v2 recovery records remain readable. Diagram intermediate files folder sets a shared Vault-relative location for .run.notemd-diagram.json recovery records, cached renders, staging files and .assets/ dependencies; leave it blank to use notemd_assert/ beside each source note. Changing this setting affects new batches only. Recovery records and attachments remain needed for retry and source visuals; they are not automatically purged. Save-artifact commands export immediately; preview commands use Export selected formats. Each type’s output formats share one generated specification. Partial failure or cancellation preserves successful files; preview/history and maintainer diagram.export.retry resume without another LLM request, including older subdirectory batches. Successful files are hash-checked and user edits are not overwritten. If no requested output is usable, the run attempts its effective renderer's default source and still reports unavailable requests. - The Diagram Gallery lists the executable semantic types, their default/compatible render targets, and production SVG/PNG previews. The Settings page and Notemd Workbench expose only executable types. Selecting a type renders one dynamic preview through Notemd's production renderer; ref/diagram-design is development-only and its original screenshots are never bundled or shown. - A spec-first diagram path can route note content into Mermaid, Obsidian JSON Canvas, Vega-Lite, HTML, editable HTML/SVG, Draw.io, Drawnix, or constrained circuitikz instead of forcing every case through Mermaid text generation. - Current Mermaid adapter coverage in the spec-first path includes mindmap, flowchart, sequenceDiagram, classDiagram, erDiagram, and stateDiagram-v2. - Current Vega-Lite adapter coverage in the spec-first path includes cartesian bar, line, area, and point charts, plus controlled scatter, pie, and table layout hints that map onto safe built-in Vega-Lite templates. - For 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. - Generated Mermaid artifacts are now validated with mermaid.parse before the renderer returns them, so malformed diagrams fail early instead of quietly leaking into preview/export steps. - Generated .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 fallback artifacts are now generated as dedicated .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. - Preview modals can now export rendered Mermaid/Canvas/Vega-Lite and SVG-companion output as .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. - Multi-panel previews preserve every Mermaid fence and every persisted Drawnix source visual. The top-level SVG, PNG, and PDF exports all ask for the source folder or a custom Vault-relative folder, then write one deterministic image per panel (for example 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 Mermaid visuals are embedded as sanitized SVG plus source text in the .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. - PNG/PDF raster export uses a canvas-safe intermediate SVG: Mermaid raster rendering disables HTML labels, foreignObject labels are converted to SVG text, external image references are removed while data-backed companions remain exportable, and multi-panel styles/definitions remain attached to each nested SVG canvas. Original SVG export remains vector-preserving. - Preview-only runs can also persist the raw generated artifact beside the current note using target-aware extensions and suffixes (_summ.md, _diagram.canvas, _diagram.json, _diagram.drawio, _diagram.drawnix, _diagram.tex), so validation and handoff do not require rerunning the LLM step. - Circuit diagrams are exposed as 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. - The existing Mermaid auto-fix path remains intact for Mermaid outputs only; non-Mermaid artifacts bypass the fixer instead of being pushed through incompatible post-processing. - Preview UI strings continue to follow the plugin UI locale (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.

The following renderer table describes legacy single-artifact filenames and individual preview exports. Multi-format batches use the sibling-file naming above.

| 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:
- Quickly fixes single-line math formulas delimited by single $ to standard double $$ blocks. - Single File: Process the current file via the sidebar button or command palette. - Batch Fix: Process all files in a selected folder via the sidebar button or command palette.
  • 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 deleting identified duplicates according to the Vault’s deletion preference. Shows progress during deletion.
  • Batch Mermaid Fix: Applies Mermaid and LaTeX syntax corrections to all Markdown files within a user-selected folder.
- Workflow Ready: Can be used as a standalone utility or as a step inside a custom one-click workflow button. - Error Reporting: Generates a mermaid_error_{foldername}.md report listing files that still contain potential Mermaid errors after processing. - Move Error Files: Optionally moves files with detected errors to a specified folder for manual review. - Smart Detection: Now intelligently checks files for syntax errors using mermaid.parse before attempting fixes, saving processing time and avoiding unnecessary edits. - Safe Processing: Ensures syntax fixes are applied exclusively to Mermaid code blocks, preventing accidental modification of Markdown tables or other content. Includes robust safeguards to protect table syntax (e.g., | :--- |) from aggressive debug fixes. - Deep Debug Mode: If errors persist after the initial fix, an advanced deep debug mode is triggered. This mode handles complex edge cases, including: - Comment Integration: Automatically merges trailing comments (starting with %) into the edge label (e.g., A -- Label --> B; % Comment becomes A -- "Label(Comment)" --> B;). - Malformed Arrows: Fixes arrows absorbed into quotes (e.g., A -- "Label -->" B becomes A -- "Label" --> B). - Inline Subgraphs: Converts inline subgraph labels to edge labels. - Reverse Arrow Fix: Corrects non-standard X <-- Y arrows to Y --> X. - Direction Keyword Fix: Ensures direction keyword is lowercase inside subgraphs (e.g., Direction TB -> direction TB). - Comment Conversion: Converts // comments into edge labels (e.g., A --> B; // Comment -> A -- "Comment" --> B;). - Duplicate Label Fix: Simplifies repeated bracketed labels (e.g., Node["Label"]["Label"] -> Node["Label"]). - Invalid Arrow Fix: Converts invalid arrow syntax --|> to the standard -->. - Robust Label & Note Handling: Improved handling for labels containing special characters (like /) and better support for custom note syntax (note for ...), ensuring artifacts like trailing brackets are cleanly removed. - Advanced Fix Mode: Includes robust fixes for unquoted node labels containing spaces, special characters, or nested brackets (e.g., 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"|). - Misplaced Pipe Fix: Corrects misplaced edge labels appearing before the arrow (e.g., >|"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
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.

Installation

Install

From Obsidian Marketplace (Recommended)

  1. Open Obsidian Settings → Community plugins.
  2. Ensure "Restricted mode" is off.
  3. Click Browse community plugins and search for "Notemd".
  4. Click Install.
  5. Once installed, click Enable.

Manual Installation

  1. Download the latest release assets from the GitHub Releases page. Each release also includes README.md for packaged reference, but manual installation only requires main.js, styles.css, and manifest.json.
  2. Navigate to your Obsidian vault's configuration folder: /.obsidian/plugins/.
  3. Create a new folder named notemd.
  4. Copy main.js, styles.css, and manifest.json into the notemd folder.
  5. Restart Obsidian.
  6. Go to Settings → Community plugins and enable "Notemd".

Configuration

Finding And Reusing Settings

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:

  • Diagram history retention limit: limits the Vault history index; pruning never deletes generated files.
  • Diagram preview export PPI: defaults to 300 and accepts 72-600; it controls PNG raster resolution only. SVG and PDF previews are generated from vector geometry, so their quality is independent of this setting.
  • Also export complete Mermaid visuals: optionally writes Mermaid source/SVG/manifest companions; Mermaid remains available in Drawnix previews even when this setting is disabled.
  • Select several chart types in one run and choose multiple output formats independently for each type. Unchecking a type retains its format preferences; leaving every type unchecked uses automatic analysis. Use the checkbox to include a type. Click its name to select it and edit its formats. Hover or keyboard focus changes the preview without saving. Escape closes the menu and returns focus.
  • CircuitikZ native compile environment (optional): checks an existing 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.
  • Advanced batch file selection: enables saved folder/file-selection profiles and rule previews.
  • Automatically create missing batch target folders: available after the user approves creation once. Existing non-empty folders still require one confirmation before each batch run.
  • Developer mode: reveals provider diagnostics and advanced file-selection tools intended for troubleshooting.

Diagram History

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.

Optional CircuitikZ Native Compilation

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.

Safe Batch Folder Handling

Before a title-generation batch starts, Notemd validates the selected folder once:

  • A missing folder can be created after confirmation. The dialog can remember permission to create future missing batch target folders automatically.
  • An existing empty folder is used directly.
  • An existing non-empty folder requires one confirmation for the whole batch, not one prompt per generated file.
  • A path that points to a file is rejected with an actionable message.
  • Non-interactive CLI calls return a recoverable outcome instead of silently creating or authorizing folders.
Access plugin settings via: Settings → Community Plugins → Notemd (Click the gear icon).

LLM Provider Configuration

  1. Active Provider: Select the LLM provider you want to use from the dropdown menu.
  2. Provider Settings: Configure the specific settings for the selected provider:
* API Key: Required for most cloud providers (e.g., OpenAI, Anthropic, DeepSeek, Qwen, Qwen Code, Doubao, Moonshot, Xiaomi MiMo, GLM, Z AI, MiniMax, Huawei Cloud MaaS, Baidu Qianfan, SiliconFlow, Google, Mistral, Azure OpenAI, OpenRouter, xAI, Groq, Together, AIHubMix, GitHub Models, PPIO, Fireworks, Nebius, Cerebras, Hugging Face, Vercel AI Gateway, Requesty). Not needed for Ollama. Optional for LM Studio, LiteLLM, New API, OVMS, and the generic OpenAI Compatible preset when your endpoint accepts anonymous or placeholder access. * Base URL / Endpoint: The API endpoint for the service. Defaults are provided, but you may need to change this for local models (LMStudio, Ollama), gateways (OpenRouter, Requesty, OpenAI Compatible), or specific Azure deployments. Required for Azure OpenAI. * Model: The specific model name/ID to use (e.g., 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. * API Version (Azure Only): Required for Azure OpenAI deployments (e.g., 2024-02-15-preview). * Advanced Settings: Secondary tuning controls such as 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. * Fetch Model List: Supported providers can query the endpoint for available model IDs without replacing manual model entry. The current bounded support covers selected official OpenAI-compatible /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/ or publishers//models/ 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

... (README truncated for length)

Chat with me