In this post, I will write about the steps I took to setup a pipeline to publish and deploy my Obsidian notes. The pipeline uses Obsidian, Quartz and GitHub.
I was greatly inspired by the article My Quartz + Obsidian Note Publishing Setup. I have setup my github repo in the same way
Instead of moving my public notes gradually over to a Quartz repo whenever I want to publish something, I did it the other way around, integrating Quartz into my repo that stores my Obsidian vault. From the high level, my repo structure looks like this:
├── quartz
│ └── content (symlink to ../vault)
└── vault
├── .obsidian
├── 1 - Rough Notes
├── 2 - Source Material
├── 3 - Tags
├── 4 - Indexes
├── 5 - Templates
├── 6 - Main Notes
└── index.mdMixing private and public notes
Having a single Obsidian vault for both private and public notes is really simple with Quartz 4. By default, all content files are part of the deployment, but you can easily add a filter to your quartz.config.ts:
filters: [Plugin.ExplicitPublish()],ExplicitPublish is a built-in filter that only forwards Markdown pages where the frontmatter has publish: true set. There is also RemoveDrafts for filtering out work-in-progress content.
Marking published links in Obsidian
I’m using the Supercharged links plugin to visually distinguish public notes throughout Obsidian’s UI. This helps me remember what is public and what is not.
I set up a simple rule that adds the 🪴 prefix to notes where publish: true making the links look like 🪴 My Quartz + Obsidian Note Publishing Setup