Orkas-VideoStudio

Orkas-AIMIT活跃维护

把编码智能体变成视频工作室:用自然语言描述视频需求,智能体自动编写时间线并渲染出成品文件,底层基于 FFmpeg 和 MCP。

Turn your coding agent into a video studio: describe a video in plain language, and your agent writes the timeline and produces the file.

暂无版本347star +3 / 7 天28fork同步于 2026-11-10 12:01 UTC

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/Orkas-AI/Orkas-VideoStudio.git
cd Orkas-VideoStudio
pnpm install && pnpm build
node packages/cli/dist/index.js doctor
硬件要求按 README 说明

README 未说明显存或 GPU 型号要求;需 Node ≥ 22,并在 PATH 中提供 ffmpeg 与 ffprobe。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

把编码 Agent 变成视频工作室,用自然语言描述视频,Agent 写时间线并产出成片

把编码智能体变成视频工作室:用自然语言描述视频需求,智能体自动编写时间线并渲染出成品文件,底层基于 FFmpeg 和 MCP。

核心能力

  • 用可读可 diff 的 plan.json 表达视频,改一行只重渲染对应片段
  • Compose 线把脚本转成 HTML 动效并渲染为 mp4,无需付费密钥
  • Edit 线支持剪切、拼接、去静音、去口头禅、混音、烧字幕与配音
  • Auto 线用 stage-plan/stage-assemble 跨模态编排,交付前跑 promise-check 校验
  • 生成能力走自带密钥的 BYO 模式,支持 OpenAI、Gemini、豆包等供应商

容易踩的坑

npm 包尚在发布中,目前需从源码安装;生成图像、视频和 TTS 需自备供应商密钥,compose/edit 主干才零密钥;MuAPI 需显式设 video.provider 为 muapi,且自定义 base URL 必须含 /api/v1。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    OrkasVideoStudio

    Drive video composition, generation, and editing — and a fully automatic end-to-end pipeline — from your coding agent. Claude Code, Codex, Cursor: any agent that can run a shell or speak MCP can use it.

    https://github.com/user-attachments/assets/13411470-06da-4f64-9bc1-fa52fe27216b

    OrkasVideoStudio is not a black-box video agent. A video is expressed as a readable, diffable, re-renderable plan (plan.json) that your agent — and you — can edit; change one line and only that piece re-renders. The agent is the brain; this project ships the knowledge (what makes a good video, and which production line to take), the deterministic capabilities (render / edit / transcribe / generate — thin wrappers over hyperframes, ffmpeg, and whisper.cpp), and that editable IR.

    You talk to your agent in plain language — "make a 60-second vertical explainer on vector databases with a Chinese voiceover and captions" — and it reads the material, writes the timeline, and produces the file.


    The four production lines

    Three orthogonal capability axes, plus an automatic pipeline that weaves them together:

    • Compose — script → designed HTML motion graphics → mp4. Explainers, kinetic typography, lower-thirds, data viz, title cards, transitions. No paid keys.
    • Edit — cut / join / trim-silence / de-filler / mix / burn-in subtitles / dub / localize real footage you supply, plus highlight selection over long recordings. No paid keys.
    • Generate — talking-head or cinematic AI footage and imagery via your own provider keys (BYO — OpenAI, Gemini, Doubao; no managed backend, no lock-in).
    • Auto (end-to-end) — when a deliverable needs more than one axis, the agent routes to a single cross-modal plan.json: stage-plan builds the EDL, stage-assemble walks it and delegates each segment back to compose / generate / edit, and a deterministic delivery guard (ovs plan promise-check) verifies the finished cut keeps its promise (e.g. real motion, not a silent slideshow) before anything ships.

    The plan is the contract: "the footage in the middle, generate an opener, compose the stats, one voiceover over all of it" becomes one editable file where every segment, caption, and narration line is independently re-renderable.


    Relationship to Orkas

    OrkasVideoStudio began life as the built-in video agent inside Orkas — the AI-team desktop app — where it was validated end-to-end, then extracted into this agent-agnostic, MIT-licensed toolkit.

    • Inside Orkas it ships as a built-in agent — no separate install; the zero-key trunk works out of the box.
    • Everywhere else you install it into your own coding agent (below) and get the same capabilities via the ovs CLI and MCP server.

    Links: orkas.ai (website) · github.com/Orkas-AI (open-source projects) · this repo.


    Use cases

    Each is a real prompt you'd give your agent; the router picks the line for you.

    You say…LineWhat happens
    "Make a 60s vertical explainer on what a vector DB is, Chinese voiceover + captions."ComposeHTML motion-graphic scenes → narration (BYO TTS) → burned-in captions → mp4.
    "Turn this 1-hour screen recording into three 30s highlight clips with captions."Editscenes/quality find the good parts, rank-takes picks, trim-silence/remove-fillers tighten, subtitles burned in.
    "Add an English voiceover + subtitles to product-demo.mp4 and normalize the loudness."Edittranscribe → localize → speak → mix → burnsubs → loudness pass.
    "Clean the silences and 'um's out of my webcam take and tighten it."Editdeterministic jump-cut with an auditable evidence trail.
    "Generate a 5s cinematic shot of a city at dawn for the intro."GenerateBYO image/video provider → clip on your timeline.
    "Make a 15s 9:16 promo from this script: generate the opener, compose the feature callouts, one VO."Autoone plan.json woven across generate + compose + narration, guarded before delivery.
    "Recreate this reference video's structure, style and pacing for my product, using my script and footage. Show me the breakdown and plan first."Compose / Edit / AutoInspect the reference, map its hook and visual beats to your content, then author scenes or an editable timeline.

    Recreate a reference video with your own content

    Supply a reference video file and your own product assets, script or footage. Your agent can use OrkasVideoStudio to recreate its narrative structure, visual style and editing pace for the new content:

    1. Analyze the reference — inspect sampled frames and relevant audio to identify the hook, demonstration or proof, information order, typography, transitions, pacing and call to action.
    2. Plan the adaptation — state what to preserve and what to replace, then map reference moments to the new scenes or timeline. Adapt timing to your actual narration and reading time.
    3. Produce and revise — compose motion graphics, edit your footage and generate missing visuals when needed. Keep locally authored text, captions, narration and clips separately editable; text baked into generated footage requires changing that footage.

    This is best suited to motion-graphic explainers, SaaS or app demos, and product ads made from existing footage. Start with a file your agent can read; social-platform share-link downloading is not built in. Exact camera moves, human performances and frame-by-frame matching are not guaranteed, and delivery checks do not automatically score similarity to the reference.

    The reference-recreation workflow documents how source observations become authored scenes and timeline decisions.


    Install

    Prerequisites: Node ≥ 22, and ffmpeg + ffprobe on your PATH (needed for edit / transcribe / local media QA). Compose drafts use a VideoStudio QA gate backed by the pinned HyperFrames 0.7.60 package dependency; npx is only a compatibility fallback. Generation is opt-in and needs your own keys.

    Early development: the npm packages are being published. Until then, install from source — the ovs CLI works exactly the same.

    From source (works today)

    git clone https://github.com/Orkas-AI/Orkas-VideoStudio.git
    cd Orkas-VideoStudio
    pnpm install && pnpm build
    node packages/cli/dist/index.js doctor     # verify ffmpeg/ffprobe/node
    # optionally alias it:  alias ovs="node $PWD/packages/cli/dist/index.js"
    

    From npm (once published)

    npm i -g @orkas/video-studio     # provides the `ovs` command
    ovs doctor                       # checks ffmpeg/ffprobe/node; guides any install
    

    Drive it from your coding agent

    The ovs CLI is the canonical interface; the MCP tools mirror it 1:1. There are three ways an agent picks it up — use whichever your agent supports:

    1) Native skills (Claude Code / Codex). Materialize the SKILL.md knowledge pack so the agent discovers it by progressive disclosure:

    ovs skills --install --target claude   # → ~/.claude/skills   (add --scope repo for ./.claude/skills)
    ovs skills --install --target codex    # → ~/.agents/skills
    

    2) MCP typed tools. Register the server (mirrors the CLI):

    claude mcp add ovs -- npx -y @orkas/video-studio-mcp     # Claude Code
    codex  mcp add ovs -- npx -y @orkas/video-studio-mcp     # Codex
    # from source (until published): point it at  node <repo>/packages/mcp/dist/index.js
    

    3) Self-describing CLI (any agent that can run a shell). No native loader needed:

    ovs skills               # list the skills
    ovs skill video-router   # print a skill's full instructions into context
    ovs --help               # the full command surface
    

    How a session flows. The agent reads video-router first (it locks the line), then the relevant stage skills, authors the composition and/or plan.json, runs the deterministic ops, and self-verifies with the delivery guard:

    You:   Make a 60s vertical explainer on vector databases, with a Chinese voiceover.
    Agent: → reads video-router (locks: compose-primary)
           → reads stage-plan / stage-compose / video-craft
           → writes composition/composition-manifest.json + plan.json
           → ovs composition prepare composition
           → authors composition/index.html on the prepared HyperFrames scaffold
           → ovs draft composition --out draft.mp4 --report draft-report.json
           → ovs plan promise-check plan.json         # guard passes
           → returns draft.mp4
    

    The full command surface: doctor · composition {prepare,reconcile} · draft · render · lint · check · snapshot · edit {probe,trim,concat,reframe, burnsubs,overlay,extract-frame,loudness,mix,trim-silence,remove-fillers} · transcribe · silence · scenes · quality · plan {validate,summarize,promise-check,rank-takes} · narration fit · gate transition · speak · speech-capabilities · image · video · skills.


    BYO generation providers

    The compose / edit / transcribe trunk is zero-key. Generation (image / video / TTS) is opt-in and uses your keys — no managed backend, no account binding. Configure via ~/.config/orkas-video-studio/config.json (or OVS_CONFIG_DIR) or environment variables:

    CapabilityProvidersEnv
    Image (ovs image)OpenAI-compatible · Gemini · Doubao SeedreamOVS_IMAGE_PROVIDER · OVS_IMAGE_BASE_URL · OVS_IMAGE_API_KEY · OVS_IMAGE_MODEL
    Video (ovs video)Doubao Seedance · Atlas Cloud · MuAPIOVS_VIDEO_PROVIDER · OVS_VIDEO_BASE_URL · OVS_VIDEO_API_KEY · OVS_VIDEO_MODEL
    TTS (ovs speak)OpenAI-compatible (incl. ElevenLabs-style)OVS_TTS_BASE_URL · OVS_TTS_API_KEY · OVS_TTS_MODEL · OVS_TTS_VOICE · OVS_TTS_FORMAT

    Use ovs speech-capabilities to resolve the exact configured narration profile without printing credentials, then ovs narration fit before and after synthesis to keep each line inside its plan window. Video generation accepts explicit reference images, ratio, duration, resolution, and audio generation flags so the provider call matches the approved plan. ovs plan validate also checks each generate segment's ratio, duration, and operation against the configured video.provider, so Gate C never approves a plan the provider will reject.

    For MuAPI, explicitly set video.provider to "muapi" and provide MUAPI_API_KEY (or use OVS_VIDEO_API_KEY). MUAPI_API_KEY takes precedence over the generic key when MuAPI is selected, and never selects MuAPI by itself. video.model / OVS_VIDEO_MODEL currently supports these validated Kling v2.1 endpoint slugs: kling-v2.1-master-t2v, kling-v2.1-master-i2v, kling-v2.1-standard-i2v, and kling-v2.1-pro-i2v; unsupported slugs are rejected rather than sent with a mismatched body. Text-to-video defaults to kling-v2.1-master-t2v, while a first-frame image_url defaults to kling-v2.1-master-i2v. The default base URL includes /api/v1; custom MuAPI base URLs must include that path. See the MuAPI API reference for the submit-and-poll contract and model-specific parameters. This adapter accepts the common prompt, aspect-ratio, duration, and first-frame inputs; for the supported Kling endpoints, duration is 5 or 10 seconds and ratio is 16:9, 9:16, or 1:1. Provider-neutral resolution, generate_audio, and quality inputs remain compatible with signed plans; resolution and audio are ignored by Kling, while quality is validated but not sent. Edit and additional-reference controls are rejected until a matching MuAPI schema is supported.


    What keeps the generation bill small

    Compose and edit cost nothing to run. The bill starts at the generate line, where every clip is a billable call on your key — so the skills in this repo treat generation as a budget to defend, not a default to reach for.

    • Generation is the exception, not the baseline. stage-plan aims to reach ~90% of the result with zero billable generation — reuse the footage you supplied, compose instead of generate, pull b-roll from frames you already have. compose is the cheapest source for anything textual; generate is reserved for a beat you can neither film nor compose.
    • A keyframe you do not need is a keyframe you do not pay for. A shot whose start and end look nearly the same needs one keyframe and lets motion fill the rest; only a shot that ends somewhere visually different needs two.
    • Runs are bounded by default: ≤ 6 generated shots, ≤ 3 recurring characters, one aspect ratio per run. Anything larger has to state the count and the rough number of billable generations, and wait for you.
    • The count is in the plan, and the plan is checked. cost_estimate.billable_generations must equal the number of source:"generate" segments exactly; a mismatch is a validation error, so the number you approve is the number that runs.
    • Revising one shot re-bills one shot. A revision or failure invalidates only that segment and the assembly derived from it — completed siblings are preserved, never redispatched just to rebuild the montage. Recovery may inspect or download an already-authorized result without paying twice; only a genuinely new hosted task needs fresh authority.

    This is not a price guarantee: you are billed by your own provider and this repo never sees the invoice. What it does is make the expensive path the one you have to ask for.


    How it compares

    HyperFrames, ffmpeg, and whisper.cpp are dependencies here, not competitors — OrkasVideoStudio is the agent-facing knowledge, draft QA gate, and IR layer on top of them. Against other ways to make video:

    OrkasVideoStudioProgrammatic frameworks (Remotion, Revideo)AI SaaS editors (Descript, Opus Clip, Runway)Thin MCP / ffmpeg wrappers
    Driverany coding agent, in natural language (CLI + MCP)you hand-write React/TSGUI / hostedan agent, but tools only
    Artifacteditable, diffable plan.json IR — per-segment re-rendercode (re-run to render)black-box timeline / hosted projectnone
    Scopecompose + edit + generate + AUTO end-to-endcomposition (programmatic)mostly edit or generate, per productwhatever the tool exposes
    Guidanceships "what makes a good video" as skills + a deterministic delivery guardnone — you decideproduct-opinionatednone
    Keys / hostingzero-key trunk; BYO keys for generation; local-first, self-hostyour own infravendor keys + hosted, lock-invaries
    LicenseMITmay require a company license for teamsproprietaryvaries

    Where it fits: reach for a framework when you want to hand-code every frame; a SaaS editor when a GUI and hosting are the point; OrkasVideoStudio when you want your agent to make the video, keep the result as an auditable file you can edit and re-render, and stay local + open with your own keys.


    Packages

    PackageWhat
    @orkas/video-studio-corethe plan.json IR (schema + validator + delivery guard), decision layer, runtime/config
    @orkas/video-studio-toolscapability backends (render / edit / analyze / speech / image / video)
    @orkas/video-studiothe ovs CLI
    @orkas/video-studio-mcpMCP server (mirrors the CLI 1:1)
    @orkas/video-studio-skillsthe host-neutral SKILL.md knowledge pack

    The technical plan and roadmap live in PLAN.md.

    Development

    pnpm install applies the versioned HyperFrames color-conversion patch in patches/ to the pinned dependency. It makes SDR H.264/H.265 encoding convert to the BT.709 matrix declared in the output metadata. The external OVS_HYPERFRAMES_BIN override and compatibility npx fallback do not use workspace patches; their runtime must supply the equivalent color fix.

    pnpm install
    pnpm build        # tsc per package (core → tools → cli/mcp)
    pnpm test         # vitest
    pnpm test:video   # mock provider round-trip → real playable MP4 → ffprobe
    pnpm test:video:e2e # build + real CLI production (motion/audio/captions) + CLI/MCP smoke
    pnpm benchmark    # deterministic core correctness + latency/throughput benchmark
    pnpm typecheck
    pnpm verify       # all checks, including mandatory real video production
    

    test:video is deterministic and never spends provider credits: a local fake Seedance endpoint returns a real H.264 fixture, then OVS downloads it and verifies the result with ffprobe. test:video:e2e creates a nine-second, three-scene 1080p production through the built CLI: composition prepare/reconcile, snapshot, the full draft gate, subtitle burning and final-file promise checks. It decodes the entire MP4 and checks scene order, visible motion, audible audio in every scene, burned subtitle pixels and rejection of a wrong delivery duration. It also exercises the built CLI/MCP surfaces. Both commands fail with an actionable error when required video runtimes are missing; the ordinary test suite may skip runtime-heavy cases on machines without ffmpeg or a browser.

    Before any Git commit or PR, pnpm verify must pass on the final candidate; it includes the real production case and is also the CI entry point. Test-only changes follow the same rule. For sync/release review, retain and inspect the produced video, previews, final frames and reports:

    OVS_VIDEO_EVIDENCE_DIR=../Orkas-VideoStudio-artifacts pnpm test:video:e2e
    

    The directory is opt-in and each run uses a unique child directory. Ordinary CI runs clean up their temporary media. Fixtures use original HTML/SVG and locally generated instrumental audio; they do not call paid providers or claim TTS/model quality coverage.

    pnpm benchmark is zero-key and deterministic. It builds the core package, verifies benchmark fixtures, then measures gate transitions, EDL validation/delivery summaries, composition-manifest validation, and narration estimation. Each suite carries a deliberately conservative throughput floor so large regressions fail while normal CI and developer-machine variance does not.

    License

    MIT — see LICENSE. Rendering uses the Apache-2.0 licensed HyperFrames 0.7.60 dependency; editing and media QA use system ffmpeg, while transcription is delegated to HyperFrames/whisper.cpp. See PLAN.md for how third-party runtimes are located and the licensing notes.

    Versions and delivered-video checks

    All OVS packages share an independent YYYY.M.D calendar version, using the Asia/Shanghai release-candidate date without zero padding. See CHANGELOG.md for prepared/released changes. This version is independent of the Orkas desktop application and marketplace Agent versions. Tags, when explicitly released, use v<version>; never overwrite a published date version.

    For an assembled plan, verify the finished file as well as its component footage:

    ovs plan promise-check project/plan.json --probe-produced --video project/render/video.mp4
    

    The equivalent MCP plan_promise_check accepts probe_produced and video. Delivery verification measures duration, canvas, audio, integrated loudness and per-line voiced spans. Missing narration evidence fails the check. Caption warnings require visual confirmation when subtitles were burned in.

    ovs speak writes a request/audio receipt beside its output and reuses only an exact matching request with intact bytes. Include the approved --language, voice, model, speed and format; changing those settings invalidates reuse.

    Synchronization uses a dedicated branch and PR. The diff and verification are reviewed by the requester before creating the PR; merge and release are separate explicit actions.