Auto-generate viral 9:16 YouTube Shorts (or TikTok / Reels clips) from a long-form video. Thin platform-aware wrapper around the AI Clipping skill — picks sensible defaults for short-form social platforms (9:16, 30–60s sweet spot) and delegates the actual highlight extraction + crop to muapi.ai's `/ai-clipping` endpoint.
72
91%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Long video → ranked vertical short clips, tuned for short-form social.
This skill is a platform-aware preset over the AI Clipping primitive. It picks the right aspect ratio and clip count for the target platform and delegates highlight extraction, dedupe, and face-tracked auto-crop to muapi.ai's managed /ai-clipping endpoint.
Reference implementation: https://github.com/SamurAIGPT/AI-Youtube-Shorts-Generator Underlying API: https://muapi.ai/playground/ai-clipping
| Use this skill when… | Use AI Clipping directly when… |
|---|---|
| Target is YouTube Shorts / TikTok / Reels | You want full control over aspect / count |
| You want platform-tuned defaults | You want raw timestamps (--coords-only) |
You'd rather pass --platform tiktok than think about ratios | You're integrating into a custom renderer |
| Input | Default | Notes |
|---|---|---|
--source | — | YouTube URL, hosted mp4 URL, or local file |
--platform | shorts | shorts | tiktok | reels | feed (sets ratio + count defaults) |
--num-clips | platform default | Override clip count |
--aspect-ratio | platform default | Override aspect ratio |
If the user gave only a URL, run with platform defaults — don't block.
muapi-cli installed and authed (muapi auth configure)MUAPI_API_KEY availableThat's it. Transcription, highlight ranking, dedupe, and cropping all run server-side — no ffmpeg, no Python, no Whisper, no LLM keys needed locally.
bash library/social/youtube-shorts/scripts/run-youtube-shorts.sh \
--source "<YOUTUBE_URL>" \
--platform shorts \
--num-clips 5 \
--viewThe script:
--aspect-ratio / --num-clips aren't passed.muapi edit clipping (the /ai-clipping endpoint) with the chosen params.The /ai-clipping endpoint runs the full pipeline:
Each clip ships with score (0–100), opening hook line, and a one-sentence "why it works" reason.
| Platform | Flag | Aspect | Default clips | Notes |
|---|---|---|---|---|
| YouTube Shorts | --platform shorts | 9:16 | 3 | Hook in first 1s |
| TikTok | --platform tiktok | 9:16 | 5 | Higher energy, longer ok |
| Instagram Reels | --platform reels | 9:16 | 3 | Hook in first 1s |
| Instagram Feed | --platform feed | 1:1 | 3 | Static-feel works well |
Override any default with --aspect-ratio / --num-clips.
Single video, defaults:
bash run-youtube-shorts.sh --source "https://youtube.com/watch?v=VIDEO_ID"TikTok preset — 5 clips, view in player:
bash run-youtube-shorts.sh --source "<URL>" --platform tiktok --viewSquare Instagram feed clips:
bash run-youtube-shorts.sh --source "<URL>" --platform feed --num-clips 3Batch — urls.txt with one URL per line:
xargs -a urls.txt -I{} bash run-youtube-shorts.sh --source "{}"Async submit (returns request_id, poll later):
REQUEST_ID=$(bash run-youtube-shorts.sh --source "<URL>" --async --output-json - | jq -r '.request_id')
muapi predict wait "$REQUEST_ID" --download ./outputs{
"source_video_url": "...",
"shorts": [
{
"title": "The one mistake that cost me $50K",
"start_time": 124.3,
"end_time": 187.6,
"score": 92,
"hook_sentence": "Nobody talks about this, but it killed my first startup...",
"virality_reason": "Opens with a number + regret, peaks on a contrarian lesson",
"clip_url": "https://.../short_1.mp4"
}
]
}When reporting back, surface for each clip: rank, score, time range, title, hook, and clip URL.
9:16. The platform preset handles this; only override if you know why.--num-clips — if the API returns fewer survivors, return what you have. Don't ship low-score filler.request_id with muapi predict wait <id> rather than re-clipping.--poll-timeout and retry.muapi upload file and pass the returned URL.The skill is done when:
result.shorts has up to num_clips entries, each with a working clip_url.--output-json was set, the file exists and parses.71242e2
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.