YouTube Shorts Generator
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.
MCP get_skill({ skillId: "youtube-shorts-generator-7240dc4b" })Use this skill with your agent
Create a free account and connect via MCP
# YouTube Shorts Generator
**Long video → ranked vertical short clips, tuned for short-form social.**
This skill is a platform-aware preset over the [AI Clipping](../../edit/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
---
## When to Use This vs. AI Clipping
| Use this skill when… | Use [AI Clipping](../../edit/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 |
---
## Agent Execution Protocol
### Step 1 — Collect Inputs
| 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.
---
### Step 2 — Verify Prerequisites
- `muapi-cli` installed and authed (`muapi auth configure`)
- `MUAPI_API_KEY` available
That's it. Transcription, highlight ranking, dedupe, and cropping all run server-side — no `ffmpeg`, no Python, no Whisper, no LLM keys needed locally.
---
### Step 3 — Run the Pipeline
```bash
bash library/social/youtube-shorts/scripts/run-youtube-shorts.sh \
--source "<YOUTUBE_URL>" \
--platform shorts \
--num-clips 5 \
--view
```
The script:
1. Resolves the source (uploads local files to muapi CDN if needed).
2. Picks platform defaults if `--aspect-ratio` / `--num-clips` aren't passed.
3. Calls `muapi edit clipping` (the `/ai-clipping` endpoint) with the chosen params.
4. Polls until done, prints a ranked summary, optionally downloads / opens clips.
---
## What Happens Server-Side
The `/ai-clipping` endpoint runs the full pipeline:
- **Transcribes** the audio.
- **Ranks highlights** through a virality framework — hook moments, emotional peaks, opinion bombs, revelation moments, conflict, quotable lines, story peaks, practical value.
- **Dedupes** overlapping candidates by score.
- **Top-N selects** and **face-tracks** vertical crops.
Each clip ships with score (0–100), opening hook line, and a one-sentence "why it works" reason.
---
## Platform Defaults
| 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`.
---
## Quick Invocation Patterns
**Single video, defaults:**
```bash
bash run-youtube-shorts.sh --source "https://youtube.com/watch?v=VIDEO_ID"
```
**TikTok preset — 5 clips, view in player:**
```bash
bash run-youtube-shorts.sh --source "<URL>" --platform tiktok --view
```
**Square Instagram feed clips:**
```bash
bash run-youtube-shorts.sh --source "<URL>" --platform feed --num-clips 3
```
**Batch — `urls.txt` with one URL per line:**
```bash
xargs -a urls.txt -I{} bash run-youtube-shorts.sh --source "{}"
```
**Async submit (returns request_id, poll later):**
```bash
REQUEST_ID=$(bash run-youtube-shorts.sh --source "<URL>" --async --output-json - | jq -r '.request_id')
muapi predict wait "$REQUEST_ID" --download ./outputs
```
---
## Output Schema
```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.
---
## Common Mistakes to Avoid
1. **Wrong aspect ratio for the platform** — Shorts / TikTok / Reels are `9:16`. The platform preset handles this; only override if you know why.
2. **Padding to hit `--num-clips`** — if the API returns fewer survivors, return what you have. Don't ship low-score filler.
3. **Re-running on a 404'd clip URL** — re-fetch the same `request_id` with `muapi predict wait <id>` rather than re-clipping.
---
## Failure Modes
- **API key missing or rejected** — surface the error; don't fabricate a key.
- **Job timed out** — bump `--poll-timeout` and retry.
- **Source URL not reachable** — upload the file via `muapi upload file` and pass the returned URL.
- **Fewer clips returned than requested** — source had fewer rankable highlights. Return what came back with a note.
---
## Done Criteria
The skill is done when:
1. `result.shorts` has up to `num_clips` entries, each with a working `clip_url`.
2. The user has been shown the ranked list (score, time range, title, hook, URL).
3. If `--output-json` was set, the file exists and parses.Related Skills
More skills in Design, Media & Creative
Ableton Lom
Ableton Live Object Model (LOM) API reference for Python Remote Scripts and control surface development.
Accessibility Compliance
Implement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.
Adobe Illustrator Scripting
Write, debug, and optimize Adobe Illustrator automation scripts using ExtendScript (JavaScript/JSX). Use when creating or modifying scripts that manipulate documents, layers, paths, text frames, colors, symbols, artboards, or any Illustrator DOM objects. Covers the complete JavaScript object model, coordinate system, measurement units, export workflows, and scripting best practices.
🎬 AI Cinema Director Skill
Direct high-fidelity cinematic video with AI — translates creative intent into technical cinematographic directives for Veo3, Kling, and Luma video models via muapi.ai
AI Clipping
Turn a long video into N viral-ready short clips with a single managed API call. Wraps muapi.ai's `/ai-clipping` endpoint, which handles transcription, highlight ranking through a virality framework (hook / emotional peak / opinion bomb / revelation / conflict / quotable / story peak / practical value), overlap dedupe, and vertical face-tracking auto-crop server-side. No local Whisper, no local LLM, no GPU.
AI Workflow Builder
Build, run, and visualize multi-step AI generation workflows. The AI architect translates natural language descriptions into connected node graphs — chain image generation, video creation, enhancement, and editing into automated pipelines.
Explore Other Categories
Skills from other categories with shared topics
Venice Crypto RPC (JSON-RPC proxy)
Use Venice as a pay-per-call JSON-RPC proxy to 20+ EVM and Starknet networks. Covers GET /crypto/rpc/networks, POST /crypto/rpc/{network}, the 1×/2×/4× method-tier pricing model, per-minute + 24-hour credit rate limits, idempotency keys for safe retries, single vs batch requests, and the unsupported stateful/WebSocket methods (eth_subscribe, eth_newFilter, etc.).
Venice Responses API (Alpha)
Use Venice's Alpha POST /responses endpoint - an OpenAI-compatible Responses API with typed output blocks (reasoning, message, function_call, web_search_call). Covers request shape, streaming, differences from /chat/completions, supported venice_parameters subset, and E2EE behavior.
About
Provides information about the bitwize-music plugin, its version, and its creator. Use when the user asks about the plugin, its purpose, version, or capabilities.