Geeknote - Evernote at the command line

I’ve been an Evernote user for a long time. Evernote solved a problem that a lot of us had, knowledge workers in particular: I get important information from a variety of sources, but I have no single 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 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/jeffkowalski/geeknote.

I’ll be using Homebrew for this install. If you don’t already have Homebrew installed, you can get it at brew.sh.

I used the following command on MacOS to install: $brew install --HEAD https://raw.githubusercontent.com/jeffkowalski/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 index of the note I want to show or edit. Geeknote, by the way, supports markdown for formatting.

Upload content

Another trick lets you dump the contents of a (text) file into evernote:
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 cases.