At my company, we create a Windows-based PowerPoint monthly report (with Word tables and Excel charts) and I am interested in making a case for making it in Keynote. The typography alone might do it, but what if you added automating the content as well? You see, the presentation always has the exact same number of slides and the same tables and charts.
Read the rest of the article for some background info on the Keynote file format...
I'm only into my first hour of investigation, but here's what I've discovered so far (and I know VERY LITTLE about XML):
- The Keynote presentation APXL file is editable in BBEdit (and syntax-colored!). Apple has detailed info about the schema of the APXL on their developer site. It's VERY detailed, so I expect you could find enough to build an AppleScript Studio program to handle a lot of the presentation. Think of a 100 person organization with 1 copy of Keynote but with a distributed basic AppleScript slide maker on every desktop! You could always have the presentations meet corporate branding ID standards!
- If you have the keynote presentation open in Keynote and BBEdit and save a change in Keynote, it updates in BBEdit! This is very handy to see what your adjustments do to the APXL.
- Slides are identified by number:
This could give you a way of identifying the beginning of each slide.<slide id="slide-1" master-slide-id="master-slide-1">
- Charts are fairly easily recognized and the data (a pie, for example) is broken into arrays within an array (the pie is the simplest example since it has one array for series names and one for their data):
So, change the data in the second array and you've changed the data in the chart which Keynote will render the next time the presentation is opened. I'd like to find a better way to identifiy specific objects, though. "<!--" comments don't work because Keynote will wipe them out on the next save. If someone figures out how to comment out objects, please post it!)<array> <array> <null/> <string>Company1</string> <string>Company2</string> <string>Company3</string> <string>Company4</string> </array> <array> <string>Year-Over-Year</string> <string>250</string> <string>110</string> <string>15</string> <string>25</string> </array> </array>
Hope this inspires some entreprenurial spirit to make some Keynote apps! Maybe tying information from Watson (your stock data, perhaps) and piping that into Keynote's XML charts? And that's just off the top of my head.
I'll post again if I get to a point where I actually have some dynamic action going on...

