Install
openclaw skills install podcast-clipper-subscutUse this skill when the user wants to turn a long podcast, interview, webinar, or talking-head video into multiple short clips for TikTok, Reels, or YouTube Shorts. It wraps Subscut's podcast clipping API in a narrow CLI interface with explicit env requirements and predictable JSON output.
openclaw skills install podcast-clipper-subscutexport SUBSCUT_API_BASE_URL="https://subscut.com" export SUBSCUT_API_KEY="subscut_your_api_key"
Use this skill to convert a long-form spoken video into multiple short clips through the Subscut /podcast-to-clips API.
The skill is an opinionated wrapper around the API outcome:
dynamic (auto-reframing) and hook_frame (original frame + title card)Think in outcomes, not transport:
Use this skill when:
Avoid this skill when:
Do not use it as a generic video editing tool.
Use this compact input shape when planning or explaining the tool call:
{
"video_url": "https://example.com/video.mp4",
"max_clips": 5,
"style": "viral",
"format": "dynamic",
"captions": true,
"clip_duration": {
"min": 20,
"max": 60
}
}
| Field | Type | Default | Notes |
|---|---|---|---|
video_url | string | — | Required. Any HTTP/HTTPS URL. YouTube, direct MP4, Google Drive. |
max_clips | integer | 5 | Range: 1–20. Short videos (≤3 min) are capped at 2 clips automatically. |
style | string | "viral" | Caption style. See styles below. |
format | string | "dynamic" | Render format. See formats below. |
captions | boolean | true | Whether to burn in captions. |
clip_duration.min | integer | 20 | Minimum clip length in seconds. Floor: 10s. |
clip_duration.max | integer | 60 | Maximum clip length in seconds. Ceiling: 60s. Must be ≥ min. |
style)| Value | Description |
|---|---|
viral | Bold animated-word captions (MrBeast style). Default. |
beast | Alias for viral. |
hormozi | Alias for leon. Single highlighted word, clean font. |
leon | Single highlighted word, clean font. |
clean | Plain white subtitles, no animation. |
minimal | Alias for clean. |
format)| Value | Description |
|---|---|
dynamic | Auto-detects split-screen vs. solo framing, reframes to 9:16. Default. |
hook_frame | Preserves original video frame, adds a title card at the top, captions at the bottom. |
Use hook_frame when the video is already vertical or the user wants the title displayed prominently.
Use dynamic (default) for horizontal/landscape podcasts with one or two speakers.
Expect JSON in this shape:
{
"clips": [
{
"video_url": "https://...",
"title": "Why Most Founders Get This Wrong",
"score": 0.92,
"start": 142.5,
"end": 198.3
}
]
}
score is a 0–1 float representing clip virality confidence. Higher is better.
Once the skill is installed, the agent runtime should invoke the bundled CLI wrapper:
npm --prefix .agents/skills/generate-podcast-clips run generate-podcast-clips -- \
--video-url "https://example.com/podcast.mp4" \
--max-clips 5 \
--clip-style viral \
--format dynamic \
--captions true \
--min-clip-duration 20 \
--max-clip-duration 60
Required environment variables:
SUBSCUT_API_KEY or --api-keyDefault base URL:
https://subscut.comThis skill is meant to be published once by Subscut and then installed by users through the marketplace.
End-user flow:
SUBSCUT_API_KEY.The skill should not ask users to publish or package anything themselves.
curl.format to dynamic unless the user explicitly wants a title card (hook_frame).Likely user intents that should map to this skill:
POST /podcast-to-clips.style maps to the API style field. clip-style is used as the CLI flag name.format controls render layout: dynamic (default) or hook_frame.clip_duration.min and clip_duration.max let callers control clip length window.max_clips.npm script.npm run generate-podcast-clips -- --help Options: --video-url <url> Public long-form video URL to process --max-clips <number> Number of clips to generate (1-20, default 5) --clip-style <style> viral | clean | minimal | leon | hormozi --format <format> dynamic | hook_frame (default: dynamic) --captions <boolean> true | false (default: true) --min-clip-duration <secs> Minimum clip length in seconds (default 20, min 10) --max-clip-duration <secs> Maximum clip length in seconds (default 60, max 60) --api-key <token> Overrides SUBSCUT_API_KEY --api-base-url <url> Overrides SUBSCUT_API_BASE_URL