Obsimini
Lightweight wiki navigation for Markdown knowledge bases in VS Code. Turns a
folder of interlinked .md files into something you can actually browse:
clickable [[wiki links]], hover previews, a backlinks panel, source-reference
jumps, status-tag highlighting, and Obsidian-style text marks — with no lock-in. Optional Gemini-powered
translation uses your own API key.
Built for repos that use [[...]] links between notes, meeting summaries,
decision logs, and reference docs.
Features
📖 Wiki View (reading mode)
Run Obsimini: Open Wiki View (or click the 📖 button in a Markdown editor's
title bar) to open a self-contained reading tab in the current editor group.
Clicking a [[link]] navigates within the tab — with Back / Forward
buttons — so you can browse your wiki like a mini website, independent of VS
Code's preview settings. Source references open the cited file in an editor, and
status labels are color-badged.
This is the most convenient way to read and navigate; the editor features below
are for writing and cross-referencing.
✏️ Markdown editing
Obsimini works with normal VS Code Markdown editors: edit .md files as usual,
then use the Wiki View button to switch to its reading and navigation surface. In
Wiki View, double-click a rendered block (heading, paragraph, list, code block,
etc.) to edit its raw Markdown in place. The insert toolbar provides common
Markdown formatting, wiki-link, image, and table shortcuts. Changes are written
only when you choose Apply (or press Ctrl/Cmd+Enter); Cancel (or Esc)
discards them.
✨ Highlights and calmer reading layout
Both the built-in Markdown preview and Wiki View support Obsidian-style
highlights:
This is ==important text==.
This is also <mark>important text</mark>.
==…== is Obsidian-flavoured Markdown. <mark>…</mark> is standard semantic
HTML and is useful when the same note is also rendered elsewhere. Wiki View
accepts only this safe HTML tag (rather than arbitrary raw HTML). Quotes render
as softly coloured callout-style blocks, and tables, headings, code blocks, and
images have a clearer visual hierarchy.
When editing a block in Wiki View, select text and use == Mark for
Obsidian syntax or <mark> for the semantic HTML form in the insert toolbar.
∑ KaTeX math
Both readers render inline and display math with KaTeX:
The solution is $x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$.
$$
\int_0^1 x^2\,dx = \frac{1}{3}
$$
Invalid formulas remain visible as escaped source with an error indicator, so a
rendering error never turns note content into executable HTML.
💬 Obsidian Callouts
Both readers recognise Obsidian-style callouts. Add - for an initially
collapsed callout or + for an initially expanded, user-toggleable one:
> [!WARNING]- Deployment note
> Check the migration status before releasing.
📈 Mermaid diagrams
Wiki View renders fenced mermaid diagrams offline. If parsing fails, it keeps
the source code visible with an error message.
```mermaid
flowchart LR
Draft --> Review --> Publish
```
🔖 In-page section links
Wiki View supports ordinary Markdown fragment links. Headings automatically get
a stable fragment ID, so a link such as [Scope](#scope-of-this-document)
scrolls to that section. For a short, explicit ID (for example #b2), add a
standalone portable anchor directly above the target section:
<a id="b2"></a>
### B2 — Headset microphone audio
The Wiki View Back and Forward buttons also remember in-page section
jumps and restore the exact prior reading position.
🌐 Gemini translation
Translation is opt-in and uses your own Gemini API key. Run
Obsimini: Configure Translation Service from the Command Palette and paste
a key created in Google AI Studio.
The key is stored in VS Code SecretStorage, never in settings.json, the
workspace, or the Wiki View webview.
Run Obsimini: Toggle Hover Translation to enable or disable it. In Wiki
View, leave the pointer on a word or phrase for three seconds to show a
translation popup.
Run Obsimini: Set Translation Target Language to choose Traditional
Chinese, English, Japanese, Korean, or enter another language name/code.
Run Obsimini: Translate Current Section in a Markdown editor to translate
the heading section containing the cursor into a new Markdown tab. In Wiki
View, it translates the heading section where the pointer was last located.
Select text in any text editor or Wiki View, then run Obsimini: Translate Selected Text. Wiki View and all regular text editors show the result beside
the selection in a floating original/translation comparison view, where it can
be scrolled, copied, or exported as a Markdown/text file.
Run Obsimini: Translate Clipboard Contents to translate text copied from
any app. The same original/translation floating view opens at the cursor in a
text editor or in the active Wiki View.
Clipboard actions are also available without opening the Command Palette:
| Shortcut |
Action |
Ctrl+Alt+Shift+T |
Translate clipboard |
Ctrl+Alt+Shift+A |
Ask AI about clipboard |
Ctrl+Alt+Shift+E |
Explain clipboard |
Ctrl+Alt+Shift+R |
Rephrase clipboard |
Ctrl+Alt+Shift+S |
Summarize clipboard |
On macOS, replace Ctrl with Cmd. All five actions use the configured
Gemini key and target language; the generated result is shown alongside the
original text and can be copied or exported.
The default model is gemini-3.5-flash-lite, Gemini's low-cost Flash-Lite model.
🔗 Clickable [[wiki links]]
[[topics/motoko-overview]] and [[page|alias]] become clickable in both the
editor and the built-in Markdown preview (Ctrl/Cmd+Shift+V). Links resolve
two ways so mixed conventions keep working:
- verbatim path under your wiki root —
[[topics/page]] → topics/page.md
- otherwise by unique file name —
[[page]] → the one page.md in the tree
Unresolved links show in red in the preview so you can spot broken references.
Tip — where preview links open: clicking a [[link]] in the preview
follows VS Code's own setting markdown.preview.openMarkdownLinks. The default
"inPreview" navigates within the preview pane (great for browsing); set it to
"inEditor" if you'd rather each click open a real editor tab.
👁 Hover previews
Hover a [[link]] to see the top of the target page (YAML frontmatter is
skipped). Configure how many lines with obsimini.hover.previewLines.
↩ Backlinks panel
An Explorer view lists every page that links to the file you're viewing, with
the exact line — click to jump. Great for seeing how a topic is referenced.
📎 Source-reference jumps
If your notes cite sources like [來源: meeting-2026-07-09 @ 05:23] or
[source: report.pdf], Obsimini makes them clickable and opens the matching
file from a folder you choose (e.g. a meeting_transcript/ directory). Fully
regex-configurable — see obsimini.sourceLink.*.
🏷 Status-tag highlighting
Labels such as ✅ decided, 🟡 pending, 🔄 evolving, ❌ dropped get a
colored badge so decision tables are scannable. Labels and colors are
configurable via obsimini.statusBadges (set to {} to disable).
Settings
| Setting |
Default |
Description |
obsimini.wikiRoot |
"" (workspace root) |
Folder containing your wiki; links resolve against it. |
obsimini.linkExtension |
.md |
Extension appended to link targets. |
obsimini.hover.previewLines |
30 |
Lines shown in hover previews. |
obsimini.statusBadges |
see below |
Label → hex-color map for highlighting. |
obsimini.sourceLink.enabled |
true |
Enable source-reference jumps. |
obsimini.sourceLink.pattern |
[來源: … @ …] |
Regex; capture group 1 = target file name. |
obsimini.sourceLink.targetFolders |
["meeting_transcript", "."] |
Folders searched for source files. |
obsimini.attachmentFolder |
assets |
Folder under the wiki root for locally inserted images. |
obsimini.translation.enabled |
false |
Enable pointer-rest translation in Wiki View. Toggle it with the Command Palette. |
obsimini.translation.targetLanguage |
zh-TW |
Target language code or name sent to Gemini. |
obsimini.translation.hoverDelay |
3000 |
Pointer-rest delay in milliseconds before translating. |
obsimini.translation.model |
gemini-3.5-flash-lite |
Gemini model used for translation. |
Example project settings (.vscode/settings.json):
{
"obsimini.wikiRoot": "wiki",
"obsimini.sourceLink.targetFolders": ["meeting_transcript"],
"obsimini.translation.targetLanguage": "zh-TW",
"obsimini.translation.hoverDelay": 3000
}
Default status badges:
{
"✅ decided": "#3fb950",
"🟡 pending": "#d29922",
"🔄 evolving": "#58a6ff",
"❌ dropped": "#f85149"
}
Roadmap
- Graph view — an interactive node-link map of your wiki (planned for a
future release).
Development
npm install
npm run watch # or: npm run build
# press F5 in VS Code to launch an Extension Development Host
Package a .vsix: npm run package.
License
MIT