Extract PowerPoint speaker notes as JSON
Get the presenter notes out of a .pptx as clean, structured data —
a single notes.json keyed by slide number, ready to parse. No
PowerPoint, no digging through OOXML.
The notes.json schema
Tekilio Frames emits one object whose keys are source slide numbers and whose values are the notes text for that slide:
{
"1": "Opening — welcome the room",
"2": "Q3 numbers; pause on the dip",
"7": "Hidden slides are skipped, so numbers can gap"
}
The keys are the same slide numbers used by the exported
slide-NNN-stepN.png images, so notes and visuals line up by number
with no extra bookkeeping.
Encoding rules that keep it valid
The file is UTF-8. All control characters are escaped — newlines
(\n), tabs (\t), and the vertical-tab soft line breaks
PowerPoint inserts on Shift+Enter (U+000B). That last one trips up naive
exporters: an unescaped control character makes the whole JSON invalid. Tekilio
Frames escapes them, so JSON.parse never chokes.
How it pairs with the images
Because Tekilio Frames renders the deck and reads the notes in one pass, the
PNGs and notes.json come from the same source-of-truth slide
numbering. Iterate the JSON keys, grab the matching
slide-NNN-step*.png files, and you have a fully paired record of
each slide's visuals and narration.
Related
Want the visuals as well? See PPTX to PNG and animation states to images. Building an AI workflow? The notes plus per-state images are exactly what LLM and vision pipelines want.
FAQ
- How do I extract PowerPoint notes programmatically?
- Upload the .pptx to Tekilio Frames. The result zip includes notes.json — a single object keyed by slide number — so you can parse the notes without opening PowerPoint or reading the OOXML yourself.
- What format are the notes in?
- notes.json is UTF-8 and shaped as { "<slideNumber>": "<notes text>" }. Control characters are escaped (newlines, tabs, and PowerPoint soft line breaks), so the JSON is always valid.
- Are slides without notes included?
- No. Slides with empty notes are omitted from notes.json, so every key corresponds to a slide that actually has narration. Keys match the slide numbers used by the exported PNGs.