Export tasks from Obsidian into Todoist

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.

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:

Screenshot of 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

Screenshot of Todoist

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

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

Screenshot of Todoist

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.

Screenshot of Todoist

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.

Screenshot of Todoist

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 %}

Screenshot of Todoist

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:

Screenshot of Obsidian

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:

Screenshot of Obsidian

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:

Screenshot of Obsidian


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