Channelsmith docs
v1.0.0
Get help
● Start · Keys

Keys.
What each one switches on, and who pays.

Every key is the operator's own account with the provider: usage is billed to you, not included in the purchase. Enter keys in the console under Settings, Integrations. Most fields have a "Test" button; saved keys are encrypted with ADMIN_SECRET_KEY and never shown again. You can also pin some keys in .env (the variable names are below); the console then shows that field locked. System health lists every key that is missing and what it switches on.

AnthropicElevenLabsPexelsPixabayGoogleStripeResend

01The keys

Key.env variableWhat it switches onWhere to get it
Anthropic API keyANTHROPIC_API_KEYThe whole AI side: Idea Lab, research with web search, outline and script, fact check, the chapter storyboards, titles, description, thumbnails, Shorts picks, language versions, chat edits. Without it people can only edit storyboards by hand.console.anthropic.com, API keys
ElevenLabs API keyELEVENLABS_API_KEYNarration, and captions timed to the spoken words.elevenlabs.io, Developers, API keys (needs text-to-speech and voices read)
Pexels API keyPEXELS_API_KEYStock video and photos for footage scenes. Free.pexels.com/api
Pixabay API key(console only)More stock video and photos. Free.pixabay.com/api/docs (shown when signed in)
Google OAuth client ID and secret(console only)Connecting YouTube channels and publishing. See Publishing to YouTube.Google Cloud console, APIs & Services, Credentials
Stripe secret keySTRIPE_SECRET_KEYSelling plans and credit packs. Only needed when Settings, Customer billing, "Sell plans and credit packs" is on.Stripe, Developers, API keys
Stripe webhook signing secretSTRIPE_WEBHOOK_SECRETRecording payments. See Stripe webhook.Stripe, Developers, Webhooks
Resend API keyRESEND_API_KEYE-mail: invites, password resets, "your episode is ready for review", review comments. Also set the sender under Settings, E-mail. Without it you copy invite links by hand.resend.com, API Keys (verify your sending domain)

Wikimedia Commons footage needs no key; turn it on or off under Settings, Channels and publishing.

02Narration without ElevenLabs: the built-in local voice (optional)

Instead of ElevenLabs, the server can narrate with a local voice model, Kokoro-82M, on its own CPU. It needs no account and no key, and costs nothing per character. Know its limits before you offer it:

  • English only (American and British voices). A storyboard in any other language is refused with a message that names the language; use ElevenLabs for those.
  • Slower. It runs on the same CPU as the renders. On a busy server, recording takes longer than the narration lasts.
  • Word timing is estimated from the recorded sentences, so captions follow the words a little less exactly than with ElevenLabs.
  • Not installed by default. It is an add-on you choose to install, because of the licences of what it brings:

    • the model weights (Kokoro-82M) and kokoro-js are Apache-2.0;
    • it phonemizes text with the phonemizer npm package, which contains eSpeak NG compiled to WebAssembly.

    eSpeak NG is licensed GPL-3.0. Read both licences and decide whether that fits how you run and distribute your server before you install it.

On Windows: the server is meant to run on Linux. On a Windows PC, run the commands on this page inside WSL 2 with Ubuntu (in PowerShell: wsl --install -d Ubuntu), or use Docker Desktop with its WSL 2 backend.

To install it, on the server in the studio's folder:

npm run voice:local

With Docker, build the image with docker build --build-arg LOCAL_VOICE=1 -t channelsmith .. The model (about 100 MB) downloads from Hugging Face on first use into DATA_DIR/models. Then choose Settings, Voice, Voice engine, "Built-in local voice", or set VOICE_ENGINE=local in .env. System health shows whether it is installed and downloaded. npm ci (for example during an update) removes it again: run npm run voice:local after every update.

03Who pays for what

  • Anthropic bills you for every AI call, and web search is billed per search on top of tokens. A long episode makes many calls: research, outline, script, fact check and one storyboard call per chapter. The console's AI usage page lists each call with its model and tokens, so you can set your credit prices from real numbers. Settings, Channels and publishing, "Web searches per research run" caps the searches. Settings, AI director, "Workspaces may bring their own Anthropic key" lets a workspace pay its own AI usage.
  • ElevenLabs bills you per character of narration. A 10-minute script is roughly 8,000 to 9,000 characters. Clips are cached per scene, so re-rendering after an edit only records the scenes whose words changed.
  • Pexels, Pixabay, Wikimedia Commons: free, within their terms and rate limits.
  • Google: the YouTube Data API is free within the project's daily quota (see Publishing to YouTube).
  • You charge your customers in credits (see Plans and credits) and Stripe pays you.

04The secret key itself

ADMIN_SECRET_KEY (64 hex characters, openssl rand -hex 32) encrypts the saved keys and every connected YouTube channel's sign-in. If it is not set, the server generates one into DATA_DIR/.admin-secret-key and warns in the log. Either way: back it up. A restored backup with a different key starts fine, but every saved API key has to be entered again and every YouTube channel connected again.