AI News HubLIVE
站内改写3 min read

Show HN: VibeClip – open-source AI video editor you control by chatting

VibeClip is an open-source, self-hosted AI video editor that lets you turn long videos into captioned 9:16 shorts — and edit by chatting. It uses local faster-whisper for transcription and an LLM for analysis, supports multiple LLM providers, and keeps your data private.

SourceHacker News AIAuthor: borandabak

Notifications You must be signed in to change notification settings

Fork 0

Star 2

BranchesTags

Open more actions menu

Folders and files

NameName

Last commit message

Last commit date

Latest commit

History

10 Commits

10 Commits

.github

.github

assets

assets

chat

chat

docs

docs

pipeline

pipeline

scripts

scripts

tests

tests

.dockerignore

.dockerignore

.env.example

.env.example

.gitignore

.gitignore

.pre-commit-config.yaml

.pre-commit-config.yaml

.python-version

.python-version

.secrets.baseline

.secrets.baseline

CODE_OF_CONDUCT.md

CODE_OF_CONDUCT.md

CONTRIBUTING.md

CONTRIBUTING.md

Dockerfile

Dockerfile

LICENSE

LICENSE

README.md

README.md

SECURITY.md

SECURITY.md

docker-compose.yml

docker-compose.yml

pyproject.toml

pyproject.toml

server.py

server.py

uv.lock

uv.lock

Repository files navigation

⚡ Quick start

Spin up a private instance in three commands. All you add is one LLM key.

git clone https://github.com/oktaydbk54/vibeclip.git cd vibeclip cp .env.example .env # add ONE line: OPENAI_API_KEY=sk-... docker compose up -d --build

→ open http://localhost:8765

With the defaults (EMAIL_MODE=console, REQUIRE_EMAIL_VERIFICATION=false) sign-up logs you straight in — no email provider needed. Bring an OpenAI or DeepSeek key (DeepSeek is the cheap one), or point LLM_BASE_URL at any OpenAI-compatible server (Ollama, LM Studio, OpenRouter…). Prefer no Docker? See local install.

✨ What it does

🎬 Long → shorts, automatically Transcribes on-device, scores the strongest moments (hook / flow / value — not a dumb keyword scan), reframes to 9:16 around the speaker, and burns word-synced captions.

💬 Edit by chatting A tool-calling agent turns plain language into real edits — trims, filler-word removal (“uhh”/“ee”), zooms, styles, music, b-roll, brand overlays. One undo reverts a whole multi-step plan.

🎨 Styles in one shot hormozi, mrbeast, podcast_minimal, kinetic — captions, pace, zoom, music and SFX applied together. Drop in your own preset as a JSON file.

🖥️ A real studio UI Web app with a live 9:16 preview, clip cards, a CapCut-style timeline, and the chat copilot right beside it.

🔑 Your key, your data Bring your own LLM key (OpenAI · Gemini · Claude · DeepSeek · any compatible endpoint). Nothing is proxied through us — there is no “us.”

🏠 Self-host first One Docker command. Speech-to-text and every render run locally via faster-whisper + ffmpeg. AGPL-3.0, no SaaS lock-in.

🛠 How it works

upload │ ┌──────▼───────┐ faster-whisper (local, no API key) │ transcribe │ └──────┬───────┘ ┌──────▼────────────┐ LLM "brain" (your key) — structure + scored moments │ analyze structure │ │ find highlights │ └──────┬────────────┘ ┌──────▼───────┐ per clip, replayed from cached intermediates (~2–4s/edit) │ auto edit │ jumpcut → 9:16 reframe → captions → music+ambience (ducked) │ │ → SFX → fades · then your chat commands layer on top └──────┬───────┘ export → vertical MP4, publish-ready

Only two things ever hit the network: your chosen LLM (to understand intent and score moments) and, optionally, Pexels (stock b-roll). Speech-to-text and all rendering stay on your machine.

🔑 Bring your own key (BYOK)

VibeClip never ships with a key and never proxies your prompts anywhere except the provider you choose. Two ways to supply one:

Per instance — set OPENAI_API_KEY (or DEEPSEEK_API_KEY, or any OpenAI-compatible endpoint via LLM_BASE_URL) in .env.

Per user — each account pastes its own key on the in-app Settings page, with a live test-connection. Keys are encrypted at rest and never sent back to the browser.

Provider Routed via Notes

OpenAI native Default, best-supported.

DeepSeek native The budget pick — a typical short costs a few cents.

Google Gemini OpenAI-compat endpoint gemini-2.5-flash / pro.

Anthropic Claude OpenAI-compat endpoint claude-haiku / sonnet.

Anything else LLM_BASE_URL Ollama, LM Studio, OpenRouter, your own proxy…

Speech-to-text runs locally and needs no key.

⚙️ Configuration

Everything is driven by .env (see .env.example for the full, commented list). The ones that matter most:

Variable Default Purpose

OPENAI_API_KEY — Your LLM key (preferred).

DEEPSEEK_API_KEY — Cheaper fallback, used if no OpenAI key.

LLM_BASE_URL — Any OpenAI-compatible endpoint (local models, proxies).

EMAIL_MODE console console prints OTP to the log; resend sends real email.

REQUIRE_EMAIL_VERIFICATION false true enforces email confirmation (public instances).

HOSTED_STUDIO true true = the landing offers login/signup (use your own instance). false = a public marketing site that points everyone to GitHub to self-host (no login).

GA_MEASUREMENT_ID — Empty = no analytics injected (self-host default).

SITE_URL http://localhost:8765 Public base URL for blog canonical/OG/sitemap.

VIDEO_ENCODER libx264 Use h264_videotoolbox on Apple Silicon.

VIBECLIP_BIND 127.0.0.1 docker-compose publish address (0.0.0.0 to expose).

MAX_UPLOAD_SECONDS 0 Longest uploadable video, seconds. 0 = no limit (self-host).

MAX_PROJECTS_PER_USER 0 Projects per account. 0 = unlimited; cap it on a public instance.

Run without Docker

Requirements: Python 3.12+, ffmpeg, and the DejaVu fonts (for caption rendering).

cp .env.example .env # add your LLM key uv sync # or: pip install -e . python -m chat.app # → http://127.0.0.1:8765

First run downloads the Whisper model. Prefer the terminal? python -m chat.cli .

📦 Bundled assets & licensing

The repo bundles a small library of royalty-free media (music, ambience, SFX, demo footage) for the built-in styles. Some tracks are CC-BY (Kevin MacLeod) and require crediting in your video description — see the CREDITS files under assets/. VibeClip never bundles or uses copyrighted/branded game footage.

🤝 Contributing

Issues and PRs welcome — start with CONTRIBUTING.md. Security reports: see SECURITY.md. Be excellent to each other (code of conduct).

📄 License

GNU AGPL-3.0 — see LICENSE. You can self-host and modify VibeClip freely; if you run a modified version as a network service, you must offer that modified source to its users. Copyright © 2026 the VibeClip authors.

Built for people who'd rather talk to their editor than fight it.

About

Open-source, self-hosted AI video editor: turn long videos into captioned 9:16 shorts — and edit by chatting. BYO LLM key. AGPL-3.0.

vibeclip.dev

Topics

python

open-source

video

ai

ffmpeg

self-hosted

captions

subtitles

video-editing

whisper

shorts

content-creation

llm

byok

faster-whisper

vertical-video

Resources

Readme

License

AGPL-3.0 license

Code of conduct

Code of conduct

Contributing

Contributing

Security policy

Security policy

Uh oh!

There was an error while loading. Please reload this page.

Activity

Stars

2 stars

Watchers

0 watching

Forks

0 forks

Report repository

Releases

No releases published

Packages 0

Uh oh!

There was an error while loading. Please reload this page.

Contributors

Uh oh!

There was an error while loading. Please reload this page.

Languages

Python 60.0%

JavaScript 16.9%

HTML 12.3%

CSS 10.7%

Dockerfile 0.1%