Skip to content

maowiz/cozy-studio

Repository files navigation

The Cozy Studio (editor-os)

A Claude-Code-brained, fully-autonomous video production studio. Originally built for faceless cozy mental-health & self-improvement vertical Shorts (that path is the most proven and still the default), but the super-editor skill generalizes the whole thing to any YouTube/TikTok/Reels content — professional editing craft plus this toolchain, for any niche. Give it a script (or a topic and let Claude write one); it generates the visuals, voices it, edits it to a pro finish, quality-gates it, honestly reviews it, and produces an upload package — keyless, no GPU, on a Windows CPU.

script.json ─▶ generate cozy 2D visuals (free)  ─▶ Kokoro voice
            ─▶ assemble EDL (emotion-arc grades · Ken-Burns · eased transitions)
            ─▶ render (finishing chain · arc-swelled music · karaoke captions · −14 LUFS)
            ─▶ QC gate (PROMOTE/HOLD/REROLL)  ─▶ publish package (titles · tags · thumbnails)

Quick start

PY="E:/vedeo repo/video-use/.venv/Scripts/python.exe"

# First-time / reconnect: verify tools and register the Codex skills.
"$PY" -m studio.doctor --register-skills

# Fully autonomous — script only, the studio makes everything (no clips, no keys):
"$PY" produce.py --beats script.json --generate -o runs/myvideo/final.mp4

# Or bring your own clips:
"$PY" produce.py --beats script.json --clips path/to/clips -o runs/myvideo/final.mp4

# Or real t2v via your own subscription (no API key) — see the t2v-prompts skill:
"$PY" -m studio.t2v_prompts build script.json -o runs/myvideo   # -> prompt sheet + filenames
# ...generate each manually, save under the given filenames, hand back the folder...
"$PY" -m studio.t2v_prompts validate runs/myvideo/t2v_manifest.json --clips path/to/returned
"$PY" -m studio.layout_qc path/to/returned/* --run-dir runs/myvideo --aspect 9:16
"$PY" produce.py --beats script.json --clips path/to/returned -o runs/myvideo/final.mp4

# Or real t2v, fully automatic (needs FAL_KEY — see studio/t2v_api.py):
"$PY" produce.py --beats script.json --t2v-generate -o runs/myvideo/final.mp4

script.json is the beat array Claude writes via the scriptwright skill. The output runs/<slug>/ holds final.mp4, the editable final.edl.json, qc.json, generated frames/ + vo/, and distribution.json.

The pieces

Render core (editor/) — the deterministic FFmpeg compiler. EDL in, MP4 out: per-scene trim/grade/motion, eased xfade transitions, slow-fill (clip shorter than its narration), image stills looped + Ken-Burns, sidechain-ducked + arc-swelled music, non-ducked SFX bed, Anton karaoke captions, master finishing chain (deband/grain/vignette/LUT), two-pass −14 LUFS.

Generation (studio/) — image_gen.py (cozy 2D stills, keyless Pollinations/Flux), character_pack.py (reusable character reference pack + bible, once per character), flow_operator.py (autonomous t2v via Google Flow through the Kimi WebBridge browser daemon — no API key; --pack attaches Ingredients refs), consistency_check.py (cross-clip character-drift gate), t2v_prompts.py (manual paste-by-hand t2v bridge), t2v_api.py (real automated t2v via fal.ai's queue API, gated behind FAL_KEY — untested against a live key), voice_kokoro.py (local Kokoro-82M narration), music_gen.py (license-free ambient bed), publish.py (upload package).

Brain + QCbrain/ (ingest/mood/planner/rubric — the ideation panel's deterministic tally), editor/qc.py (the deterministic render gate). produce.py is the one-command driver (also runs the length gate and built-in-audio detection); make.py the folder→video path; edit.py the validate/render/qc CLI.

Skills (skills/) — the "teach Claude to be a creator" layer: super-editor (the general master skill — start here for anything outside the cozy niche; professional editing craft + the full tool map, reference material in super-editor/reference/), directing-shorts (the cozy-niche specialization), production-research, creator-taste, scriptwright (the script-phase super skill — hooks/retention refs + character sheet + prompt-grade visual notes), t2v-director (t2v prompt craft — dramaturgy, model dialects; adapted from smixs/visual-skills, MIT), scene-planner, editing-craft, voice-tts, animated-captions, quality-qc-retention, brutal-review, image-gen, t2v-prompts, publishing-distribution. Register with: mklink /J "%USERPROFILE%\.claude\skills\cozy-studio" "E:\vedeo repo\editor-os\skills".

Contract

The EDL (schema/edl.schema.json, doc schema/EDL_SPEC.md) is the boundary: the brain decides → emits an EDL → the compiler renders it, making no editorial calls. The EDL is the editable artifact — change the JSON, edit.py render, re-cut.

Honest limits (what needs external keys/manual steps, not code)

  • Real t2v generation has an API adapter (studio/t2v_api.py, fal.ai queue API, gated behind FAL_KEY) but no key to test it against yet — built to fal.ai's documented request/poll/fetch shape, untested live. Until a key exists, use the keyless t2v-prompts manual bridge (same prompts, zero API risk); once a key lands, produce.py --t2v-generate is fully automatic — but dry-run ONE clip before trusting a full batch, and re-verify the model slug on fal.ai's current catalog (slugs move).
  • Auto-upload to YouTube/TikTok needs platform API keys (package is manual-upload-ready).
  • Cross-scene character consistency is best-effort with the free generator (true consistency wants a keyed edit-from-reference model).
  • AI-generated assets aren't copyrightable/Content-ID-registrable — treat as disposable.

Design rationale + the full plan: docs/COZY_STUDIO_BLUEPRINT.md.

About

Autonomous AI video production studio — script to published video: generated visuals, local TTS, EDL editing, QC gates, publish package. CPU-only, keyless.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages