MrDanRave320 downloadsSemantic auto-linking: underlines text that matches a note title and offers one-click wiki-link insertion.
Surfaces the links you would have made by hand. As you write, Auto Linker quietly underlines the words that match your other notes and offers a one‑click wiki‑link — ranked by a confidence score (not a blind text match), so you get to choose the useful links and not the noise.
This software was vibe-coded.
Auto Linker always suggests and never links on its own. It also remembers your decisions to improve its suggestions over time using a weighted model. Most "auto link" tools do a binary match: a word either equals a note title or it doesn't - Auto Linker instead computes a confidence score for every candidate and only shows the ones that clear a threshold you control. That score blends several signals:
AND reads differently from and; ALL‑CAPS / TitleCase get a boost, lowercase function words a penalty.Every candidate follows the same pipeline. Steps 5–8 only nudge the score up or down — a note is eliminated only at the steps marked ⤫.
802.1q), noting where phrase vs anchor separators fall.[[links]], #tags, inline `code` and ``` fenced blocks are excluded up front.AND / Database gets a boost and a lowercase common word a penalty; neutral for multi‑word spans.In short, a note drops out when it shares no word (3), sits in a skipped/rejected/self region (2, 4), scores too low (9), or loses to an overlapping better match (10).
802.1Q, Topic : Subtopic, client-server, and path‑like titles via configurable separator rules.method 3 - CAD suggests Payment method 3 - CAD), scored by how much of the title it covers.databse still finds Database; bounded so it stays quiet.kruger → Dunning‑Kruger).[[Dinosaur|raptor]] once and raptor can suggest Dinosaur thereafter, given a confident score.Ctrl/Cmd + ✓ inserts a bare [[Note]] (no display alias); Shift + ✓ approves every repeat of that suggestion in the note at once.[[existing links]], #tags, inline `code` and ``` fenced blocks.Everything runs locally. The index, scores, reject list, learned aliases, and the optional embedding cache all stay on your device — no telemetry, no external API. The only network event in the whole plugin is the optional, one‑time download of the embedding model when you turn the semantic tier on (it carries no note data, and can be avoided entirely by pointing at a model you already have).
Turning on Semantic meaning loads a small embedding model that re‑ranks suggestions by meaning. When you enable it you choose:
Xenova/paraphrase-multilingual-MiniLM-L12-v2, ~50 MB, once), orUse Settings → "Index vault for semantics" to pre‑compute every note's "meaning fingerprint" so meaning‑based ranking is ready across the whole vault immediately.
The semantic tier re‑ranks literal candidates — it refines what the text match already found. It does not discover links for text with no word in common with a note title (e.g. typing "star wars" won't surface a
Sci-Finote). Add an alias for that.
Semantic suggestions have a dotted underline.
Rule‑based stemming covers Latin/Cyrillic scripts; Semitic Hebrew/Arabic morphology is left to the multilingual embedding model rather than faked.
Manually: copy main.js, manifest.json, and styles.css (if present) into <vault>/.obsidian/plugins/auto-linker/, then enable it in Settings → Community plugins.
Via BRAT: add this repository as a beta plugin, then enable Auto Linker in the Community Plugins list.
[[Note|text]] or ✗ to dismiss.Ctrl/Cmd + ✓ inserts a bare [[Note]] instead of [[Note|text]].Shift + ✓ approves every repeat of that suggestion in the current note.npm install
npm run dev # watch mode — pairs with the Hot-Reload plugin
npm run build # production build → main.js
Built with esbuild; the embedding backend (@xenova/transformers) is bundled and lazy‑loaded only when the semantic tier is enabled.