Vodmill docs
v1.0.0
Get help
● Documentation · Node.js · Self-hosted

Vodmill
your own AI clipping platform, on your own server.

Everything you need to install, brand and run Vodmill: a self-hosted, white-label platform that turns long videos and stream recordings into captioned vertical clips, and lets brands run clipping campaigns with a review queue and a payout ledger. Read it top to bottom the first time. After that, press / and search.

v1.0.0Node.js 22.12+ffmpeg + ffprobesystemd or DockerWhite-label

01What you bought

AI disclosure

AI tools were used to assist with parts of the code, documentation and graphics of this item. The author reviewed and tested every part before release.

Vodmill is one Node.js server that you install on your own VPS. It gives you two web apps under your own domain:

AddressWho uses itWhat it is for
/appYour customers and your staffThe studio: bring in a long video, get suggested clips with a score and its reasons, edit a clip through its transcript, render it, download or share it. With campaigns switched on: post campaigns, join them, submit links, follow earnings.
/adminYou, the operatorThe console: brand, keys, plans, credit prices, customers, sources, render queue, caption presets, music, campaigns, payouts, system health.

Behind the studio the server works in steps (src/server/jobs.ts): it makes a 720p preview copy of the source, transcribes the speech with word timings, picks the moments (with Claude, or with a built-in picker when no AI key is set), reframes each clip for 9:16, 1:1, 4:5 or 16:9 with face tracking, draws word-by-word captions, and renders the result with ffmpeg.

There is also a REST API with signed webhooks and an MCP server, so customers can run the same flow from their own software or from an AI assistant (API v1, Webhooks, MCP server).

02The two halves of the product

PartWhat it doesRead
StudioSource library with resumable uploads, analysis, clip board with approve and reject, clip editor, 18 caption presets, layouts, render, exports and share links.Using the studio, Caption presets, Layouts and reframing
CampaignsA brand posts a campaign with a budget and a rate per 1,000 views. Clippers join, post on their own accounts and submit the links. Views are tracked, submissions reviewed, and what each clipper is owed is recorded in a ledger.Campaigns
PublishingPost or schedule a rendered clip to the customer's own YouTube channel, to their own Postiz, or to a signed webhook.Publishing

Campaigns, publishing, imports from a link, customer billing and the public API are all off on a new install. You switch on what you want to offer.

03How the business works

Vodmill is revenue-ready. You decide what customers pay; the code has these mechanisms (src/server/admin/manifest.ts, src/server/billing.ts, src/server/campaigns/settings.ts):

  • Credits per action: you set what a transcribed minute, an analysed minute, a render and the smaller AI actions cost.
  • Monthly plans sold through your own Stripe account, each with its own limits and monthly credits.
  • Credit packs: one-off top-ups.
  • Plan limits as upgrades: source length, minutes analysed per month, storage, 60 fps, no watermark, import from a link, creating campaigns, posts per month.
  • A commission on campaign payouts, 0 by default and capped at 50 %. It is recorded in the ledger; the software does not collect it for you.
Your keys, your bills

Vodmill uses your own accounts at Anthropic, ElevenLabs or a Whisper provider, Stripe, Resend, Google and Twitch. Their usage is billed to you by those providers and is not included in the purchase (LICENSE.md). Set your credit prices so they cover those costs. Nothing in this documentation is a forecast of income, views or reach.

04What works before you add any key

Uploads, the library, the editor, captions, layouts, rendering, exports and share links need no API key at all. To analyse a source the server needs a way to transcribe it:

  • No key at all: install whisper.cpp on the server and transcription runs locally (local whisper.cpp). Moments are then picked by the built-in picker from energy, speech rate, punctuation and chat.
  • ElevenLabs or a Whisper provider key: transcription through their API.
  • Anthropic key: Claude picks the moments, checks each clip is a complete thought, and writes titles, hooks, hashtags and post texts.
  • Stripe: selling plans and credit packs. Resend: invite and password reset e-mails.

05What is not included

  • Hosting, a server and a domain. The author runs no hosted service.
  • API keys and the usage fees of third-party services.
  • ffmpeg, whisper.cpp and yt-dlp. You install them; they keep their own licences.
  • Direct posting to TikTok or Instagram. Those networks are reached only through the customer's own Postiz or a webhook.
  • Automatic view counts for TikTok, Instagram, X, Kick and Facebook. Only YouTube and Twitch are counted automatically; the others are reported by screenshot and confirmed by a person.
  • Any movement of money to clippers. Campaign payouts are a ledger; you pay outside the software.
  • Music, stock footage and sample videos. The music library starts empty.
  • Rights to the content people upload or import.

06Where to go next

07What is in the package

Folder or fileWhat it is
src/server/The server: accounts, workspaces, sources, clips, renders, billing, campaigns, publishing, console pages
src/mcp/server.tsThe MCP server for AI assistants
web/The studio app (React + Vite), served at /app
packages/media, transcribe, ingest, moments, reframe, captions, render, ai, sharedThe clipping engine, one package per step
packages/admin-kit/The operator console (MIKODES Admin Kit), served at /admin
models/The face detection model used for reframing, with its licence (models/LICENSES.md)
scripts/backup, restore, upgrade-check, mcp
docs/guide/A pointer to this documentation
Dockerfile, .env.exampleThe container build and the settings template