Digital Garden

by oleeskild
5
4
3
2
1
Score: 68/100

Description

Category: Collaboration & Sharing

The Digital Garden plugin turns selected notes into a published website and keeps the publishing flow inside your vault. It supports markdown, linked notes, Bases, Dataview queries, Canvas, embedded notes, Excalidraw drawings, images, PDFs, callouts, code blocks, MathJax, Mermaid and PlantUML. The site includes live search, file tree navigation, backlinks, local and global graph views, table of contents and hover previews. Privacy is strict: only notes marked with dg-publish: true are sent out and linked notes stay private until you publish them yourself. It also exposes theme support, CSS variable based styling, custom filters, note icons, timestamps and editable UI text. Publishing can target GitHub based hosting, managed Forestry hosting or local export for self hosted previews.

Reviews

No reviews yet.

Stats

2511
stars
93,659
downloads
228
forks
72
days
1
days
1
days
181
total PRs
1
open PRs
31
closed PRs
149
merged PRs
536
total issues
215
open issues
321
closed issues
217
commits

RequirementsExperimental

  • GitHub account and repository for the self hosted publishing flow

  • Fine grained GitHub personal access token for GitHub publishing

  • Vercel, Netlify or a local digitalgarden template folder to publish or preview the site

  • Forestry.md account and Garden Key for the managed hosting path

Latest Version

a day ago

Changelog

New

  • Publish branch (#837, thanks @OlaoluwaM): self-hosted gardens can now publish to a branch other than the repository's default branch, so you can review changes and merge them yourself before they go live. Set it under GitHub settings > Publish branch (advanced). It defaults to your repository's default branch, so nothing changes unless you pick another one.
    • Everything the plugin writes goes to that branch: notes, site settings, favicon and logo, navigation order, garden plugins, and template update pull requests.
    • The plugin never creates, merges or deletes the branch. If it's missing, for example after it was deleted following a merge, publishing stops with a message, and the Publication Center shows what's on the default branch until you create the branch again or change the setting.

Fixes

  • Template updates for gardens whose default branch isn't main: the update now compares against and opens its pull request into the garden's own branch, instead of a main branch that may not exist there.

README file from

Github

Obsidian Digital Garden

Downloads Discord GitHub stars

Turn your Obsidian vault into a beautiful website. Free, open-source, and entirely yours.

📚 Documentation

docs.forestry.md — Full setup guide, configuration options, and examples.

Why a Digital Garden?

Unlike a blog, a digital garden is a living collection of ideas—notes that grow and connect over time. This plugin lets you selectively share your thinking while keeping private notes private. No monthly fees. Just your ideas, your way.

🔒 Your private notes stay private. Only notes you explicitly mark with dg-publish: true ever leave your vault.

Check out gardens built by the community for inspiration.

Features

📝 Content Support

  • Basic Markdown Syntax
  • Links to other notes
  • Obsidian Bases
  • Dataview queries (as codeblocks, inline and dataviewjs)
  • Canvas
  • Transcluded/embedded notes
  • Embedded/Transcluded Excalidraw drawings
  • Embedded/Transcluded Images
  • Embedded PDFs (up to 20MB, rendered inline)
  • Callouts/Admonitions
  • Code Blocks
  • MathJax
  • Highlighted text
  • Footnotes
  • Mermaid diagrams
  • PlantUML diagrams

🧭 Navigation & Discovery

  • Fast search with live preview
  • Filetree navigation
  • Backlinks
  • Local graph
  • Global graph
  • Table of contents
  • Link previews on hover

🎨 Customization

  • Obsidian Themes
  • Style Settings plugin support
  • Customizable via CSS variables
  • Custom filters (regex-based content transformation)
  • Note icons
  • Timestamps (created/updated)
  • Customizable UI text (search placeholders, backlink headers, etc.)

🔒 Privacy & Control

  • Selective publishing - Only notes explicitly marked with dg-publish: true are published
  • No accidental leaks - Linked notes are never auto-published; you decide what goes public
  • Full control - Your private notes stay private until you choose to share them

☁️ Hosting Options

  • Vercel - One-click deploy, automatic builds
  • Netlify - Alternative hosting with similar features
  • Forestry.md - Managed hosting for non-technical users (no GitHub setup required)

Initial Setup

⏱️ ~10 minutes to set up. It takes a bit of work, but when you're done you'll have a digital garden in which you are in control of every part of it, and can customize it as you see fit. Which is what makes digital gardens so delightful.

💡 Want a simpler setup? Forestry.md offers one-click hosting with no GitHub required. Currently in open beta.

Lets get started:

  1. First off, you will need a GitHub account. If you don't have this, create one here.
  2. You'll also need a Vercel account. You can sign up using your GitHub account here
  3. Open this repo, and click the blue "Deploy to Vercel" button. This will open Vercel which in turn will create a copy of this repository in your GitHub accont. Give it a fitting name like 'my-digital-garden'. Follow the steps to publish your site to the internet.
  4. Now you need to create an access token so that the plugin can add new notes to the repo on your behalf. Detailed instructions with images are available in the docs. Use a Fine grained personal access token with the following settings: - Token Name: YYYY-Digital Garden - Expiration: Custom / a year / whatever you want. - Description: Publishing content to the digital garden. - Resource owner: yourself - Only select repositories: Select your garden repo - Permissions (just two needed): - Contents: Access: Read and write - Pull requests: Access: Read and write Click the "Generate token" button, and copy the token you are presented with on the next page.
  5. In Obsidian open the setting menu and find the settings for "Digital Garden". The top three settings here is required for the plugin to work. Fill in your GitHub username, the name of the repo with your notes which you created in step 3. Lastly paste the token you created in step 4. The other options are optional. You can leave them as is.
  6. Now, let's publish your first note! Create a new note in Obsidian. And add the following to the top of your file
---
dg-home: true
dg-publish: true
---

(If you get backticks, ```, at the start and beginning when copy-pasting the above text, delete those. It should start and end with a triple dash, ---. See this page for more info about Obsidian and frontmatter.)

This does two things:

  • The dg-home setting tells the plugin that this should be your home page or entry into your digital garden. (It only needs to be added to one note, not every note you'll publish).

  • The dg-publish setting tells the plugin that this note should be published to your digital garden. Notes without this setting will not be published. (In other terms: Every note you publish will need this setting.)

  1. Open your command palette by pressing CTRL+P on Windows/Linux (CMD+P on Mac) and find the "Digital Garden: Publish Single Note" command. Press enter.
  2. Go to your site's URL which you should find on Vercel. If nothing shows up yet, wait a minute and refresh. Your note should now appear.

Congratulations, you now have your own digital garden, hosted free of charge! You can now start adding links as you usually would in Obisidan, with double square brackets like this: [[Some Other Note]], to the note that you just published. You can also link to a specific header by using the syntax [[Some Other Note#A Header]]. Remember to also publish the notes your are linking to as this will not happen automatically. This is by design. You are always in control of what notes you actually want to publish. If you did not publish a linked note, the link will simply lead to a site telling the user that this note does not exist.

new-note-demo

Alternative: Forestry.md (No GitHub Required)

If you prefer a simpler setup without managing GitHub repositories, you can use Forestry.md - a managed hosting service for digital gardens:

  1. Create an account at forestry.md
  2. Get your Garden Key from the Forestry.md dashboard
  3. In Obsidian, open Digital Garden settings and enter your Garden Key in the Forestry.md section
  4. Start publishing notes directly - no GitHub or Vercel setup needed

This is ideal for non-technical users who want a working digital garden without dealing with GitHub tokens, repositories, or deployment pipelines.

Modifying the template/site

The code for the website is available in the repo you created in step 3, and this is yours to modify however you want.

CSS Customization

Any CSS/SCSS files placed under src/site/styles/user will automatically be linked into the head right after all other styling, meaning that the styling added here will take precedence over everything else.

The template exposes many CSS variables that you can override, including:

  • Colors (background, text, links, etc.)
  • Typography (fonts, sizes, line heights)
  • Spacing and layout
  • Component-specific styling (graph, search, sidebar)

Custom Components

You can add custom components to your garden by creating Nunjucks templates in src/site/_includes/components/user/. These can be included in your notes or layouts to add interactive elements, custom widgets, or specialized content displays.

Updating the template

In the setting menu for the plugin there is, in addition to the previously mentioned settings, a setting with the name "Site Template" with a button saying "Manage site template". Clicking this should open up a popup-window with the setting "Update site to latest template" and a button saying "Create PR". Whenever digital garden template receives any updates, this button can be used to update your site. It will create a new branch in your repo with the changes and create a Pull Request to your main branch. The plugin will present you with this URL in the setting view.

If you used the "Deploy to Vercel" button, a Vercel bot will build a preview version of your site which you can visit to see that the changes does not contain any breaking changes. The URL should be visible in the PR. When you are ready you can use the "Merge pull request" button on the pull request page to merge the changes into your main branch and make the changes go live.

In the future you will be notified with a visual cue whenever there is an update ready. For now you will need to manually check. If you have the latest version, you will be told so.

Advanced changes for developers

The project uses the eleventy templating engine. This uses .eleventy.js as the main entry-point. Please read the eleventy docs if you need a quick-start on how this works.

If you want to do any changes that aren't overwritten when updating the template, do so in the src/helpers/userSetup.js file, which hooks into the elventy setup in .eleventy.js


Local Export

You can export your garden to a local folder instead of publishing to GitHub. This is useful for self-hosting, previewing your garden locally, or running the site without Vercel/Netlify.

  1. In the plugin settings, scroll to Local Export and set the path to your local digitalgarden folder
  2. Open the command palette and run "Export Garden to Local Folder"
  3. Run npm run dev in your digitalgarden folder to preview the site locally

This exports all notes marked with dg-publish: true and their images to the local folder, ready for the Eleventy build. Note that publish status tracking and diffing are not available with local export — it's a full export each time.

Publishing into a subfolder / monorepo

By default the plugin assumes the digitalgarden template lives at the root of your target repository (notes go to src/site/notes/, images to src/site/img/user/, settings to .env).

If your Eleventy garden template lives in a subdirectory of the repo instead — a monorepo layout where, for example, the garden is under Web/ — set the Content base directory (advanced) field in the GitHub settings to that subfolder (e.g. Web). Every published path is then prefixed with it:

Setting Notes are written to Settings file
(empty) (default) src/site/notes/ .env
Web Web/src/site/notes/ Web/.env

This affects GitHub publishing, "Load remote settings", template updates, and local export consistently. The setting only applies to self-hosted (GitHub) publishing — it is ignored on managed platforms like Forestry. Values containing .. segments are invalid and treated as empty. Leaving the field empty keeps the historical repo-root behavior unchanged.

Local development

NOTE: this plugin contains a testing vault at src/dg-testVault, which is recommended for local development.

  1. Clone this repository

  2. (for best compatibility, use node version manager and run nvm install && nvm use)

  3. Install dependencies with npm install

  4. Run with npm run dev

  5. Open the vault from src/dg-testVault into obsidian

  6. (if you want to develop this plugin with another vault, move it into .obsidian/plugins of that vault)

To use the test vault with github, add your test repository values to a .env file with:

GITHUB_REPO=
GITHUB_TOKEN=
GITHUB_USERNAME=

# Forestry.md settings (if you're using Forestry.md)
FORESTRY_BASE_URL=https://api.forestry.md/app
FORESTRY_PAGE_NAME=
FORESTRY_API_KEY=

# Local export (for development or self-hosting)
LOCAL_GARDEN_PATH=../digitalgarden

Local dev workflow

To preview plugin changes in the actual garden site:

  1. npm run dev in this repo (builds plugin, copies to test vault, generates the test vault settings from .env)
  2. npm run dev:watch in this repo (rebuilds and copies to the test vault on every save)
  3. Open the test vault in Obsidian
  4. npm run dev in the digitalgarden/ folder (serves the garden on http://localhost:8080 with hot reload)

When LOCAL_GARDEN_PATH is set in .env, the generated test vault settings enable localExportOnLoad, so the plugin exports the garden to that folder automatically on every load. Combined with the hot-reload plugin in the test vault, every save gives you: rebuild → plugin reload in Obsidian → re-export → eleventy rebuild.

To trigger an export manually (or from another vault), run the "Export Garden to Local Folder" command. The automatic export only runs when ENABLE_DEVELOPER_TOOLS, localExportOnLoad, and localExportPath are all set in the plugin's data.json — regular installs are unaffected.

Note: this repository uses prettier and eslint to enforce code formatting and style. It is recommended to install these to your IDE for automatic formatting and error highlighting.

The Original Obsidian Publishing Plugin

This is the original open-source Obsidian-to-website publishing plugin, and its codebase has served as the foundation for several other publishing tools in the ecosystem:

It's been cool to see this project become the starting point for so many others to build their own Obsidian publishing solutions.

Join the Community

Be a part of the Digital Garden Community by joining our Discord Server.

Code Contributers

Huge thanks to all the contributors who helped in making this


Support

Built with coffee and stubbornness. If this plugin has been useful to you, a coffee would make my day—but it's completely free and always will be.

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
3D Graph
4 years ago by Alexander Weichart
👓 A 3D graph for Obsidian!
Advanced Metadata Cache
10 days ago by Michael Naumov
Maintains the vault indexes that are otherwise rebuilt on every call, and answers the built-in lookups from them, so backlinks come from an index instead of a fresh scan of every note.
AmpliFlow Page Publisher
2 years ago by Patrik Björklund
The offifical AmpliFlow obsidian page publisher.
Anki Helper
8 months ago by Dusk
Attachment Organizer
2 months ago by kiteruunner
Automatically organize attachments into zone-based folders with conflict detection and batch operations
Auto Keyword Linker
9 months ago by Daniel Rhodes
Stop manually typing [[brackets]] around recurring terms. Configure keywords with variations once, and automatically link them as you write or across your entire vault.
AutoMOC
4 years ago by Diego Alcantara
Backlink Cache
3 years ago by mnaoumov
Obsidian plugin that stores backlink cache to speed up app.metadataCache.getBacklinksForFile().
Backlink Full Path
2 years ago by mnaoumov
Obsidian plugin that shows the backlink's full path in the backlinks panel.
Breadcrumbs
5 months ago by skepticmystic
Add typed-links to your Obsidian notes
Canvas Folding
a month ago by hkohlhoff
Collapse and expand hierarchical branches in Obsidian Canvas.
Charts View
5 years ago by caronchen
Data visualization solution in Obsidian, support plots and graphs.
Coalesce
a year ago by Floyd
Coalesce is an Obsidian plugin that merges all your linked notes into a single, organized view for a cohesive research and writing experience.
Content OS
a year ago by eharris128
Post to LinkedIn from within Obsidian
Daily Note Outline
4 years ago by iiz
Add a custom view which shows outline of multiple daily notes with headings, links, tags and list items
Dataview Publisher
2 years ago by UD
Output markdown from your Dataview queries and keep them up to date. You can also be able to publish them.
Default query in backlinks
3 years ago by Benature
Embedded Code Title
5 years ago by tadashi-aikawa
It is an Obsidian plugin which can embeds title to code blocks.
Enhanced Publisher
a year ago by Cube
增强的Obsidian发布插件,支持图片自动存储、HTML预览和发布到微信公众号等内容平台
Enveloppe
4 years ago by Mara-Li
Enveloppe helps you to publish your notes on a GitHub repository from your Obsidian Vault, for free!
Export Graph View
2 years ago by Sean McGhee
Plugin to export your vault's graph view.
Extended Graph
2 years ago by Kapirklaa
Community plugin to add features to the graph view.
File Publisher
4 years ago by Devin Sackett
Forms
2 years ago by Sorin Mircea
Frontmatter Markdown Links
2 years ago by mnaoumov
Obsidian Plugin that adds support for markdown links in frontmatter
Google Blogger
2 years ago by Hugo Sansaqua
A plugin for publishing Obsidian documents to Blogger.
Graph Banner
2 years ago by ras0q
An Obsidian plugin to display a relation graph view on the note header.
Graphs
3 years ago by Dylan Hojnoski
Plugin for Obsidian that renders interactive graphs from YAML.
Halo
3 years ago by Ryan Wang
Publish your Obsidian documents to Halo.
Hierarchical Backlinks
2 years ago by Jason Motylinski
Plugin which displays backlinks as a tree structure based on file paths
Hugo Publish
3 years ago by kirito
write blog in obsidian, pubulish to hugo site.
Influx
4 years ago by Jens M Gleditsch
An alternative backlinks plugin, which displays relevant and formatted excerpts from notes with linked mentions, based on the position of mentions in the notes' hierarchical structure (bullet level indentation).
Infostacker Note Publish
2 years ago by Taskscape LTD, Patryk Nowak, Kacper Pabianiak
Infostacker plugin for Obisidian
Juggl
5 years ago by Emile van Krieken
An interactive, stylable and expandable graph view for Obsidian. Juggl is designed as an advanced 'local' graph view, where you can juggle all your thoughts with ease.
Kale Graph
2 years ago by Oli
Render mathematical graphs in Obsidian
Link Tree
3 years ago by Joshua Tazman Reinier
A sidebar foldable list of Obsidian link hierarchies.
Living Graph
5 years ago by Garrett
Magiedit
2 years ago by Matteo Gassend
Mapa neuronal
25 days ago by Felipe Córdova
A graph that explains itself: your Obsidian vault as a layered neural map, with the reason each note links to the next.
Mathematica Plot
3 years ago by Marcos Nicolau
Insert functions on Obsidian using Wolfram Mathematica!
MBlog Publish
3 years ago by Jerry
Micro.publish
4 years ago by Otavio Cordeiro
Micro.publish is an Obsidian plugin to publish notes directly to Micro.blog, written in TypeScript
Mixa
4 years ago by Mixa Team
Publish your notes and blog posts directly from Obsidian with Mixa
Moon server publisher
3 years ago by Roman Provazník
MP Preview
a year ago by Yeban
一个帮助你快速将 Obsidian 笔记转换为微信公众号格式的插件。
MP Publisher
3 months ago by joeytoday
自定义主题预览,并发布到公众号草稿箱。
Nav Link Header
2 years ago by ahts4962
Display navigation links at the top of the notes in Obsidian
Neo4j Graph View
6 years ago by Emile van Krieken
Nested tags graph
3 years ago by drpilman
A small plugin for Obsidian that links nested tags in graph view
Node Factor
2 years ago by CalfMoon
Customize factors effecting node size in obsidian graph.
Nostr Writer
3 years ago by James McGauran
Publish seamlessly from Obsidian to Nostr
NotesOn Publish
3 years ago by Andrey Shapkin
Plugin to Obsidian.md
O2
4 years ago by haril song
Converts obsidian markdown syntax to other platforms.
Omg.publish
3 years ago by May Meow
An obsidian plugin to create statuslog posts right from obsidian notes.
Orion Publish
3 years ago by Sean Collings
OzanShare Publish
5 years ago by Ozan Tellioglu
This plugin allows you to publish your markdown notes with a single click directly from your Obsidian vault.
Path Finder
4 years ago by jerrywcy
A plugin that can find the paths between two notes. Not sure who will want to use it...
PDF++
4 months ago by ryotaushio
PDF++: the most Obsidian-native PDF annotation & viewing tool ever. Comes with optional Vim keybindings.
Permalink Opener
3 years ago by @kepano
Obsidian plugin to open URLs based on a permalink or slug in the note properties. For use with Jekyll, Hugo, Eleventy, Astro, Obsidian Publish, and other publishing tools.
Persistent Graph
5 years ago by Sanqui
An Obsidian plugin for saving and restoring the positions of nodes on the global graph view
Pickly PageBlend
3 years ago by Dmitrii Mitrichev
The easiest way to share your Obsidian notes
Plot Vectors and Graphs
2 years ago by Nicole Tan YiTong
Obsidian Plugin to generate graphs given the function.
Project Browser
3 years ago by Dale de Silva
Publish and GitHub URL
5 years ago by kometenstaub
Copy or open the Obsidian Publish URL of a note. You can also open its Git commit history on GitHub.
Publish Note to Mowen Note
a year ago by ziyou
This is a mowen plugin for Obsidian (https://obsidian.md)
Publish to DEV
2 years ago by Peter Strøiman
Obsidian plugin to publish to dev.to
Publish to Discourse
2 years ago by woodchen
Obsidian plugin for publishing articles to forums built with Discourse. obsidian插件, 用于把文章发布到使用discourse搭建的论坛.
Publish to Steemit
5 years ago by anpigon
Post directly to your Steemit from Obsidian.
Publish to WordPress for Obsidian
5 years ago by devbean
An obsidian plugin for publishing docs to WordPress.
Publish URL
3 years ago by Hananoshika Yomaru
copy the publish url to clipboard
Quail
3 years ago by Lyric
An Obsidian Plugin for Quail.ink. This is a clone repo of https://github.com/quail-ink/obsidian-quail
Rich Foot
2 years ago by Justin Parker
🦶 Obsidian plugin that adds backlink/outlink tags and created/modified dates to the footer of your notes
Sankey
2 years ago by Finn Romaneessen
An Obsidian plugin to create sankey diagrams
screen.garden
3 years ago by screengarden, LLC
Realtime collaboration and web editing for Obsidian.
Smart Connections Visualizer
2 years ago by Evan Moscoso
Visualize your notes and see links to related content with AI embeddings. Use local models or 100+ via APIs like Claude, Gemini, ChatGPT & Llama 3
Sync Graph Settings
4 years ago by Xallt
This is a plugin for syncing graph settings (Color Groups and Search Filters) to Local Graphs
Telegraph Publish
5 years ago by Reorx
Publish your Obsidian note to a Telegraph page.
Typecho
a year ago by Chen
obsidian同步Typecho
Typefully
2 years ago by Sébastien Dubois
Integrate Typefully within Obsidian
umbPublisher
a year ago by Owain Williams
An Obsidian Plugin that allows you to push notes to Umbraco 15+ as content nodes
Understory
4 months ago by Rosetta Zidian Guo
A connection-sustain plugin: find connections and conflicts, update them over time
UnLime
a year ago by shandyba
Obsidian Unmentioned Links toggle
Vault to blog
2 years ago by barkstone2
Automation tool of making react SPA blog by obsidian vault.
Vitepress Publisher
2 years ago by mistj
Obsidian Vitepress Plugin is a flexible tool that allows you to easily preview and compile your .md files using VitePress or other static site generators (Hugo, Hexo, Docusaurus) in Obsidian.
Webpage HTML Export
4 years ago by Nathan George
Export html from single files, canvas pages, or whole vaults. Direct access to the exported HTML files allows you to publish your digital garden anywhere. Focuses on flexibility, features, and style parity.
Wechat Converter
4 months ago by davidlam-oss
Obsidian 公众号排版(支持自定义 CSS和公众号贴图)、飞书云同步与多平台(小红书、知乎等)发布插件。Markdown 转微信文章 / Feishu docs / 知乎、小红书、今日头条等草稿,支持数学公式、本地图片、GIF 和 Mermaid。
Wechat Public Platform
2 years ago by Blake Chan
Obsidian Wechat public Plugin (微信公众平台) is a plugin to release article from your Obsidian Vault to WeChat, Baidu baiJiahao or other platforms.
Writeas Blog Publisher
3 years ago by encima
YourPulse - Your Writing Activity Visualised
2 years ago by Jiri Sifalda
YourPulse.cc - Obsidian.md plugin that turns your vault into a reflection of your creativity, and put your writing on steroids 💪
Yuque Publish
a year ago by oylbin
obsidian plugin to publish document to yuque
Zhihu
a year ago by dgg
Zhihu on Obsidian | 知乎 Obsidian 插件