Install
openclaw skills install ai-video-remixAI-driven video remix generator that uses ShotAI semantic search + LLM planning + Remotion rendering to produce styled video compositions from a user's local video library. Use when the user asks to create a video remix, highlight reel, travel vlog, sports highlight, nature montage, or any styled video cut from their library. Triggers on requests like "帮我做一个混剪", "make a travel vlog from my library", "create a sports highlight", or "generate a video with my footage". Requires ShotAI (local MCP server) to be running. Works with any OpenAI-compatible LLM API or falls back to heuristic mode with no API key.
openclaw skills install ai-video-remixThis is an instruction-only skill — it provides guidance and reference documentation for the AI Video Remix CLI tool. The runtime source code lives in the GitHub repository and must be cloned separately (see Quick Start below).
Generate styled video compositions from a local ShotAI video library using natural language.
This skill can only search and use videos that have been imported into ShotAI. Videos simply stored on your hard drive are not searchable — they must be added to a ShotAI collection and fully indexed first.
Before using this skill, make sure you have:
If the search returns no results or low-quality matches, the most common reason is that the relevant videos have not been imported into ShotAI yet.
See references/setup.md for full installation instructions, including:
Note: This skill does not bundle runtime code. Clone the source repository first.
git clone https://github.com/abu-ShotAI/ai-video-remix.git
cd ai-video-editor
npm install
cp .env.example .env # fill in SHOTAI_URL, SHOTAI_TOKEN, and optionally AGENT_PROVIDER
npx tsx src/skill/cli.ts "帮我做一个旅行混剪"
--bgm (recommended), or optionally downloads from YouTube via yt-dlp.mp4 clip file (local processing only)After cloning the repository and running npm install:
npx tsx src/skill/cli.ts "<request>" [options]
Options:
--composition <id> Override composition (skip LLM selection)
--bgm <path> Local MP3 path (skip YouTube search)
--output <dir> Output directory (default: ./output)
--lang <zh|en> Output language: zh Chinese (default) / en English
Affects: video title, per-clip captions & location labels, attribution line
--probe Scan library first, let LLM plan slots from actual content
| ID | Label | Best For |
|---|---|---|
CyberpunkCity | 赛博朋克夜景 | Neon city, night scenes, sci-fi |
TravelVlog | 旅行 Vlog | Multi-city travel with location cards |
MoodDriven | 情绪驱动混剪 | Fast/slow emotion cuts |
NatureWild | 自然野生动物 | BBC nature documentary style |
SwitzerlandScenic | 瑞士风光 | Alpine/scenic travel with captions |
SportsHighlight | 体育集锦 | ESPN-style with goal captions |
Standard mode (default): LLM picks composition + generates search queries from registry templates.
Probe mode (--probe): Scans library videos first (names, shot samples, mood/scene tags), then LLM generates custom slots tailored to what actually exists.
Choose probe mode when: library content is unknown, user wants "best of my library", or standard slots return low-quality shots.
See references/config.md for all environment variables and LLM provider setup.
See references/tuning.md for solutions to:
Recommended .env defaults for best quality:
MIN_SCORE=0.5 # filter short/low-quality shots
ShotAI uses semantic search powered by AI-generated tags and embedding vectors. Query quality is the single biggest factor in shot relevance — invest time here.
Always write full sentences or rich phrases, never bare keywords.
The search engine understands semantic similarity ("ocean" matches "sea", "waves", "shoreline"), so richer context produces better recall.
| Quality | Example | When to use |
|---|---|---|
| ⭐ Detailed description | "A white seagull with spread wings gliding smoothly over calm blue ocean water, golden sunset light reflecting on the waves" | Best precision — use for hero shots |
| ⭐ Full sentence | "A seagull flying gracefully over the ocean at sunset" | Good balance of precision and recall |
| Short phrase | "seagull flying over ocean" | Acceptable fallback |
| Single keyword | "seagull" | Avoid — low precision, noisy results |
Describe the visual content of the ideal shot across these dimensions:
a lone hiker, city traffic at night, athlete celebrating)walking slowly through fog, speeding through intersection, jumping with arms raised)rain-soaked Tokyo street, mountain meadow at golden hour, empty stadium under floodlights)melancholic, tense, euphoric, serene)wide establishing shot, tight close-up, slow pan, handheld shaky)Not all dimensions are needed every time — include whichever are most distinctive for the shot you want.
When the agent runs refineQueries, it rewrites the composition's default slot queries to better match the user's actual library. Apply these principles:
"water", try "river flowing through forest" or "lake reflecting mountains" based on what the library likely contains"not indoors" does not work; instead describe the positive version ("outdoor daylight scene")Slot default: "city at night"
User request: "帮我做一个东京旅行混剪"
Refined: "Neon-lit Tokyo street at night, pedestrians crossing under glowing signs, rain reflections on pavement"
Slot default: "nature landscape"
User request: "trip to Patagonia last month"
Refined: "Dramatic Patagonia mountain landscape, snow-capped peaks under stormy clouds, vast open wilderness"
Slot default: "athlete in action"
User request: "basketball highlight from last game"
Refined: "Basketball player driving to the hoop, explosive movement, crowd in background blurred"
See references/composition-guide.md to add a new Remotion composition to the registry.
SHOTAI_TOKEN is sent only to the local ShotAI MCP server (127.0.0.1). LLM API keys (if configured) are sent only to their respective provider endpoints — never to ShotAI, YouTube, or any other service.127.0.0.1 only (default port 8080). It is not accessible from other machines on the network. It serves temporary clip files to the Remotion renderer running on the same machine and shuts down after rendering completes.--bgm /path/to/local.mp3 to skip all YouTube network access. When yt-dlp is used, it only downloads a single background music track — no other data is sent to YouTube.AGENT_PROVIDER=none to run in heuristic mode with zero external network calls (aside from the local ShotAI MCP server).SHOTAI_URL or SHOTAI_TOKEN is unset, display a warning: "ShotAI MCP server is not configured. Set SHOTAI_URL and SHOTAI_TOKEN in your .env file. Download ShotAI at https://www.shotai.io."--bgm <local.mp3> to provide a local audio file instead.annotateClips (use composition default effect params).MIT-0 — Free to use, modify, and redistribute. No attribution required. See https://spdx.org/licenses/MIT-0.html