Skip to main content

Release Notes Downloads Python Versions GitHub CI Status License: MIT

Todoist Task Scheduler & Filterer

I'm a heavy user of Todoist and I noticed that:

  1. If I have a smaller list of tasks to accomplish, I get through them faster.
  2. Having a large list of tasks creates 'cognitive drag' and stresses me out
  3. It takes time to look through and review long list of tasks

This tool enables you to set up rules to automatically punt tasks that don't need to get done today. This reduces the size of your todoist lists and tricks your monkey mind into getting more done. The ultimate goal for me is to get to 'inbox zero' on todoist.

This tool has helped in a big way, acting as a 'virtual assistant' in a way: automatically determining what I shouldn't see for the day. I tie this into a 'first awake' script executed by hyper focus.

Installation

uv tool install todoist-scheduler

Or add as a dependency:

uv add todoist-scheduler

Usage

Usage: todoist-scheduler [OPTIONS]

  Organizes todoist tasks based on custom rules

Options:
  -V, --version          Show the version and exit.
  --task-limit INTEGER   Total task limit for the day  [default: 20]
  --default-filter TEXT  Default todoist filter  [default: (today | overdue) &
                         !assigned to:others & !recurring]
  --filter-json TEXT     Default filter file  [default: filters.json]
  --punt-time TEXT       How far to punt a task into the future. Use todoist
                         natural language format. The special value 'jitter'
                         will generate a random date.  [default: in 2 days]
  --jitter-days INTEGER  What day range to jitter tasks across when
                         rescheduling them  [default: 14]
  --dry-run              Dry run the task updates
  --api-key TEXT         API key. Sourced from TODOIST_API_KEY as well
  --help                 Show this message and exit.

Take a closer look at the default filter:

default: (today | overdue) & !assigned to:others & !recurring

Here's what this does:

  • Only applies filters to task that are assigned to you
  • Ignores recurring tasks
  • Looks at tasks due on or before today

filters.json schema

[
  // limit defines the number of tasks you think you can complete today
  { "filter": "@writing", "limit": 2 },
  { "filter": "@research", "limit": 3 },

  // the filter text uses the todoist search syntax
  { "filter": "#House", "limit": 3 },
]

The JSON file is loaded in as JSON5 so you can add comments.

You can also override options for specific entries and reference saved/named filters:

[
  // loosen the priority filter
  { "filter": "@writing", "limit": 2, "priority": 2 },

  // reference a saved filter
  { "filter": "Communication", "limit": 3 },
]

Docker

Easiest way to use this is using the pre-built docker image. Here's an example docker-compose.yml. This uses the main.py as a cron-like entrypoint to run this script on a schedule.

Development

Run with debug logging:

LOG_LEVEL=DEBUG todoist-scheduler

Play with the Todoist API (in ipython):

from todoist_api_python.api import TodoistAPI
import os

api = TodoistAPI(os.getenv("TODOIST_API_KEY"))

This project was created from iloveitaly/python-package-template

Metadata

Release files for todoist-scheduler 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for todoist-scheduler 0.8.1
File Size Uploaded
todoist_scheduler-0.8.1.tar.gz 9.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for todoist-scheduler 0.8.1
File Interpreter ABI Platform
todoist_scheduler-0.8.1-py3-none-any.whl Python 3 none any Details

Total release size: 21.9 kB

Release files / todoist_scheduler-0.8.1.tar.gz

Download URL todoist_scheduler-0.8.1.tar.gz
Size 9.6 kB
Tags Source
SHA-256 checksum
How to use checksums
668d58135dfb1311343427302c18021ea4ae79656ac0fc14d3af0085e29a3bb5
BLAKE2b-256 checksum
How to use checksums
f2dd4d5e462ea67b8de4582a3a43f3653ba3b420f4f2f6aa576c00593ac0a7c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / todoist_scheduler-0.8.1-py3-none-any.whl

Download URL todoist_scheduler-0.8.1-py3-none-any.whl
Size 12.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
87cc9c0777e5cf39520cd54310c45114734b998e0c992315757b8efd894c54b3
BLAKE2b-256 checksum
How to use checksums
29f7e242e4042ad08f170d8e1460fb20a5c01ce900e31f3969f0010d4b0f6727
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.8.1 This release

2 release files

0.8.0

2 release files

0.6.0

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page