Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 49% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 114% | 0% |
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.
bashbash library/social/youtube-shorts/scripts/run-youtube-shorts.sh \ --source "<YOUTUBE_URL>" \ --platform shorts \ --num-clips 5 \ --view
The 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:
bashbash run-youtube-shorts.sh --source "https://youtube.com/watch?v=VIDEO_ID"
TikTok preset — 5 clips, view in player:
bashbash run-youtube-shorts.sh --source "<URL>" --platform tiktok --view
Square Instagram feed clips:
bashbash run-youtube-shorts.sh --source "<URL>" --platform feed --num-clips 3
Batch — urls.txt with one URL per line:
bashxargs -a urls.txt -I{} bash run-youtube-shorts.sh --source "{}"
Async submit (returns request_id, poll later):
bashREQUEST_ID=$(bash run-youtube-shorts.sh --source "<URL>" --async --output-json - | jq -r '.request_id') muapi predict wait "$REQUEST_ID" --download ./outputs
json{ "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.Other measured skills in the registry, with their headline benchmark lift.