Obsidian Syntax Reference
Every Obsidian-flavoured Markdown feature supported by the Zer0-Mistakes theme and how it renders on GitHub Pages.
Obsidian Syntax Reference
Everything in this reference is handled by either assets/js/obsidian-wiki-links.js (client-side, default GH Pages build) or _plugins/obsidian_links.rb (server-side, opt-in for forks that build with vanilla Jekyll). Both produce equivalent HTML.
Wiki-links
| Syntax | Renders as |
|---|---|
[[Page Title]] |
<a class="wiki-link" href="/permalink/">Page Title</a> |
[[Page Title\|Custom text]] |
Link with Custom text as the visible label. |
[[Page Title#Section]] |
Link with #section URL fragment (kramdown-style anchor). |
[[Page Title^block-id]] |
Block references degrade to a plain link to Page Title. |
[[Missing Page]] |
<span class="wiki-link wiki-link-broken"> — a non-navigating broken-link marker with a tooltip (a click can’t scroll to the top). |
Resolution is case-insensitive and tolerant of extra whitespace. Lookup keys include each document’s title, file basename, and any entries in the aliases: frontmatter array. The first match wins; collisions are deterministic across builds because Liquid iterates collections in a stable order.
Embeds
| Syntax | Renders as |
|---|---|
![[diagram.png]] |
<img src="/assets/images/notes/diagram.png"> |
![[diagram.png\|320]] |
Same, with width="320" |
![[Note Title]] |
Bootstrap card containing the note’s excerpt + a link back to the note |
![[/absolute/path/img.svg]] |
Honors absolute paths verbatim |
The default attachment folder is assets/images/notes/, matching the attachmentFolderPath set in .obsidian/app.json so Obsidian’s “paste image” workflow drops files in the right place automatically.
Callouts
> [!note] Optional title
> Body of the callout — supports **markdown**, lists, code, etc.
Maps to <div class="alert alert-… obsidian-callout obsidian-callout-…">. Type → Bootstrap alert variant:
| Obsidian type | Bootstrap variant | Icon |
|---|---|---|
note, info, todo, question, help, faq |
primary / info |
document / info |
tip, hint, success, check, done |
success |
lightbulb / check |
warning, caution, attention, important |
warning |
exclamation triangle |
failure, danger, error, bug |
danger |
shield / bug |
abstract, summary, tldr, example, quote, cite |
secondary |
varies |
Fold markers turn the callout into an accessible disclosure: the title becomes a keyboard-operable <button aria-expanded> with a chevron, and the body shows/hides on click (Enter/Space).
> [!warning]+— foldable, expanded by default.> [!warning]-— foldable, collapsed by default (data-collapsed="true"and the body ishiddenuntil toggled).
A callout without a fold marker renders as a static heading (not a button). Unknown types fall back to the note variant, never silently dropped.
Live example
An expanded foldable callout (the + marker) starts open:
[!tip]+ Foldable, expanded by default This
tipcallout starts open. Click the title (or press Enter/Space) to collapse it — the body toggles and the title’saria-expandedflips.
A collapsed one (the - marker) starts closed — activate the title to reveal it:
[!note]- Foldable, collapsed by default This
notecallout starts collapsed:data-collapsed="true"and the body ishiddenuntil you activate the title to reveal this text.
Tags
Inline tags like #obsidian or #fixture/example are linked to the existing tags index page. Hierarchical tags use forward slashes and preserve their path. Code spans (`#not-a-tag`) and fenced code blocks are skipped — the resolver explicitly excludes those nodes from the rewrite walk.
Frontmatter tags: arrays are unchanged; they continue to drive Jekyll’s existing tag aggregation.
Frontmatter ↔ Properties
Obsidian’s Properties view shows the same YAML frontmatter Jekyll already parses. Special mappings:
| Obsidian key | Jekyll key | Behavior |
|---|---|---|
aliases |
redirect_from (via jekyll-redirect-from) |
Old URLs redirect to the new permalink. |
tags (inline #tag or YAML array) |
tags: collection |
Drives /tags/ index. |
cssclass |
ignored on site | Obsidian-only styling hint. |
publish |
ignored | Use Jekyll’s published: false to suppress. |
Backlinks panel
Every page rendered with layout: note automatically gets an Linked mentions panel listing every page whose body links to it (either by markdown URL match or [[…]] wiki-link reference). Other layouts can opt in with backlinks: true in their frontmatter.
The panel is a server-side Liquid include (_includes/content/backlinks.html) — no JavaScript required, fully indexable by search engines.
What is not (yet) supported
| Feature | Status | Workaround |
|---|---|---|
.canvas files |
Excluded from the build | Export as PNG and embed |
Excalidraw .excalidraw.md |
Excluded from the build | Embed exported PNG/SVG |
| Dataview queries | Obsidian-only | Use Liquid loops on the site |
Live block references (^block-id) |
Degrades to plain link | Use heading anchors instead |
| Interactive global graph view | Available at /docs/obsidian/graph/ | Force-directed cytoscape view of every wiki-link |
These are all candidates for a v2 follow-up. None of them break a build when present in source — they are simply hidden from the published site or rendered without the interactive layer.
See also
- [[Obsidian Vault Integration]]
- [[Getting Started with the Obsidian Vault]]
- [[Obsidian Authoring Workflow]]
- [[Obsidian Graph View]]
- [[Obsidian Integration Troubleshooting]]
- [[front-matter]]
Linked mentions 5
-
Obsidian Authoring Workflow
docsFrom an empty Obsidian note to a published page on GitHub Pages — the daily loop.
-
Getting Started with the Obsidian Vault
docsOpen the Zer0-Mistakes repo as an Obsidian vault, install recommended plugins, and learn the frontmatter conventions.
-
Obsidian Graph View
docsInteractive force-directed map of every wiki-link in the site, mirroring Obsidian's local graph.
-
Obsidian Vault Integration
docsEdit Zer0-Mistakes content as an Obsidian vault and have it render identically on GitHub Pages.
-
Obsidian Resolver — Performance & Caching
docsHow the zer0-mistakes Obsidian wiki-link resolver caches the page-URL index and short-circuits rewrites for measurable build-time improvements on large vaults.