agentleFS
AbdalkaderdevAbdalkaderdev/takecut/skills/video-shorts/SKILL.md

video-shorts

Skill0 starsChanged 35 days agoMITView on GitHub

Turn long landscape videos (podcasts, talks, interviews, streams) into vertical 9:16 shorts for TikTok, YouTube Shorts and Instagram Reels. Picks self-contained 20-60 second moments with a hook from the transcript, reframes 16:9 to 9:16 with a smoothed face-tracking crop (OpenCV YuNet, fallback to a fixed speaker position), and burns word-by-word captions. Use when the user asks for shorts, reels, clips, highlights, vertical versions or "the best moments" of a video.

3 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions3 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 3

    1. kitcut-hq/kitcut★ 42same name
    2. meshcode-ai/skills★ 2same name
    3. meshcode-ai/skills-video★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository4 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

2 rules. 0 are common, 0 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 3 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read edits/<name>/transcript.txt and choose moments.

    line 22
  2. Very specific:

    Default preset pop: 1-3 words at a time, uppercase, active word highlighted, lower-middle of the frame clear of platform UI.

    line 55

“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

video-shorts

You pick the moments (reading the transcript is the part a script can't do well); the script cuts, reframes and captions them. Script paths are relative to this skill's folder; run them by full path from the user's working directory (don't cd into the skill).

Steps

  1. Transcript: uv run ../video-edit/scripts/transcribe.py INPUT (skip if edits/<name>/transcript.words.json exists). For a cleaned-up source, run video-cleanup first and use cleanup.mp4 as INPUT, with --transcript edits/<name>/cleanup.words.json.
  2. Read edits/<name>/transcript.txt and choose moments. Criteria in references/picking.md. Short version: 20-60 s, the first sentence hooks on its own, one complete idea, ends on a payoff, no dangling "so..." or references to earlier context.
  3. Write edits/<name>/shorts.json:
    [
     {"title": "Why most edits fail", "segs": "s0041-s0049"},
     {"title": "The one rule", "start": "00:12:03.2", "end": "00:12:41.0"},
     {"title": "Setup in two parts", "clips": [{"segs": "s0102-s0104"}, {"segs": "s0110-s0113"}]}
    ]
    Time ranges are widened to whole words automatically. clips joins non-adjacent parts.
  4. Present the picks to the user (title, timecodes, the hook line, duration) before rendering many.
  5. Render: uv run scripts/shorts.py INPUT edits/<name>/shorts.json [--preset pop|highlight|clean|boxed|minimal] -> edits/<name>/shorts/01-why-most-edits-fail.mp4 ... plus .ass, .edl.json, .words.json, .txt. With --transcript, outputs go to shorts/ next to that transcript. --only 2 3 re-renders selected items. --loudnorm sets -14 LUFS.
  6. Report each output path, duration and the tracking field. If tracking says center (no faces found) or the speaker sits off-centre, rerun that item with --x 0.3 (0 = left edge, 1 = right).

Reframing details

  • Faces are sampled 6x per second; the crop follows the largest face, preferring the one near the previous position (stable on two-person shots until the other face dominates).
  • The path is median-filtered, held still inside a dead zone (6% of frame width), speed-limited and eased, so the camera doesn't jitter or chase every head movement.
  • Already-vertical or square input is center-cropped/scaled without tracking.
  • Standalone: uv run scripts/reframe.py INPUT [--ass subs.ass] [--x 0.4] [--size 1080x1920].
  • Other aspect ratios: --size 1080x1350 (4:5 feed), --size 1080x1080.

Captions

Default preset pop: 1-3 words at a time, uppercase, active word highlighted, lower-middle of the frame clear of platform UI. highlight shows a full line with the active word coloured. --no-captions for a clean export. Edit an .ass and rerun reframe.py with --ass to tweak.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.