Taakje (todoist sync)

pending

by Jason Lentink

Two-way sync Todoist. Keep your tasks in sync across both platforms — create, complete, and manage Todoist tasks directly from your vault.

Updated 2d agoMITDiscovered via Obsidian Unofficial Plugins
View on GitHub

Taakje - Todoist Sync for Obsidian

Obsidian Plugin Todoist Integration License MIT

Taakje (Dutch for "little task") is an Obsidian plugin that provides seamless two-way synchronization between your Obsidian tasks and Todoist.

✨ Features

🔄 Two-Way Sync

  • Obsidian → Todoist: Create tasks in your markdown files and sync them to Todoist
  • Todoist → Obsidian: Complete tasks in Todoist and see them checked off in Obsidian

📝 Smart Task Creation

  • Automatically parses dates (today, tomorrow, next week, etc.)
  • Recognizes #project tags and assigns tasks to the correct Todoist project
  • Supports @labels for task categorization
  • Handles priority levels (!!1, !!2, !!3, !!4)

📂 Subtask Support

Nested tasks in Obsidian are automatically created as subtasks in Todoist:

- [ ] Main task
  - [ ] Subtask 1
  - [ ] Subtask 2
- [ ] Another main task

🔗 Bidirectional Links

  • Each synced task gets a [Todoist](link) appended for quick access
  • Tasks in Todoist include an "Open in Obsidian" link in the description

⚡ Real-Time Checkbox Sync

When you check/uncheck a task in Obsidian, it's immediately updated in Todoist.

📦 Installation

Manual Installation

  1. Download the latest release from the releases page
  2. Extract the files to your vault's .obsidian/plugins/taakje/ folder
  3. Reload Obsidian
  4. Enable the plugin in Settings → Community Plugins

From Source

git clone https://github.com/jlentink/obsidian-taakje.git
cd obsidian-taakje
npm install
npm run build

⚙️ Configuration

1. Get Your Todoist API Key

  1. Open Todoist Settings
  2. Scroll to "API token"
  3. Copy your API token

2. Configure the Plugin

  1. Go to Settings → Taakje
  2. Paste your API key
  3. Click "Test Connection" to verify
  4. Select your default project for new tasks

Settings Overview

SettingDescription
Todoist API KeyYour personal Todoist API token
Default ProjectWhere tasks without a #project tag go
Folder RulesAssign projects automatically based on file location
Sync IntervalHow often to check Todoist for changes
Add Obsidian LabelAutomatically add a label to synced tasks
Label NameCustom label name (default: obsidian)
Debug ModeShow detailed logs in the console

🚀 Usage

Creating Tasks

Write tasks in your markdown files using standard checkbox syntax:

- [ ] Buy groceries today #shopping
- [ ] Call mom tomorrow !!1
- [ ] Review document #work

Syncing Tasks

  • Option 1: Click the checkmark icon in the left ribbon
  • Option 2: Use Command Palette (Cmd/Ctrl + P) → "Taakje: Process current file"

Project Matching

Use #projectname to assign tasks to specific Todoist projects. Taakje matches project names case-insensitively and ignores emojis:

Your markdownMatches Todoist project
#inboxInbox
#work💼 Work
#boodschappen🛒 Boodshappen

Folder Rules

Automatically assign tasks to projects based on the file's folder location. This is perfect for organizing work projects, personal areas, or different life domains.

How it works:

  1. Go to Settings → Taakje → Folder Rules
  2. Enter a folder path and select a project
  3. Click "Add" to create the rule
  4. All tasks in that folder (and subfolders) will automatically use that project

Priority order for project assignment:

  1. Explicit #project tag in task — always wins
  2. Folder rule — based on file location
  3. Default project — your fallback setting

Example:

If you have these folder rules:

  • work/clients → Client Projects
  • work → Work
  • personal/health → Health & Wellness

Then tasks in:

  • work/clients/acme/meeting-notes.md → assigned to "Client Projects"
  • work/planning.md → assigned to "Work"
  • personal/health/workout.md → assigned to "Health & Wellness"
  • random-notes.md → assigned to your default project

Note: More specific (longer) folder paths take priority over general ones.

Subtasks

Indent tasks to create subtasks:

- [ ] Plan vacation #travel
  - [ ] Book flights
  - [ ] Reserve hotel
  - [ ] Pack bags

🔧 Commands

CommandDescription
Process current fileSync all tasks in the active file

📋 Task Format

After syncing, tasks look like this:

- [ ] Buy groceries [Todoist](https://app.todoist.com/app/task/abc123)
- [x] Call mom [Todoist](https://app.todoist.com/app/task/def456)

🤝 Contributing

Releasing

Version tracking is tag-based and package.json is the source of truth. Before creating a release:

  1. Run just patch, just minor, or just major locally.
  2. Review and commit the updated package.json, manifest.json, and versions.json.
  3. Push the commit to main through your normal PR flow.
  4. Run just tag from the release commit, or use just release patch|minor|major for the full local flow.
  5. Use just showver any time you want to confirm the version that will be tagged.
  6. GitHub Actions will validate the tag, build the plugin, and publish the release assets.

If the tag version does not match package.json, the release workflow will fail on purpose.

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License — see the LICENSE file for details.

🙏 Acknowledgments

  • Obsidian for the amazing knowledge management platform
  • Todoist for the powerful task management API

📞 Support

If you encounter any issues or have questions:

  • Open an issue
  • Check existing issues for solutions

Made with ❤️ for the Obsidian community

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.