Metadata Intelligence for Obsidian
Summaries · tag suggestions · offline-first analysis
glyph-mi core · Site · README.ru · glyph-sO · glyph-mi
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.
- Sidebar panel — MI panel docks in the right rail (
ItemView); setpanelMode: modalfor 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) orfrontmatter(YAMLtagsmerge) - 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
- Services —
panel-view,frontmatter,vault-cache,batch-analyze,summary-history+ vitest coverage
- 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
replace-latestno 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 (
+16vs headings+10); docs matchservices/metadata.js
- 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 stub —
services/glyph-mi-notes-adapter.jsready to consume glyph-minoteswithout breaking the local offline path
Service-based architecture — core logic in focused modules:
| Service | Responsibility |
|---|---|
services/panel-view.js |
Sidebar ItemView + shared panel UI mount |
services/frontmatter.js |
Inline vs YAML tag writes (processFrontMatter) |
services/vault-cache.js |
Background vault index (tags, title, word count) |
services/batch-analyze.js |
Vault-wide untagged scan + suggestions |
services/summary-history.js |
Last 10 summary applies + rollback |
services/metadata.js |
Weighted tag scoring, stop-words, cache key |
services/summary.js |
Sentence extraction, block formatting, lifecycle modes |
services/i18n.js |
EN/RU strings for commands and settings |
services/glyph-mi-notes-adapter.js |
Local 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:
| Mode | Behavior |
|---|---|
append |
Each summarize/insert adds a new <!-- glyph-miO-summary --> block |
replace-latest |
Updates the most recent summary block in place (default) |
none / off |
Do not auto-write; show draft in the panel; insert only via Insert / summarize command |
- Download the latest release from Releases (or clone
main). - 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
- Enable glyph-miO in Settings → Community plugins.
| Command (EN) | Command (RU) | What it does |
|---|---|---|
| Glyph: open MI panel | Glyph: открыть панель MI | Open sidebar MI panel (or modal if panelMode: modal) |
| Glyph: analyze vault | Glyph: анализ vault | Scan vault for untagged notes and suggestions |
| Glyph: rollback last summary | Glyph: откатить последний пересказ | Restore note body from summary history |
| Glyph: summarize note | Glyph: пересказ заметки | Insert or update the summary block (respects mode + diff preview) |
| Glyph: jump to MI summary | Glyph: перейти к саммари MI | Cursor jumps to the summary marker |
| Glyph: analyze active note | Glyph: анализ активной заметки | Run analysis without opening the panel |
| Glyph: suggest tags | Glyph: предложить теги | Show top-ranked tags with relevance % |
| Setting | Description |
|---|---|
| Enable Ollama | Try local LLM for JSON-structured summaries (default: on) |
| Ollama URL | Base URL, default http://127.0.0.1:11434 |
| Model | Ollama model name, default llama3.2 |
| Ollama timeout (seconds) | Abort generation after N seconds (default 12), then offline fallback |
| Summary block mode | append, replace-latest, none, or off |
| Diff preview before Apply | Show before/after modal (Apply / Cancel) before writing |
| Tag write mode | inline (#tags in body / summary block) or frontmatter (YAML tags) |
| Panel mode | sidebar (default) or modal (legacy centered panel) |
- Offline path (always available): tokenize → score tags with reasons → pick key sentences → format marked block.
- Ollama path (optional): if Ollama responds within the configured timeout, request JSON summary + tags. On failure or timeout, fall back to the offline algorithm.
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.
---
<!-- 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 #q3main.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
keyForDoc(file, body) is always:
${path}|${mtime}|${size}|${contentHash}
Path is mandatory (collision-safe across notes). See JSDoc in services/metadata.js.
- Health check:
GET /api/tags - Generation:
POST /api/generatewithformat: "json" - Timeout: settings Ollama timeout (seconds) (default 12)
- Status: status bar item + MI panel pill
- Graceful fallback to
extractiveSummary()on any failure
| Repo | Role |
|---|---|
| glyph-mi | Universal MI core (Senza, Cultiva, future notes) |
| glyph-sO | Full-text search for Obsidian |
| glyph-s | Shared search engine |
GPL-3.0 · Floke Studio