Every creative below was generated from a one-line brief

Every brand. Every format. In under a minute.

Drop a URL. Type a brief. Get editable HTML — Instagram, LinkedIn, story, OG card, real estate listing, podcast cover, restaurant promo. Pick your output.

View on GitHub

MIT licensed · Self-hosted · Your AI keys · Zero telemetry

Built for solo makers, agencies, and indie SaaS

Drift & Co.NorthsignalLumenpathFolderyKindred StudioBrightlineHelioPinecone Lab
The workshop

Banners are code.
Treat them like it.

Bannerwright generates HTML — not PNGs in a black box. Every creative is inspectable, diff-able, version-controlled. AI handles the boring parts; you stay in control.

  • Editable HTML — no opaque designs
  • Brand-aware — pulls colors, fonts, voice from your client's site
  • Iterative — chat to refine, never regenerate from scratch
  • Yours — self-hosted, your AI keys, your data
editor — holiday-drop.html
1 <section>
2   <h2>Holiday drop.</h2>
3   <p>48 hours.</p>
4   <a>Shop →</a>
5 </section>
Holiday drop

Holiday drop is live.

Up to 40% off — 48 hours.

Shop →
Chat edit
make the CTA larger and use the brand accent
Updated CTA → +14% size, primary teal applied. v3.
Refining…
How it works

Two brands. Two banners.
The same five steps.

Example 1 of 2

Maple & Co. · Holiday Drop

From a brand URL to a printable PNG in under a minute.

  1. 1
    URL

    Drop a client website — we screenshot it, scrape the markup, and start a brand profile.

  2. 2
    Brand

    Colours, fonts, voice — extracted automatically from the live site and a few seed pages.

  3. 3
    Brief

    Type the prompt as you would to a designer. Format, CTA, voice, vibe.

  4. 4
    HTML

    Gemini drafts editable HTML — streamed live, version-controlled, never a black box.

  5. 5
    PNG

    Playwright renders the final PNG. Ready to download, post, or reopen for edits.

URL · maple · step 1/5
https://maple-and-co.com
Capturing live screenshot…
Parsing markup, fonts, images…
Found 4 brand colours, 2 fonts
What it does

Six pieces. One workshop.

Every step from brief to export — brand extraction, generation, AI editing, versioning, templates, and on-demand imagery — owned end-to-end.

Knowledge base

Brand Knowledge Base

Drop a URL — we build the brand brief.

  • URL → live screenshot capture
  • Auto-extracted colors & fonts
  • Voice & tone analysis
  • Logo detection from favicons & headers
Generation

HTML Generation

Briefs become editable HTML in ~30 seconds.

  • Gemini 3.1 Pro with brand context
  • Pixel-perfect typography
  • Deterministic Playwright exports
  • PNG ready on a single click
AI editor

AI Chat Editor

Refine creatives by talking, not clicking.

  • Multi-turn conversational context
  • Full HTML rewrite per turn
  • Live preview alongside the chat
  • Diff per version, side by side
Versioning

Full Version History

Every edit is a snapshot. Roll back anything.

  • Manual & AI edits captured
  • Name and pin key versions
  • Side-by-side visual diff
  • Restore in one click
Templates

Reusable Templates

Promote any creative to a template.

  • Parent-generation lineage tracking
  • Brand-aware fills across formats
  • Batch export for variants
  • Re-run with new briefs
AI imagery

AI Imagery — Nano Banana

Need a custom background? The model generates one.

  • On-demand only — no waste
  • Embedded straight into HTML
  • Style-controlled prompts
  • Cached per generation
See it work

Same workshop. Any brand, any format.

The reel on the right cycles through real briefs — clothing drop, podcast cover, SaaS launch, trattoria menu, coffee shop opening, course cohort. Each one rendered from a two-line prompt and a brand profile.

  • ·Switch between formats without rewriting the brief.
  • ·Click any slot to inspect its brief and HTML.
  • ·Re-run with a tweaked voice — "more confident", "calmer", "tighter copy."
brief.md · slot 1/6
Reading brief…1080×1080 · Instagram
Holiday sale banner for Maple & Co.
Why it's different

Open by default. Yours by design.

Open source

MIT licensed. Read the code, fork it, contribute. No closed core, no enterprise tier gating the good parts.

View on GitHub

Self-hosted

One VPS. One .env. One user. Your data — briefs, brand assets, generated creatives — never leaves your box.

Deploy guide

Bring your own keys

Direct Gemini API. No markup on tokens, no shared quota, no lock-in. Swap providers if you ever want to.

Setup
Stories

From makers who ship every day.

Hover any card to pause the row.

I used to spend an hour per creative. Now it's a coffee break.

MK
Marta K.
SoMe freelancer · 5 brand clients

Brand-perfect work without onboarding a designer for every account.

AP
Adam P.
Boutique agency owner

The HTML output means our dev team can drop creatives straight into emails.

TS
Tomek S.
Lifecycle marketer · e-commerce

Self-hosted means our brand brief never leaves our infra.

JW
Jakub W.
Solo SaaS founder

Two clicks from a prompt to a posted Instagram. I keep checking it actually shipped.

KB
Karolina B.
Community manager

I used to spend an hour per creative. Now it's a coffee break.

MK
Marta K.
SoMe freelancer · 5 brand clients

Brand-perfect work without onboarding a designer for every account.

AP
Adam P.
Boutique agency owner

The HTML output means our dev team can drop creatives straight into emails.

TS
Tomek S.
Lifecycle marketer · e-commerce

Self-hosted means our brand brief never leaves our infra.

JW
Jakub W.
Solo SaaS founder

Two clicks from a prompt to a posted Instagram. I keep checking it actually shipped.

KB
Karolina B.
Community manager

The chat editor finally feels like working with a junior designer, not a slot machine.

AR
Anna R.
Independent copywriter

Brand extraction nails it. Drop a URL, twelve seconds later the brief is ready.

PM
Piotr M.
Creative director · 3-person studio

Versioning saved a campaign. Restored a banner to v4 mid-launch, nobody noticed.

OD
Olga D.
Performance marketing lead

I run the whole thing on a $5 VPS. Hard to overstate how good that feels.

BL
Bartek L.
Indie maker · 2 brand clients

Templates plus brand profile means new clients onboard in an afternoon, not a week.

HN
Hania N.
Boutique agency · 8 retainers

The chat editor finally feels like working with a junior designer, not a slot machine.

AR
Anna R.
Independent copywriter

Brand extraction nails it. Drop a URL, twelve seconds later the brief is ready.

PM
Piotr M.
Creative director · 3-person studio

Versioning saved a campaign. Restored a banner to v4 mid-launch, nobody noticed.

OD
Olga D.
Performance marketing lead

I run the whole thing on a $5 VPS. Hard to overstate how good that feels.

BL
Bartek L.
Indie maker · 2 brand clients

Templates plus brand profile means new clients onboard in an afternoon, not a week.

HN
Hania N.
Boutique agency · 8 retainers
The numbers

Built to stay out of your way.

~0s

from brief to exported PNG

0%

HTML, inspectable & editable

0

vendor lock-in, telemetry, hidden quotas

Build your first banner in 60 seconds.

Self-host in an evening. Generate creatives the next morning.

Star on GitHub