Wikilinks and Media
Wikilinks
Use Obsidian’s [[Page Name]] syntax to link between notes. karaoke-cms resolves wikilinks automatically at build time.
[[blog/hello-world]] → /blog/hello-world/
[[docs/getting-started]] → /docs/getting-started/
[[docs/getting-started|Getting Started]] → link text "Getting Started"
Rules:
- The target file must have
publish: true. If it does, the wikilink renders as a normal anchor tag pointing to the correct URL. - If the target file is not published (missing
publish: trueorpublish: false), the wikilink renders as plain text — not a broken link, not an error. The link text is preserved, but no<a>tag is emitted. - Wikilinks are resolved at build time. There is no runtime resolution.
Image embeds
Obsidian’s ![[image.png]] embed syntax works for images stored in your vault. The image is served as a static asset.
![[img/hero.jpg]]
![[screenshots/demo.png]]
The path is relative to the vault root. Place image files anywhere under your vault directory and reference them with their vault-relative path.
To serve an image publicly, add publish: true to its frontmatter if it is a Markdown file, or simply place it in the vault — image files (.jpg, .png, .gif, .webp, .svg) are served as static assets without requiring frontmatter.
External links
Wikilinks are for internal vault navigation. For external URLs, use standard Markdown link syntax:
[Astro documentation](https://docs.astro.build)
[GitHub](https://github.com)
Do not use [[]] for external URLs — that syntax is for vault-internal links only.
Limitations
The following Obsidian features are not supported in the current version:
| Feature | Syntax | Status |
|---|---|---|
| Full-page wikilinks | [[page]] | Supported |
| Aliased wikilinks | [[page|Display Text]] | Supported |
| Image embeds | ![[image.png]] | Supported |
| Block references | [[page#^blockid]] | Not supported |
| Section transclusions | ![[page#Heading]] | Not supported |
| File transclusions | ![[other-note]] | Not supported |
Only full-page links and image embeds are resolved. Block-level and section-level references are ignored and render as plain text.