How I automate my production admin

There are a number of steps involve din production an episode of a podcast for a client. The steps themselves aren’t important for this, but what I wanted to share was my process for automating their management, so I don’t miss deadlines or forget to follow up on something.

Post thumbnail

There are a number of steps involve din production an episode of a podcast for a client. The steps themselves aren’t important for this, but what I wanted to share was my process for automating their management, so I don’t miss deadlines or forget to follow up on something.

It uses

  • OmniFocus
  • TaskPaper
  • AppleScript
  • TextExpander


Todo apps are ten-a-penny, especially on the Mac and iPhone. Things is my favourite (because it’s gorgeous), but OmniFocus is what I use, because it’s phenomenally powerful and flexible. My only two real gripes with OmniFocus are that every task has to live inside a project (whereas they can be more vaguely-organised in Things), and the design is a bit blocky (and I don’t much like the logo).

One of OmniFocus’ most powerful features is Perspectives, which are ways of filtering and presenting your todos. I have a Work perspective that I load up every time I sit at my Mac, but I also have a Sofa perspective which shows me everything I can do from my iPhone or iPad.

As it’s modelled on David Allen’s Getting Things Done principle, it has a Review feature which helps you keep track of all your projects. By default, projects are meant to be reviewed every week — but you can change this — which gives you the opportunity to see everything relating to that project: stuff that’s on hold or overdue, coming up or maybe completely forgotten about. Different projects can be reviewed on different schedules, and the app keeps track of what you need to review, so you don’t have to put your complete trust in the system; you just have to remember to look over your projects every now and again.


However, one of OmniFocus’ biggest selling points is its support of the TaskPaper format, which is a plain-text format for representing todo items and lists.

Yes, TaskPaper is also an app, but I don’t have much of a need for it, so I just write my TaskPaper documents in Atom, my text editor of choice.

The TaskPaper format supports nested tasks, and you can add properties to a task in a sane, human-readable way. For example:

- Upload episode @parallel(false) @autodone(true) @tags(Billable, Mac) @due(next Friday) @defer(Monday)
  - Complete first edit @parallel(false) @autodone(true) @due(next Wednesday 5pm)
    - Download audio @estimate(5m) @tags(Billable, Mac) @esstimate(5 minutes)
    - Edit episode @estimate(1h 30m) @tags(Billable, Mac) @estimate(90 minutes)
    - Send first draft to client @tags(Billable, Mac) @estimate(2 minutes)
  - Complete second edit @parallel(false) @autodone(true) @due(next Thursday 5pm)
    - Implement editing notes @estimate(30m) @tags(Billable, Mac, Waiting) @estimate(30 minutes)
    - Upload final draft @tags(Billable, Mac) @estimate(2 minutes)
  - Publish episode to host @parallel(false) @autodone(true) @estimate(15m) @tags(Billable, Mac) @estimate(15 minutes)
    - Import editing notes
    - Upload audio
  - Send final info to client @tags(Billable, Mac)

To explain the stuff that isn’t self-explanatory, or is specific to OmniFocus:

  • @parallel(false) means that the task is divided up into smaller tasks that have to be done one after the other, in sequence.
  • @autodone(true) means that when the subtasks are done, this task can be automatically marked as complete.
  • @tag are another way OmniFocus divides up tasks. They used to be called Contexts, and are useful for delineating jobs that can be done at home or on the phone or in the high street. I use a tag called “Billable” so I can prioritise all the tasks I have to do that will generate revenue and keep members alive.
  • @defer means “don’t worry about this until whatever date”, which means if you’re looking at a “Work” perspective, it won’t be cluttered with things you don’t need to do today.

“Waiting” is a tag given special meaning by OmniFocus, as it pauses the task, and therefore blocks any further tasks from being doable. I assign that to the editing-notes task because it’ll always depend on something external happening.

I keep all my work projects in folders that are structurally similar to each-other. In each one I have a file called template.todo, which contains a template for the tasks involved in producing a new episode. It’s human-editable, synced via Dropbox, and each one is slightly different, depending on my responsibilities to the client.

What I could do is open the file, copy the contents, switch to the relevant project in OmniFocus and hit ⌘+V to paste it as a new outline of tasks. But that’s a bit of work, so I have an AppleScript to take care of it.


Most of the things you can do on a Mac can be automated somehow via AppleScript. It’s a ~~bonkers~~ esoteric syntax that is intended to read like human English. It takes a bit of getting used to, and I’ve really only scratched the surface, but it’s incredibly powerful, and apps can provide their own actions that AppleScript can run, so you’re not having to pretend to be your mouse and keyboard.

However, I don’t really know how to do that, so I have a script that reads my TaskPaper file, puts it into the clipboard and then hits ⌘+V for me. It goes like this:

set project to New Podcast Project
set home to (path to home folder as string)
set todo_filename to alias (home & Dropbox:Radio Burrito: & project & :template.todo)
set todo_file to open for access file todo_filename
set todo_contents to (read todo_file as string)
close access todo_file
set the clipboard to todo_contents

tell application System Events
key code 53
key code 51
key code 9 using command down
end tell

The first line is the most important one: it basically points to the project folder. I’ve used “New Podcast Project” here, but this would be the name of the Dropbox folder for one of my clients’ podcasts, which sits inside my home folder.

Lines 4-7 open the file, put the contents into memory, close the file. and then copy the contents from memory into the clipboard.

The subsequent lines then do a bit of keyboard jiggery-pokery to paste the contents of that file into OmniFocus.

The last five lines are important because this script is launched from the keyboard, by me typing a set of characters into OmniFocus. And the app that handles that is called TextExpander.


This is a cross-platform app that’s a big ugly but very useful. In it you can create snippets of text that can be autocompleted for you, so if you have a long email address, you could create a snippet that contains your address, but trigger it just by typing “@me”.

Unlike apps like Keyboard Maestro, TextExpander doesn’t really work in terms of keyboard shortcuts (like holding down one key and pressing another). Instead, it replaces the letters you just typed with the longer phrase stored in its database.

You can restrict snippets to only activate in certain apps, so I have a group of snippets that trigger my AppleScript above — only varying line 1 — when I type a certain string into OmniFocus.

So fi I were producing a show called Bob’s Podcast, I might use the abbreviation /bp (I like using the slash as I’m unlikely use that combination of characters elsewhere in OmniFocus, but you could do just as well without it). When I type those three characters, TextExpander wakes up and fires my AppleScript, without missing a beat or getting in the way.

This is fairly advanced use of TextExpander, which is mostly a database of plain- or rich-text chunks. But you can use it to run AppleScript and JavaScript code if you want, so that’s what I’m doing here.

Because the only way you can get TaskPaper tasks into OmniFocus is through the clipboard, I need to use AppleScript to read the file and do the copying-and-pasting for me. all TextExpander is doing is running that script on command.


There might be a simpler way to do this, but this works for me. I had a whole Keyboard Maestro macro setup to do something similar, but it was unreliable.

It took an hour or so to get setup with lots of trial and error, and probably more time to research, which might seem like a waste of time, but when you consider that I’ve now got the ability to map out all of the relevant things I need to do to make a podcast episode happen for a client on time and on budget, without having to hope I can remember all the right things and schedule them all correctly, like many automations, the setup is worth the continued savings in time.

Add your response

Privacy policy