Owlie Video Studio — Edit Video as Code, in VS Code
Owlie Video Studio is an AI-directed video editor that lives in VS Code, where your project is a plain-text OpenTimelineIO (OTIO) JSON file and git is your undo stack. You direct, the AI edits — going from raw footage to a published video without ever leaving the editor.
Your timeline is a plain-text file — and your agent can drive it
Owlie turns the edit into something you can diff, branch, and review like any other code. The project is an OTIO JSON document on disk, and any MCP-aware coding agent can drive it end to end through ordinary filesystem primitives.
- Timeline as code — your project is an OTIO JSON file you can diff, merge, branch, and search with plain git and your editor. Unknown fields (agent provenance, future schema) are preserved byte-exact across edits, with optional JSONC comments and a strict-JSON round-trip.
- Agent-first, bring-your-own-model — drive edits with Claude Code, Cursor, Copilot, Aider, Continue, Windsurf, or Codex; prompts run under your own subscription and never touch our servers.
- Deterministic MCP tools — frame-accurate helpers with no LLM arithmetic:
validate_otio,compile_ffmpeg_argv,detect_filler_words,generate_srt,media_metadata, pluscolor_grade_intent/suggest_cutsprompt templates. - Incremental render — every clip is cached by a content hash of its inputs, so an edit re-renders only what changed and stream-copies the rest for sub-second iteration.
Publish the formats people actually watch
Reframe one edit into every aspect ratio your audience lives on — vertical for Shorts, Reels, and TikTok; square for the feed; widescreen up to 4K — and export a real upload master when you're done.
- Format picker in the transport bar — 16:9 1080p (default), 9:16 1080p vertical, 1:1 1080p square, 16:9 4K, and a 720p draft. The full Render now defaults to 1080p rather than 720p.
- Fit modes —
fillscales up and center-crops to reframe landscape footage into a vertical or square canvas with no bars;fitletterboxes to keep the whole frame. - A real export master — Owlie Studio: Export Video (upload master) (or right-click any
.otio) rendersexport.mp4in your chosen format with a standards-compliant AAC track and a higher-quality encode. The in-panel preview keeps MP3 so VS Code's WebView can play it with sound. - One-click Publish — a finished export offers to Publish to YouTube with the file prefilled, and you can right-click any
.mp4to publish it directly. - Publish to TikTok too — upload a finished video to TikTok via the official Content Posting API: an inbox draft (finish in the app) or a direct post whose privacy and duet/stitch/comment options are driven by a live
creator_infopre-check. Bring your own TikTok app (client key/secret stay in SecretStorage); a localmcp-tiktokserver lets an agent render then post with no GUI. Until your app passes TikTok's audit, posts are SELF_ONLY.
Your AI can run the whole pipeline — no GUI required
A local MCP server closes the edit → render → upload loop so a coding agent can take a timeline all the way to a live video without a single click in the interface. The sidebar now also shows the cloud MCP surface that same agent can call, so what it can do is no longer hidden.
youtube_render— renders a timeline to MP4 with the exact same compiler the editor uses.youtube_upload_video— uploads that render through the same resumable YouTube upload the app uses: title / description / tags / category / privacy, and native scheduling (publishAt). Captions (.srt), a custom thumbnail, and playlist placement are best-effort extras that need the broaderyoutube.force-sslscope (opt in viafull_access) rather than the defaultyoutube.upload; a custom thumbnail additionally requires a verified channel, and any of these are skipped with a warning if unavailable.- Local and least-privilege — runs entirely on your machine with its own browser sign-in and a local token store (no cloud), using the
youtube.uploadscope by default and your own Google "Desktop" OAuth client. One-click setup. - MCP tools & prompts browser — click the sidebar's MCP node to browse the Owlie Says cloud surface — the five deterministic tools and two prompt templates — plus the local YouTube-upload server tools, each with an icon, a one-line doc, and a per-tool page, filterable by category.
- Auth state at a glance — the MCP node recolors to show your rate-limit lane: signing in lifts the cloud limit from 60/min to 600/min and turns the node green, while anonymous use keeps working at 60/min. Sign-in stays optional — nothing here requires it.
A real finishing toolkit — now with a GUI
Every clip gets titles, color, audio shaping, motion, and transitions. Set them the visual way — right-click a clip and choose Edit Effects for a themed form with live sliders — or let an agent write the same metadata.owlie_vibes.* keys directly.
- Titles & captions —
text_overlaysburns drawtext titles onto a clip with position (top / center / bottom), font size, color, a readability box, and an optional show/hide window. Rendered with a system font (Arial / DejaVu), overridable viafont_fileorOWLIE_FONT; an overlay whose font is missing is skipped rather than failing the render. - Color grade — set
color_grade(brightness / contrast / saturation) and the renderer applies an ffmpegeqto just that clip. - Per-clip audio —
volume(linear gain) plusfade_in/fade_outin seconds, instead of the old all-or-nothing mute. - Ken Burns pan / zoom —
ken_burns(from/to zoom + pan direction, ortruefor a gentle zoom-in) adds slow motion that ramps linearly across the whole clip, turning a still into a moving shot. - Transitions —
transition_in(black_fade / white_flash / blur_dissolve / zoom_punch) crossfades — or, for zoom_punch, a zoom cut — into a clip; a realTransition.1node from the add-transition command renders the same way, and transitions work on single-track timelines too.
Stills, a Media Library, and privacy built in
Drop a photo or screenshot on the timeline and it becomes a real clip. Around that, a full media browser helps you find, preview, and clean footage before it ships.
- Photos & screenshots as clips — drop a
.jpg/.png/.webp/.bmp/.tiffon the timeline and it renders as a real video segment for its full duration (looped at 30 fps with a silent audio track), in every format — so a screenshot becomes a proper Short. Stills default to 5s and import intomedia/images/. - Media Library — a grid with filters and search over any watched folder (Images / Videos / Audio / Other), searching across filename, camera, and codec, with live stats.
- Preview & playback — full-screen image lightbox (wheel-zoom, drag-pan) and inline video / audio playback, plus an EXIF panel (camera, lens, ISO, aperture, exposure, capture date, dimensions, codec).
- GPS map view — plot geotagged photos and videos on an OpenStreetMap street basemap; the grid follows the map viewport. Tiles are fetched host-side and cached, so the panel stays sandboxed under a strict offline CSP.
- Bulk GPS removal — find what leaks your location (a GPS badge, a "have GPS" count, an Only-with-GPS filter), then strip GPS from selected items or the whole library. Cleaned copies are written next to the originals — originals are never modified.
- Small image tools — a Tools-section batch of local, one-shot utilities: Remove Background Color (ffmpeg chroma/solid-colour key → transparent PNG), Remove Background (AI) (rembg subject cutout on any photo), Convert Image Format (PNG/JPG/WebP), Compress / Shrink, Resize & Reframe (16:9 / 9:16 / 1:1 with fill or fit), and Grab Frame → Still (a full-res frame from a video). Each writes a new file next to the original and imports it into the Media Library.
- Tools grouped into categories — the Tools section is now organized into collapsible groups — Capture, Import & Download, Audio, Image, and Video, with Publish to YouTube and Transitions below — collapsed by default so the growing list stays scannable. No commands changed; everything is still in the command palette.
Watch social channels and fetch their latest
Keep tabs on the creators you pull clips from, right inside the editor. The new Social Media section holds a per-project watch list for YouTube and TikTok and fetches their newest videos straight into your workspace.
- YouTube and TikTok — add a channel by pasting its URL or a bare
@handle; each project keeps its own watch list. - Per-channel and bulk fetch — a fetch icon on any channel pulls its latest videos, and a fetch icon on a platform pulls every channel under it at once.
- Latest 5, configurable — each fetch grabs the newest five by default, with a global setting and a per-fetch count override.
- Download archive — a per-channel archive records what you've already fetched, so repeat runs skip existing videos and bring back only what's new.
- Straight into the Media Library — fetched videos nest under their channel and also appear grouped per channel under a "Social downloads" folder, ready to drop onto the timeline. Right-click a channel to open it in your browser.
Plan the work — right in the sidebar
The bottom of the Owlie sidebar is a lightweight planning workspace — a personal checklist, a calendar of scheduled posts, and a live feed of the background jobs your machine is running — all without leaving the editor.
- ToDo checklist — a plain task list that lives in VS Code's global storage (not the workspace), so the same items follow you into every folder and window. Add one from the section's + button, click a row to toggle it done, and clear it with the inline trash button; unfinished items sort to the top and the sidebar previews the first five.
- A calendar of scheduled posts — each entry records a title, a scheduled time in UTC (optional all-day or end time), a caption, target platforms (YouTube, TikTok, Instagram, X, LinkedIn), an optional local video to upload, and a thumbnail — all persisted locally in global storage. The sidebar shows the next five upcoming posts; click one to open it in the Calendar editor.
- Click + to create — an empty Calendar shows a "click + to create" row that opens the compose form, and every post carries a status (draft / scheduled / published / failed). Today the calendar is a local scheduling ledger — it stores and previews your plan; the publish dispatcher that would post on the date isn't wired up yet.
- Live background Jobs — every task the worker runs for the open folder — proxy, waveform, and thumbnail prep, plus full renders and transcription — appears in the Jobs section, driven live off the worker's event stream. A running job shows a spinner with its current stage and percentage; queued, done, and cancelled jobs each get their own icon, and active work stays at the top.
- Errors surfaced in place — a failed job reads
error: <message>right on its row, with the input file in the tooltip, so a broken render or transcription is visible in the tree instead of buried in a log. Running jobs can be cancelled from an inline button.
Local-first, git-native foundation
Owlie is built to run on your machine and to treat every render as a checkpoint you can trust. Your models, your media, and your history all stay under your control.
- Bring-your-own-model + deterministic MCP tools — your prompts run under your own subscription; the frame-accurate tooling uses no LLM arithmetic.
- Local AI & media — local speech-to-text via a cached Whisper model gives per-word timestamps for frame-precise cuts ("cut every um") at electricity-only cost, backed by a content-addressed media cache, streamed waveform peaks, and GPU-accelerated encoding (
h264_nvenc) with automatic libx264 fallback. - Screen capture — record your screen plus system/mic audio, or grab region / full-screen screenshots, straight into the Media Library, with one-click GIF export.
- Git-native checkpoints — on render, the document is committed and tagged; revert to the last checkpoint with a path-scoped restore, branch any cut, and open a PR via the host's REST API. Agent commits carry
Co-Authored-Byprovenance. - First-run recovery — a missing ffmpeg / yt-dlp / Whisper surfaces a one-click Install action on the error toast instead of a dead-end "spawn ENOENT".
- Honest security — the session-token plaintext mirror is off by default, with a one-time warning when SecretStorage may be plaintext, and
SECURITY.mddocuments the trust model plainly.
Get started
Install the Owlie Video Studio extension, open a folder of footage, and right-click a clip to start editing — or just ask your agent to take it from raw footage to a published video.
Posted Jul 7, 2026, 10:06 PM UTC