I give a lot of talks, and my method for preparing for talks (not shared by everybody!) is to write down pretty much exactly what I'm going to say. If I've practiced enough, then I don't need to read it, but if I haven't (and I give a LOT of talks, so I often don't have time to practice) I can fall back to reading the notes and not miss anything.
But what about slides? I'm really lazy about slides. I usually know what the title of the slide is going to be, and maybe if there's an important link or something I'll put it on there, but usually I just don't put anything on my slides at all. That's partly because I like nice clean slides, but also partly because making slides is so much grunt work after I've already put the real work into writing the talk.
A useful thing I noticed is that my talk notes have a pretty regular pattern:
# A slide title I want to use
> maybe some extra things
> I'm sure will go on the slides
And then the actual stuff
that I intend to say out loud
split up for pauses
and stuff like that.
And my talk notes will be dozens of those, separated by blank lines.
So I figured it should be possible to make some software that generates a deck from my notes. And that's what this is!
- Raw notes get converted into slides courtesy of PptxGenJS
- The slides are previewed on the client courest of react-pptx
- The actual content of the slides is generated by Anthropic's Claude (so you need an Anthropic API key to make it work)
- The raw speaking notes are included as actual speaker notes you can see in PowerPoint or by clicking
Show Notes
- If the initial generation creates a messy slide, the
Clean up
button will- Take a screenshot of the offending slide courtesy of html2canvas
- Send it to the API which will get Claude to critique the slide and provide suggestions of how to make it less messy
- Regenerate the slide with the suggestions taken into account
- You can of course download an actual PowerPoint file directly to save it and send it to people
It's MIT! Have your way with it. There's a lot of stuff that can be done to improve it.
- Handle images (need to upload them, save them somewhere, etc. Complicated.)
- Avoid overlapping text by converting single-line bullets into multi-line bullets as supported by PptxGenJS
- Make links clickable
- Handle bold and italicized text