Digital Garden

by oleeskild
5
4
3
2
1
Score: 49/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

stars
86,843
downloads
0
forks
15
days
NaN
days
NaN
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
0
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

Invalid date

Changelog

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.

image

📚 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.
Publish to WordPress for Obsidian
5 years ago by devbean
An obsidian plugin for publishing docs to WordPress.
Persistent Graph
5 years ago by Sanqui
An Obsidian plugin for saving and restoring the positions of nodes on the global graph view
Living Graph
4 years ago by Garrett
Publish to Steemit
4 years ago by anpigon
Post directly to your Steemit from Obsidian.
Telegraph Publish
4 years ago by Reorx
Publish your Obsidian note to a Telegraph page.
Enveloppe
4 years ago by Mara-Li
Enveloppe helps you to publish your notes on a GitHub repository from your Obsidian Vault, for free!
AutoMOC
4 years ago by Diego Alcantara
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...
Micro.publish
4 years ago by Otavio Cordeiro
Micro.publish is an Obsidian plugin to publish notes directly to Micro.blog, written in TypeScript
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).
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
3D Graph
4 years ago by Alexander Weichart
👓 A 3D graph for Obsidian!
Sync Graph Settings
4 years ago by Xallt
This is a plugin for syncing graph settings (Color Groups and Search Filters) to Local Graphs
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.
O2
3 years ago by haril song
Converts obsidian markdown syntax to other platforms.
Mixa
3 years ago by Mixa Team
Publish your notes and blog posts directly from Obsidian with Mixa
File Publisher
3 years ago by Devin Sackett
Link Tree
3 years ago by Joshua Tazman Reinier
A sidebar foldable list of Obsidian link hierarchies.
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
Nostr Writer
3 years ago by James McGauran
Publish seamlessly from Obsidian to Nostr
Nested tags graph
3 years ago by drpilman
A small plugin for Obsidian that links nested tags in graph view
Writeas Blog Publisher
3 years ago by encima
Pickly PageBlend
3 years ago by Dmitrii Mitrichev
The easiest way to share your Obsidian notes
screen.garden
3 years ago by screengarden, LLC
Realtime collaboration and web editing for Obsidian.
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.
Halo
3 years ago by Ryan Wang
Publish your Obsidian documents to Halo.
Moon server publisher
3 years ago by Roman Provazník
Backlink Cache
3 years ago by mnaoumov
Obsidian plugin that stores backlink cache to speed up app.metadataCache.getBacklinksForFile().
Publish URL
3 years ago by Hananoshika Yomaru
copy the publish url to clipboard
Omg.publish
3 years ago by May Meow
An obsidian plugin to create statuslog posts right from obsidian notes.
Mathematica Plot
3 years ago by Marcos Nicolau
Insert functions on Obsidian using Wolfram Mathematica!
Graphs
2 years ago by Dylan Hojnoski
Plugin for Obsidian that renders interactive graphs from YAML.
MBlog Publish
2 years ago by Jerry
Orion Publish
2 years ago by Sean Collings
Default query in backlinks
2 years ago by Benature
Project Browser
2 years ago by Dale de Silva
NotesOn Publish
2 years ago by Andrey Shapkin
Plugin to Obsidian.md
Hugo Publish
2 years ago by kirito
write blog in obsidian, pubulish to hugo site.
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.
Infostacker Note Publish
2 years ago by Taskscape LTD, Patryk Nowak, Kacper Pabianiak
Infostacker plugin for Obisidian
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
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.
Publish to DEV
2 years ago by Peter Strøiman
Obsidian plugin to publish to dev.to
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.
Plot Vectors and Graphs
2 years ago by Nicole Tan YiTong
Obsidian Plugin to generate graphs given the function.
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.
Vault to blog
2 years ago by barkstone2
Automation tool of making react SPA blog by obsidian vault.
Neo4j Graph View
6 years ago by Emile van Krieken
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.
Charts View
5 years ago by caronchen
Data visualization solution in Obsidian, support plots and graphs.
Embedded Code Title
5 years ago by tadashi-aikawa
It is an Obsidian plugin which can embeds title to code blocks.
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.
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.
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
Typefully
2 years ago by Sébastien Dubois
Integrate Typefully within Obsidian
Nav Link Header
2 years ago by ahts4962
Display navigation links at the top of the notes in Obsidian
Hierarchical Backlinks
2 years ago by Jason Motylinski
Plugin which displays backlinks as a tree structure based on file paths
Magiedit
2 years ago by Matteo Gassend
AmpliFlow Page Publisher
2 years ago by Patrik Björklund
The offifical AmpliFlow obsidian page publisher.
Kale Graph
2 years ago by Oli
Render mathematical graphs in Obsidian
Publish to Discourse
2 years ago by woodchen
Obsidian plugin for publishing articles to forums built with Discourse. obsidian插件, 用于把文章发布到使用discourse搭建的论坛.
Frontmatter Markdown Links
2 years ago by mnaoumov
Obsidian Plugin that adds support for markdown links in frontmatter
Sankey
a year ago by Finn Romaneessen
An Obsidian plugin to create sankey diagrams
Forms
a year ago by Sorin Mircea
YourPulse - Your Writing Activity Visualised
a year 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 💪
Export Graph View
a year ago by Sean McGhee
Plugin to export your vault's graph view.
Backlink Full Path
a year ago by mnaoumov
Obsidian plugin that shows the backlink's full path in the backlinks panel.
Extended Graph
a year ago by Kapirklaa
Community plugin to add features to the graph view.
Node Factor
a year ago by CalfMoon
Customize factors effecting node size in obsidian graph.
Enhanced Publisher
a year ago by Cube
增强的Obsidian发布插件,支持图片自动存储、HTML预览和发布到微信公众号等内容平台
Yuque Publish
a year ago by oylbin
obsidian plugin to publish document to yuque
Typecho
a year ago by Chen
obsidian同步Typecho
MP Preview
a year ago by Yeban
一个帮助你快速将 Obsidian 笔记转换为微信公众号格式的插件。
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.
Zhihu
a year ago by dgg
Zhihu on Obsidian | 知乎 Obsidian 插件
UnLime
a year ago by shandyba
Obsidian Unmentioned Links toggle
Publish Note to Mowen Note
a year ago by ziyou
This is a mowen plugin for Obsidian (https://obsidian.md)
umbPublisher
a year ago by Owain Williams
An Obsidian Plugin that allows you to push notes to Umbraco 15+ as content nodes
Content OS
a year ago by eharris128
Post to LinkedIn from within Obsidian
Auto Keyword Linker
7 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.
Anki Helper
6 months ago by Dusk
Breadcrumbs
3 months ago by skepticmystic
Visualise the hierarchy of your vault using a breadcrumb trail or matrix view.
PDF++
3 months ago by ryotaushio
The most Obsidian-native PDF annotation tool ever.
Wechat Converter
2 months ago by davidlam-oss
Convert Markdown into polished WeChat articles with live preview, copy, and draft sync. - This plugin has not been manually reviewed by Obsidian staff.
Understory
2 months ago by Rosetta Zidian Guo
Local-first knowledge layer for relationship discovery, ER facts, graph analysis, and optional model-powered insights. - This plugin has not been manually reviewed by Obsidian staff.
MP Publisher
a month ago by joeytoday
Preview with custom CSS themes and publish articles to WeChat Official Accounts with one click. - This plugin has not been manually reviewed by Obsidian staff.
Attachment Organizer
17 days ago by kiteruunner
Automatically organize attachments into zone-based folders with conflict detection and batch operations. - This plugin has not been manually reviewed by Obsidian staff.