From: dbucklin@sdf.org Date: 2017-05-25 Subject: Geeknote - Evernote at the command line I've been an Evernote user for a long time. Evernote solved a prob- lem that a lot of us had, knowledge workers in particular: I get important information from a variety of sources, but I have no sin- gle place to organize all of it. I installed Geeknote so that I could have access to Evernote in my terminal. It's an environment with a lot of flexibility, and I can use vim to edit content. When I'm away from my desktop, I can use the Evernote client for web or one of their mobile apps to access my notes. Installing Geeknote First, don't use the Github repo that the geeknote.me[1] site points to. It's really old and its OAuth implementation is broken. Instead, use the more up to date version at https://github.com/jef- fkowalski/geeknote[2]. I'll be using Homebrew for this install. If you don't already have Homebrew installed, you can get it at brew.sh[3]. I used the following command on MacOS to install: `$brew install --HEAD https://raw.githubusercontent.com/jef- fkowalski/geeknote/master/geeknote.rb` after the install, I had to login to my Evernote account. `$geeknote login` It asked me for a 2FA key, but I didn't have 2FA enabled, so I just left it blank and I was fine. Using Geeknote Using geeknote is pretty straightforward and the documentation is very clear. The commands are a bit verbose, however. Given that the goal of Evernote is to help you capture information quickly, I set up some bash functions to make common use cases (create, find, show, edit) more accessible. I added these functions to my .bash_profile. ``` function gn { if [ "$1" ]; then geeknote create --content WRITE --title "$*" fi } function gf { if [ "$1" ]; then geeknote find --search "$*" fi } function gs { if [ "$1" ]; then geeknote show "$*" fi } function ge { if [ "$1" ]; then geeknote edit "$*" fi } ``` After adding these to your .bash_profile or .bashrc, you will need to source the file to make these functions available in the shell. `$source .bash_profile` Create a new note When I want to quickly capture a note, I enter a command that looks like this: `$gn This is the Title of my Note` Geeknote will dump me into my editor so I can capture my notes. When I save and exit, geeknote will upload my new note to Evernote. Finding notes Since searching is faster than browsing (assuming you know what you are looking for), I can search for content like this: `$gf keyboard` and geeknote will give me a listing of all my notes that include the word *keyboard*. To show or edit one of these notes, I can use my `gs` or `ge` commands along with the in- dex of the note I want to show or edit. Geeknote, by the way, sup- ports markdown for formatting. Upload content Another trick lets you dump the contents of a (text) file into ev- ernote: `geeknote --title "Note Title" --content filename.txt` Geeknote will upload the contents of filename.txt into a new note with the title Note Title. Geeknote has a number of other features that will let you make use of tags and reminders. With shell integration tools, there are lots of cool things you could do to automatically add notes to Evernote or make information capture fast and fun. If you really just want to browse through your notes, or if using images is required, using the desktop, mobile, and web clients are better for those use cas- es. [1]: geeknote.me [2]: https://github.com/jeffkowalski/geeknote [3]: https://brew.sh/