cc licensed flickr photo shared by Jacob Whittaker

UPDATE (Sep 21, 2013): These instructions are a bit dated– see the updated instructions.

Last year I used for the first time a nifty AppleScript that allows you to embed a code in the notes of your Keynote presentation that will trigger a twitter message with the text you want. Sure it is canned, but if you are wanting to trigger a response tied to your talk, or just want to have updates done in case your audience is too lazy to tweet for you, it was perfect. This script no longer works, see below.

Well, until the “oauthpocalypse“, when Twitter changed the way third party apps could use the service. Before, this could be done by sharing your username and twitter password, which of course is a dicey operation if you believe in black helicopters (they do exist, and yes, it was not wise). Twitter shifted to the more secure Oauth method – the thing you see when you connect an outside party to your tiwtter account:

It’s like what many other web apps do- flickr has done it maybe the longest, but you of course have to be logged into your account to grant access by an outside entity, so you are not sharing your passwords with BillyBob’s Twitter Wangdoodle app.

Alas, this killed the Keynote Tweet tool, which used the older basic authentication.

But there is always someone who figures it out. Among the people reporting on the google code site IT DOES NOT WORK was a gem – that brought me to The OAuthpocalypse and Keynote Tweet, and hope for a way out- there is a download for the newest Keynote Tweet tool there or get it directly at

There is a new approach, but it does take a littler geekery to get there. Somehow I stumbled through the steps.

The key is that the old app used curl to send the twitter command, and the new way is via a special version of this tool (this is the unixy stuff that is lurks below the shiny mac OS X desktop) called twurl. And the site above had a new version of the AppleScript that should work once some more noodles were added to the substrate.

This gets you into command line land- the key phrase of “In order for the script to work, you’ll need to install and configure twurl.” is not to be taken lightly. Installing is not quite double clickign downloads and “configure twurl” became the obscure step. This is what I did.

1. I downloaded twurl. A bunch of unixy looking stuff. How do I get it in my OS?
2. I find the steps in the obtuse INSTALL file. It says “Install with Rubygems” I dont know what rubygems is, but I try:

This got me a warning that I needed a newer version of rubygems.

3. What is ruby gems? I went to I found instructions – you dont need to download it, just used the command line tools to do it.

4. I ran the steps

Note that these took a few minutes to process, so do not be put off by the blank screen. Go make coffee or walk the cat.

5. The twurl INSTALL file also listed under “Dependencies” a cryptic hint that I would need something else. I did

which installed something.

6. I then tried the Keyote Tweet 2 app, and it failed; I was not authenticated.

7. I went back to the twurl README, and it mentioned I needed to authenticate my install, kind of like the muliple steps needed to get the WordPress TwitterTools plugin to work. It sounds convoluted, but it worked. You have to go to twitter and register an OAuth app, as if you are making some new tool

It is obscure, and most of the info does not matter, but give your tool a name, make up a description. The key parts are the radio button settings:

The application type is Client and default access is Read & Write.

8. The whole reason for this is to get the key pairs (strings of gibberish text and numbers) that twitter uses to authenticate you, the consumer key and the consumer secret key (for obvious reasons blurred here)

9. You then go back to terminal and use this command

where the_key and the_secret are the strings from the step above.

10. This provides a URL that is about 2 miles long. Copy it and paste into your browser. It will then give you the normal OAuth screen like above, which when you click, will provide you a PIN number. Copy that number.

11. Return to your terminal, paste in the number and press RETURN. You should now be authenticated on your machine.

I did a test in Keynote- you have to wrap your tweets in the speaker notes like

You open the Keynote Tweet 2 app, than play your presentation, and when you click to the slide with the bit above, the tweet is sent. Here was my test last night:

and you can even see that it lists my app name “CogDog Keynote Tweets” as the publisher tool 😉

So (a) yes does work now and (b) a bit of geekery is needed to do it but (c) if I can do it, you can.

UPDATE (Sep 21, 2013): These instructions are a bit dated– see the updated instructions.

If this kind of stuff has value, please support me by tossing a one time PayPal kibble or monthly on Patreon
Become a patron at Patreon!
Profile Picture for cogdog
An early 90s builder of the web and blogging Alan Levine barks at on web storytelling (#ds106 #4life), photography, bending WordPress, and serendipity in the infinite internet river. He thinks it's weird to write about himself in the third person.


  1. I played around with it this weekend, and instead of using twurl I settled on ( It automatically creates the app on Twitter for you, making the set up easier.

    The modified Keynote Tweet (ttytter).app is here:

    It assumes is in the root of your home directory, if you put it somewhere else you’ll have to change the Applescript. If you have multiple ttytterkey files, you’ll need to set them in the Applescript too.

    I have a presentation March 18th, I’m excited to try this out!

    1. Thanks Ryan,

      That will be helpful to not jump through the fake app set up requests, yet still geeky enough to pump my ego.

      Let me know how it goes. My last preso bombed because I relied on the flaky hotel wireless and the keynote Twitter app choked. Damn, I should have used my MiFi….

  2. Hi, got so into it that I actually copied your website first:-) under the twitter app; changed that now…. yet when I run the command with the key and keyword I get a bash error, is there something specific about it? 2 lines, execute separately, or I am I simply not geeky enough…..

    Till then I seemed to work perfectly well…..

Leave a Reply

Your email address will not be published. Required fields are marked *