Ruby Weekly is a weekly newsletter covering the latest Ruby and Rails news.

Castanaut: Ruby-powered OS X Screencasting DSL

By Peter Cooper / February 25, 2008


Castanaut is a Ruby-backed screencasting domain-specific language that allows you to script screencasts in code. When these scripts are run, Castanaut takes control of your Mac and produces the desired effect. It's simply automated, scripted screencasting.

The Origin

Two weeks ago I was reading a post on 37signals' blog about producing screencasts. Joseph Pearson's comment got me all excited:

At Inventive Labs, we’re experimenting with scripted screencasts. That is, you run a script, and at the end of it you have a screencast.

For example, this movie was generated by this Ruby script. No human was involved at all.

Obviously we would replace the text-to-speech narrative with a real voice actor for any screencast we put out, not least because the robot suffers from the Uncanny Valley effect. But it does ensure that timing is right.

I e-mailed Joseph and gave his system a try. It's now publicly available under the superb WTFPL license.



One of the common problems with screencasts is that they take a long time to produce, and this often means they fail to get updated when situations change (new versions of products, updated interfaces, etc.) With Castanaut, you could script your screencasts and rapidly reproduce them each time your software has a major update. If the changes are just at the interface level, you could even reproduce the video, paste the old voice / sound track over the top, and you'd be done.

As an aside, if you're more interested in producing screencasts the "old fashioned" way, I can heartily recommend Geoffrey Grosenbach's "Screencasting On The Mac" video. It costs $9 but you get a lot of information for your money. PeepCode is a sponsor of Ruby Inside but I am recommending this separately to that. I watched it last week and took away a lot of useful information, although now I'm being tempted by Castanaut instead ;-)


  1. Dr Nic says:

    Very cool idea indeed

  2. ian says:

    that is pretty rad.

  3. bryanl says:

    On the surface I want to say it seems cool. But as someone who actually creates screencasts, it seems a bit complex, and I would never use this. Feels like it takes the "art" aspect out of it.

  4. geoff says:

    so, how long until this is extended for functional testing?

  5. Josh Charles says:

    A byproduct of this is that it would be very easy to generate transcripts and close-captioning

  6. Peter Cooper says:

    That's a good point, Josh. You could display the voiceover on the screen, then just speak it out loud, and have iShowU or whatever capture program is running capture your voice from the microphone.. bam, all done.

  7. Joseph Pearson says:

    Yeah, I was thinking a Growl plugin would be one way to do that. An alternative is to extend the Mousepose plugin to use the "display keystrokes" effect.

  8. jc says:

    Very nice, especially after ripping out the Mousepose stuff. Boinx... I've never seen a more naggy, bullsh*t, piece of crap shareware. Put your free trial for 14 days or whatever and then leave your damn users alone.

    But.. off subject. This gem rocks. The code for screencasts is very pleasant to write and works nicely.

    Great job!

  9. Michael Dausmann says:

    I think this is a terrible idea. I find screencasts very usefull and it is the spoken narrative and the clicks, and the pauses and the mistakes that makes the screencast effective at communicating stuff. to script it so its perfect and do that horrible generated voice. I think this misses the whole point of a screencast which is to connect the recorder (a person) and the watcher (another person).

Other Posts to Enjoy

Twitter Mentions