Home Projects 3D Prints

An Alfred workflow to create calendar events with natural language

I've been using Fantastical on and off for some years now, and although I'm not using it right now one of my favorite things about it has always creating new calendar events on the fly by bringing up the mini menubar app with the global keyboard shortcut and entering the event details with natural language recognition.

As I mentioned, I'm not using Fantastical anymore but I miss that quick interaction dearly; so I decided to try and mimic that interaction by creating a workflow for Alfred: invoking Alfred is already part of my muscular memory, so I thought it would be awesome to have Fantastical-like calendar event creation capabilities there.

So, here it is what I have so far:

Calfred

This little workflow is called Calfred and you can download it from the GitHub releases page: it supports "kinda-natural" language and it has an auto-update feature so that when a new release is published on GitHub it will automatically fetch it and update itself.

When you install the workflow you'll need to set the name of the target calendar you want to put your events in (no multiple calendars support at the moment of writing), and then you can use the workflow with the cal keyword.

Now, about the real meat - the "kinda-natural" language recognition: it is definitely not sophisticated but rather a simple set of regular expressions and evaluations so that it can extract time/date/duration from a string and use the remaining string tokens as the "subject" of the event: I made a small Go package for it, inspired by some other similar projects but with my own personal twist.

Some of the events you can create with Calfred:

Again, nothing super spectacular and nowhere close a proper NLP engine for dates, but at least for my usage it covers everything I need.

Of course if you find it useful and have any feature request or bug report feel free to hit the issues page.