Local-first · agent-native · spec-driven

Brief in. On-brand everything out.

autopresenter turns one Markdown composition and one design system into an on-brand narrated video, a self-contained HTML deck, and this landing page — slides are one projection of a shared brand IR, not the product.

The demo, generated by the tool

A product walkthrough, voiced by Workers AI

This 85-second MP4 was produced by autopresenter render deck.md --target video — SVG slide frames narrated by Deepgram Aura-2 and muxed with ffmpeg. You're watching the artifact describe itself.

autopresenter.mp4 · 1280×720 · Aura-2 voiceover ×11 scenes render: ~14s

The same source, projected to slides

An interactive deck, embedded live

The same composition projects to a single self-contained HTML file. Click to advance, press S for presenter notes, O for the overview, P to export a PDF.

deck/index.html · deep-linkable · zero dependencies open fullscreen ↗

Why it's different

Not a slides tool — a brand-consistent artifact set

🎙

Narrated video, on-device

One Markdown source → an MP4 voiced by Cloudflare Workers AI (Deepgram Aura-2). Pitch-preserving --duration time-fit; layout guards keep text off the footer.

🖼

Self-contained HTML deck

Slides render to a single dependency-free HTML file — deep-linkable, presenter mode, Cmd-P → PDF. No Vite, no Vue, no Chromium.

🎨

One design system, many artifacts

A brief generates a machine-readable DesignSystem (tokens + copy) that the deck, demo video, GIF, and this landing page all inherit. Change a token, everything re-derives.

🤖

Agent-native & validatable

Every capability is a headless CLI command with machine-readable output and MCP parity. A closed catalog an agent's deck is checked against before render.

📦

Local-first, zero runtime deps

The slides projector has no npm runtime dependencies and a hand-rolled parser. Local stays the source of truth; the cloud tier is opt-in.

🔎

SEO & agentic-SEO baked in

SSG output with per-page metadata, JSON-LD, sitemap, robots.txt, and llms.txt — discoverable by humans and LLM crawlers alike.

One command per artifact

How it's made

# slides → a self-contained HTML deck
autopresenter render deck.md --target slides -o site/public/deck

# the same source → a narrated MP4 (Workers AI Aura-2, fit under 90s)
autopresenter render deck.md --target video  -o autopresenter.mp4 --duration 85

# brief → design system every artifact inherits
autopresenter design-system generate brief.md   # → design-system.md