How to fully automate TV downloads

Written by Alex Wolkov

“I love it when an automation comes together…”


In this article I will share my setup, of following, downloading, sorting, subtitling and streaming tv-shows, from end to end.
I’ve polished this process for years, after using FTPs, MIRC, torrents, rapidshare /w jDownloader, wget automation, and countless other methods (who remembers kazaa or DC++ ?).
Finally I’ve achieved Tv enthusiast haven. And now I want to share the love.

Automate all the things!

I love downloading and watching tv-shows of my choice! I love it so much that it’s my main method of watching television. I don’t own a cable box, and I don’t need one.
It used to take me time to search and download episodes manually, which took a lot of time, and was the main disadvantage over a PVR. Who want’s TV that you need to work for.
Well no more!
This article is a reference to all those who want to COMPLETELY automate their downloadable TV experience.
It may seem like much at first, but I promise you, if you stick to it, and set this up once, you will never have to search for episodes again. You will never have to remember when each show air and which episode you’ve seen last.


This article is provided for reference only. Some of the described tools may be considered illegal in your country. Use the method described here at your own risk.


  • A mac (although everything except the subtitlespart can be achieved on a windows machine as well)
  • A usenet provider account (between $9 – $12, depending on the provider)
    • I strongly recommend (registering through this link will support one of the open source tools in this article!)
  • A good usenet indexer
  • Sabnzbd+ (open source) – to handle downloads from usenet
  • Sickbeard (open source) – follow and automatically download tv shows as soon as they are available
  • Hazel for mac ($25) – Handle files and folders by simple rules
  • Subsmarine ($6.99) – Search and download subtitles from various sites
  • Plex and Plex Media Server – Maintain your tv-shows library, get meta-data, stream and watch your episodes, maintain your watched list.
  • Some free time (believe me, this will save you tons of time later on)

Step 1 – The download manager (Sabnzbd+)

In order to start automating, you need to setup the download process.
First download and setup Sabnzbd+ (Instructions on lifehacker or ). The setup is really easy.
Some pointers on the setup :

  • Make sure you secure your installation with a password
  • Take note of your API key, you will need it later on

During the setup wizard, SabNzb+ will ask you to provide your usenet credentials, without this it will not download anything.

Step 2 – The automatic TV downloader (SickBeard)

Secondly, install SickBeard.
The download archive comes with a folder called scripts. Put this folder in your Documents folder and install the app.

Sickbeard will search and send downloads of all your favorite tv-shows to sabnzbd as soon as they’re available online.
SickBeard is an opensource software, but it can be a bit difficult to install from the project site.
To easily install Sickbeard visit, and download a mac app from there.
After installing SickBeard, add all your favorite tv-shows, by clicking “add show”
Then go into Config-> search providers, to set up your nzb indexer.
While sickbeard comes with a good indexer on it’s own, a backup will never hurt.

Step 3 – Connect the two programs

After all your tv-shows are set up, comes the tricky part, connecting SickBeard with SabNzbd+ for automatic downloads.
SickBeard and SabNzbd+ are working beautifully together, however to connect the two programs a few steps are required.

First, we need to tell SickBeard that we’re going to use SabNzbd+ for all our downloading needs.
Go into Config->General and choose SabNzbd+ as your NZB Method


Then provide all the details of your SabNzbd+ installation, like IP,Port, Username, Password and API key (can be found in SabNzbd+ ->Config->General page

In the “Sabnzbd Category” field , enter “TV”.
Click “Test SabNzbd” and if everything works, click save.
Then, head over SabNzbd+ page.
There are several things to config here.

  • Go to Config->Folders->”Post-Processing Scripts Folder” and select the scripts folder that you extracted from SickBeard download in the previous step.
  • Go to Config->Categories  and set up a new category, call it TV, and set it up like the picture below.


  • The +delete option will tell SabNzbd to delete the files after SickBeard has proccessed them and put them into your TV folder
  • The script option is the connecting link between SabNzbd and Sickbeard, and it’s the script that will tell SickBeard to process a newly downloaded file.
  • Hit Save

Now all these settings can be confusing, so to recap, the whole process will work like this :

  • SickBeard finds a new tv-show episode.
  • SickBeard sends the download information to SabNzbd+, with a specific category TV.
  • SabNzbd+ downloads the file, and because we’ve set up a postprocess script for the TV category, it sends a message back to SickBeard that the file is downloaded.
  • SickBeard picks up the file, and puts it in an appropriate folder and season sub-folder.

And that’s it! Whenever a new episode comes out, SickBeard will trigger a download, and then put it in an appropriate folder!

Getting Subtitles

In order to get subtitles, you can download SubsMarine and select an episode, to find and download it’s subtitles.For long time, that’s how I did it, but now it’s automated with Hazel.
Hazel is an awesome piece of software. It comes with a simple interface of rules, that you can add to any folder, and Hazel will execute them.

For downloading subtitles, first, go into SubsMarine settings, and check “one click download” and “Ignore videos with subtitles”.
Then setup Hazel, to watch your tv-shows directory. I’ve added this rule to let hazel open files in SubsMarine as soon as they are downloaded.


Notice I’ve set the “Date Added” rule for files that were added in the last three days. This is due to the fact that your episodes will download as soon as they are available, but the subtitles are ready for those episodes a little bit later.

And because SubsMarine is set to skip files with downloaded subtitles, you will always have a clean folder with the episode and it’s subtitle.

Watching, Streaming and Maintaining a watched list.

Now that we have our folder full of our favorite tv-shows and episodes, we need a way to know what’s new, and what’s already been watched.
Install plex media server, add a new category for “tv shows”, and point it to your tv-shows folder (the one SickBeard saves your files to).

Next, go back to SickBeard, Config -> Notifications, and find Plex Media Server.
Check “enable” and “update library” and hit save.


This will instruct SickBeard to update Plex Media Server each time a new episode is saved to your folders. Plex will then get the information and meta-data for that episode from and put that episode in your “Recently Added” and “On Deck” lists.

Plex manages your watched list, so that you know which episodes you already seen and which are new. If you have 5 unwatched episodes, plex will show you only the next unwatched one in the “On Deck”.

Extras – remotely manage your downloads

You can setup a port-forwarding and access your SabNzbd+ from anywhere in the world. The best way I found is an iPhone app called Tanis ($1.99 – Appstore)
In Tanis, all you need to do is set up your IP and Port, and you can manage the downloads virtually anywhere.

Extras – download movies, music, books and others

Like SickBeard, there’s a ton of other open source packages to automate downloads of pretty much everything as soon as it becomes available online (lifehacker link).

  • CouchPotato allows you to define the movies you want to see, and let them automatically download when available in the format and definition you want.
  • Headphones downloads any music you might like as soon as it’s available
  • Omniverse automatically downloads comic books.
  • LazyLibrarian automatically downloads ebooks.
  • Gamez automatically downloads video games.