Kai Video Production logo

Kai Video Production

Community
cgallic
kai-video-production

Full-stack video production from script to rendered video. Combines script generation (optimized for TikTok/YouTube/Reels) with AI-powered video rendering using Remotion, AI voiceovers (Qwen3-TTS/ElevenLabs), music generation (ACE-Step), and browser-based demo recording. Multi-session project tracking with automatic intent reconciliation. Use when "create video", "produce video", "demo video", "product video", or any request to generate AND render video content.

Overview

Publishercgallic
Repositorykai-cmo-harness
Skill namekai-video-production
Stars
61
Forks
8
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by cgallic on GitHub. Read the source before you install it.

Installation

Install the Kai Video Production AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/cgallic/kai-cmo-harness/tree/main/harness/skills-v2/kai-video-production
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/cgallic/kai-cmo-harness.git /tmp/kai-cmo-harness
mkdir -p .claude/skills
cp -r /tmp/kai-cmo-harness/harness/skills-v2/kai-video-production .claude/skills/kai-video-production
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Kai Video Production in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Kai Video Production on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Kai Video Production is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

/kai-video-production — a rendered MP4 that started as a script worth rendering

Kai root note: knowledge/, harness/, and scripts/ paths in this skill live in the Kai install, not the user's project. Resolve them against the first ancestor directory of this SKILL.md that contains a knowledge/ folder (the Kai plugin root, ~/.claude/kai, or the kai-cmo-harness repo). MARKETING.md, memory/, and any output files live in the current project. If a referenced scripts/ command is not available in this install, say so, skip it, and continue with the file-based guidance — never fabricate its output.

Studio-grade motion spots (a code-rendered hype launch spot, a walkthrough from real screenshots, or pain-point videos for a site, with the drop cut to the reveal) use /kai-motion-spot. This skill covers Remotion template production.

Objective

A finished video: an approved script, the assets it needs, synced audio, and a rendered MP4 at platform spec — with project.json describing the real state of the project on disk so the next session resumes without reconstruction.

Production amplifies a good script and cannot rescue a bad one. Script quality is settled before any asset is generated. Scope splits three ways: script only (stop at the script, user records), automated production (full render pipeline), hybrid (generate voiceover and slides, user supplies demos).

Done when

Work type social-post — floor E5/C2/O3 (harness/eco-floors.yaml), contract harness/skill-contracts/social-post.yaml. A render that will run as paid creative instead follows paid-ad-campaign (E5/C4/O4), which requires the platform policy reference loaded before the creative is submitted.

  • E5 — the video is live on the target platform and a non-actor read the permalink back against the approved cut. The MP4 in out/ is E1; human approval of the winning variant and the final cut is E3. This skill renders; it does not upload.
  • C2 — banned_word_check and four_us_score (10/16) clean on the script, plus both render checklists below.
  • O3 — reach, engagement rate, profile clicks, and link clicks read from platform insights at 7 days against a baseline recorded before publish.

Before rendering: script approved with strong hooks and no AI slop · all assets present, no missing demos or images · scene durations match narration · voiceover aligned to visuals · brand colors, fonts, and logo correct · transitions smooth · text contrast and size readable · preview walked through in Remotion Studio.

After rendering: resolution as specified · voiceover audible over music · file size within platform limits · format plays on the target platform.

Constraints

  • Human approval is required to move from the variant lab to full render. Renders cost compute and time; an unapproved concept does not get either.

  • Preflight variant lab runs before asset creation or rendering — 3 hook variants (each with platform, expected first-frame visual, and viewer promise), 2 structure variants for scene order or pacing, 2 CTA variants matched to the campaign goal, and 1 risk note per variant covering unsupported claims, brand mismatch, or approval needs. Write to workspace/video/projects/{name}/PREFLIGHT-VARIANTS.md, pick one winner, keep the rejected variants in the same file as the kill list.

    FactorScoreQuestion
    Hook strength1-5Does the opening create immediate attention?
    Message clarity1-5Is the core idea obvious after one watch?
    Proof density1-5Are claims supported by demo, quote, data, or source?
    Production fit1-5Can this be made with available assets and timeline?
    Brand safety1-5Does it avoid fake authority, risky claims, or unclear rights?
  • Read MARKETING.md from the project root before asking the user anything. If it does not exist, build it from the codebase — CLAUDE.md, README.md, PROJECT.md, package.json, landing pages, email/ad/analytics config — using the template from /kai-email-system, and confirm the draft.

  • Know these before producing: topic, platforms, format (talking head, screen recording, b-roll, animation, slides), length band, goal, and whether the user wants script only or a full render.

  • The filesystem is the source of truth. On resume, scan the project directory, compare to project.json, and correct statuses — asset-needed with the file present becomes asset-present; ready with the file missing becomes asset-missing. Flag every discrepancy to the user rather than rendering around it. Regenerate the project's CLAUDE.md status document after reconciliation.

  • Brand profiles auto-apply. Colors, fonts, and logo come from brands/{brand}/brand.json; voice settings from voice.json. Never re-specify a color or font inline that the brand file already defines.

  • Prerequisites are real blockers: Node.js 18+ (Remotion) and FFmpeg (encoding) are required. Cloud AI features need a Modal account ($30/month free compute) or RunPod (pay-per-second); ElevenLabs is optional for premium voices. /video-setup handles configuration. If a tool is not deployed in this install, say so — never describe output it did not produce.

  • Prefer the free or cheap tool. Qwen3-TTS and ACE-Step cover most work; premium providers are an explicit choice, not a default.

  • Nothing publishes. The render lands in out/; uploading is a separate approved step.

Context

NeedLoad / run
Video content mechanicsknowledge/playbooks/video-content-creation.md
TikTok · YouTube · Reelsknowledge/channels/tiktok-algorithm.md · knowledge/channels/youtube.md · knowledge/channels/instagram.md
Slide-scene design polishknowledge/frameworks/design/frontend-design.md
Product, ICP, voice, channelsMARKETING.md (project root)
Setup, recording, audio, review, design, cloning/video-setup · /record-demo · /generate-voiceover · /scene-review · /design · /voice-clone

Templates: product-demo (title, problem, solution, demo, CTA) · explainer (title, overview, sections, recap) · demo-walkthrough (screen recording with narration) · social-short (15–60s vertical) · testimonial (quote + visuals) · announcement (launches, releases, news). Reference material ships beside them — templates/product-demo/, templates/explainer/, templates/social-short/, and finished examples in examples/digital-samba-skill-demo/ and examples/schlumbergera/, each with source, rendered MP4, and production notes.

Project layout:

projects/{name}/
├── project.json          # state, scenes, assets, sessions
├── VOICEOVER-SCRIPT.md   # full narration
├── src/                  # Root.tsx, scenes/, config/ (timing, brand, assets)
├── public/               # audio/, demos/, images/, videos/
└── CLAUDE.md             # auto-generated status

project.json carries name, template, brand, created, updated, phase, a scenes[] array (id, type, duration, visual, narration, status), an audio block (voiceover: file/status/provider/speaker; music: file/status/preset), estimates.totalDurationSeconds, and a sessions[] log of date, phase, and summary. Lifecycle: planning → assets → review → audio → editing → rendering → complete.

Scene types: title · overview · demo · split-demo · problem · solution · feature · stats · testimonial · cta · credits.

Assets. Slides (title cards, bullets, stat visualizations, CTA screens) generate from the brand profile. Demos come from /record-demo (Playwright browser recording, --script demo-script.md --auto for scripted automation), an external MP4/MOV dropped into public/demos/, or Playwright screenshots. Images: python tools/flux2.py --prompt "..." --cloud modal for generation, python tools/image_edit.py --input photo.jpg --style ... for editing.

Audio.

bash
python tools/voiceover.py --provider qwen3 --speaker Ryan --script VOICEOVER-SCRIPT.md --scene-dir public/audio/scenes --json
python tools/voiceover.py --provider elevenlabs --voice-id {ID} --script VOICEOVER-SCRIPT.md
python tools/music_gen.py --preset corporate-bg --duration 120 --bpm 90 --key "D Minor"
python tools/music.py --prompt "Upbeat corporate" --duration 120
python tools/sfx.py --preset whoosh   # also: pop, success

Qwen3 speakers: Ryan, Brad, Ava, Lily, Emily, Sam, Alex, Kevin, Zoe. Music presets: corporate-bg, upbeat-intro, dramatic-reveal, ambient-subtle, tension-build, inspirational-montage, tech-minimal, celebration-end. /voice-clone produces a custom brand voice.

Brand files. brand.json: colors (primary #3B82F6, secondary #10B981, background #111827, text #F9FAFB in the KaiCalls example), fonts.heading / fonts.body (family + weight), logo, style. voice.json: provider, speaker, tone, pace, and an elevenlabs block (voice_id, stability, similarity_boost).

Transitions — 7 custom plus 4 Remotion official, imported from @/lib/transitions:

TransitionEffectUse case
glitch()Digital distortion + RGB shiftTech aesthetic
rgbSplit()Chromatic aberrationEnergetic cuts
zoomBlur()Radial motion blurDramatic reveals
lightLeak()Cinematic lens flareProfessional polish
clockWipe()Radial sweep revealTime-based content
pixelate()Digital mosaicRetro/8-bit
checkerboard()Grid reveal (9 patterns)Clean, geometric
slide() fade() wipe() flip()Official RemotionStandard, subtle, directional, playful

Review and render.

bash
cd projects/{name} && npm run studio     # Remotion Studio at localhost:3000
npm run render -- --quality=low          # preview
npm run render                           # final → out/{name}.mp4

Render options: --codec=h264 (default) or h265 (smaller) · --resolution=1080p (default) or 720p · --fps=30 (default) or 60. Timing adjustments live in config.ts.

Post-production: tools/addmusic.py (add music to an existing MP4) · tools/redub.py (swap voice) · tools/dewatermark.py --preset sora --cloud modal · tools/upscale.py --scale 2x --cloud modal.

Cloud GPU. Modal deploys via /video-setup: qwen3_tts ($0.01/video), flux2 ($0.02/image), music_gen ($0.05/track), sadtalker ($0.10/video), ltx2 ($0.23/clip), image_edit ($0.03/image), upscale ($0.01/image), dewatermark ($0.10/video). RunPod is the pay-per-second alternative (python tools/<tool>.py --setup per tool). A 60–90s video costs roughly $0.20 all-in — script ~$0.10, Qwen3 voiceover ~$0.01, ACE-Step music ~$0.05, FLUX.2 images ~$0.04, local Remotion render $0.00. Premium adds: ElevenLabs voiceover +$0.30, LTX-2 clip +$0.23, SadTalker +$0.10. Modal's Starter free tier covers 100+ videos/month.

Output goes to workspace/video/: _video-projects.md (index), projects/{name}/ (with out/{name}.mp4), scripts/ split by tiktok/, youtube/, reels/, and _production-guide.md.

Entry points: /kai-video script --platform tiktok --topic "..." (script only) · /kai-video produce --template product-demo --brand kaicalls (full pipeline) · /kai-video resume {name}. Downstream: /kai-repurpose for clips, /kai-social for scheduling, /kai-content-calendar for release timing, /kai-analytics for performance.

Common failures: "asset not found" — project.json paths disagree with the filesystem, reconcile · "audio out of sync" — adjust config.ts timing or regenerate the voiceover against the current script · "render fails" — check ffmpeg -version, confirm assets exist, run a low-quality preview first · "tool timeout on Modal" — check compute credits and modal app list, or fall back to RunPod · "brand colors not applied" — brand.json missing from brands/, brand name mismatch in project.json, or src/config/brand.ts needs regenerating.

Escalate when

  • The variant lab winner has not been approved and the next step would spend render or GPU compute.
  • Demo footage shows customer data, third-party UI, or anything whose rights are unconfirmed.
  • A claim in the narration needs a number with no source.
  • Reconciliation finds assets the project did not expect, or expected assets that vanished.
  • Prerequisites are missing (no Node 18+, no FFmpeg, no deployed cloud tools) and the user expects a rendered file.
  • The video is destined for a paid placement — the platform policy reference and the paid-ad-campaign floor apply before submission.

Frequently asked questions

What does the Kai Video Production AI skill do?

Full-stack video production from script to rendered video. Combines script generation (optimized for TikTok/YouTube/Reels) with AI-powered video rendering using Remotion, AI voiceovers (Qwen3-TTS/ElevenLabs), music generation (ACE-Step), and browser-based demo recording. Multi-session project tracking with automatic intent reconciliation. Use when "create video", "produce video", "demo video", "product video", or any request to generate AND render video content.

Why use Kai Video Production on TypingMind?

Because you install it once and use it with any model. Kai Video Production is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Kai Video Production in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/cgallic/kai-cmo-harness/tree/main/harness/skills-v2/kai-video-production. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Kai Video Production?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Kai Video Production?

As many as you like. As long as a model supports skills, you can use Kai Video Production with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Kai Video Production AI skill free?

It is published on GitHub by cgallic. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇