PowerPoint to Markdown
Your slide deck, flattened to text in one click
- markdown
Every slide deck you've ever been sent is 60% bullet points and 40% images nobody explained. This node turns the bullet points into Markdown so you can actually read the thing or feed it to an LLM. It's a .pptx-only converter from the ComfyUI-MarkItDown pack, and it's the fastest way I know to get a deck's worth of text into a string.
How it works
PowerPoint2Markdown is another strict subclass of the pack's generic MarkItDown node, whitelisted to .pptx. markitdown uses python-pptx to walk the presentation and pull the text out of each slide - titles, body text, and bullet lists - then assembles it into Markdown with slides separated so you can tell where one ends and the next begins. That's the mechanism: text extraction from the file's XML, not a render of the slides. Which means the output is compact and LLM-ready, not pretty.
The inputs and outputs that matter
One input: source_file, a STRING holding an absolute path to your .pptx. One output: markdown, a STRING for any text viewer or LLM context node. No other options exist. If you give it a .ppt or a .pdf, the extension check kills the run with Only support: ['.pptx'] before any conversion happens.
Why you'd reach for it
Two common situations. You're building a summarization workflow and someone dropped a 40-slide deck in your lap - convert it and let the LLM node chew on the Markdown instead of a binary blob. Or you need to reference a deck's contents in a prompt and don't want to copy-paste slide by slide. Both are one node away.
Installing it
It ships with the ComfyUI-MarkItDown pack, so the install is the pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/ciga2011/ComfyUI-MarkItDown
Then restart ComfyUI (or use Manager: search "ComfyUI MarkItDown"). The PowerPoint converter comes in via markitdown's dependencies - pure Python, no models to download.
Gotchas
The honest limitation: text only. Any idea that lives in the slide images - charts, diagrams, screenshots - is invisible to this node, because nothing here calls a vision model. If you need those described, you'd run the images through the pack's Image2Markdown node separately. Also, if a deck was built with text inside images rather than real text boxes (a depressingly common design choice), there's nothing to extract and the slide comes out near-empty.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| source_file | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| markdown | STRING | — |