● Make videos · Architecture
How the parts fit.
Server, engine, outside services.
Channelsmith is one Node.js server with two web apps in front of it and three engine packages behind it. This page shows which part does what, which outside services each one calls, and where your data lives, so you know where to look when you change something.
01The diagram
02The parts
| Part | Folder | What it does |
|---|---|---|
| Studio | web/ | The React app at /app where customers and staff set up channels and make episodes. Built into web/dist by npm run build |
| Operator console | packages/admin-kit/ | The console at /admin: settings, encrypted keys, team, audit log, plans, credits and the product pages (channels, episodes, render queue, System health) |
| Server | src/server/ | Hono on Node.js: sign-in, workspaces, channels and episodes, storyboards, review links, billing, the REST API, the render queue and the autopilot |
| Episode steps | src/server/channel/episodes.ts | Runs research, script, fact check, visuals, footage, render, package and Shorts in the background; charges credits before a step and refunds them when it fails |
| Autopilot | src/server/channel/autopilot.ts | For channels with a posting schedule, prepares the next approved idea for a free slot and stops at Ready for review |
| Render queue | src/server/jobs.ts | Renders one after another, kept in the database, so a restart picks up where it stopped |
| Director | packages/director/ | Everything the AI writes, through the Claude API: research with web search, outline, script, fact check, a storyboard per chapter, titles, description, thumbnails, Shorts, language versions and the visual review of the frames |
| Core | packages/core/ | The storyboard format, the 24 scene types and the ten style packs; composes a storyboard into one HTML page that the renderer plays frame by frame, and composes thumbnails |
| Render | packages/render/ | Captures the frames in Chrome and encodes them with ffmpeg; records narration (ElevenLabs or the local voice), finds and downloads footage, mixes voice, music and sound |
| MCP server | src/mcp/server.ts | Lets an AI assistant work with one workspace through the REST API |
| Command line | apps/cli/ | Makes an episode or renders a storyboard without the server, for testing (npm run episode) |
03Outside services
Every key is your own account; see Keys for what each one switches on.
| Service | Called by | For |
|---|---|---|
| Anthropic Claude API | Director | All AI writing; web search and web fetch for research and fact checks |
| ElevenLabs | Render | Narration with word timings. The optional local voice runs on your server instead |
| Pexels, Pixabay, Wikimedia Commons | Render | Licensed footage and photos, with their credits |
| YouTube Data API v3 | Server | Uploads, thumbnails, captions and playlists, after a person approves |
| Stripe | Server | Plans and credit packs: Checkout, the customer portal and the signed webhook |
| Resend | Server | E-mail: invites, password resets and notices |
| Your webhook endpoints | Server | Signed deliveries when steps, uploads, storyboards or renders finish (API and webhooks) |
Chrome (or Chromium) and ffmpeg run on the server itself. The Docker image installs both.
04What happens when an episode renders
- When someone clicks Render, the credits are charged and the render joins the queue.
- Render records the narration, one clip per scene, and gets the timing of every word.
- Core lays the storyboard out with that timing into one HTML page.
- If the visual review is on, the director looks at one frame of every scene and fixes overflowing or crowded scenes.
- Render opens the page in Chrome, captures it frame by frame in parallel parts and encodes them with ffmpeg into an MP4, then mixes voice, music and sound.
- The files land in
DATA_DIR; the episode page shows the video. A failed render gives its credits back.
05Where your data lives
Everything is in one folder, DATA_DIR: studio.sqlite (accounts, workspaces, channels, episodes, storyboards, renders, credits, payments), admin.sqlite (console settings, encrypted keys, team, audit log), and the files: uploads, downloaded footage and finished renders. Backups explains how to copy it safely.