Integrating Obsidian and OmniFocus

I am interested in integrating Obsidian and OmniFocus. I am pretty new to this so I thought I’d make a brainstorming post to see if people are interested and get some feedback on my thoughts.

Preliminary Goals:

  1. A little button either in the ribbon or placeable inside the notes to add actions to the inbox.
  2. Integrating perspectives, or projects, or tags into the note like the Todoist plug in, with a refresh button.
  3. Automatically creating a list of tasks accomplished so far today.

Motivation:

To minimize friction in my workflow (and that of others) when using these two excellent tools together. Adding a capture button inside of Obsidian allows you to quickly add thoughts to your inbox (goal 1). Integrating an arbitrary perspective into Obsidian allows you to see at a glance what goal you should schedule next (goal 2), and finally seeing what you’ve already accomplished today is always nice (goal 3).

Caveat:

I don’t know JS… yet. I know quite a few programming languages, so it shouldn’t be hard to pick up, but I’m posting here to get some of your thoughts on this plugin idea before I embark on that journey.

Tools:

Omni Focus has these very powerful “Omni Automations” written in JS which allow you to do pretty much anything programmatically. There is no web API. Since this is a Mac (and iOS/iPad OS) only application, whatever plug in I write will be restricted to Mac.

It also has an extensive URL scheme that even allows you to add tasks.

Thoughts and Questions:

Since I know nothing about JS, here are my thoughts and questions. There are three options here.

Option 1: Stick to the URL scheme and add the URLs to perspectives of interest to your daily note template. This is not frictionless, doesn’t allow you to add tasks (goal 1), doesn’t achieve goal 3, but it is dead simple.

Option 2: Write some JavaScript to implement goals 2 and 3 using KeyboardMaestro. I have already done this by hacking together and modifying some snippets I found on the web and achieved goal 3. It works! Downsides is that it isn’t refreshable. I want something I can stick in my tasks and hit a button to refresh it when Omnifocus is updated externally.

Option 3: This is why I’m here. Write a plug in that achieves goals 1, 2 and 3. I can totally see that being doable without being too difficult, but I am not sure an Obsidian plugin can control other Mac Apps using JS.

I am also looking for any other thoughts, comments, or feedback.

Cheers.

13 Likes

I’m looking at similar goals, but didn’t get to implementation. How about using Automator to tie these together?
Dragging an Obsidian note to Omnifocus already creates an inbox item, I think a little bit of scripting in Omnifocus can make the format nicer (move the link to Obsidian from the title to the notes field, e.g.)?

2 Likes

That’s very interesting. I was looking for sth similar. For me it should work like that (though I have no idea how to implement):

  • Creating a task in Obsidian automatically creates a task in OmniFocus
  • It should also work with the “tq” Plugin.
  • Possibility to integrate Perspectives from OmniFocus in Obsidian

Did you get any results so far?

3 Likes

Hey, just wanted to let anyone here know that I’ve made a plugin to export tasks from obsidian to omnifocus: GitHub - lizard-heart/obsidian-to-omnifocus

You should be able to get it in community plugins within Obsidian.

1 Like

@lizard_heart this works really well to copy the tasks over, however the “mark complete” simply copies the text and pastes it underneath with completed tasks, which isn’t what a user would want.

I can’t see anything in the settings to help me, other than turning the auto-complete tasks off which leaves them as they are.

Thanks!

Just to add - the “Extract tasks from selection into omnifocus” works perfectly, it’s the non-selection one that duplicates the tasks, so it might be a bug :slight_smile:

This should be fixed now. If something is still broken, please let me know.

I went quite a ways down this path. What stopped me is the heinously slow sync process with OmniFocus scripts. I had hundreds of tasks, and synchronizin\g them with Apple script was very painful.
I’d be happy to share what I came up with though. I’d love to get OF sync working efficiently.

wow. That’s great and just that I was looking for. Thank you!

It would be even better, if elements would be (stay) nested.
That way, it’s much easier to find and organize them later in OmniFocus.

E.g. Craft creates a top-level Item with the titel of the note and then places the elements underneath. It also keeps indents. If I want to move it to a specific OmniFocus Project I just need to assign it to the top-level item. I think this way it also resembles the structure of the originating note better.

Thank you! :clap: