Obsidian: Data Without Fences
I have data in Obsidian, the note-making and linking program. I would like to gather it, process it and write it back into Obsidian in a form the program can use. Or maybe take it off for other uses.
Hmmm, well I hear that Obsidian was written with Typescript using the Electron framework. I guess that means I will finally have to get into the javascript universe I have avoided so long. And I will have to dig up the API for Obsidian. Or I will have to haunt github, hoping someone has written a plugin that approximately (though not completely, of course) does what I want to accomplish…
No. Slow down. Deep breath.
The geniuses who invented Obsidian had the program write everything into markdown files. Markdown has some formatting, but basically a markdown file is a text file. Every record in Obsidian is a separate file, and it lives on your machine.
This means you can read all your Obsidian information without an API, without plugins, without traversing the internet, without even using Obsidian.
And as long as you write the data in Obsidian’s version of markdown, you can create files that Obsidian will recognize and use.
Applying Python to Obsidian Files
You can get into Obsidian data and process it in any language you want and return it. I am familiar with Python and like it. No problem!
My field at this time is religious and philosophical practices in our time. Of course, my interest and so my data may be different from yours. I used Obsidian daily notes to keep records of an interesting three-minute meditation practice. I used Python to copy those records from my daily notes and summarize them in a log. Then as a crude sort of theme-extraction, I wrote a Python program that calculated the frequency of words in these meditations.
In a second exercise, I took part in an “Ikigai” (purpose of life) class. It drew our attention to four aspects of life. We were invited to make lists of things we love, of things we are good at, of things that provide us with resources, and things the world needs. Of course I made this collection of lists in an Obsidian file. The class then invited us to find ways of living that overlap those aspects.
I created a Python program to randomly choose one element from each list and present them together to me in my daily note. They were to be what the Quakers might call a “query”, an invitation to consider what is possible in life.
Again, other applications might require one to use an API to access the records. Those programs would insist on permissions to change those records. It might require one to learn another proprietary language.
Obsidian deliberately gives access to the records — because they are your files on your computer! — with no fuss. And because they are written in the easy-to-learn markdown format, you can modify them as simply.
The point is:
All of this processing of Obsidian data happened outside of Obsidian. The Obsidian program need never have been turned on. But the usage was in no sense hostile to Obsidian — it was collaborative. By creating a fundamentally open file system, Obsidian enables cooperation with other software.
Obsidian is powerful not only for what it can do (and that is a lot). Obsidian is also powerful for what it does not prevent you from doing. It gives you leave to use your data with your choice of other tools.
Many programs build a fence and give you a few gates through it. Obsidian avoids building the fence.
— -
The image is from https://www.geograph.org.uk/photo/3150087