Make Obsidian and Todoist work better together

This page describes how to get to-dos from Obsidian into Todoist in a super flexible way.

If you want to import Todoist tasks into Obsidian, see Import Todoist tasks into Obsidian.

If you want to try Taskbone you can request early access, if you didn't already.

The Basics

If you have this in Obsidian:

- [ ] This a to-do
  - [ ] This is a nested to-do
  - [ ] I need to do this as well
- [ ] Another thing
- [x] This is already done

This is what you get, when you push it to Todoist:

Labels and Due Dates

If you have any tags in your to-dos, they will be translated into labels for Todoist. For better readability, the tag will be removed if it is at the end of the description. The #-symbol will always be removed.

- [ ] convert #obsidian tags into #todoist labels
  - [ ] This should be cool #yeah

You can also specify a due date with a #due::-notation

- [ ] this task has a due date #due::2021-11-01

Dynamic Templates

The basics are cool for when you've just written down some to-dos and want to push them to Todoist. Or if you have static templates that you want to re-use. But they can be dynamic as well: You can use the liquid template language with some special Taskbone additions in your markdown!

So how about some date calculations?

{% assign due = "2021-11-01" %}

- [ ] This main task is due at {{ due }} #due::{{ due }}
  - [ ] This is a subtask that is due 2 weeks earlier #due::{{ due | minusWeeks: 2 }}
- [ ] Project Review #due::{{ due | plusMonths: 1 }}

If this is a project structure that you often re-use, you only need to update the due date of the main task and the rest is done for you.

Another example: Real recurring tasks.

As you may know, a recurring tasks in Todoist is actually just a special kind of single task. Everytime you mark it as done, it gets reset and gets a new due date. This may be what you want or it may not.

One disadvantage is, that you only see one instance of a recurring task in your calendar.

If you want to know what you need to do on Oct 10, you don't see this task until the day comes. Alternatively, when you run this Taskbone template, it creates 10 distinct entries:

{% assign date = "2021-10-08" %}
{% for i in (1..10) %}
- [ ] This task shows up every single day #due::{{date}}
{% assign date = date | plusDays: 1%}
{% endfor %}

Custom Commands

After installing the Taskbone plugin, there will be two commands available: Push tasks into Todoist Inbox and Push tasks into Todoist Project.

Both of these commands take the current active file and export its open tasks. The second command will ask for a project name first.

These commands are just defaults. You can change their behaviour, rename them, add new ones.

These are the Taskbone plugin settings:

You can see the full flexibility once you open the detail settings of a command.

For example, a part of the configurations for Push tasks into Todoist Project looks like this:

For both inputs you can independently choose whether the command should:

  • use the active file
  • use a fixed file
  • ask for a file when the command is executed
  • ask for a text when the command is executed
  • use a fixed text

When you want the command to prompt for a file you can even configure a filter pattern, so only files that match the pattern will be selectable.

With the following setting, the file selection will only show markdown files in the _templates directory:


These are just some examples of what you can do. If you have any questions or remarks, get in touch.

If you want to try Taskbone you can request early access, if you didn't already.