Google Keep notes to Obsidian markdown Python Converter


Version 0.4.0 of the Python markdown converter script to grab Google Keep notes is now ready. The major change is support overwriting or skipping existing md files that have already been converted. The converter supports JPEG, PNG, Drawings and Audio files attached to Keep notes. This script does not require using Google Takeout for export. I use Keep as my fast, raw input of notes captured from the Chrome plug-in and app on all devices and then use Obsidian for deep/evergreen notes. This gives you a way to have a cross-platform simple note capture for Obsidian and runs on Windows, MacOS and Linux.

Keep notes convert to markdown very well and labels will convert to tags in Obsidian. You can also use simple markdown notation in Keep and it will convert properly (including cross-linking notes, and block references). A settings file allows you to set the output path to your Vault if you want.

As always - I’m still in early releases so be sure to test export of a small set of Keep notes first to a folder that won’t disrupt your Obsidian work. In my case I export to a side folder and copy-paste into my Vault if the conversion is valid.

You should have some familiarity with running Python scripts.

You can download the script zip file here -

Instructions on use are in the file here -



Was glad to find this! I have decent grasp of python, but I’m running into an error - all dependencies and requirements are good, but once I try to log in I get no response from the keyboard beyond google username.

I created the account just to say thanks, I am moving away from keep to obsidian, and I wanted to save my notes, and it worked great!

Either way, here are the hiccups I had on my Windows 10, python 3.10, and the workarounds I used; maybe they’ll be useful for someone:

  • couldn’t solve the auth problem the recommended way, so I removed 2FA briefly to do the download, which worked
  • there was an error “local variable ‘ccnt’ referenced before assignment”, which I solved by inserting ccnt = 0 under count = 0, line 233 of
  • “–all” doesn’t download archived notes, for that I used python -a -c -o -p -b --all, as explained in the docs
  • some files with pictures and checkboxes, but no plain text, caused some error about text to come up, terminating the download. I solved that by deleting those notes (2 out of ~1700)