Wikilinks and Media

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: true or publish: 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.

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:

FeatureSyntaxStatus
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.