Make Video Structure Visible
Video Marking Toolkit - Auto-generate transparent chapter progress bars from SRT subtitles to boost video completion rates
Quick Start · Features · Live Demo
English | 简体中文
vmarker is an open-source video marking toolkit that significantly improves long-form video completion rates through AI-powered chapter segmentation and visual progress bars.
Key Features:
- 🎨 Transparent Output - RGBA format, perfect for video overlays
- 🤖 AI-Powered Segmentation - Auto-detect chapter boundaries without manual tagging
- ⚡ Fast Generation - 10-40 seconds vs. 30-60 minutes manual creation
- 🖥️ Dual Interface - Web UI + CLI tools
- 🔒 Local Processing - Videos stay on your machine, privacy first
Why long videos (courses, livestreams, reviews) have low completion rates:
- Unclear Structure - Viewers don't know what's coming, easy to leave
- Platform Limitations - Native chapters only work within players
- High Production Cost - Manual chapter bar creation takes 30-60 minutes
vmarker's Solution:
Traditional: 30-60 minutes manual work
↓
vmarker: 30-second command / 1 click
↓
10-40 seconds auto-generation
↓
Professional transparent video output
┌────────────────────────────────────────────────────────────────┐
│ 00:00 02:30 05:45 10:20 14:00 │
│ Intro Background Core Content Demo Summary │
└────────────────────────────────────────────────────────────────┘
Chapter List:
00:00 Intro
02:30 Background
05:45 Core Content ← Currently Playing
10:20 Demo
14:00 Summary
Generates transparent video (MOV) that can be directly overlaid on your video
Features:
- Auto-detect chapter boundaries (AI semantic understanding)
- Dynamic text layout (adaptive length)
- Multiple color themes (10+ presets)
- Transparent channel output (RGBA format)
Auto-generate transparent chapter progress bar videos from SRT subtitles.
Usage:
# CLI command (AI smart segmentation)
acb input.srt
# Auto segmentation (60-second intervals, no AI needed)
acb input.srt --mode auto --interval 60
# Web interface (visual editing)
cd web && npm run dev # Visit http://localhost:3000Generate clean playback progress bar videos.
vmarker progress --duration 360 --color blueAuto-generate structured outlines (summary + timeline) from subtitles.
vmarker shownotes input.srt -o notes.mdOutput Example:
## Video Outline
### Introduction (00:00 - 02:30)
- Project background and motivation
- Core problem statement
### Feature Demo (02:30 - 08:45)
- Chapter Bar feature showcase
- AI smart segmentation effectsFix ASR recognition errors and improve readability.
vmarker subtitle input.srt -o polished.srtUpload video → ASR transcription → Generate chapter bar → Compose into original video.
Usage: Complete workflow in Web interface
- Python >= 3.13
- Node.js >= 20
- FFmpeg (system installation)
macOS:
brew install ffmpegUbuntu/Debian:
sudo apt-get update && sudo apt-get install ffmpegWindows: Download from https://www.gyan.dev/ffmpeg/builds/ and add to PATH
git clone https://github.com/bbruceyuan/vmarker.git
cd vmarkercd backend
# Install dependencies (using UV)
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
# Configure API Key (required for AI features)
cp .env.example .env
# Edit .env to add your OpenAI API Key or compatible service
# Start backend
uv run uvicorn vmarker.api:app --reload --port 8000cd web
# Install dependencies
npm install
# Start dev server
npm run devVisit http://localhost:3000
Use uv run prefix inside backend/ directory:
cd backend
# Chapter Bar quick commands
uv run acb input.srt
uv run acb input.srt --theme tech-blue
# General commands
uv run vmarker chapter input.srt
uv run vmarker progress --duration 360
uv run vmarker shownotes input.srt
uv run vmarker subtitle input.srt
uv run vmarker themes # List color schemescd backend
uv pip install -e .
# Then run anywhere
acb input.srt
vmarker chapter input.srt --theme sunset-orangeDetailed CLI Documentation: backend/CLI_USAGE.md
60-minute tutorial video requiring clear chapter divisions:
acb course.srt --mode aiAI automatically identifies knowledge module boundaries, generating semantically coherent chapters.
2-hour livestream requiring quick segmentation:
acb live.srt --mode auto --interval 600 # 10-minute segmentsNo AI needed, fast time-based segmentation.
10-minute review requiring precise chapter control:
Use Web interface for visual chapter time and title editing.
Auto-generate meeting outline + chapter bar:
vmarker shownotes meeting.srt -o meeting_notes.md
acb meeting.srt --mode ai
vmarker subtitle meeting.srt -o meeting_polished.srt- Import original video to timeline
- Import generated
chapter_bar.mov - Drag chapter bar to top video track
- Adjust position (usually at top)
- Export final video
- Add original video to main track
- Add new picture-in-picture track
- Import chapter bar video
- Adjust position and size
- Export video
- Import both video files
- Place chapter bar on top track
- Adjust composite mode and position
- Render output
vmarker/
├── backend/ # Python backend (FastAPI + CLI)
│ ├── src/vmarker/ # Core modules
│ └── tests/ # Unit tests
├── web/ # Next.js frontend
│ ├── src/app/ # App Router pages
│ └── src/components/ # UI components
├── task/ # Project documentation
└── .claude/ # Claude configuration
AI features require configuration in backend/.env:
# AI configuration (chapter segmentation, outline generation, subtitle polishing)
API_KEY=your-api-key
API_BASE=https://api.openai.com/v1
API_MODEL=gpt-4o-mini
# ASR configuration (optional)
ASR_API_BASE=https://api.openai.com/v1
ASR_MODEL=whisper-1cd backend
pytest tests/ruff check src/
ruff format src/This project is licensed under Apache License 2.0.
- ✅ Commercial use allowed
- ✅ Modification and distribution allowed
- ✅ Copyright notice required
See LICENSE file for details.
- FFmpeg - Video processing
- Next.js - React framework
- FastAPI - Python web framework
- shadcn/ui - UI component library
- UV - Python package manager
- OpenAI - Whisper ASR and GPT models
- Author - Chaofa Yuan (@bbruceyuan)
- Website - https://yuanchaofa.com
- GitHub - https://github.com/bbruceyuan/vmarker
- Email - bruceyuan123@gmail.com
⭐ Star this repo if you find it helpful!
Built with ❤️ by Chaofa Yuan