/keep2todoist

Transfer items from google keep lists to todoist

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

keep2todoist

Transfer items from google keep lists to todoist.

My use case is having an intuitive google assistant integration for todoist:

  1. Sync your google notes and lists with google keep (setting in google assistant)
  2. Let this tool move items from google keep lists to todoist lists.

It is not a real sync but just a one way keep->todoist.

  • Moved items will be deleted from keep's list
  • Labels on google keep lists will be attached to their corresponding todo tasks

Configuration

Create a config.yaml from config.example.yaml:

update_interval_s: 60
google_username: yourUsername
google_password: canBeAnAppPassword
todoist_api_token: todoistApiKey
healthcheck: # optional: configure some kind of healtcheck endpoint providing service monitoring, e.g. https://healthchecks.io/
  url: https://hc-ping.com/someuuid
  period_min: 30
untitled_notes: # optional: move all untitled notes to todoist inbox
  add_label: 'Sync' # required: add label to todoist note
  due_str_en: 'today' # optional: you can set a due date in english here
keep_lists:  # list your keep lists on this level
  - Todo:
      sync_labels: false # required: transfer labels from gkeep lists to todoist items
      due_str_en: 'today' # optional: you can set a due date in english here
      # if todoist_project is not set your task will go into the todoist inbox
  - Shared:
      sync_labels: true
      assignee_email: 'name@domain.tld' # optional: the email of the person to be assigned, requires todoist_project to be a shared project.
      todoist_project: 'Chores' # not optional in this case, should be a shared project
  - Shopping:
      sync_labels: false
      todoist_project: 'Shopping' # optional: you can choose a project for todoist here
  - Test:
      sync_labels: false
  • It is recommended that you don't use your google main credentials. Instead go to https://myaccount.google.com/apppasswords and generate an app password specifically for this tool. That way you still can enable 2FA for your google account.
  • Your todoist token can be found in todoist settings->integrations.
  • Changes in config.yaml will be detected automatically and the updated config will be reflected if the yaml is valid.
  • optionally, for setting up a healthcheck to ensure that your service is running you can use a service like https://healthchecks.io/:

image

If configured it will provide you with an url and the app will ping this url every period_min minutes. On the healtcheck's service side you configure a matching period & grace time. You can then get notified if a ping is missed, e.g. via mail.

Start

docker

You can use docker/docker-compose to start the service:

docker-compose up -d

This has the advantage that the service will be restarted automatically on reboot or error.

Pre-built docker image

Latest docker image is also available at ghcr.io/flecmart/keep2todoist:latest

docker run -v ./config.yaml:/app/config.yaml --restart always ghcr.io/flecmart/keep2todoist:latest

Local python installation

Tested this only with python >= 3.9

cd app
pip install -r requirements.txt
python3 app.py

Related projects

Thanks

This tool relies heavily on and would not be possible without: