A protoAgent plugin for campaign plans and deterministic, repeatable media production for launching any app or product: the planning and production half of a "Brand & Launch" agent. It plans the campaign, records takes from declarative shot scripts in headless Chromium, cuts them with ffmpeg under documented hard limits, and puts everything in a gallery where only the operator approves. It never posts anywhere.
plan → shot script → take → render / card / montage → ready_for_review → approved
└→ backed up to protoContent
- Plans. Goal and the math behind it, lanes, a shot list with who records what, a dated schedule, and the decisions only the operator can make.
- Same script, same take. YAML shot scripts drive Playwright out of process, with redaction, marks, stills and 2K device-pixel capture.
- Renders that fit. mp4s, GIFs, posters and branded cards held under each platform's documented size limit, continuous with no jump cuts.
- Launch videos. Montages with the signature edge sweep and brand bookends, or a finished, self-reviewed video from a one-line request.
- A gallery the operator owns. Approve, reject, supersede; daily retention; approved media backed up to protoContent.
python -m server plugin install https://github.com/protoLabsAI/campaign-plugin --ref v0.10.0Installing doesn't enable it. Turn it on in Settings → Plugins → Campaign Studio, or:
# config/langgraph-config.yaml
plugins:
enabled: [campaign]Then follow the setup banner: on the desktop app provision the Python runtime (Settings ▸ Tools),
then Install dependencies and Install Chromium. You also need ffmpeg on PATH.
Planning works without any of it; the media tools say exactly what's missing
(requirements and install).
| To | Do this |
|---|---|
| Plan a launch | Ask "Plan a launch campaign for <product> at <url>" (the campaign-planning skill) |
| Produce the assets | Ask it to "produce the agent-owned assets": the campaign_producer subagent scripts, records and renders them |
| Review and approve | The Campaign Studio view in the console's left rail |
| Get a finished video | "Make a 60-second 2K walkthrough of …" (campaign_produce_video) |
| See what's waiting | campaign_status: what's blocked on you and what's on the agent |
More in Using it.
Device-pixel capture (capture: {scale: device, fps: 30}) keeps the frames visible at output
ticks, plus the first and last frame, so repaint bursts do not fill the frame budget.
The budget is the smaller of 12 GB (override with capture.max_frame_gb) and 50% of free
space on the frames volume at recording start. A take that exceeds it reports the actual
budget and holds its last kept frame to the end.
| Doc | What's in it |
|---|---|
| Requirements and install | What you need, install, enable, the media setup banner |
| How it works | Plans, takes, renders, cards, montages; what it won't do; the out-of-process browser |
| Using it | The plan → produce → review loop, the gallery, skills |
| Shot scripts | The format, steps, frames, uploads, retakes, directing a clip |
| Montages and branding | Montages, transitions, the brand intro and outro |
| Videos from a request | The background job, its gates, delivery |
| Media and backup | Where media lives, retention, the protoContent archive, restoring, collections |
| Hard limits | The documented platform limits |
| Configuration reference | Every key, its default, live / reload, operator-only |
| Tools · HTTP API | Every agent tool and route |
| Development | The suite, layout, the docs gate, releasing |
MIT
