glyph-miO 2.3

unlisted

by Floke Studio

Metadata Intelligence for Obsidian — tags, summaries, note metadata (offline + optional Ollama).

1 starsUpdated 29d agoGPL-3.0
View on GitHub

Obsidian

glyph-miO 2.8.0

Metadata Intelligence for Obsidian
Summaries · tag suggestions · offline-first analysis

glyph-mi core · Site · README.ru · glyph-sO · glyph-mi


User section

What is glyph-miO?

glyph-miO is an Obsidian community plugin that analyzes the active note and helps you organize knowledge faster:

  • Extractive summaries — a compact callout block inserted at the end of the note
  • Tag suggestions — ranked by relevance to title, headings, and body, with scores/tooltips
  • Offline by default — no cloud, no API keys; optional local Ollama enhancement

It pairs naturally with glyph-sO: search finds notes across the vault; glyph-miO understands the note you’re working on right now. Long-term UI chrome aims to share a glyph-ui styling kit with sO.

What’s new in 2.8.0

  • Sidebar panel — MI panel docks in the right rail (ItemView); set panelMode: modal for the legacy centered modal
  • Vault batch analysis — command Glyph: analyze vault reports untagged notes and tag suggestions
  • Frontmatter tags — setting Tag write mode: inline (default) or frontmatter (YAML tags merge)
  • Summary history — last 10 summary applies stored; Glyph: rollback last summary restores the previous file body
  • Vault tag frequency — tag chip tooltips show how many notes in the vault use each tag
  • Servicespanel-view, frontmatter, vault-cache, batch-analyze, summary-history + vitest coverage

What’s new in 2.7.3

  • Theme-safe UI — CSS uses Obsidian variables only (no hardcoded hex fallbacks)
  • 2.8.0 follow-ups — sidebar panel, batch vault analysis, frontmatter tags, glyph-mi notes vendor

What’s new in 2.7.2

  • replace-latest no longer stacks --- — replacing a summary strips the previous horizontal rule before the marker, so repeated Insert summary does not accumulate separators at the end of the note
  • Tag scoring already weights note title highest (+16 vs headings +10); docs match services/metadata.js

What’s new in 2.7.1

  • Safer metadata cache key — always includes vault path plus mtime, size, and a short content hash (documented in services/metadata.js)
  • Summary mode none / off — preview in the MI panel only; write when you Insert / run summarize explicitly
  • Ollama timeout setting — configurable seconds (default 12), used for generate calls
  • Tag explainability — relevance % on chips + tooltip (title / heading / body / frontmatter)
  • Ollama status — status bar + panel pill (online / offline fallback / disabled)
  • Optional diff preview — Apply / Cancel modal before insert or replace
  • RU labels — commands and settings follow Obsidian language when set to Russian
  • Adapter stubservices/glyph-mi-notes-adapter.js ready to consume glyph-mi notes without breaking the local offline path

What’s in 2.7

Service-based architecture — core logic in focused modules:

ServiceResponsibility
services/panel-view.jsSidebar ItemView + shared panel UI mount
services/frontmatter.jsInline vs YAML tag writes (processFrontMatter)
services/vault-cache.jsBackground vault index (tags, title, word count)
services/batch-analyze.jsVault-wide untagged scan + suggestions
services/summary-history.jsLast 10 summary applies + rollback
services/metadata.jsWeighted tag scoring, stop-words, cache key
services/summary.jsSentence extraction, block formatting, lifecycle modes
services/i18n.jsEN/RU strings for commands and settings
services/glyph-mi-notes-adapter.jsLocal analyzeNote (glyph-mi notes stub)

Weighted metadata scoring — tags ranked by:

  • Matches in the note title (highest weight)
  • Frequency in headings
  • Density in body paragraphs
  • Existing frontmatter tags (boost)

Summary lifecycle modes:

ModeBehavior
appendEach summarize/insert adds a new <!-- glyph-miO-summary --> block
replace-latestUpdates the most recent summary block in place (default)
none / offDo not auto-write; show draft in the panel; insert only via Insert / summarize command

Install

  1. Download the latest release from Releases (or clone main).
  2. Extract into your vault:
.obsidian/plugins/glyph-mi-o/
├── manifest.json
├── main.js
├── styles.css
└── services/
    ├── metadata.js
    ├── summary.js
    ├── i18n.js
    ├── panel-view.js
    ├── frontmatter.js
    ├── vault-cache.js
    ├── batch-analyze.js
    ├── summary-history.js
    └── glyph-mi-notes-adapter.js
  1. Enable glyph-miO in Settings → Community plugins.

Commands

Command (EN)Command (RU)What it does
Glyph: open MI panelGlyph: открыть панель MIOpen sidebar MI panel (or modal if panelMode: modal)
Glyph: analyze vaultGlyph: анализ vaultScan vault for untagged notes and suggestions
Glyph: rollback last summaryGlyph: откатить последний пересказRestore note body from summary history
Glyph: summarize noteGlyph: пересказ заметкиInsert or update the summary block (respects mode + diff preview)
Glyph: jump to MI summaryGlyph: перейти к саммари MICursor jumps to the summary marker
Glyph: analyze active noteGlyph: анализ активной заметкиRun analysis without opening the panel
Glyph: suggest tagsGlyph: предложить тегиShow top-ranked tags with relevance %

Settings

SettingDescription
Enable OllamaTry local LLM for JSON-structured summaries (default: on)
Ollama URLBase URL, default http://127.0.0.1:11434
ModelOllama model name, default llama3.2
Ollama timeout (seconds)Abort generation after N seconds (default 12), then offline fallback
Summary block modeappend, replace-latest, none, or off
Diff preview before ApplyShow before/after modal (Apply / Cancel) before writing
Tag write modeinline (#tags in body / summary block) or frontmatter (YAML tags)
Panel modesidebar (default) or modal (legacy centered panel)

How analysis works

  1. Offline path (always available): tokenize → score tags with reasons → pick key sentences → format marked block.
  2. Ollama path (optional): if Ollama responds within the configured timeout, request JSON summary + tags. On failure or timeout, fall back to the offline algorithm.

Architecture note (local vs glyph-mi)

MI analysis uses services/glyph-mi-notes-adapter.js, which prefers the vendored vendor/glyph-mi-notes.cjs pipeline from glyph-mi and falls back to local services/* when needed. Shared glyph-ui styling with glyph-sO remains a parallel goal.

Example summary block

---
<!-- glyph-miO-summary -->
> [!summary] Glyph MI-O
> This note covers project planning for Q3, including milestone
> definitions and resource allocation across three teams.

#projects #planning #q3

GitHub / Dev section

Architecture (2.8.0)

main.js                              # Plugin UI, Ollama client, commands, status bar
services/panel-view.js               # ItemView sidebar + mountGlyphMiOPanel
services/frontmatter.js              # applyTagsToFrontmatter
services/vault-cache.js              # VaultCache index + debounced rebuild
services/batch-analyze.js            # analyzeVault
services/summary-history.js          # pushHistory / rollbackLast
services/metadata.js                 # computeMetadataCached, cache key, tagDetails
services/summary.js                  # extractiveSummary, buildSummaryBlock, none/off
services/i18n.js                     # EN/RU labels
services/glyph-mi-notes-adapter.js   # local analyzeNote
styles.css                           # panel, sidebar view, status, diff modal

Metadata cache key

keyForDoc(file, body) is always:

${path}|${mtime}|${size}|${contentHash}

Path is mandatory (collision-safe across notes). See JSDoc in services/metadata.js.

Ollama integration

  • Health check: GET /api/tags
  • Generation: POST /api/generate with format: "json"
  • Timeout: settings Ollama timeout (seconds) (default 12)
  • Status: status bar item + MI panel pill
  • Graceful fallback to extractiveSummary() on any failure

Related repositories

RepoRole
glyph-miUniversal MI core (Senza, Cultiva, future notes)
glyph-sOFull-text search for Obsidian
glyph-sShared search engine

License

GPL-3.0 · Floke Studio

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.