Yet Another Obsidian Publisher, RBAC Edition

Hi fellow knowledge management guru’s,

I am posting here today in the hope to share and compare obsidian publishing tools. I really liked Obsidian Publish but it was lacking a few key features and after trying other people’s publishing tools I decided to build my own. An example of my shared notes from my Obsidian Vault can be seen at https://dentropy.github.io/ with the source code at → dentropy/dentropys-obsidian-publisher

Features of my Publisher

  • Unique ID’s (UUID) stored in Yaml Front Matter
  • RBAC Groups stored in Yaml Front Matter
  • Build static site based on RBAC Groups
  • Export to SQLite Database

Why build my own Obsidian Publisher

  • Document ID’s required for Social Annotation
    • I personally rename my documents a lot which changes the URL for publish.obsidian.md and similar Obsidian site builders
    • I use a lot of website annotation tools such as raindrop.io, hypothes.is, and memex.garden. Having the URL for a note change really messes with these tools.
      • I have a workflow where I can publish versioned articles to dentropy.github.io and have people edit and comment on them with these annotation tools. If I rename the document these annotations break.
  • Build a Static Site for Reliability
    • I like the idea of using scp or rsync to publish my vault rather than github actions.
    • It is easier to build locally and debug, I was using Obsidian Mkdocs Publisher before and the CDN required to render parts of the site went down breaking my site. I still highly recommend ObsidianPublisher/obsidian-github-publisher if you want to go down that route.
  • RBAC(Rule Based Access Control)
    • Since I store my notes in a separate encrypted git repo it is important that only notes I explicitly share be published. Obsidian Publish has a great way to do this but the metadata is not stored in the documents, my Obsidian Publisher stores the state of published documents in the yaml front matter.
    • I also have notes I want to share with specific people that I do not want public. My Obsidian Publishing tool can build a static site that includes documents that are part of a group that is stored in the yaml front matter.
  • Import to SQLite for Publishing and NLP (Natural Language Processing)
    • With the notes, group permissions, and links inside SQLite I can easily develop a CRUD website that can require authentication to view specific notes or convert and dump my notes to something like wikijs, ghost, or wordpress.
    • I don’t know if anyone else is calculating embeddings on their notes and how to go about doing it inside Obsidian naively but this is the approach I am taking.

Similar Forum Posts and Projects

1 Like

Hi!
What part of the CDN broke in Obsidian Publisher?

The CDN worked file the problem is with the URL the CDN uses for my notes. If I change the title of a note and republish it the URL changes for that note therefore anywhere I have shared a link to said note on the internet no longer works. My Obsidian Publisher assigns a UUID to every obsidian note in the front yaml so the URL does not change.

But you could use the frontmatter to assign the name of the note and prevent that, there is literally a function for that in my plugin…