A command-line tool that converts OPML (Outline Processor Markup Language) files into PowerPoint presentations (.pptx). Transform your hierarchical outlines into structured slides with titles, bullet points, and speaker notes.
- Hierarchical Conversion: Converts OPML outlines to PowerPoint slides with unlimited nesting levels
- Smart Structure: Root outline becomes title slide, child outlines become content slides
- Sub-bullets: Supports multi-level bullet points with proper indentation and visual hierarchy
- Speaker Notes: Preserves
_noteattributes as PowerPoint speaker notes - Cross-Platform: Builds for macOS, Linux, and Windows
Download the latest release for your platform from the releases page.
macOS will flag this app if you download it.
Copy the release to your Path
mv ~/downloads/opml2pptx-0.0.1-darwin-arm64 ~/bin/opml2pptxThen make it executable and remove the quarantine bit:
chmod +x opml2pptx
xattr -d com.apple.quarantine opml2pptxIf you are uncomfortable doing this, review the source code and build your own binary which will run fine.
Requirements:
- Go 1.19 or later
git clone https://github.com/napcs/opml2pptx.git
cd opml2pptx
make allBuilt binaries will be available in the dist/ directory.
Basic Usage
opml2pptx -input input.opml -output output.pptxCommand Line Options
-input: Path to the input OPML file (required)-output: Path for the output PowerPoint file (required)-version: Show version information
Example:
./opml2pptx -input my-outline.opml -output presentation.pptxThe tool expects OPML files with the following structure:
<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
<head>
<title>My Presentation</title>
</head>
<body>
<outline text="Presentation Title">
<outline text="First Slide Title">
<outline text="First bullet point">
<outline text="Sub-bullet point">
<outline text="Sub-sub-bullet point"></outline>
</outline>
</outline>
<outline text="Second bullet point"></outline>
</outline>
<outline text="Second Slide Title" _note="Speaker notes go here">
<outline text="Another bullet point"></outline>
</outline>
</outline>
</body>
</opml>- Title Slide: The root outline becomes the presentation title slide
- Content Slides: Each child of the root becomes a separate content slide
- Bullet Points: Nested outlines within slides become hierarchical bullet points
- Speaker Notes: Use the
_noteattribute to add speaker notes to slides - Visual Hierarchy: Different bullet characters (-, •, ◦) for different nesting levels
Build for the current platform:
go build -o opml2pptx ./cmd/opml2pptxBuild for all platforms:
make allRun tests:
make testOr directly with Go:
go test ./...Project Structure
opml2pptx/
├── cmd/opml2pptx/ # Main application entry point
├── pkg/opml/ # OPML parsing logic
├── pkg/pptx/ # PowerPoint generation engine
│ └── templates/ # PowerPoint XML templates
├── dist/ # Build output directory
└── Makefile # Build automation
- OPML Parser (
pkg/opml): Parses OPML files into presentation data structures - PPTX Builder (
pkg/pptx): Generates PowerPoint files using XML templates - Template System: Uses Go templates to create valid PowerPoint XML structure
This is very early software that works for my needs. But if you find a bug, I'd love your help:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass:
make test - Submit a pull request
For issues and feature requests, please use the GitHub issue tracker.
MIT License - see LICENSE for details.