openslides
Brand-first AI slide deck generator. Point it at any website, get a pitch deck in that brand's exact colors, fonts, and style.
65+ curated brands. Real SVG logos. One command.
Quick Start
pip install openslides-ai
playwright install chromium
Generate a deck (LLM-powered)
export GEMINI_API_KEY=your-key
# Generate 5 slides for Stripe
openslides generate stripe.com "Payment infrastructure for the internet" -n 5
# Generate for any brand in the database
openslides generate airbnb.com "Community-powered hospitality platform" -n 3
openslides generate spotify.com "Audio streaming and discovery" -n 3
Output: pixel-perfect 1920x1080 PNGs in /tmp/<domain>-deck/.
Generate from Python
from openslides import Brand, generate, export
brand = Brand.from_domain("stripe.com")
slides = generate(brand, "Payment infrastructure for the internet", num_slides=5)
export(slides, "/tmp/stripe-deck/")
The generate() function:
- Picks a layout variant per slide type (hero, dashboard, terminal, CTA)
- Sends a detailed blueprint + brand context to Gemini Pro
- Post-processes: injects real SVG logo, grid pattern, ambient glow, layout CSS
- Fixes round numbers, banned patterns, readability issues automatically
Build manual slides
For full creative control, write HTML/CSS directly:
from openslides import Brand, export, base_html
brand = Brand.from_domain("stripe.com")
def slide_hero():
return f'''
{base_html(brand)}
<body style="background:{brand.background}; padding:80px;">
<h1 style="font-family:'{brand.font_headline}'; font-size:72px; color:{brand.text};">
The GDP of the internet runs on
<span style="color:{brand.primary};">7 lines</span> of code.
</h1>
</body></html>
'''
export([slide_hero()], "/tmp/stripe-deck/")
Brand Database
65+ curated brands with verified colors, fonts, and typography pairings:
from openslides import Brand
brand = Brand.from_domain("stripe.com")
print(brand.primary) # "#635bff"
print(brand.font_headline) # "Space Grotesk"
print(brand.logo_img(32)) # Real SVG logo at 32px
Brands with real SVG logos: Stripe, Anthropic, Airbnb, Spotify, Shopify.
All 65+ brands have curated color palettes and distinctive headline fonts (never generic Inter). Full list in brands.py.
Manual brand definition
brand = Brand(
primary="#054dfe",
secondary="#15aebf",
background="#fdfbf5",
surface="#ffffff",
text="#191919",
muted="#6b6b6b",
font_headline="Syne",
font_body="Inter",
)
CLI
# LLM generation
openslides generate <domain> "<topic>" [-n slides] [-p gemini|openai|anthropic] [-o dir]
# Build from Python file
openslides build examples/scaile.py [-o dir] [-f png|pdf]
# List slides in a file
openslides list examples/scaile.py
LLM Providers
Generation uses Gemini Pro by default (free tier available). Zero additional dependencies needed.
# Gemini (default, zero deps)
export GEMINI_API_KEY=your-key
openslides generate stripe.com "..."
# OpenAI (pip install openslides-ai[openai])
export OPENAI_API_KEY=your-key
openslides generate stripe.com "..." -p openai
# Anthropic (pip install openslides-ai[anthropic])
export ANTHROPIC_API_KEY=your-key
openslides generate stripe.com "..." -p anthropic
API Reference
Brand
Dataclass holding brand assets. Fields: primary, secondary, background, surface, text, muted, font_headline, font_body, logo_svg, logo_url, name, domain.
Brand.from_domain(url)- Load from curated database or extract from websitebrand.logo_img(size)- Real SVG logo (or Clearbit fallback)brand.google_fonts_url- Google Fonts URL for brand fonts
generate(brand, topic, num_slides=5, provider="gemini", model=None)
Generate slides using LLM. Returns list of HTML strings.
export(slides, output_dir, width=1920, height=1080, format="png")
Render HTML slides to PNG or PDF via Playwright.
base_html(brand) / base_styles(brand)
HTML boilerplate and CSS utilities for manual slide authoring.
License
MIT
Release files for openslides-ai 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| openslides_ai-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / openslides_ai-1.2.0-py3-none-any.whl
| Download URL | openslides_ai-1.2.0-py3-none-any.whl |
|---|---|
| Size | 43.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
66669269c2cafa2e1f30de347d3fe172d8c8d3b15670cc7e96e0e27efb9000a0
|
|
BLAKE2b-256 checksum How to use checksums |
c1fd0c0e9f28f4aa606da603f279fd6d8bc85498aa740f50541393ca4590e068
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.3
|