Skip to content

Repository files navigation

OpenCut Rough-Cut Prototype

Local AI-assisted rough-cut tooling for TikTok, Shorts, and Reels.

This prototype takes a local video file and generates:

  • a vertical 1080x1920 MP4 rough cut
  • editable .srt captions for CapCut
  • a transcript JSON
  • an intermediate rough-cut JSON
  • an optional burned-caption preview
  • a single .zip bundle containing the generated files

It is built on top of the OpenCut web app while the automation pipeline is being explored. The current practical workflow is to use this app to generate a CapCut-ready rough cut, then polish the video and captions manually in CapCut.

Status

This is a working prototype, not a polished product.

What works:

  • browser-based local GUI for selecting a video
  • FFprobe metadata detection
  • FFmpeg silence detection and rough-cut rendering
  • local Whisper transcription through whisper.cpp
  • transcript-aware protection for quiet opening speech
  • caption chunking tuned for short-form social videos
  • SRT export for CapCut
  • optional MCP wrapper for agent workflows

What is intentionally deferred:

  • cloud transcription APIs
  • Whisper installation automation
  • full timeline editor UX
  • visual crop/zoom/keyframe decisions
  • direct CapCut project generation
  • OpenCut renderer/export/WASM changes

Requirements

  • macOS or another local machine with shell access
  • Bun
  • FFmpeg with ffmpeg and ffprobe on PATH
  • whisper.cpp CLI on PATH as whisper-cli
  • a local whisper.cpp model, for example:
    • ~/.cache/whisper.cpp/ggml-small.en.bin
    • ~/.cache/whisper.cpp/ggml-base.en.bin

On macOS with Homebrew:

brew install ffmpeg whisper-cpp

Download a model using your preferred whisper.cpp model workflow. This prototype currently looks for:

~/.cache/whisper.cpp/ggml-small.en.bin
~/.cache/whisper.cpp/ggml-base.en.bin

Setup

bun install
bun run roughcut:gui

Open:

http://localhost:3000/automation/roughcut-gui

On macOS, you can also double-click:

scripts/Launch Rough Cut.command

GUI Workflow

  1. Choose a local video file.
  2. Leave Cut dead air enabled.
  3. Choose a Cut strength:
    • Smooth keeps more breathing room.
    • Natural is the default.
    • Tight removes shorter pauses.
    • Hard uses minimal padding for faster jump cuts.
  4. Leave Trim start at 0 unless you explicitly want to remove the opening.
  5. Keep Render burned-caption preview enabled if you want a quick visual timing check.
  6. Click Generate files.
  7. Import these generated files into CapCut:
    • capcut-clean.mp4
    • captions.srt

The generated files are written under:

~/Downloads/roughcut-gui/

Each video gets its own timestamped folder. The GUI also creates roughcut-files.zip in that folder so you can download/share one bundle instead of grabbing files individually.

CapCut Import

Use CapCut Desktop or CapCut Web.

  1. Create a new CapCut project.
  2. Import capcut-clean.mp4.
  3. Drag the video onto the timeline.
  4. Open the captions/subtitles area.
  5. Import captions.srt.
  6. Polish caption wording, timing, style, and edits manually.

CapCut mobile does not reliably support direct SRT import.

CLI Workflow

Generate rough-cut JSON:

bun run generate:roughcut --video input.mp4 --auto-silence-cut --auto-transcribe --captions-from-transcript --roughcut-out roughcut.json --transcript-out transcript.json

Render a clean MP4:

bun run render:roughcut --roughcut roughcut.json --out capcut-clean.mp4 --no-captions

Render a burned-caption preview:

bun run render:roughcut --roughcut roughcut.json --out preview-burned-captions.mp4

MCP Server

The prototype includes a thin MCP wrapper around the same rough-cut modules.

bun run roughcut:mcp

See:

docs/automation/opencut-roughcut-mcp.md

Tests

Focused rough-cut tests:

bun test apps/web/src/automation/roughcut

Full upstream OpenCut tests may currently fail on unrelated upstream/local issues. See:

docs/automation/roughcut-known-repo-issues.md

Architecture

Main rough-cut modules:

apps/web/src/automation/roughcut/
apps/web/scripts/roughcut/
apps/web/src/app/automation/roughcut-gui/
apps/web/src/app/api/automation/roughcut-gui/

The generated rough-cut JSON is an intermediate format, not a stable public OpenCut project format. The practical handoff format today is:

  • MP4 for video
  • SRT for editable captions

Attribution

This repo is based on OpenCut, an MIT-licensed open-source video editor:

https://github.com/OpenCut-app/OpenCut

OpenCut license terms remain in LICENSE.

About

Local OpenCut-based rough-cut GUI for CapCut-ready short-form videos

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages