SlideForge is a Python PPT UI component library for agent-generated presentation decks. Agents describe pages and reusable blocks with JSON DSL, while SlideForge renders themed, editable .pptx files with python-pptx.
- 中文文档:docs/zh.md
- English docs: docs/en.md
uv sync --dev
uv run python examples/demo_deck.pyThis generates:
examples/demo.pptxexamples/demo_screenshots/slide_01.png,slide_02.png, ...examples/demo_showcase.pngexamples/theme_demos/<theme>/demo.pptx
Screenshot export uses Microsoft PowerPoint COM automation on Windows.
- Theme tokens for colors, typography, spacing, radius, shadows, and component styles.
- A registry-based JSON DSL parser for page/block component families and variants.
- Reusable block components for layout, data visualization, narrative analysis, media, and tables.
- A
python-pptxrenderer that keeps generated slides editable.
from ppt_ui import Deck, chart, data, layout, page
deck = Deck()
deck.add_page(page.standard(
title="Metrics And Trend",
blocks=[
data.metric_cards(
cards=[data.metric_card(label="AUC", value="0.948", delta="+0.026")],
layout=layout.grid_item(col=1, span=4, row=1, row_span=2),
),
chart.line(
categories=["Jan", "Feb"],
series=[{"name": "A", "values": [10, 20]}],
layout=layout.grid_item(col=5, span=8, row=1, row_span=2),
),
],
))
deck.render("examples/api_demo.pptx")JSON DSL uses the same namespace style:
{
"type": "page.standard",
"title": "Metrics And Trend",
"blocks": [
{"type": "chart.line", "props": {"categories": ["Jan", "Feb"], "series": [{"name": "A", "values": [10, 20]}]}}
]
}