Showcase video skill
Record and cut a short showcase video of a game mod, or a compilation of clips, ready to post on X/YouTube.
by rehan-remade·MIT license·★ 1,016 Stars on the repo·GitHub ↗
Download ZIPUse now
- Download the ZIP below (don't unzip it).
- In Claude.ai, open Settings › Capabilities.
- Under Skills, click Upload skill and pick the ZIP.
- Turn the skill on, then ask Claude to use it.
Checked ·commit 15d6f9d
Files of Showcase video
rehan-remade/
Shared references1SKILL.md reads these from elsewhere in the repo. Not in the ZIP.
Get them on GitHub ↗SKILL.md
Show the full text82 lines
Showcase video
A mod isn't finished until you can show it in 30 seconds. The toolchain is um win record (capture),
um video contact (look), um video compile (edit), all ffmpeg + Pillow.
1. Make the take repeatable
- Script the action. Use a mod-side timeline or command sequence (spawn enemies, fire the weapon, cue the boss), a scenario with triggers and camera moves, or a WinDrive command list. The first clean take should be reproducible exactly, so you can reshoot after a fix.
- Restore the world before each take. Explosions crater worlds; units die. Keep a pristine copy with
um backupand restore it every take. - Clean frame. Hide debug text, fix the camera zoom (the Terraria showcase used 1.5x so 1080p frames
read like a 720p cut), run at full speed when unfocused, and hide the cursor (capture uses
capture_cursor=0).
2. Record the window + the game's own audio
um win record --exe Game.exe --out C:\caps\take1 --seconds 40 # -> take1.mkv, take1.audio.raw, take1.json
um video first-frame C:/caps/take1.mkv # where gameplay starts (skips loading screens)
um video mux C:/caps/take1.mkv C:/caps/take1.audio.raw C:/caps/take1.json take1.mp4 [--offset 0.25]
- Video: ffmpeg gfxcapture of that window only (GPU frames, no desktop). It encodes with NVENC, AMF or
QSV when available. NVENC H.264 maxes out at 4096 px wide, so the recorder scales above that; for
32:9 screens, crop to the centre 16:9 with
--crop. - Audio: WASAPI process loopback of the game's PID (
um/ps1/ProcLoopback.ps1). Only the game is recorded; no Spotify, no notifications. It's timestamped so the file position is wall time. Muxing uses the recorded offset. Fine-tune with a visual/audio sync event (a flash vs its boom) and pass--offset. - Inside a mod (optional): start and stop recording from the mod for frame-exact takes. Never block the
game's main thread while stopping ffmpeg: send
q, then wait off-thread. Write.mkvso a killed recorder still leaves a playable file (seeexamples/terraria-tmodloader/reference/InModRecorder.cs).
3. Look before you cut
um video probe clip.mp4
um video contact clip.mp4 sheet.png --every 1.5 --cols 6 # a timestamped grid; read it, pick in/out points
um video contact clip.mp4 zoom.png --start 20 --end 30 --every 0.5
Pick the peak moments: the explosion, the boss reveal, the unit in formation. Write in/out times into the EDL.
4. Edit with an EDL
um video compile edl.json out.mp4 (--preview renders half size and fast). The full format is in
um video --help.
{
"size": [1920, 1080], "fps": 30,
"theme": {"accent": "#B6FF3B"},
"transition": {"type": "fade", "duration": 0.3},
"clip_volume": 0.8,
"music": {"path": "music.mp3", "volume": 0.5},
"watermark": {"path": "logo.png", "height": 54, "corner": "br"},
"segments": [
{"clip": "take1.mp4", "in": 9.0, "dur": 3.0, "hook": "Terraria, but with a tactical nuke."},
{"clip": "take1.mp4", "in": 24.2, "dur": 4.5, "title": "Tactical Nuke", "transition": {"type": "pixelize"}},
{"clip": "take2.mp4", "in": 3.0, "dur": 5.0, "title": "Drone Mothership boss"},
{"card": {"title": "Fal Arsenal", "sub": "a Terraria mod"}, "dur": 2.5}
]
}
- Transitions: any ffmpeg xfade type (fade, pixelize, slideleft, smoothleft, circleopen, zoomin,
radial...) or
cut. - Fills: for non-16:9 clips,
fill: blur(blurred backdrop),croporpad. - Per clip:
speedandvolume,zoomto punch in past UI,crop[x, y, w, h] to reframe. - Music:
um fal music "..." --seconds 60makes a bed. Setbpmand usebeatsinstead ofdurto cut on the beat;um video beats music.mp3estimates tempo and first beat.
Style that works (from real feedback)
- Titles: one line naming what's on screen ("Wonder: the Transamerica Pyramid", "Robotaxis and Delivery Drones"). No small explanatory captions about how it was made; that goes in the post text.
- Pace: get into gameplay within 2-3 s; menus and setup stay under 3 s. Clips run 3-5 s each. End on the mod name or URL and fade out.
- Sound: keep the game's audio. It sells impacts. Music under a compilation, clip audio around 0.5-0.8.
- Compilations of other people's clips: credit every creator on screen (
credit: "@handle") and in the post, and ask permission when it's promotional. Don't imply their clips were made with your tool. Download only public posts, and only what you'll use. - Last step: look at a contact sheet of the finished video before sharing it.
| 1 | |
| 2 | name showcase-video |
| 3 | description Record and cut a short showcase video of a game mod, or a compilation of clips, ready to post on X/YouTube. Records the game window with only the game's own audio, picks moments from contact sheets, and edits with one-line animated titles, creator credits, transitions, music, watermark and fade-out via an EDL JSON. Use when the user wants a demo video, trailer, clip or montage of a mod, or wants to combine existing clips into a styled video. |
| 4 | |
| 5 | |
| 6 | # Showcase video |
| 7 | |
| 8 | A mod isn't finished until you can show it in 30 seconds. The toolchain is `um win record` (capture), |
| 9 | `um video contact` (look), `um video compile` (edit), all ffmpeg + Pillow. |
| 10 | |
| 11 | ## 1. Make the take repeatable |
| 12 | **Script the action.** Use a mod-side timeline or command sequence (spawn enemies, fire the weapon, cue |
| 13 | the boss), a scenario with triggers and camera moves, or a WinDrive command list. The first clean take |
| 14 | should be reproducible exactly, so you can reshoot after a fix. |
| 15 | **Restore the world before each take.** Explosions crater worlds; units die. Keep a pristine copy with |
| 16 | `um backup` and restore it every take. |
| 17 | **Clean frame.** Hide debug text, fix the camera zoom (the Terraria showcase used 1.5x so 1080p frames |
| 18 | read like a 720p cut), run at full speed when unfocused, and hide the cursor (capture uses |
| 19 | `capture_cursor=0`). |
| 20 | |
| 21 | ## 2. Record the window + the game's own audio |
| 22 | |
| 23 | um win record --exe Game.exe --out C:\caps\take1 --seconds 40 # -> take1.mkv, take1.audio.raw, take1.json |
| 24 | um video first-frame C:/caps/take1.mkv # where gameplay starts (skips loading screens) |
| 25 | um video mux C:/caps/take1.mkv C:/caps/take1.audio.raw C:/caps/take1.json take1.mp4 [--offset 0.25] |
| 26 | |
| 27 | **Video:** ffmpeg gfxcapture of that window only (GPU frames, no desktop). It encodes with NVENC, AMF or |
| 28 | QSV when available. NVENC H.264 maxes out at **4096 px wide**, so the recorder scales above that; for |
| 29 | 32:9 screens, crop to the centre 16:9 with `--crop`. |
| 30 | **Audio:** WASAPI **process loopback** of the game's PID (`um/ps1/ProcLoopback.ps1`). Only the game is |
| 31 | recorded; no Spotify, no notifications. It's timestamped so the file position is wall time. Muxing uses |
| 32 | the recorded offset. Fine-tune with a visual/audio sync event (a flash vs its boom) and pass `--offset`. |
| 33 | **Inside a mod (optional):** start and stop recording from the mod for frame-exact takes. Never block the |
| 34 | game's main thread while stopping ffmpeg: send `q`, then wait off-thread. Write `.mkv` so a killed |
| 35 | recorder still leaves a playable file (see `examples/terraria-tmodloader/reference/InModRecorder.cs`). |
| 36 | |
| 37 | ## 3. Look before you cut |
| 38 | |
| 39 | um video probe clip.mp4 |
| 40 | um video contact clip.mp4 sheet.png --every 1.5 --cols 6 # a timestamped grid; read it, pick in/out points |
| 41 | um video contact clip.mp4 zoom.png --start 20 --end 30 --every 0.5 |
| 42 | |
| 43 | Pick the peak moments: the explosion, the boss reveal, the unit in formation. Write in/out times into the |
| 44 | EDL. |
| 45 | |
| 46 | ## 4. Edit with an EDL |
| 47 | `um video compile edl.json out.mp4` (`--preview` renders half size and fast). The full format is in |
| 48 | `um video --help`. |
| 49 | |
| 50 | { |
| 51 | "size": [1920, 1080], "fps": 30, |
| 52 | "theme": {"accent": "#B6FF3B"}, |
| 53 | "transition": {"type": "fade", "duration": 0.3}, |
| 54 | "clip_volume": 0.8, |
| 55 | "music": {"path": "music.mp3", "volume": 0.5}, |
| 56 | "watermark": {"path": "logo.png", "height": 54, "corner": "br"}, |
| 57 | "segments": [ |
| 58 | {"clip": "take1.mp4", "in": 9.0, "dur": 3.0, "hook": "Terraria, but with a tactical nuke."}, |
| 59 | {"clip": "take1.mp4", "in": 24.2, "dur": 4.5, "title": "Tactical Nuke", "transition": {"type": "pixelize"}}, |
| 60 | {"clip": "take2.mp4", "in": 3.0, "dur": 5.0, "title": "Drone Mothership boss"}, |
| 61 | {"card": {"title": "Fal Arsenal", "sub": "a Terraria mod"}, "dur": 2.5} |
| 62 | ] |
| 63 | } |
| 64 | |
| 65 | **Transitions:** any ffmpeg xfade type (fade, pixelize, slideleft, smoothleft, circleopen, zoomin, |
| 66 | radial...) or `cut`. |
| 67 | **Fills:** for non-16:9 clips, `fill: blur` (blurred backdrop), `crop` or `pad`. |
| 68 | **Per clip:** `speed` and `volume`, `zoom` to punch in past UI, `crop` [x, y, w, h] to reframe. |
| 69 | **Music:** `um fal music "..." --seconds 60` makes a bed. Set `bpm` and use `beats` instead of `dur` to |
| 70 | cut on the beat; `um video beats music.mp3` estimates tempo and first beat. |
| 71 | |
| 72 | ## Style that works (from real feedback) |
| 73 | **Titles:** one line naming what's on screen ("Wonder: the Transamerica Pyramid", "Robotaxis and Delivery |
| 74 | Drones"). No small explanatory captions about how it was made; that goes in the post text. |
| 75 | **Pace:** get into gameplay within 2-3 s; menus and setup stay under 3 s. Clips run 3-5 s each. End on the |
| 76 | mod name or URL and fade out. |
| 77 | **Sound:** keep the game's audio. It sells impacts. Music under a compilation, clip audio around 0.5-0.8. |
| 78 | **Compilations of other people's clips:** credit every creator on screen (`credit: "@handle"`) and in the |
| 79 | post, and ask permission when it's promotional. Don't imply their clips were made with your tool. Download |
| 80 | only public posts, and only what you'll use. |
| 81 | **Last step:** look at a contact sheet of the finished video before sharing it. |
| 82 |
Discussion
Browse more free Claude skills.