Skip to main content
Glama
saroby

YoutuberBox

by saroby
README.md
# YoutuberBox

Faceless YouTube video automation **MCP server** — shorts (9:16) and long-form (16:9).

The connected LLM does the *creative* work (script, scene beats, image prompts); YoutuberBox does the *execution*: TTS narration via [voicebox](https://github.com/jamiepine/voicebox), AI images via [CodexImage](https://github.com/saroby/CodexImage), whisper-timed burned-in captions, and ffmpeg assembly with Ken Burns motion. Built-in quality guardrails push output away from AI slop.

## Pipeline

```
create_project → set_script → generate_narration ┐
                              generate_images    ├→ generate_captions → assemble_video
                                                 ┘
```

| Tool | What it does |
|---|---|
| `create_project` | New project (shorts 1080×1920 / long 1920×1080), returns the quality guide |
| `set_script` | LLM-authored scenes (narration + 1–3 image prompts each), returns pacing/quality lint warnings |
| `generate_narration` | Per-scene TTS via voicebox (`/generate/stream`); reports durations; per-scene regeneration via `sceneIds` |
| `generate_images` | Per-scene images via CodexImage; 2–3 prompts per scene = intra-scene cuts; consistent style anchor |
| `generate_captions` | Word timestamps via `mlx_whisper`/`whisper` (proportional fallback) → karaoke word-highlight ASS; `position`/`highlightColor` knobs |
| `assemble_video` | Ken Burns per still (alternating direction), cuts every few seconds, caption burn-in, looped/ducked BGM, −14 LUFS loudnorm |
| `list_voices` | Voicebox voice profiles so the LLM picks a fitting narrator |
| `generate_thumbnail` | Text-free thumbnail via CodexImage (add typography yourself — AI text is a slop tell) |
| `project_status` | Pipeline state per scene |

Resource: `guide://quality` — the anti-slop guide (hooks, pacing targets, image prompt rules, mix levels).

## Requirements

- Node.js 20+
- `ffmpeg` / `ffprobe` on PATH
- [voicebox](https://github.com/jamiepine/voicebox) for TTS
- [CodexImage](https://github.com/saroby/CodexImage) for image generation
- Optional: `mlx_whisper` or `whisper` CLI for word-accurate caption timing

## Install

```bash
npm install
npm run build
```

Register with your MCP client (e.g. Claude Code):

```json
{
  "mcpServers": {
    "youtuberbox": {
      "command": "node",
      "args": ["/path/to/YoutuberBox/dist/index.js"]
    }
  }
}
```

Projects land in `~/YoutuberBox/projects/<id>/` (override with `YOUTUBERBOX_HOME`).

## Configuration

| Env var | Default | Purpose |
|---|---|---|
| `VOICEBOX_URL` | `http://127.0.0.1:17493` | Voicebox REST API (run the Voicebox app) |
| `CODEXIMAGE_URL` | — (required) | CodexImage server base URL |
| `CODEXIMAGE_API_KEY` | — (required) | CodexImage API token (Bearer) |
| `CODEXIMAGE_QUALITY` | `medium` | `low` \| `medium` \| `high` |
| `YOUTUBERBOX_HOME` | `~/YoutuberBox` | Where projects and renders are stored |

Voice selection: pass `voice` to `create_project`/`generate_narration` as a Voicebox profile name or id; defaults to your first profile.

Captions: if your ffmpeg has libass, captions are burned in (styled, word-group pop for shorts). Otherwise they're muxed as a soft `mov_text` track and the tool tells you how to upgrade.

## Design notes

Ideas borrowed from the best of the ecosystem: granular execution tools the LLM orchestrates (stephengpope/remotion-media-mcp) instead of a single god-tool (gyoridavid/short-video-maker's `create-short-video`); scene = {narration, visual spec} as the exchange format and dual-aspect maturity (MoneyPrinterTurbo); LLM-authored structure over hidden config (ShortGPT's edit-markup thesis); karaoke captions and voice discovery endpoints (short-video-maker); motion-on-stills + a cut every few seconds — the #1 documented "AI slop" complaint is static visuals.

The deliberate difference: **no built-in script generation** — the LLM you connect writes the script with full context of your channel and audience, and the server lints it against pacing/quality rules (hook length, words/sec, cliché openers, text-in-image prompts, static-scene warnings) instead of generating generic content itself.

## License

MIT

TDQS

A4/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a distinct, non-overlapping purpose, covering the entire video creation pipeline. There is no ambiguity about which tool to use for a given task.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., create_project, set_script, generate_narration), making them predictable and easy to understand.

Tool Count5/5

With 8 tools, the set is well-scoped for a faceless video creation workflow. Each tool serves a necessary step without being too few or too many.

Completeness4/5

The tools cover the core workflow (create project, script, generate assets, assemble, thumbnail) but lack scene-level editing or project management features, which are minor gaps.

Maintenance

ActivitySlowing
ResponsivenessNo issues