Muapi Ai Clipping

samuraigpt/generative-media-skills/.opencode/skills/muapi-ai-clipping

作者 samuraigpt66b55e2a27ee無授權條款4 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫9 天前更新

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.

僅含說明Design & Creative
AI 產生的概覽

透過一次託管的 muapi.ai 剪輯 API 呼叫,把長影片轉成依排名排列的直式短影片片段。

功能
將託管影片網址、本機檔案或 YouTube 連結送到 muapi.ai 的 /ai-clipping 端點,由伺服器端完成轉錄、依傳播力框架排序精華片段、去除重疊片段,並依指定畫面比例進行人臉追蹤自動裁切。每個回傳片段包含傳播力分數、標題、開場鉤子句、傳播原因、時間範圍與託管 mp4 網址。coords-only 模式只回傳精華片段的時間範圍,方便在本機自行算圖。
適用情境
適合將播客、訪談、講座、vlog 或直播自動剪成 TikTok、Reels 或 Shorts 片段,或從託管影片中擷取最佳的 30 至 75 秒內容。也適合需要人臉追蹤的直式、方形或直幅裁切,但不想在本機執行 ffmpeg 的情況。未指定平台時預設使用 9:16。
執行需求
需要安裝並完成驗證的 muapi-cli,以及 MUAPI_API_KEY(環境變數或透過 muapi auth status 確認)。需要連線至 muapi.ai API 的網路存取。不需要 ffmpeg、Python、Whisper、LLM 金鑰或 GPU;此技能未附帶指令碼,僅有說明文件。

AI Clipping

One API call: long video in → ranked vertical short clips out.

Each clip ships with a viral score (0–100), an opening hook line, a one-sentence "why it works" reason, and a hosted mp4 URL.

Underlying API: https://muapi.ai/playground/ai-clipping Reference implementation (open source): https://github.com/SamurAIGPT/AI-Youtube-Shorts-Generator


When to Use

  • Auto-clip a podcast, interview, lecture, vlog, or stream into TikTok / Reels / Shorts.
  • Extract the best 30–75s moments from any hosted video URL.
  • Get face-tracked vertical (9:16), square (1:1), or portrait (4:5) crops without running ffmpeg locally.

If you only need raw timestamps for your own renderer, set --coords-only to skip cropping and just get the highlight ranges.


Agent Execution Protocol

Step 1 — Collect Inputs

InputRequiredDefaultNotes
--videoyes—Hosted mp4 URL, or local file path (auto-uploaded), or YouTube URL (if backend supports it)
--num-clipsno3Number of highlights to extract
--aspect-rationo9:169:16 | 1:1 | 4:5
--coords-onlynooffReturn just the highlight time ranges, skip cropping

If the user gave only a video URL, run with defaults — don't block on questions.


Step 2 — Verify Prerequisites

  • muapi-cli installed and authed (muapi auth configure)
  • MUAPI_API_KEY available (env var or muapi auth status passes)

That's it. No ffmpeg, no Python, no Whisper install, no LLM keys. Everything runs server-side.


Step 3 — Run the Skill

bash
bash library/edit/ai-clipping/scripts/run-ai-clipping.sh \  --video "https://example.com/podcast.mp4" \  --num-clips 5 \  --aspect-ratio 9:16 \  --view

The script:

  1. Resolves --video to a hosted URL (uploads local files via muapi upload file if needed).
  2. Calls muapi edit clipping with the supported parameters.
  3. Polls until the job is done (or returns the request_id immediately under --async).
  4. Prints a ranked summary and, if --output-json is set, writes the full result.

What Happens Server-Side

The /ai-clipping endpoint internally runs the full pipeline so the agent doesn't have to:

  • Transcribe with Whisper.
  • Classify content type (podcast / interview / tutorial / vlog / lecture / monologue).
  • Rank highlights through the virality framework:
    • Hook moments — strong opening line that stops the scroll
    • Emotional peaks — laughter, anger, vulnerability, awe
    • Opinion bombs — spicy, contrarian, debate-bait takes
    • Revelation moments — "wait, what?" reframes
    • Conflict — disagreement, tension, callouts
    • Quotable lines — tight, screenshot-worthy phrasing
    • Story peaks — climax of a narrative arc
    • Practical value — actionable insight a viewer will save
  • Dedupe overlapping candidates by score.
  • Top-N select and face-track auto-crop to the requested aspect ratio.

This is why the skill is small: the heavy lifting is on the API.


Quick Invocation Patterns

Defaults — three 9:16 clips:

bash
bash run-ai-clipping.sh --video "https://example.com/long.mp4"

Podcast — more clips, view in player:

bash
bash run-ai-clipping.sh --video "<URL>" --num-clips 8 --view

Square clips for Instagram feed:

bash
bash run-ai-clipping.sh --video "<URL>" --aspect-ratio 1:1 --num-clips 3

Just the timestamps (build your own renderer):

bash
bash run-ai-clipping.sh --video "<URL>" --coords-only --output-json result.json

Async submit (returns request_id, poll later):

bash
REQUEST_ID=$(bash run-ai-clipping.sh --video "<URL>" --async --output-json - | jq -r '.request_id')muapi predict wait "$REQUEST_ID" --download ./outputs

Local file:

bash
bash run-ai-clipping.sh --video ./recording.mp4 --num-clips 5 --view

Batch — urls.txt with one URL per line:

bash
xargs -a urls.txt -I{} bash run-ai-clipping.sh --video "{}"

Aspect Ratio Picker

PlatformRatioSweet-spot duration
TikTok / Reels / YouTube Shorts9:1630–75s
Instagram Feed1:115–45s
Pinterest / portrait4:530–60s

Default to 9:16 unless the platform is specified.


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 --coords-only is set, each entry has start_time/end_time but no clip_url — render locally with ffmpeg.

When reporting back to the user, 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. Default to that.
  2. Padding to hit num_clips — if the API returns fewer survivors than requested, return what you have. Don't pretend.
  3. Re-running on a 404'd clip URL — the same request_id can be re-fetched with muapi predict wait <id> rather than re-clipping.
  4. Trying to tune Whisper / chunk size / LLM prompts — those knobs aren't exposed; the endpoint handles them.

Failure Modes

  • API key missing or rejected — surface the exact error; never fabricate a key.
  • Job timed out — bump poll timeout (--poll-timeout) and retry.
  • Source URL not reachable from the backend — upload locally with muapi upload file <path> first, then pass the returned URL.
  • Fewer clips returned than requested — the 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 (or start_time/end_time under --coords-only).
  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.

來源與署名

來源:samuraigpt/generative-media-skills位於.opencode/skills/muapi-ai-clipping提交66b55e2

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架