Zack Thoutt

@zthoutt

15 reasons why my Game of Thrones AI went viral and how I’m going to do it again

WTAF just happened?

Back in July the seventh season of Game of Thrones was airing, and as a huge fan of the books and T.V. show, the song of ice and fire was constantly consuming my mind. I was taking Udacity’s Deep Learning Nanodegree and had just completed a course project where we trained an LSTM (type of neural network) to generate scripts for The Simpsons. On a whim one night after work I decided to modify and enhance the code from this project to generate text for the A Song of Ice and Fire series (the books Game of Thrones is based off of for fans of the T.V. show).

I added a few bells and whistles to the network and spent a couple days tuning the hyperparameters before I started getting good results. After I finished my final model, I grabbed a beer and spent a few hours generating text, reading the results, laughing hysterically at times, and saving the greatest hits. Within about three days of starting my project I posted the code and best text generations on Github to share with the world.

I thought my project was pretty amusing, but I honestly didn’t think anyone outside of my friends and family would find it that interesting since the network still struggled to write proper grammar. I shared it on Twitter, Instagram, and facebook and got a surprising zero likes, shares, or comments.

I don’t have a large following on any social channels, so I didn’t expect my project to go viral, but I was expecting some reaction. I spent the next month or so thinking about why some people’s projects generate so much viewership while others don’t. Sometimes the content of one project is simply better than another, but I think there are other contributors at play.

Before I get into the details of how I think you can game the system to increase the popularity of your side projects, I want to state that there are plenty of good reasons to work on a side project other than having it go viral or making you money — you should also explore projects that help you learn and that you enjoy.

Anyways…

When I reshared my project at the end of August (the week before the GOT season finale) I tried a few new sharing strategies, and to my surprise, the project went viral globally. I had friends from England, China, France, Canada, etc. message me saying they saw my project in their country’s local news! In total, there are about 25 pages of Google search results relating to my project.

The difference in viewership and popularity was entirely based on how I shared the project. I have literally not changed the code or text generated by the model since July 24th.

I spent a good part of September trying to distill exactly why my project went so viral. I changed my sharing strategy a little, but to be honest I think a lot of the reason my project spread so far was luck.

I don’t like to rely on luck though and I want to understand how to create projects in the future that get the same attention my Game of Thrones AI did.

This blog post details what I learned from the experience and how I plan to use this knowledge to help my future projects go viral.

What I did right (mostly unwittingly)…

Choose the right social channels to share on

This is probably the most important strategy I learned. You need to get your project in front of a good number of people who are within your target audience. While Twitter, Instagram, and facebook might be good places to share your work if you have a large following, the reality for most people (myself included) is that you need to strategize more where you post.

If you’re project is about horses, post it in in the Horse SubReddit and on popular horse forums. You might not have as high of a potential audience on these channels, but they are super targeted. There is probably at least one perfect SubReddit for any project, so make sure to do your research there when sharing a project.

When I shared my project the second time I only posted it on one site: HackerNews. It was my first and only post ever on HackerNews and it ended up being the perfect channel for my project because AI/machine learning is trendy in the programming community and a lot of programmers are also interested in epic fantasy like Game of Thrones.

Create projects for a highly targeted audience

When you’re brainstorming ideas for a project you want to become popular, focus on coming up with ideas that will have a small audience of super fans. It was the small group of people on HackerNews who find both deep learning and Game of Thrones interesting that made my project go viral. I personally know maybe one person who shares these exact interests, but finding other like-minded people made the difference.

If I instead trained an AI that generated mundane text about going to the grocery store it would not have gone viral. Or even if I created a model that could generate text for any book series it probably would not have been as popular even though it would be technically more challenging. Create something that a small group of people will think is the greatest thing since sliced bread.

But your projects should still provide utility for everyone — technical or not

While you should try to come up with a project that targets a niche audience, you should present the results of the project in a way that anyone can gain something from them. If I had posted the code for my Game of Thrones AI without samples of the text it generated, only people with a working knowledge of deep learning would have been able to appreciate it, and even they might not have taken the time to retrain the model or read through the code.

Likewise, if I shared the text without the code, there would be no way to verify that the text came from a machine learning model and people who are interested in learning more about how the model works would have found the project less interesting.

Almost everyone can appreciate one or more of the following — the advancements of AI, deep learning specifically, or Game of Thrones. Always present your work, no matter how technical it is, in a way that almost everyone you know can understand it and benefit from seeing it. This will help your project spread once your super fans share it.

Timing is key

The fact that I reshared my project the week of the season seven Game of Thrones finale helped accelerate its popularity. This was a big advantage over the first time I shared my project when the season was just getting going.

I’m sure that if I would have shared my project in January instead of during the Game of Thrones season there would have been much less interest.

A perfect time to share won’t exist for every project, but before you share your next project think about what pop culture events will be happening in the near future that might have some overlap with your project and leverage those to attract attention.

Get a journalist to write about it

This may be difficult when you’re getting started, but once you have done interviews with a few journalists you can save their info and ask them to write about future projects. This is a mutually beneficial relationship as you can give them exclusive access to your project before you post and share it so they can have an article written and ready to publish when the timing is right.

If you don’t have a working relationship with any journalists, simply reach out to a few to see if they would be interested in writing an article about your project. This is going to be something I say a lot in this post, but the worst that can happen is you never hear back from them. Take the chance and put in a little work to get contact information for a few journalists whose domains overlap with the theme of your project. You can find journalists pretty easily searching on Twitter or LinkedIn.

Get other people to share it

Telling people how cool your project is only gets you so far. It’s when other people start sharing your project that it can go viral. I only posted my Game of Thrones project on HackerNews. From there someone shared it on Reddit, where it rose to the top of the feed. The journalist that went on to write the article for Vice saw my project on Reddit and I’m guessing that most of the other people around the world saw one of the many republished versions of his Vice article.

This section is probably the most obvious — duh you want people to find your work cool enough to share it — but I think that this can also be engineered to some extent. Before you post your project online, ask friends if they will share it on their social networks. This also feeds into the next section of strategies that I wish I would have done…

What I’ll do better next time…

Share everywhere

You don’t need other people to share your project in order for it to show up on social networks around the internet. Post your project all over the place — Reddit, Twitter, Facebook, HackerNews, forums, blog posts, Instagram, LinkedIn, StumbleUpon, Tumblr, etc. The worst thing that can happen is nobody likes your posts. The best thing that can happen is that the perfect one or two people see your project and help drive its popularity.

Plan your social posting schedule beforehand

When you’re sharing your project across many social channels, you need to make sure there is a consistent message and that the message is appropriate for the audience who is likely to see the post on each social channel.

For example, when I posted my project on HackerNews, I got away with the title “RNN that generates Game of Thrones text.” Non-technical people would have scrolled past that post (wtf is an RNN?). If I were posting the same article on the Game of Thrones SubReddit, I might name it something more approachable, such as “AI has written the next Game of Thrones book” (yes I know that the books are ASOIAF, but more people know Game of Thrones so I made this mistake intentionally in my project).

When I share projects in the future I’ll have a well-planned strategy for where I’ll share it and exactly what all of the post titles, descriptions, images, etc. will be.

Take the time to create catchy titles

There is so much content on the internet. You have about 50 characters to capture someones interest before they scroll right over your post. Your title needs to be catchy and surprising. I recently read Benjamin P. Hardy’s free ebook on creating an online following, and he emphasized that your titles should focus on a result rather than how you did what you did.

For example, the title “RNN trained on Game of Thrones books” is not as good as “RNN that wrote the next Game of Thrones book.” The first focuses on how I did my project while the later focuses on what I did, making it more obvious to the reader how they might benefit from clicking the link. People don’t care how you do things (at least not on first glance), they care about what you do and why you do it.

Make sure your project’s URL has a good graph image

When you share a link on most social networks the facebook/twitter graph image defined on the page will show up as part of the link in your post. It’s worth the time to make sure this image is good and that it aligns with your project’s content.

This is another one of the mistakes I made. I simply shared the link to my Github page, which has my profile picture as the graph image when linked. I think that I would have gotten more attention on social channels if I took the time to make sure the link I was sharing had an appropriate, relevant, and interesting image.

Ask prominent people to share your project

They probably won’t share it, but there’s no harm in asking! And if they do, it could launch your project into a viral state. If I could go back, I would Tweet at Ian Goodfellow, Andrew Ng, etc. and ask them to share my GOT project if they found it interesting. It’s a hail marry, but you have to play the odds and take risks.

Direct attention back into your social network

The thing I regret most about the experience of my Game of Thrones AI going viral is that I didn’t direct any of the traffic back to my social channels to start to gain a following. Some people were resourceful enough to Google my name and find me on LinkedIn, but out of the hundreds of thousands of people that saw my project (probably actually millions), I have about five new Twitter followers and 20 new Github followers to show for it.

If you want people to do something, you have to ask. A simple section in my project’s README asking people to follow me on my social networks if they want to keep up-to-date with my future projects probably could have gotten me thousands of followers across my social networks.

Have a personal website setup

Speaking of directing people into your network, you should probably have a personal website — especially if you’re in tech. I’ve hosted my resume on a personal website in the past, but after starting the job that I’m currently at I got cheap and decided it wasn’t worth $10/mo for the Digital Ocean server to keep my site up, so I shut it down. So dumb.

If you want to build a following of truly dedicated fans (not just people who are following you to get a followback), then they’re going to want to know more about you than what’s in your 160 character bio. This can either happen through repeated exposure (tougher), or by making personal, detailed information easily available on a personal website.

I learned my lesson and have spent the past couple weeks designing and developing a new personal website.

Ask people to link back to your site

When you do finally get a journalist to write about your project, make sure you ask them to link back to your website! I don’t even want to think about how much traffic my site could have gotten if I asked Vice to make my name in the article link back to my website. I could have put a simple ad up and made a little money to help pay back the >$100 I spent on GPU usage to train my model and also redirected a lot of people back to my social channels and gained followers.

Brand your social channels consistently

Not everyone is going to find you via a link to your social channels from your project’s landing page. They might search your name on Google, facebook, LinkedIn, etc. and you want to make sure that you’re easy to find. This is why you should have a consistent personal brand across your social channels.

Make sure all of your bios are similar and descriptive, you have locations added when available, and your profile picture is a clear photo of your face.

I’ve actually decided to take it a step further and use the exact same photo for all of my social channels. In this way, that specific photo will become part of my personal brand and people who see a profile picture of me on site X will know right away whether or not they have found the right profile on site Y.

Call to action

I’m currently on a quest to discover how to create side projects that generate passive income. If you want to stay up-to-date with my writing, ideas, and projects, you can find more info and links to all of my social channels on my personal website:

zackthoutt.com

More by Zack Thoutt

Topics of interest

More Related Stories