video-merger
Video-merger concatenates numbered MP4 segments (1_*.mp4, 2_*.mp4, etc.) into a single output file with optional fade transitions and unified codec/resolution/framerate settings. Use this skill when a workflow has generated multiple short clips that need stitching into a final reel, supporting both full-length output and chunked ~60-second segments via pure ffmpeg wrapping.
git clone --depth 1 https://github.com/opensquilla/opensquilla /tmp/video-merger && cp -r /tmp/video-merger/src/opensquilla/skills/bundled/video-merger ~/.claude/skills/video-mergerSKILL.md
# video-merger — numbered-segment MP4 concatenator Combines `1_*.mp4`, `2_*.mp4`, ... in numeric order into one MP4 (or multiple ~60s chunks), with optional fade transitions, codec/resolution/ fps normalisation. ## Inputs (`with:`) | key | required | default | notes | |---|---|---|---| | `input_dir` | yes | — | Directory containing `\d+_*.mp4` segments. | | `output_path` | yes | — | `.mp4` path (full mode) or directory (chunk mode). | | `mode` | no | `full` | `full` or `chunk`. | | `transition` | no | `0.5` | Fade duration in seconds. `0` disables. | | `fps` | no | `24` | Target frame rate. | | `crf` | no | `22` | x264 CRF (0-51, lower = better). | | `preset` | no | `medium` | x264 preset. | For chunk mode, pass `chunk_duration` directly to the script — the meta engine entrypoint above does not template it; use a direct shell call when chunking is needed. ## Dependencies - `ffmpeg` ≥ 5.0 - `ffprobe` - Python 3.8+ - No Python packages required beyond stdlib. Install hints (or just run the bundled installer): | OS | One-liner installer | Manual | |---|---|---| | Windows (PowerShell) | `pwsh -ExecutionPolicy Bypass -File install.ps1` | `winget install Gyan.FFmpeg` / `choco install ffmpeg` / `scoop install ffmpeg` | | macOS | `bash install.sh` | `brew install ffmpeg` | | Debian/Ubuntu | `bash install.sh` | `sudo apt install ffmpeg` | The Windows installer (`install.ps1`) defaults to winget but accepts `$env:OPENSQUILLA_FFMPEG_INSTALLER="choco"|"scoop"|"skip"` to switch backends. It prints the absolute `ffmpeg`/`ffprobe` paths after install so you can pass them to `merge.py` via `--ffmpeg-path` / `--ffprobe-path` when subprocess PATH inheritance is unreliable. ## Filename ordering contract The script picks files matching `^\d+_.*\.mp4$` and sorts by the leading integer. Producers must save segments as `1_shot.mp4`, `2_shot.mp4`, `3_shot.mp4`, etc. The `meta-short-drama` workflow already follows this. ## Output Stdout: progress lines and the final output path. Non-zero exit on ffmpeg failure. ## Failure modes - `未找到ffmpeg` → install ffmpeg, ensure `ffmpeg` on PATH or pass `--ffmpeg-path` directly. - `未找到符合命名规则...的MP4文件` → ensure segments are `\d+_*.mp4`. - Mixed resolutions / fps: handled automatically when `--resolution` is set; otherwise ffmpeg preserves originals (no normalisation).
Submit audio or video for multilingual dubbing, poll status, and download dubbed audio. Use when the user asks for dubbing, 多语言配音, 视频翻译配音, 译制片, or wants a source clip dubbed into another language.
Generate a structured short-video shooting script from a topic. Emits a strict, machine-parseable shot list (3 shots by default) with image prompt + video prompt + voiceover + on-screen text per shot. Trigger when the user asks for a video script, 分镜, 短视频文案, AI视频, 短剧脚本, or wants visual prompts ready for image/video generation.
Use when the user asks to schedule recurring tasks, one-off reminders, timers, or cron-style jobs through the OpenSquilla cron tool.
Multi-round research with explicit methodology, evidence tracking, and citation-tagged synthesis. Trigger on 'deep dive', 'research report', 'literature review', 'investigate X across sources', 'multi-round investigation'. Distinct from the `summarize` skill, which is a single-pass condensation; this skill maintains a state file across iterations, tracks coverage, and produces a long-form report with per-claim citations. Three execution stages: plan (scope into sub-questions), iterate (record evidence per round), compile (synthesize report). The skill itself does not fetch the web — it tells the host agent which fetches to perform via OpenSquilla's existing web tools, and records what comes back.
Read, edit, or create Microsoft Word `.docx` files. Trigger this skill whenever the user mentions a Word document, .docx file, contract, report, brief, memo, or asks to extract text, modify an existing doc, generate one from a brief, or audit tracked changes. Three execution paths: text-and-structure extraction, in-place edit-by-run (preserves styles), and create-from-scratch with python-docx. Falls back to OOXML unzip-and-patch for layout work python-docx cannot reach.
Capture the current git diff (staged, working-tree, or staged file list) as text. Direct shell call for workflows that need repository diffs without an LLM agent loop.
GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries. Use when: (1) checking PR status or CI, (2) creating/commenting on issues, (3) listing/filtering PRs or issues, (4) viewing run logs. NOT for: complex web UI interactions requiring manual browser flows (use browser tooling when available), bulk operations across many repos (script with gh api), or when gh auth is not configured.
Query the per-turn DecisionEntry log for skill co-occurrence patterns, meta-skill usage stats, and the router fixture corpus. Returns a JSON summary suitable for downstream LLM consumption. Used by meta-skill-creator's harvest step but also useful standalone for 'which skills did I use most this week?'