Channelsmith docs
v1.0.0
Get help
● 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.

src/serverpackages/directorpackages/corepackages/renderDATA_DIR

01The diagram

How Channelsmith fits together The studio, the operator console and the REST API with the MCP server talk to one Node.js server. The server runs the episode steps, the autopilot and the render queue and keeps everything in SQLite and files in DATA_DIR. It uses the engine packages: the director asks the Claude API, core composes the storyboard into an HTML page, and render captures the frames in Chrome, encodes them with ffmpeg and adds narration from ElevenLabs or the local voice and footage from Pexels, Pixabay and Wikimedia Commons. The server itself calls the YouTube Data API, Stripe, Resend and your webhook endpoints. How Channelsmith fits together Red labels are paths in the source code; arrows point from the part that calls to the part that answers. WHO USES IT Studio · /app Customers and staff make channels and episodes web/ (React) Operator console · /admin You: settings, keys, plans, credits, health packages/admin-kit REST API /api/v1 · MCP server Your software, Zapier, Make; AI assistants routes/api-public.ts · src/mcp Server · Node.js + Hono src/server one process; everything it stores is in DATA_DIR HTTP routes sign-in, workspaces, channels, episodes, storyboards, review links, billing routes/ Episode steps research to publish; credits charged before a step, refunded when it fails channel/episodes.ts Autopilot next approved idea for a free slot; stops at Ready for review channel/autopilot.ts Render queue kept in the database; picks up where it stopped after a restart jobs.ts SQLite + files studio.sqlite, admin.sqlite; uploads, footage, renders DATA_DIR Engine packages/ used by the server and by the command line director research, outline, script, fact check, storyboard per chapter, titles, Shorts, review of the frames packages/director core storyboard and 24 scene types, composed into one HTML page per video; thumbnails 1280×720 packages/core render Chrome captures the frames, ffmpeg encodes the MP4; narration, footage, sound mix packages/render SERVICES THE ENGINE USES Claude API your Anthropic key; web search and web fetch for research and fact checks Narration ElevenLabs, or the local voice add-on on the server Footage Pexels, Pixabay, Wikimedia Commons, your uploads Chrome + ffmpeg installed on the server, or inside the Docker image Services the server calls YouTube Data API v3 upload once a person approves it channel/youtube.ts Stripe Checkout, customer portal, signed webhook billing.ts Resend e-mail: invites and notices notify.ts Your webhook endpoints signed deliveries (HMAC-SHA256) platform.ts Every key belongs to the operator's own account. Nothing is published to YouTube without a person approving it in the studio.

02The parts

PartFolderWhat it does
Studioweb/The React app at /app where customers and staff set up channels and make episodes. Built into web/dist by npm run build
Operator consolepackages/admin-kit/The console at /admin: settings, encrypted keys, team, audit log, plans, credits and the product pages (channels, episodes, render queue, System health)
Serversrc/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 stepssrc/server/channel/episodes.tsRuns research, script, fact check, visuals, footage, render, package and Shorts in the background; charges credits before a step and refunds them when it fails
Autopilotsrc/server/channel/autopilot.tsFor channels with a posting schedule, prepares the next approved idea for a free slot and stops at Ready for review
Render queuesrc/server/jobs.tsRenders one after another, kept in the database, so a restart picks up where it stopped
Directorpackages/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
Corepackages/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
Renderpackages/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 serversrc/mcp/server.tsLets an AI assistant work with one workspace through the REST API
Command lineapps/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.

ServiceCalled byFor
Anthropic Claude APIDirectorAll AI writing; web search and web fetch for research and fact checks
ElevenLabsRenderNarration with word timings. The optional local voice runs on your server instead
Pexels, Pixabay, Wikimedia CommonsRenderLicensed footage and photos, with their credits
YouTube Data API v3ServerUploads, thumbnails, captions and playlists, after a person approves
StripeServerPlans and credit packs: Checkout, the customer portal and the signed webhook
ResendServerE-mail: invites, password resets and notices
Your webhook endpointsServerSigned 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

  1. When someone clicks Render, the credits are charged and the render joins the queue.
  2. Render records the narration, one clip per scene, and gets the timing of every word.
  3. Core lays the storyboard out with that timing into one HTML page.
  4. If the visual review is on, the director looks at one frame of every scene and fixes overflowing or crowded scenes.
  5. 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.
  6. 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.