<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Vuepress on Janik von Rotz</title>
    <link>https://janikvonrotz.ch/tags/vuepress/</link>
    <description>Recent content in Vuepress on Janik von Rotz</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Fri, 10 Jul 2026 10:23:44 +0200</lastBuildDate>
    <atom:link href="https://janikvonrotz.ch/tags/vuepress/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Obsidian and Quartz</title>
      <link>https://janikvonrotz.ch/2026/07/10/obsidian-and-quartz/</link>
      <pubDate>Fri, 10 Jul 2026 10:23:44 +0200</pubDate>
      <guid>https://janikvonrotz.ch/2026/07/10/obsidian-and-quartz/</guid>
      <description>&lt;p&gt;Warning: I am a heavily invested &lt;a href=&#34;https://obsidian.md/&#34;&gt;Obsidian&lt;/a&gt; user. I am using Obsidian to interact with wikis, websites, this blog, databases and the file system. Most of my vaults are published to the web. To do so I am using &lt;a href=&#34;https://vuepress.vuejs.org/&#34;&gt;Vuepress&lt;/a&gt; for most projects. In this blog I am exploring publishing with &lt;a href=&#34;https://quartz.jzhao.xyz/&#34;&gt;Quartz&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Vuepress does not know about Obsidian. To some degree this is good. It makes sure that the two systems are decoupled.&lt;/p&gt;&#xA;&lt;h2 id=&#34;preprocess-for-vuepress&#34;&gt;Preprocess for Vuepress&lt;/h2&gt;&#xA;&lt;p&gt;However, in order to publish the content of an Obsidian vault with Vuepress I had to to solve many problems:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Convert Wiki-Links to Markdown-Links&lt;/li&gt;&#xA;&lt;li&gt;Rename attachment files&lt;/li&gt;&#xA;&lt;li&gt;Generate &lt;code&gt;.svg&lt;/code&gt; from &lt;code&gt;.canvas&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Generate a sitemap.xml&lt;/li&gt;&#xA;&lt;li&gt;Append backlinks to markdown files&lt;/li&gt;&#xA;&lt;li&gt;Append edit link to markdown files&lt;/li&gt;&#xA;&lt;li&gt;Build a glossary of all file titles&lt;/li&gt;&#xA;&lt;li&gt;Generate output of &lt;code&gt;.bases&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Prepend frontmatter metadata&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The most prominent project is the &lt;a href=&#34;https://wiki.mint-system.ch/&#34;&gt;Wiki Mint System&lt;/a&gt;. The &lt;a href=&#34;https://github.com/Mint-System/Wiki/blob/main/build.js&#34;&gt;build.js&lt;/a&gt; prepares the content for Vuepress.&lt;/p&gt;&#xA;&lt;h2 id=&#34;checking-out-quartz&#34;&gt;Checking out Quartz&lt;/h2&gt;&#xA;&lt;p&gt;The promise of Quartz is that Obsidian is a first citizen. Quartz supports publishing an Obsidian vault and completes Obsidian plugins with its own plugins.&lt;/p&gt;&#xA;&lt;p&gt;I want to walk you through my trial of publishing the Wiki Mint System with Quartz.&lt;/p&gt;&#xA;&lt;p&gt;It took my some time to understand that Quartz is not a standalone cli tool. It cannot simply installed, instead you clone the Quartz repo and integrate your content into the repo. Here are the commands to scaffold a new project:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd ~&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone https://github.com/jackyzha0/quartz.git&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd quartz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npm i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npx quartz create&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The last command starts a wizard. I answered as followed:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Choose a template for your Quartz configuration: Obsidian&lt;/li&gt;&#xA;&lt;li&gt;Choose how to initialize the content in &lt;code&gt;/home/janikvonrotz/quartz/content&lt;/code&gt;: Copy an existing folder&lt;/li&gt;&#xA;&lt;li&gt;Enter the full path to existing content folder: &lt;code&gt;/home/janikvonrotz/Wiki&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Enter the base URL for your Quartz site: wiki.mint-system.ch&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Then the Quartz started installing plugins:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Found 45 uninstalled plugin(s) in config:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  created-modified-date — github:quartz-community/created-modified-date&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  syntax-highlighting — github:quartz-community/syntax-highlighting&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  obsidian-flavored-markdown — github:quartz-community/obsidian-flavored-markdown&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  github-flavored-markdown — github:quartz-community/github-flavored-markdown&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  table-of-contents — github:quartz-community/table-of-contents&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  crawl-links — github:quartz-community/crawl-links&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  description — github:quartz-community/description&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  latex — github:quartz-community/latex&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  citations — github:quartz-community/citations&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  hard-line-breaks — github:quartz-community/hard-line-breaks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ox-hugo — github:quartz-community/ox-hugo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  roam — github:quartz-community/roam&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  remove-draft — github:quartz-community/remove-draft&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  explicit-publish — github:quartz-community/explicit-publish&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  unlisted-pages — github:quartz-community/unlisted-pages&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  encrypted-pages — github:quartz-community/encrypted-pages&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  stacked-pages — github:quartz-community/stacked-pages&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  alias-redirects — github:quartz-community/alias-redirects&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  content-index — github:quartz-community/content-index&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  favicon — github:quartz-community/favicon&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  og-image — github:quartz-community/og-image&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  cname — github:quartz-community/cname&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  canvas-page — github:quartz-community/canvas-page&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  content-page — github:quartz-community/content-page&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  folder-page — github:quartz-community/folder-page&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  tag-page — github:quartz-community/tag-page&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  explorer — github:quartz-community/explorer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  graph — github:quartz-community/graph&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  search — github:quartz-community/search&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  backlinks — github:quartz-community/backlinks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  article-title — github:quartz-community/article-title&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  content-meta — github:quartz-community/content-meta&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  tag-list — github:quartz-community/tag-list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  page-title — github:quartz-community/page-title&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  darkmode — github:quartz-community/darkmode&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  reader-mode — github:quartz-community/reader-mode&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  breadcrumbs — github:quartz-community/breadcrumbs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  comments — github:quartz-community/comments&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  footer — github:quartz-community/footer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  recent-notes — github:quartz-community/recent-notes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  spacer — github:quartz-community/spacer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  bases-page — github:quartz-community/bases-page&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  note-properties — github:quartz-community/note-properties&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  quartz-themes — github:saberzero1/quartz-themes (subdir: plugin)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  obsidian-plugin-excalidraw — github:quartz-community/obsidian-plugin-excalidraw&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Uff, that is quite a a lot.&lt;/p&gt;&#xA;&lt;p&gt;Next and final step of the process is starting building the Quartz site.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npx quartz build --serve&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I expected things to just work. But, I ran into some problems:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Failed to process html `content/Kreis Infrastruktur.md`: URI malformed&#xA;     at decodeURI (&amp;lt;anonymous&amp;gt;)&#xA;     at file:///home/janikvonrotz/quartz/.quartz/plugins/crawl-links/src/transformer.ts:122:49&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;There were non supported characters in filenames:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;-&lt;/span&gt; [[Rolle Systemadministrator%in]]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once I resolved this I ran into the next problem:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Multiple source files produced the same URL slug. The last-processed file wins; the others are shadowed and their content will not appear in the output.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  slug `docker`&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - Docker.md (shadowed)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - docker.md (used for this URL)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  slug `git`&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - Git.md (shadowed)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - git.md (used for this URL)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  slug `mail-hosting`&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - Mail Hosting.md (shadowed)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - Mail-Hosting.md (used for this URL)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;To resolve, rename or delete all but one file per collided slug. This may include files using the Obsidian &amp;#34;Folder Notes&amp;#34; convention (`folder/folder.md`) that collide with an existing `folder/index.md`.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Some names collided with other documents are reserved names. I had to rename these files as well.&lt;/p&gt;&#xA;&lt;p&gt;And voila: http://localhost:8080/readme&lt;/p&gt;&#xA;&lt;p&gt;I am aware that this is localhost link. Instead of showing you what the result looks like I give you a list of many problems with my test:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The font family is not set&lt;/li&gt;&#xA;&lt;li&gt;Edit links are missing&lt;/li&gt;&#xA;&lt;li&gt;The explorer shows all files including attachments and bases folders&lt;/li&gt;&#xA;&lt;li&gt;The backlinks shows all bases&lt;/li&gt;&#xA;&lt;li&gt;As expected the &lt;code&gt;[[TOC]]&lt;/code&gt; and &lt;code&gt;:::&lt;/code&gt; blocks are not rendered&lt;/li&gt;&#xA;&lt;li&gt;Some documents like &lt;code&gt;uri-cloud&lt;/code&gt; does not work&lt;/li&gt;&#xA;&lt;li&gt;Frontmatter data is not shown&lt;/li&gt;&#xA;&lt;li&gt;Some documents with &lt;code&gt;-&lt;/code&gt; in the title cannot be opened, f.g. &lt;code&gt;richtlinie---informationssicherheit&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;But other parts worke quite well and many things I missed in Vuepress are supported by Quartz:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Graph view on the top right&lt;/li&gt;&#xA;&lt;li&gt;Bases view are generated&lt;/li&gt;&#xA;&lt;li&gt;Full-text search&lt;/li&gt;&#xA;&lt;li&gt;Canvas view is generated including links&lt;/li&gt;&#xA;&lt;li&gt;Hovering on a wiki links shows a preview&lt;/li&gt;&#xA;&lt;li&gt;Header anchor links are shown&lt;/li&gt;&#xA;&lt;li&gt;Mermaid diagrams are rendered&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;summary&#34;&gt;Summary&lt;/h2&gt;&#xA;&lt;p&gt;Simply switching from Vuepress to Quartz is not that easy. Quartz takes a whole different approach on how the integration and publishing process works. It is a real bother that Quartz cannot be run without using the repo.&lt;/p&gt;&#xA;&lt;p&gt;I will keep an eye on the project and will most likely use it for publishing a new Obsidian vault.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
