MTurk + Google News API = Press

How we got a dozen launch-day write ups with a little JavaScript, Mechanical Turk, and the Google News API. Code included.

Warning: you only launch once. I don’t recommend generating press until you’ve validated your customer segment(s), their pain(s), and much of your solution. Use this to spark a flame you’re sure will be an inferno.

Now, lets hack some press…

Mechanical Turk Google News Press Hack flow chart

Getting press is daunting for just about every founder. Who do you talk to? How do you find them? What do you pitch them? All questions I spend hours thinking about…for…every…project.

But with a little creativity, and a little hacking, getting press is easier than I thought. Easy enough to get a recent product covered by…

mashforbeswired TNW Venturebeat3logo-geekwire-finalgigaom-logo2

Background

Some friends and I were launching ThingsWeStart, a “Crowdfunding Aggregator” – imagine all of the projects on Kickstarter, Indiegogo, etc. displayed on a map, so you could support projects near you.

Something this badass deserved a press push…

Step #1 – Find the Right Reporters

The first step was to find reporters who might cover us. That started with a Google News search for “Kickstarter”.

Hypothesis: reporters who have already written about Kickstater, or a Kickstarter project, are more likely to write about a map of Kickstarter projects.

This is a very different approach than listing all possible news outlets and submitting tips to them. Instead I was personally targeting individual reporters, who already demonstrated interest in our subject matter.

Want to follow along? Search Google News for articles related to your company’s value proposition.

Step #2 – Download their Articles

Now I had some articles, but what I really needed was the reporters’ contact info. Instead of searching through each story on my own, which would take forever, I wanted to created a spreadsheet of them so I could farm out the work.

Luckily, Google News has an API which makes that relatively easy – but there’s no sense in you reinventing the wheel. Please, use my code:

Google News Downloader Getting MVP Press Hack
Click the pic, use the tool, and you’re halfway there!
Following along? Use this page to download a spreadsheet of articles by reporters you want to contact.

Step #3 – Collect their Contact Info

With the list of articles in hand, I wanted to collect the names and email addresses of each reporter – so I could personally tell them about our launch.

Thing is, I didn’t want to do that work myself – it’s boring. Instead, I asked the good folks on Mechanical Turk (mTurk) to do it for me…for $.03 per email address! If you’re not familiar with mTurk, I can’t recommend it enough.

To get started, I created a HIT template:

mechanical turk template

Then I uploaded a CSV (the spreadsheet you downloaded in Step #2) to mTurk:

…and mTurk automatically combined the two to create a HIT for each article in the CSV:

mechanical turk template preview

Rather than investing two weeks digging for contact info for 700 articles, dozens of people delivered me results within a couple days.

I also recommend including tips for finding author’s emails addresses in your HITs. Example

Important: I suggest you turn off requiring Master Turkers. You’ll have to babysit the results, and block Turkers who aren’t giving you valid results, but you’ll likely find more people willing to help.

Following along? Create a new HIT on mTurk and use this HTML as the basis for your template.

Step #4 – Progress Monitoring

When I did this, I saw a large number of HITs completed within the first few days. After that, results started to drop off.  I think my HITs eventually got pushed to the bottom of the stack.

Pssst: If you need a hand, I’m happy to help.

To counter that, every couple days I would cancel my incomplete HITs, and relaunch any articles I didn’t have contact information for.

Within a week, I had contact information for 350 reporters who had written articles about Kickstarter.

Step #5 – Build a Press Kit

The most important rule I’ve found when working with reporters is:

The more you help reporters, the more they’ll help you. tweet-this-button

These poor folks are under crazy deadlines, have to produce multiple stories per day, and are inundated with requests for coverage.  The more we can help them out by writing our story for them, the better off we’ll both be. Win-win.

Here’s the press kit we prepared for our launch.  It includes:

  • Description of the problem we solve
  • Screenshots
  • Beautiful Infographics by Stephanie Haller (be sure to include some kind of image)
  • Bio of the team
  • Why we’re doing this
  • Why we’re different than existing solutions

Step #6 – Prime the Pump

With contact information in hand, and a killer press kit, it was time to reach out to the reporters. 5 days before launch, I gave them a heads up we were coming, but no access to our press kit:

A couple days later, I gave them access to our full press kit, but told them not to write about us until launch day:

On launch day, I told them to have at it:

Example: Launch day emai

Important: embargoes are essential. 

It’s important to tell reporters that your content is “embargoed” until you officially launch, which means they’re not allowed to write about you until your launch date.  If you don’t mention this, one of these folks is going to jump the gun and publish your story early. That in turn, will make other reporters less interested in covering you, since it’ll be old news by then.

We didn’t include an embargo, but we should have…

Some news outlets/reporters hate embargoes. If you really want their press, only tell them about your launch the day before you go live.

Step #7 – Watch the Ink Roll In!

Once we launched we simply setup some Google Alerts and Twitter searches, and watched the press roll in.

Hack Metrics

  • Hours spent: 40 (includes time coming up with the hack, writing the code, etc. Should take you less.)
  • Money spent: 350 email addresses x $0.03/address = $10.50
  • PR pros hired: 0
  • Total write-ups: 13
  • Traffic generated: ??? Remember when GoDaddy’s DNS service went down? That was the day we launched :)

Following along? I’d love to hear if you’ve tried this, or other press hacks!

Final Tips:

  • Play around with pricing. If you’re in a hurry, you’ll probably want to pay more than $.03/article
  • Block turkers who submit obviously fraudulent contact info (you won’t have to pay for those)
  • I’m stoked, quite a few people are finding this article useful! Unfortunately, that means there probably lots of HITs on MTurk right now trying to get contact info for journalists. That means, you may need to either pay more, or wait a little while before trying it yourself.

TL; DR

The Google News API and Mechanical Turk can be combined to get lots of press for your launch.

The hackers’s guide to getting press What's comes after interviewing customers? A Post It cloud to sort the signal from the noise.

What’s Next?

Want help getting press? Schedule a 1-on-1 mentoring call.

Subscribe via Email or RSS for more hacks and in-depth discussions on getting press, validating marketing channels, and reaching your customers.

First time to Customer Development Labs?

Check out our most popular experiments:

  1. Interviewing 100 customers in 4 hours with MTurk
  2. You’ve interviewed customers. Now what?
  3. Lean Recruiting: Testing a 2-sided market

Customer Development Made Easy…

34 comments

  1. Ammiel

    Love the Hack.
    Note, it is a gift that keeps on giving — not just for launch day.
    Key ingredient for sustainment is having your company/app produce data and insights that reporters could use.

    My Example: http://www.brandinsights.com/ (we score a top press hit every week).

    Justin, in your case the commentary on kickstarter trends can serve that same type of info (you could do industry by industry, tech trends, movie trends, cooking appliance trends, etc. etc.)

    • Justin Wilcox

      Interesting idea, but we ultimately shut the Kickstarter project down. We didn’t have enough interest from customers to turn it into something sustainable. I’ve found press helpful in very specific scenarios, and I love the idea of sustainably generated press, but we weren’t solving a big enough pain for it to matter.

  2. jcs

    Awesome write up, thanks for sharing! Curious, what email client did you use to blast out the emails? Did you run into any trouble w/ spam filters?

    • Justin Wilcox

      Thanks! We used Mailchimp and we tried to make the emails look personally written by mentioning by name (and link) the article that got us to that author. That said, we had an unsubscribe link in the form of “Don’t ever want to hear about ThingsWeStart again?”

      No data on whether or not the messages landed in the SPAM bucket, but considering the interest we got, my gut says it wasn’t too big of a problem.

  3. Kate Gramlich (@KateGramlichSEO)

    Looove me some mTurk. I was a worker years back to make some extra cash in grad school, and have been very happy in my role as a ‘requester’ now. Quality control can be a tedious part of the process at first though — any nightmarish experiences for you? With all your fields being required, is there any worry of people stuffing with fake contact info? Also, do you pay the people who try but cannot find any details?

    Needless to say, you’ve piqued my interested here :D Feel free to get ahold of me on twitter instead

    • Justin Wilcox

      Thanks Kate – great to hear from a former worker! I did have some people put junk in the fields, but I just rejected their HITs and banned them from doing work for me. When I did that, the HITs were automatically relaunched and I didn’t have to pay for anything.

      No, I didn’t pay people who tried but weren’t able to find contact info. Not a bad idea though.

    • Justin Wilcox

      Sorry about that James. It just worked for me. Can you let me know what browser and search criteria you’re using – as well where it’s choking?

      Thanks,
      Justin

      • James

        Hi Justin – it worked for me a few hours ago, but I tried using it again just now with Chrome and IE 10 and wasn’t able to generate search results. Tried search criteria of google competitors to test it, then hitting enter as well as clicking on the search button in Step 1 and then nothing happened.

        • Justin Wilcox

          Lame…if you know how to use Chrome’s debugger (F12) would love to see what the console says. No repro on my end…

          Who else is having this problem?

  4. Ed

    Hey Justin, thanks so much for this generous amount of info: I’m trying your method to extract authors from a CSV dump of Google News articles, but I’m stuck on mTurk: after 15 hours there’s been zero response to my mTurk post. I’ve set it as $0.03 per HIT, with 1 minute per HIT and 12 hour approval time: is this similar to what you used?

    • Justin Wilcox

      Glad you’re giving it a shot ed – and thanks for asking. Couple things to keep in mind:

      • Some 15,000+ people have seen this post over the last week. Something tells me mTurk is full of these requests right now and there are a limited # of people who will do this work.
      • Make sure you’re not requiring Master Turkers. This work is easy enough to validate on your own, I wouldn’t recommend limiting your pool.
      • Try raising your price. If it were me, I might even select a group of really important articles and pay $1/email address. $50-$100 feels well worth an experiment to me.

      Best of luck, and please, keep me posted!

      Cheers,
      Justin

      • Ed

        Thanks so much, Justin: I’ve re-created the post with Master Turkers disabled (enabled by default and Amazon warn about disabling this) and have increased price from $0.03 to $0.05. Will certainly keep you posted! Thanks again.

  5. Emma

    hi Justin,
    Great post, thank’s for sharing the tips !

    While testing your code, it seems to be very difficult to change the written language (french).
    Tested to change “ned” parameter without revelant result.

    Tested to add the following code with no luck :
    newsSearch.setRestriction(google.search.Search.RESTRICT_EXTENDED_ARGS,
    { “lr” : “lang_fr”});

    Do you have an idea ?

    • Justin Wilcox

      Sorry, haven’t played around with different languages at all. I do know the EXTENDED_ARGS weren’t working for me. If you’re up for it, I’d love to hear how this work with Bing’s News API.

      Maybe it’s better and supports better language and geographic queries! If you try it, I’d love to know.

  6. Len

    I am so torn about this. I really love 80% of this methodology. I think using Turk to acquire emails is really fantastic and I may run a few similar experiments myself. I think that mass emailing is a bit tricky though. The first email you sent was fairly personal and I got the sense that you were trying to be as genuine as possible, but I’ll be honest, I personally would have marked it as a spam. I don’t know your analytics so I can’t say whether you’re right or wrong. I always fear having my domain associated with spam so I’m very careful about how I run my email marketing programs. Again…this is very impressive and please know I appreciate the transparency here. Just making some observations that might help others think through their strategy in the future.

    I wrote a bit about a more severe case here: https://medium.com/how-to-use-the-internet/45dbd26ae4f2

    • Justin Wilcox

      Hey Len, thanks for your thoughts. I hear you, may be too abrasive for some – and being associated with SPAM is definitely something to avoid.

      I could see folks using a similar technique to target a smaller audience of the more influential authors, and writing personal emails to each of them. That may be the best of both worlds.

      Justin

  7. Guillermo

    This is great. I am in the process of gearing up to our launch, and this could have come in more handy. Thanks for the great tips and tricks – so useful!

  8. paul

    The probleme is not to find the email adress of journalist. The real challenge is to find the subject in your company that will interest their readers…

  9. Corwin

    Thanks Justin. I hacked your hack a bit by using MuckRack ($99/Month, 30 Day Trial). I found that the Google News API creates a lot of junk links if you’re searching broader topics/keywords. By using MuckRack, I was able to search reporters by keywords and create a media list that gave me the name, publication and twitter handle (plus a lot of other stuff) in an excel. Using a modified version of your template and the .csv from google news, I left only the e-mail field and url reference link open for submission. This allowed me to target very specific journalists and avoid duplicate/unrelated links. It also allowed me to raise my reward to .5 because I was only searching for 100 journalists instead 700. I got 80% of my answers overnight!

    Thanks again. I would have never thought to use MT without the post.

    Example pic: https://www.dropbox.com/s/w534lgmofoyqm9l/Screen%20Shot%202013-10-03%20at%2011.44.55%20PM.png

    -Corwin

    • Justin Wilcox

      Working for me on Windows + Chrome. Might want to try a different browser or copy/paste the table into a spreadsheet or better yet.

      If your game, would be awesome if you grabbed the code and fixed it!

      Good luck,
      Justin

  10. Ben Pottinger

    Pure genius! Really love it, thanks heaps!

    One Q though, how do you change the search locations in your “News Downloader”?

    I read through this page and couldn’t find anything, as well as a look through the source code for the page and couldn’t see the ability to edit a location. Unless it’s one of the javascripts in the code?

    Would love to hammer this in Australia ;-) Many thanks!!

      • Ben Pottinger

        Thanks heaps for the quick reply. I downloaded the files and got them to work with the normal index.js

        However, when I enter in Australian capitals I can’t get the it to search at all. When I click “Search” nothing happens. Then, I switch back to the original .js and it works fine (obviously my poor editing abilities). Below is the only section I edited, would really appreciate your feedback?

        const CITIES_MAX = 5;

        const cities = [“Melbourne, Victoria”, “Sydney, New South Wales”,
        “Brisbane, Queensland, “Perth, Western Australia”
        “Hobart, Tasmania”,

        ];

        const states = [ “VIC”, “QLD”, “NSW”, “TAS”, “WA”, ];

        Also, I have tried “Melbourne, Australia”, “Sydney, Australia” etc… but no luck.

        BIG thanks Justin :-)

Leave a Reply