Obsidian WordPress Plugin

For a long time, I have been thinking of setting up a pipeline for simplifying the capture, remix, and publish workflow. Obsidian has become my choice of capture following years of searching for a note taking platform. Without an open platform, it is impossible to build customized workflows. One critical piece of the workflow is publishing. This morning, as I was setting up a github ci pipeline for publishing – I found Obsidian WordPress plugin. This post is a live blogging (well, without timestamps), as I dogfood setting up and publishing.

Setting up the plugin

As of today, this is the single plugin for WordPress in the community plugin store, and it has a decent number of stars. The repository on github shows last update was from four months back; though low on star and fork counts, the issues showed there is fair bit of traction.

You can setup using a profile to associate with a wordpress account – be it self-hosted or wordpress.com. My blog is self-hosted and setting it up was painless.

Steps for generating the application password

Luckily the last issue at the time of writing had a helpful comment on how to setup the application password

  1. Edit Profile (top right corner)
  2. Scroll down to the bottom “Application Passwords”
  3. Enter a name for the application password “New Application Password Name”
  4. Copy the auto generated password.
  5. From Plugins Settings open the WordPress and click on Open button for Profiles.
  6. (Optional) Set the API type to REST API Authentication by Application Password
  7. Fill in Remember Username with the same WordPress username used to generate the application password and paste the copied password into Remember Password.
  8. Hit Save

You are now all set to publish to your blog from Obsidian.

Publishing Workflow

An icon for WordPress is shown on the left sidebar. Clicking on it brings up the following

Post status we definitely want to be draft, for checking how the formatting is handled. The Category option was auto populated with the tags that I have published my previous articles – that was impressive!
Searching for publish under commands filters to exactly what you need.

Now, the moment of truth. I have attached a number of screenshots above, lets see how it handles the images when I try to publish.
Pasted image 20240414022308.png


And it delivered! After hitting publish the modal stayed stuck for a few seconds, while uploading the content through the REST api. It could benefit from a progress bar, but very impressive!

✅ Changing the title of the post
✅ Updating content and publishing


  • Image links seem to get broken on republishing sometimes, though it is easy to fix by replacing the urls in the markdown and republishing
  • Password in the profile settings does not hide the password

Still to try

Well, that was simple enough! I intend to keep this post updated with whatever might be useful, and hopefully contribute back to this helpful project.

[ ] Making edits to a published post
[ ] Workflow from mobile

SMS alert for you server with Google Calender

During the college days, I had much fun doing the dumbest things which had absolutely no hope of finding any practical application – but just made me feel good. To bring back the good times, this weekend I thought of doing something similar.
Have you ever:

  1. Felt getting sms reminder from your Google Calender makes you more efficient
  2. Felt the need what’s going on in your server when you are not looking at it
  3. Felt Python is the neatest language around

Wondering what’s common in the three of them? How about using Google’s free sms service to get updated about the health of your server? Google’s gdata api allows you to do that, just with a few lines of python.

What’s the big deal about that? Nagios already has that feature, you might say! But unfortunately, I’m using windows these days, and all the free sms gateways in India are worthless.

Anyway, for the win32 api functionalities, I got pywin32 [Build 212] . Next I got the gdata-python-client [gdata.py-1.2.2.zip]. Installation was hassle free.

Peeped into the sample in the samplescalendar folder, and took out the required part from the calendarExample.py and made some little changes, and it was done. Here is the script.

The script isn’t really good and just checks if the Remote Registry Service is up or not. But with more love, cool things (like sms alert on unauthorised access, low isk space etc.) can be done.
However, to remove the ugliness of the script, firstly the hardcoding needs to go.

start_time = time.strftime(‘%Y-%m-%dT%H:%M:%S+05:30’, time.localtime(time.time() + 600))

where +05:30 indicates my time zone, ie IST and the 600 seconds, the time lag between the running of the script and the creation of the event. The sms reminder is sent 1 minute before the event begins, making the time lag 9 minutes. 

If you dont have your mobile registered with Google, just move down to the Settings tab at the top of the page in Google Calendar, and then to the mobile setup tab.

You need to have your default reminder type in Google Calenda as SMS. The Javascript Api, allows you to set the type of reminder eassily – no reason to suspect that the Python Api would not be able to do that; need to check this.

But more importantly, there should be saner way of passing a password to a script. I had my dad’s cell registered with a less important google account and scheduled a .bat file  in Winodws Scheduler that calls the script to set events every 10 minutes. Unfortunately, he did not enjoy it as much as I did.