# broll

broll lets coding agents generate media, render videos and carousels, and prepare social posts for review. Publishing requires explicit confirmation.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 5
- Author: luke-fairbanks
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/luke-fairbanks/broll
- Updated: 2026-07-12
- HTML: https://affpapa.org/en/nevibecode/mcp/broll

## What it does

The server can create images and video using your API credentials, or use a mock provider before credentials are configured. Videos and carousel slides are rendered from plans with ffmpeg and sharp; plans can define clips, captions, sizing, and branded elements. A `broll.config.json` file supplies brand details for renders.

Posts go to a local outbox as reviewable drafts. Before publishing, broll checks platform constraints, and `publish_post` requires `confirm: true`; a failed check blocks the post rather than shortening its text. Local setup requires Node 20+ and ffmpeg. Video rendering will not run without ffmpeg.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `OPENAI_API_KEY`, `GEMINI_API_KEY`, `BLUESKY_IDENTIFIER`, `BLUESKY_APP_PASSWORD`, `MASTODON_ACCESS_TOKEN`, `X_API_KEY`, `X_API_SECRET`, `X_ACCESS_TOKEN`, `X_ACCESS_TOKEN_SECRET` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add broll -e OPENAI_API_KEY=<OPENAI_API_KEY> -e GEMINI_API_KEY=<GEMINI_API_KEY> -e BLUESKY_APP_PASSWORD=<BLUESKY_APP_PASSWORD> -e MASTODON_ACCESS_TOKEN=<MASTODON_ACCESS_TOKEN> -e X_API_KEY=<X_API_KEY> -e X_API_SECRET=<X_API_SECRET> -e X_ACCESS_TOKEN=<X_ACCESS_TOKEN> -e X_ACCESS_TOKEN_SECRET=<X_ACCESS_TOKEN_SECRET> -- npx -y broll-mcp
```
Replace <…> with your own values. 4 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add broll --env OPENAI_API_KEY=<OPENAI_API_KEY> --env GEMINI_API_KEY=<GEMINI_API_KEY> --env BLUESKY_IDENTIFIER=<BLUESKY_IDENTIFIER> --env BLUESKY_APP_PASSWORD=<BLUESKY_APP_PASSWORD> --env MASTODON_ACCESS_TOKEN=<MASTODON_ACCESS_TOKEN> -- npx -y broll-mcp
```
Replace <…> with your own values. 4 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "broll": {
            "command": "npx",
            "args": [
                "-y",
                "broll-mcp"
            ],
            "env": {
                "OPENAI_API_KEY": "<OPENAI_API_KEY>",
                "GEMINI_API_KEY": "<GEMINI_API_KEY>",
                "BLUESKY_IDENTIFIER": "<BLUESKY_IDENTIFIER>",
                "BLUESKY_APP_PASSWORD": "<BLUESKY_APP_PASSWORD>",
                "MASTODON_ACCESS_TOKEN": "<MASTODON_ACCESS_TOKEN>"
            }
        }
    }
}
```
Replace <…> with your own values. 4 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "broll": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "broll-mcp"
            ],
            "env": {
                "OPENAI_API_KEY": "<OPENAI_API_KEY>",
                "GEMINI_API_KEY": "<GEMINI_API_KEY>",
                "BLUESKY_IDENTIFIER": "<BLUESKY_IDENTIFIER>",
                "BLUESKY_APP_PASSWORD": "<BLUESKY_APP_PASSWORD>",
                "MASTODON_ACCESS_TOKEN": "<MASTODON_ACCESS_TOKEN>"
            }
        }
    }
}
```
Replace <…> with your own values. 4 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e OPENAI_API_KEY=<OPENAI_API_KEY> -e GEMINI_API_KEY=<GEMINI_API_KEY> -e BLUESKY_IDENTIFIER=<BLUESKY_IDENTIFIER> -e BLUESKY_APP_PASSWORD=<BLUESKY_APP_PASSWORD> -e MASTODON_ACCESS_TOKEN=<MASTODON_ACCESS_TOKEN> broll npx -y broll-mcp
```
Replace <…> with your own values. 4 more environment variables are in the server README

## When to use it
- generate images or video with your own API credentials
- render a video with titles and timed captions
- build branded slides for a carousel
- create a draft that can be reviewed before posting
- export a ready-to-post media bundle

## Example prompts
- Create a short video from these clips with titles and captions.
- Make an Instagram carousel using the branding in `broll.config.json`.
- Prepare a Bluesky post draft and show me what would be published.

## Similar
- [labelhead-artist-momentum](https://affpapa.org/en/nevibecode/mcp/labelhead-artist-momentum.md) — MCP server · ★ 107701
- [openshorts](https://affpapa.org/en/nevibecode/mcp/openshorts.md) — MCP server · ★ 7132
- [OpenScreen](https://affpapa.org/en/nevibecode/mcp/openscreen.md) — MCP server · ★ 4963
- [Usertour MCP Server](https://affpapa.org/en/nevibecode/mcp/usertour-mcp-server.md) — MCP server · ★ 2329
- [Appllama](https://affpapa.org/en/nevibecode/mcp/appllama.md) — MCP server · ★ 3228
- [obsei](https://affpapa.org/en/nevibecode/mcp/obsei.md) — MCP server · ★ 1441

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
