video-studio
v0.4.0Provider-neutral knowledge-to-video compiler: turns text, URLs, documents and repos into reproducible videos with captions, thumbnails and provenance.
By Suparn BectorLicense: Apache-2.00 GitHub starsUpdated 1 hour ago
Directory evidence
- Runtimes
- Claude Code
- Parsed components
- 24 skill or MCP entries
- Source updated
- Sep 29, 2026
- Manifest status
- Canonical path parsed
The directory validates manifest shape and source location. It does not execute the plugin or provide a security endorsement. Review the indexing methodology →
Install video-studio for Claude Code
claude plugin marketplace add IchenDEV/agent-plugin-mkt
claude plugin marketplace update agent-plugin-marketplace
claude plugin install video-studio@agent-plugin-marketplacePaste and run these commands in a terminal with Claude Code. They add and refresh the PluginsMP catalog, then install this plugin.
The installer fetches third-party code from the source repository shown on this page. This directory validates manifest structure and source location, but does not perform a security audit; review the manifest, components, and source before installing.
Get the source manually
git clone https://github.com/harshil-1411/claude_plugin_video_studioClone the source repository, then follow its setup instructions to add the plugin to a compatible client. The repository root is the plugin root.
Plugin files
├── .claude-plugin/plugin.json├── skills/adapt/SKILL.md├── skills/analyze/SKILL.md├── skills/compare/SKILL.md├── skills/create/SKILL.md├── skills/demo/SKILL.md├── skills/diff/SKILL.md├── skills/doctor/SKILL.md├── skills/export/SKILL.md├── skills/ingest/SKILL.md├── skills/lint/SKILL.md├── skills/localize/SKILL.md├── skills/plan/SKILL.md├── skills/prompt-pack/SKILL.md├── skills/qa/SKILL.md├── skills/render/SKILL.md├── skills/review/SKILL.md├── skills/shorts/SKILL.md├── skills/stills/SKILL.md├── skills/test/SKILL.md├── skills/tighten/SKILL.md├── skills/validate/SKILL.md├── skills/variants/SKILL.md├── skills/verify/SKILL.md└── .mcp.json
Included Skills23
Adapt a planned video-studio project to another shape - aspect ratio (9:16, 1:1, 4:5, 16:9), length, platform or targets - as a new project folder, then fix the scenes that no longer fit. Use when the user runs /video-studio:adapt or asks for "a 16:9 version", "a 15-second cut", or the same video for another platform.
Analyze a reference video's format (shot lengths, cuts per 10 s, first-shot length, pacing, speech share and pauses, loudness, motion timing, and where burned-in captions sit) without copying anything from it, then apply that structure to the user's own video, optionally as a project style pack (write_style). Use when the user runs /video-studio:analyze, shares a reel they want to imitate ("make it like this one"), or asks how fast a video cuts or where its captions are.
Build a before/after page for two videos - a project's preview and final render, a render against a variant or short, a clip against its tightened copy, or a render against a reference video to match - with a metrics table (frozen time, changes and cuts per second, moving share, static stretch, loudness), side-by-side, stacked and wipe views on one synced clock, frame stepping and per-side sound. Use when the user runs /video-studio:compare, asks to see two versions side by side, or wants to judge a change by watching it.
End-to-end video-studio flow - turn free text, a URL, a document or a local repo into a finished video package - plan (brief, grounded scene spec, storyboard), approval, local render with captions, QA and dist/ export. Use when the user runs /video-studio:create, or asks to "make a video", "turn this into a reel/short" or similar from any source.
Record a product demo of the user's own running app (a URL they started, e.g. http://localhost:3000) with a scripted browser walk - clicks, typing, scrolling, zooms - with inputs blurred, then use the recording in screen_capture scenes. Use when the user runs /video-studio:demo, or wants a product-demo or product-ui reel that shows their real app.
Compare two video-studio renders - two project folders, or one folder's preview and final - and explain what changed - spec changes (scenes added, removed or edited, with before and after), video.lock changes classified as creative, renderer, spec, asset or metadata, and a sampled frame diff (SSIM) with side-by-side images of frames that differ. Use when the user runs /video-studio:diff, asks what changed between two renders or versions, or a golden-frame test failed and the cause is unclear.
Check whether this machine is ready to make videos with video-studio. Reports Node, node:sqlite, ffmpeg/ffprobe (libass, libx264), Chrome, the optional HyperFrames renderer, whisper.cpp, configured provider keys and the data directory, with a fix for each problem. Use when the user runs /video-studio:doctor, asks if their setup works, or a render fails for environment reasons.
Rebuild a rendered video-studio project's dist/ folder (one package per target platform with video, cover, captions, post copy and QA, plus the reel, clean master, spec, storyboard, render manifest and provenance) from existing renders without re-rendering, and polish the post copy. Use when the user runs /video-studio:export, deleted or edited dist/, wants the final package and posting copy, wants the videos signed with C2PA content credentials, or wants to finish the edit in DaVinci Resolve, Final Cut Pro or another editor (FCPXML / OpenTimelineIO timeline).
Turn source material (text, markdown, PDF, DOCX, PPTX, web pages, a local code repository, or the user's own video and audio files, or a video URL such as YouTube, Vimeo, Loom or a direct .mp4 link) into a video-studio ContentIR with evidence refs, claims and a security classification, and transcribe footage locally. Use when the user runs /video-studio:ingest, asks to make a video "from" a document, URL, repo, notes, a recording or an interview, or before writing a creative brief.
Lint a video-studio project against its platform targets (TikTok, Instagram, YouTube Shorts, LinkedIn, Facebook Page API) - duration/fps/size envelopes, text cut off, text or captions under the app UI, contrast, caption reading speed and timing (captions too brief or out of sync with the voice, flicker), cuts off the beat, data inserts out of step with the voice, flashing, on-screen text too brief to read, story arc, title length, stock phrases, post caption and hashtag limits, cover, brand banned phrases (also in the generated post copy), banned motion effects, busy crossfades, sound effects (licence, harsh repeats, under the voice), acceptance numbers and the loop seam - and fix what it finds by editing the spec and re-rendering. Use when the user runs /video-studio:lint, asks whether a video is ready for a platform, or after a render before publishing.
Make a language version of a planned video-studio project (e.g. Hindi, Japanese, Arabic, German) - translate the voiceover, on-screen text, text in the motion graphics, cover headline and post copy, re-time scenes for the language, validate, then render. Use when the user runs /video-studio:localize or asks for the video "in Japanese", "a Hindi version" or several language versions.
Turn ingested sources into a video plan without generating anything - infers audience, goal, platform and duration (showing assumptions), proposes and scores hooks, writes project/creative-brief.yaml and a grounded project/video-spec.json, validates both and renders a readable storyboard. Use when the user runs /video-studio:plan, asks for a script, storyboard, hook ideas or a video plan from a document, URL, repo or notes, or before rendering.
Turn the shot cards of a video-studio project's generated_video and avatar scenes into ready-to-paste prompt packages for the video model families Seedance, Veo, Kling, Wan, Runway and Hailuo, and plan how to keep every shot consistent. Nothing is generated or spent. Use when the user runs /video-studio:prompt-pack, asks for prompts for a video model, wants to compare how a shot reads on different models, or plans AI-generated B-roll before Phase 7 generation exists.
Re-run technical QA on a rendered video-studio project - resolution, aspect, duration, codecs, black and frozen frames, motion density and moving share, the loop seam, flashing, audio/video sync, silence and loudness against -14 LUFS - and explain each finding with its fix. Use when the user runs /video-studio:qa or asks whether a rendered reel is ready to post.
Render a planned video-studio project (project/video-spec.json) into a finished package in dist/ - captioned 9:16/16:9 reel, clean master, SRT/VTT captions, transcript, thumbnail, social copy, render manifest and provenance - using only local tools (system TTS or silent voice, HyperFrames or ffmpeg motion graphics). Use when the user runs /video-studio:render, approves a plan, or asks to render, preview or export the video.
Look at a rendered video-studio reel as images - a contact sheet of every scene's opening, middle and closing frame, a strip of every frame in a span (motion, transitions, word cues), or full-resolution crops (captions, small text, faces) - and report or fix what is wrong. Use when the user runs /video-studio:review, asks how a render looks, or before handing over a preview or final render.
Find the best standalone short clips (20-60 s by default) in a long recording such as a founder interview, podcast or talk, then write a talking-head VideoSpec for each chosen clip that plays the original footage and sound. Use when the user runs /video-studio:shorts, or asks to cut a long video into shorts, reels or clips.
Look at chosen moments of a planned video-studio project's HyperFrames scenes (motion pages and every other motion-graphic kind) as a labelled sheet of still frames drawn straight from the composed pages in headless Chrome, before the full render - on every beat or downbeat of the music, at exact times, or in/mid/out - and fix cramped, overlapping, off-grid or unreadable moments. Use when the user runs /video-studio:stills, after writing or editing a motion page, or before a render of a spec with motion scenes.
Golden-frame regression test for a rendered video-studio project - samples frames of the reel (first frame, each scene's midpoint, last frame), compares them with the golden frames stored in the project's golden/<quality>/ folder by SSIM, and records new goldens after the render has been checked by eye. Use when the user runs /video-studio:test, asks whether a re-render still looks the same, or wants to lock in a render as the reference.
Tighten talking-head footage from its transcript - shorten long pauses, cut filler words (um, uh), and drop false starts and retakes - as a new, cleaned copy of the clip. Use when the user runs /video-studio:tighten, or asks to clean up a recorded talk, demo narration or interview before making shorts or a reel.
Validate a video-studio VideoSpec (video-spec.json) against the schema and semantic rules, and explain each error with a concrete fix. Use when the user runs /video-studio:validate, after writing or editing a spec, or before rendering.
Create an A/B experiment from a planned video-studio project - several hooks and covers from one spec, optionally in paired cut lengths (e.g. 15 s and 30 s), each rendered as its own package with an experiment manifest (hypothesis, variant ids, cut length). Use when the user runs /video-studio:variants, wants to test hooks or thumbnails, or asks for "a few versions" of the same video.
Verify that a video-studio spec is grounded in its sources - which ContentIR claims and evidence each scene cites, which key claims no scene covers, which scenes make statements without claim_refs, and unresolved refs - and fix what it finds by editing the spec. Use when the user runs /video-studio:verify, asks whether a video's claims are backed by the sources, or before rendering a video with grounding strict.
MCP servers1
- command
- node
- args
- ${CLAUDE_PLUGIN_ROOT}/dist/mcp.mjs
- env.RUNWAYML_API_SECRET
- ${user_config.runway_key}
- env.ELEVENLABS_API_KEY
- ${user_config.elevenlabs_key}
- env.HEYGEN_API_KEY
- ${user_config.heygen_key}
- env.FAL_KEY
- ${user_config.fal_key}
- env.KLINGAI_API_KEY
- ${user_config.kling_key}
- env.GEMINI_API_KEY
- ${user_config.google_key}
- env.ARK_API_KEY
- ${user_config.ark_key}
- env.DASHSCOPE_API_KEY
- ${user_config.dashscope_key}
- env.MINIMAX_API_KEY
- ${user_config.minimax_key}
- env.YOUTUBE_CLIENT_ID
- ${user_config.youtube_client_id}
- env.YOUTUBE_CLIENT_SECRET
- ${user_config.youtube_client_secret}
- env.META_ACCESS_TOKEN
- ${user_config.meta_access_token}
- env.LINKEDIN_ACCESS_TOKEN
- ${user_config.linkedin_access_token}
- env.TIKTOK_CLIENT_KEY
- ${user_config.tiktok_client_key}
- env.TIKTOK_CLIENT_SECRET
- ${user_config.tiktok_client_secret}
MCP configuration uses runtime-provided plugin path placeholders such as ${PLUGIN_ROOT} or ${CLAUDE_PLUGIN_ROOT}. Review the manifest for the runtime-specific expansion rules.
Plugin manifests1
{
"name": "video-studio",
"displayName": "Video Studio",
"version": "0.4.0",
"description": "Provider-neutral knowledge-to-video compiler: turns text, URLs, documents and repos into reproducible videos with captions, thumbnails and provenance.",
"author": {
"name": "Suparn Bector"
},
"homepage": "https://github.com/harshil-1411/claude_plugin_video_studio",
"repository": "https://github.com/harshil-1411/claude_plugin_video_studio",
"license": "Apache-2.0",
"keywords": [
"video",
"knowledge-to-video",
"ffmpeg",
"captions",
"mcp",
"runway",
"elevenlabs",
"heygen"
],
"userConfig": {
"elevenlabs_key": {
"type": "string",
"title": "ElevenLabs API key",
"description": "Optional. ElevenLabs key for voiceover and word timings (ELEVENLABS_API_KEY).",
"sensitive": true,
"required": false
},
"runway_key": {
"type": "string",
"title": "Runway API key",
"description": "Not used yet (Phase 7, providers): Runway Gen-4 / Gen-4.5 generative video. Safe to set now; it has no effect until that integration ships (RUNWAYML_API_SECRET).",
"sensitive": true,
"required": false
},
"heygen_key": {
"type": "string",
"title": "HeyGen API key",
"description": "Not used yet (Phase 7, providers): HeyGen v3 presenter videos. Safe to set now; it has no effect until that integration ships (HEYGEN_API_KEY).",
"sensitive": true,
"required": false
},
"fal_key": {
"type": "string",
"title": "fal.ai API key",
"description": "Not used yet (Phase 7, providers): Kling, Veo, Hailuo, Seedance and Wan through fal.ai. Safe to set now; it has no effect until that integration ships (FAL_KEY).",
"sensitive": true,
"required": false
},
"kling_key": {
"type": "string",
"title": "Kling API key",
"description": "Not used yet (Phase 7, providers): direct Kling API. Safe to set now; it has no effect until that integration ships (KLINGAI_API_KEY).",
"sensitive": true,
"required": false
},
"google_key": {
"type": "string",
"title": "Google Gemini API key",
"description": "Not used yet (Phase 7, providers): direct Veo through the Gemini API. Safe to set now; it has no effect until that integration ships (GEMINI_API_KEY).",
"sensitive": true,
"required": false
},
"ark_key": {
"type": "string",
"title": "BytePlus ModelArk API key",
"description": "Not used yet (Phase 7, providers): direct Seedance API. Safe to set now; it has no effect until that integration ships (ARK_API_KEY).",
"sensitive": true,
"required": false
},
"dashscope_key": {
"type": "string",
"title": "Alibaba DashScope API key",
"description": "Not used yet (Phase 7, providers): direct Wan API. Safe to set now; it has no effect until that integration ships (DASHSCOPE_API_KEY).",
"sensitive": true,
"required": false
},
"minimax_key": {
"type": "string",
"title": "MiniMax API key",
"description": "Not used yet (Phase 7, providers): direct Hailuo API. Safe to set now; it has no effect until that integration ships (MINIMAX_API_KEY).",
"sensitive": true,
"required": false
},
"youtube_client_id": {
"type": "string",
"title": "YouTube OAuth client ID",
"description": "Not used yet (Phase 9, publishing): uploading to YouTube and YouTube Shorts. Safe to set now; it has no effect until that integration ships (YOUTUBE_CLIENT_ID).",
"sensitive": false,
"required": false
},
"youtube_client_secret": {
"type": "string",
"title": "YouTube OAuth client secret",
"description": "Not used yet (Phase 9, publishing): uploading to YouTube and YouTube Shorts. Safe to set now; it has no effect until that integration ships (YOUTUBE_CLIENT_SECRET).",
"sensitive": true,
"required": false
},
"meta_access_token": {
"type": "string",
"title": "Meta (Instagram) access token",
"description": "Not used yet (Phase 9, publishing): publishing Instagram Reels. Safe to set now; it has no effect until that integration ships (META_ACCESS_TOKEN).",
"sensitive": true,
"required": false
},
"linkedin_access_token": {
"type": "string",
"title": "LinkedIn access token",
"description": "Not used yet (Phase 9, publishing): posting videos to LinkedIn. Safe to set now; it has no effect until that integration ships (LINKEDIN_ACCESS_TOKEN).",
"sensitive": true,
"required": false
},
"tiktok_client_key": {
"type": "string",
"title": "TikTok client key",
"description": "Not used yet (Phase 9, publishing): TikTok Direct Post (not available in India). Safe to set now; it has no effect until that integration ships (TIKTOK_CLIENT_KEY).",
"sensitive": false,
"required": false
},
"tiktok_client_secret": {
"type": "string",
"title": "TikTok client secret",
"description": "Not used yet (Phase 9, publishing): TikTok Direct Post (not available in India). Safe to set now; it has no effect until that integration ships (TIKTOK_CLIENT_SECRET).",
"sensitive": true,
"required": false
}
}
}For maintainers
If you maintain this plugin, link to this source-backed listing from your README so users can review its manifest and indexed components.
[video-studio on Agent Plugins Marketplace](https://pluginsmp.com/plugins/video-studio)