New Movies Coming Out
Automating Projects: Keeping things running while you’re busy
Last year I wrote about Making For Myself. One of the things I had built was a quick and easy way to find new movies being released in the theaters.
I recently decided to turn that project into something that others could enjoy too. Since I already have a couple of websites in the movies space, it felt good to add to my network.
I do however, have a lot of projects already, so I set myself a goal that I could only launch the project if I could fully automate it. If I had no time to devote to the project I wanted it to continue to operate, continue to be updated, continue to grow, all on autopilot.
Getting the Data
I needed to automatically get information on all the movies coming out, I certainly wasn’t going to be able to manually create the list with associated data, even if I wanted too, which I didn’t.
I needed the list of upcoming movies, the release dates for those movies, all the meta data (title, description, images) and I also wanted trailers for the movies. Although not required and not perfect, trailers are a good way to judge how much I want to go see a movie.
Most movies also have a number of trailers, so this would provide more content to the website, instead of just listing the movies.
Movie Data APIs
I built a Laravel command that could be run at any interval, currently I have it scheduled to run once per day, but will probably make it run numerous time per day.
The command gathers a list of upcoming movies. For each movie, I also add the list of trailers. TheMovieDB only provides the ID of the YouTube (in most cases) video, so I also ended up having to use the YouTube API to access more information about the video (thumbnail, runtime, publication date).
Building the Website
I had all the data I needed to build the website.
I wanted to keep the website simple, that is one of the my complaints with other sites, they add so much fluff around the movie information that it can be hard to find the information I really want.
For the MUP (Minimum Usable Product) there would be no user registration, everyone would get the same experience. To serve its primary purpose, I wanted a list of new movies coming out, with some help to decided if I wanted to watch the movie or not. This included the trailers, genre, short description and the trailers.
After I shared early versions of the site, with a few people their first request was to be able to mark movies as favorite. This would allow them to maintain a list of movies they wanted to see, so my plans changed to include user registration and favoriting.
Getting the Users
The most effective way of getting users, without spending a lot of money, is to focus on search engine optimization.
I know movies are hugely popular, so the competition is tough, but ranking well for niche search term that people search for a lot but isn’t dominated by the big sites is a good way to position yourself for growth.
I typically use the Google Adwords tools to estimate interest in a particular search term. I start with a general term, in this case simply “movies” or “new movies” and start exploring from there.
I eventually landed on the term “new movies coming out”, which showed about 60K search every month. There are also a bunch of other related terms (with specific dates) that could also provide a good source of users if you rank well for the main term.
Unfortunately the .com for the site was already taken, but just showing a parked site. Most of the other TLD’s where available. Ultimately I landed on newmoviescomingout.us, as I decided that the website would focus entirely on release dates for the US market.
If things went well, I thought I could spin up sites with international TLDs that focused on those countries instead. Given the automated nature of the site, and desire to keep things simple, this seemed like a good approach.
Having all the countries on one site, might eventually help with SEO, but could complicate the interface for the users.
Just targeting a keyword isn’t enough to rank well, there will be some work to do to generate back links, to the site, but it can be done sporadically and when time allows.
Another very time consuming part of running a website is sharing content.
Via social media and mailing lists you have to build an audience and feed that audience new content to get them to return to the website, or you will be forgotten.
Having to write tweet and newsletters whenever you have new content can eat up a lot time, not something that fits well with a side project, especially one that I originally built just for myself.
How can we automate this?
Fortunately there are API for all the major social media platforms as well for sending emails. I didn’t however want to spend weeks writing code to integrate with each social media site to share my content, so I decide on a different route.
IFTTT is a popular service that allows you to automate tasks. I decided to leverage the work they had already done to help me automate things.
Movies get added to the database at random times long before they are interesting to users, so sharing them immediately is not wise. The trailers however are far more interesting and warrant immediate sharing.
My first thought was to create a mailing list and send the same weekly newsletter to everyone. However, as I added user registration and the ability to favorite movies, I thought it would be better to send customized emails to everyone instead.
I opted to use Sparkpost to send individual emails to users instead.
The plan is to send an email on Wednesday’s (time TBD), with the movies coming out in the next week. Since most movies are released on Thursday or Friday this seemed like a good solution.
I wrote some code that iterates over the list of subscribers and queried the database for the list of upcoming movies and those the subscriber (if they are also a user) has favorited. Once the list has been generated it sends the email to subscriber via the Sparkpost API.
I now have a system that can maintain itself, obviously to be truly successful there will need to be a lot manual work to be done. From adding more features to promotion and beyond. If however I do find myself busy with other things, the site should continue to operate and grow and not simply sit stagnate.
I’m a big fan of movies, so I can see myself spending a lot more time on the website, I hope you visit and don’t miss a new movie coming out.