This repo is used for hosting public releases of Obsidian, as well as our community plugins & themes directories.
Obsidian is not open source software and this repo DOES NOT contain the source code of Obsidian. However, if you wish to contribute to Obsidian, you can easily do so with our extensive plugin system. A plugin guide can be found here: https://marcus.se.net/obsidian-plugin-docs/
This repo does not accept issues, if you have questions or issues with plugins, please go to their own repo to file them. If you have questions or issues about core Obsidian itself, please post them to our community: https://obsidian.md/community
When opening a pull request, please switch to preview mode and select the option to go through our submission checklist. Submit your entry by following the convention in the JSON file and we will review your submission.
Thanks for submitting your creations!
You can find a detailed explanation for submitting your plugin here and your theme here.
To add your theme to our theme store, make a pull request to the community-css-theme.json
file. Please add your theme to the end of the list.
name
: a unique name for your theme. Must not collide with other themes.author
: the author's name for display.repo
: the GitHub repository identifier, in the form ofuser-name/repo-name
, if your GitHub repo is located athttps://github.com/user-name/repo-name
.screenshot
: path to the screenshot of your theme.modes
: if your theme supports both dark and light mode, put["dark", "light"]
. Otherwise, put["dark"]
if your theme only supports dark mode, or["light"]
if your theme only supports light mode.publish
: if your theme supports Obsidian Publish, set this totrue
. Omit it otherwise.
To get your theme compatible with Obsidian Publish, you can now use applyCss
and applyCssByLink
to test out your CSS in the developer console of Obsidian Publish sites, so that you don't actually need to own sites to test your publish.css
. You can test it out on our help site here: https://help.obsidian.md/
applyCss
takes a CSS string, you can use backtick (template strings) for multiline CSS. applyCssByLink
takes a link and loads the CSS, would recommend GitHub raw file URLs.
We encourage all plugin developers to open source their plugins, however, we recognize that this may not always be possible.
Closed source plugins must be clearly indicated in the plugin description and readme with the following text:
This plugin is closed source.
Dynamic advertisements (like Google Ads and others, which load ads from the internet) are not allowed for listed community plugins. We firmly believe that dynamic ads are a poor fit for the Obsidian ecosystem and the principles we follow. In addition, dynamic ads are a huge security risk for our users.
Plugins showing static advertisements (like banners, messages, etc) for a third party must be clearly indicated in the plugin description and readme with the following text:
This plugin is supported by advertisements.
In addition, advertisements must not show up spontaneously, such as in a pop-up modal, notice, etc. They must only be delivered in the plugin's own interfaces (for example: custom views, settings tab), or be triggered by a deliberate user action (for example: clicking a button that says "learn more").
Plugins showing advertisements for the plugin itself, or for the author of the plugin (for example, asking for donations/support, advertise other plugins from the same author, etc) are allowed, but must follow the same placement and timing policy as static advertisements.
To add your plugin to the list, make a pull request to the community-plugins.json
file. Please add your plugin to the end of the list.
id
: A unique ID for your plugin. Make sure this is the same one you have in yourmanifest.json
.name
: The name of your plugin.author
: The author's name.description
: A short description of what your plugin does.repo
: The GitHub repository identifier, in the form ofuser-name/repo-name
, if your GitHub repo is located athttps://github.com/user-name/repo-name
.
- Obsidian will read the list of plugins in
community-plugins.json
. - The
name
,author
anddescription
fields are used for searching. - When the user opens the detail page of your plugin, Obsidian will pull the
manifest.json
andREADME.md
from your GitHub repo). - The
manifest.json
in your repo will only be used to figure out the latest version. Actual files are fetched from your GitHub releases. - If your
manifest.json
requires a version of Obsidian that's higher than the running app, yourversions.json
will be consulted to find the latest version of your plugin that is compatible. - When the user chooses to install your plugin, Obsidian will look for your GitHub releases tagged identically to the version inside
manifest.json
. - Obsidian will download
manifest.json
,main.js
, andstyles.css
(if available), and store them in the proper location inside the vault.
- Once admitted to the plugin/theme browser, you can announce the public availability of your plugin/theme:
- in the forums as a showcase, and
- on the Discord Server in the channel
#updates
. (You need thedeveloper
role to be able to post in that channel; you can get that role here.)
- You can also announce the first working version of your plugin as a public beta before "officially" submitting it to the plugin/theme browser. That way, you can acquire some beta testers for feedback. It's recommended to use the BRAT Plugin to make the installation as easy as possible for interested beta testers.