blitzreels-clipping
Repurpose long-form video into short vertical clips with the BlitzReels API. Use when the task mentions clipping, repurposing a long video into shorts, YouTube-to-shorts, transcript-backed short suggestions, podcast-to-shorts reframing, split-speaker podcast layouts, highlight reel extraction, choosing the best moment from a long source, vertical video from horizontal, making TikToks or Reels or Shorts from a longer asset, repairing weak framing on an applied clip, or exporting a final vertical short. Also use when the user says "clip this", "cut me a short", "best parts of this video", or "repurpose this content".
What this skill does
# BlitzReels Clipping
Use the `/clips` resource as the primary clipping path. It wraps ingest, transcription, suggestion generation, layout, captions, and QA into a single state machine driven by `next_action`. The agent follows `next_action` rather than orchestrating individual stages.
The low-level staged endpoints (suggestion apply, preview-frames, timeline/media-views, etc.) exist for manual-control scenarios but should not be used unless the `/clips` resource cannot produce the result.
## Canonical Endpoints
| Method | Path | Purpose |
|--------|------|---------|
| POST | `/clips` | Create a clip run from an asset or YouTube URL |
| GET | `/clips/{clip_id}` | Poll state — auto-advances through all stages |
| POST | `/clips/{clip_id}/reselect` | Change suggestion or set absolute time range |
| POST | `/clips/{clip_id}/repair` | Run one bounded repair pass |
| POST | `/clips/{clip_id}/export` | Export a clip that is ready |
## User-Facing Workflow
Before creating a clip, let the user choose which segment to clip. This avoids wasting an API call on content the user doesn't want.
1. **Ingest and wait for suggestions.** Create the clip with `selection_mode: "auto_best"` and poll until `source.suggestions_status = "ready"`. The first poll response with suggestions will include `selection.alternatives`.
2. **Present suggestions to the user.** Show the ranked list from `selection.alternatives`:
- title, hook, start/end timestamps, duration, score
- Let the user pick one, or provide their own time range.
3. **If the user picks a different suggestion** than `auto_best` selected, call `POST /clips/{clip_id}/reselect` with `selection_mode: "suggestion"` and the chosen `suggestion_id`.
4. **If the user provides manual timestamps**, call `POST /clips/{clip_id}/reselect` with `selection_mode: "time_range"` and the absolute `start_seconds` + `end_seconds`.
5. **Continue the normal poll loop** — follow `next_action` until export.
If the user says "just pick the best one" or doesn't express a preference, skip step 2 and let `auto_best` proceed.
## Default Path
1. Create the clip with `POST /clips`.
2. Poll with `GET /clips/{clip_id}` while `next_action = "poll"`.
3. When suggestions are ready, present them to the user for selection (see above).
4. If `next_action = "reselect"`, pick another candidate from `selection.alternatives` or switch to a manual time range, then call `POST /clips/{clip_id}/reselect`.
5. If `next_action = "repair"`, call `POST /clips/{clip_id}/repair` once.
6. If `next_action = "export"`, call `POST /clips/{clip_id}/export`.
7. Keep polling until `status = "exported"`, `status = "failed"`, or `next_action = "stop"`.
The clip resource handles transcription, suggestion generation, reframe analysis, layout apply, captions, and QA internally. The agent never needs to call those endpoints directly.
## Default Request
```json
{
"source": {
"source_type": "youtube",
"asset_id": null,
"youtube_url": "https://www.youtube.com/watch?v=VIDEO_ID"
},
"selection": {
"selection_mode": "auto_best",
"suggestion_id": null,
"start_seconds": null,
"end_seconds": null
},
"target": {
"aspect_ratio": "9:16",
"max_duration_seconds": 75
},
"layout": {
"layout_mode": "auto",
"tutorial_stack_ratio": "screen_70_face_30"
},
"captions": {
"enabled": true,
"style_id": "documentary"
},
"qa": {
"qa_mode": "required"
},
"export": {
"auto_export": false
}
}
```
Overrides:
- If the user gives an existing asset, use `source_type: "asset"` with `asset_id`.
- If the user gives exact timestamps, use `selection_mode: "time_range"` with `start_seconds` and `end_seconds`.
- If the user picks a specific suggestion, use `selection_mode: "suggestion"` with `suggestion_id`.
- `layout_mode`: `"auto"` (default, evidence-based), `"prefer_split"` (forces dual-speaker split when evidence exists), `"prefer_focus"` (forces single-subject focus-cut), `"prefer_tutorial"` (biases toward screen-share tutorial layouts and sets the content hint to tutorial).
- `tutorial_stack_ratio`: `"screen_70_face_30"` by default, or `"screen_50_face_50"` when the user wants equal screen/face height. Only affects tutorial facecam stack layouts.
- `qa_mode`: `"required"` blocks export on QA failure; `"permissive"` allows export with warnings.
Tutorial/livestream screen-share path:
- Use `layout_mode: "prefer_tutorial"` for flattened videos that already contain a large screen-share/browser area plus a small side/corner facecam in the same MP4.
- Use `tutorial_stack_ratio: "screen_70_face_30"` when screen readability matters most.
- Use `tutorial_stack_ratio: "screen_50_face_50"` when the user's face/reaction should be equally prominent.
- Do not use `prefer_tutorial` for podcast/interview two-speaker footage; keep `auto` or `prefer_split`/`prefer_focus` for podcasts.
Caption style defaults:
- `documentary` — default recommendation
- `full-sentence` — sentence captions with active-word emphasis
- `single-word-instant` — one-word-at-a-time captions
- Any custom theme UUID from `/caption-themes` — use a theme ID created via the caption themes skill
## Poll Fields
Read these fields on every `GET /clips/{clip_id}`:
- `status` — current workflow state
- `next_action` — what to do next (`poll`, `reselect`, `repair`, `export`, `stop`)
- `error` — structured error with `step`, `code`, `message`, `why_failed`, `how_to_fix`, and `retryable`
- `source.analysis_status`, `source.analysis_version`
- `source.transcript_status`, `source.suggestions_status`
- `source.canonical_duration_seconds` — best-available duration (max of transcript, suggestions, and asset metadata because any single source can be wrong)
- `selection.alternatives` — ranked suggestion list with scores (present these to the user for selection)
- `clip_window` — applied start/end/duration
- `layout.applied_mode`, `layout.primary_layout`, `layout.fallback_used`, `layout.warnings`
- `layout.tutorial_stack_ratio` — requested tutorial stack ratio for diagnostics
- `captions.status`, `captions.clip_window_aware`, `captions.warnings`
- `qa.status`, `qa.blocking`, `qa.issues`, `qa.preview_urls`, `qa.visual_debug_url`
- `export.status`, `export.download_url`, `export.short_download_url`
## Suggestion Presentation Format
When presenting suggestions to the user, format each alternative clearly:
**Example:**
```
Here are the best moments I found:
1. "Why Most Startups Fail" (score: 0.92)
0:45 – 1:58 (73s)
Hook: The number one reason startups fail isn't what you think
2. "The Hiring Mistake" (score: 0.85)
3:12 – 4:28 (76s)
Hook: We hired 10 people in 2 weeks and it nearly killed us
3. "Product-Market Fit Signal" (score: 0.78)
7:01 – 8:15 (74s)
Hook: The moment we knew we had product-market fit
Which one would you like to clip? Or give me a custom time range.
```
## Decision Rules
Fast path:
- if `qa.status = "passed"` and `next_action = "export"`, export
Blocked path — follow `next_action`, which will be one of:
- `"poll"` when `blocking_reason` is `source_not_ready`, `suggestions_not_ready`, or `analysis_not_ready` — the clip resource is still auto-advancing through preparation stages
- `"reselect"` when `blocking_reason` is `invalid_selection` (suggestion not found or time range invalid) or `letterbox_rejected` (planner couldn't achieve split/focus layout for podcast content — choose a different suggestion or time range)
- `"repair"` when `blocking_reason` is `visual_qa_failed` — QA found critical framing issues. Run one repair pass, then poll. If still blocked after repair, `next_action` switches to `"reselect"`
- `"stop"` when `status` is terminal (`exported` or `failed`)
Repair modes:
- `"auto"` — recommended default, re-runs reframe planning
- `"prefer_split"` — when the issue is speaker visibility in a podcast/interview
- `"prefer_focus"` — when the issue is weak single-subject framing
- `"prefer_tutorial"` — when a fRelated in Image & Video
watch
IncludedWatch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or Whisper API fallback), and hands the result to Claude so it can answer questions about what's in the video.
physical-ai-defect-image-generation
IncludedUse when the user wants to orchestrate defect image generation, run associated setup, or handle outputs on OSMO. The Day 0 path handles cold-start with USD-to-ROI, image-edit augmentation, and AnomalyGen to create initial PCBA datasets. The Day 1 path performs inference and labeling on real images. This skill helps with first-time asset setup, creation of finetuning checkpoints, and configuring deployment. Trigger keywords: defect image generation, dig workflow, dig pipeline, defect image detection workflow, aoi pipeline, aoi anomalygen, usd2roi anomalygen, day 0 pcba, day 1 pcba, day 1 real-photo alignment, day 1 manual roi, metal surface anomaly, glass defect, anomalygen finetune, setup_pcb, setup_metal, setup_glass, setup_pretrained, dig setup, dig datasets, dig pretrained checkpoint, dig image-edit endpoint.
accelint-react-best-practices
IncludedReact performance optimization and best practices. ALWAYS use this skill when working with any React code - writing components, hooks, JSX; refactoring; optimizing re-renders, memoization, state management; reviewing for performance; fixing hydration mismatches; debugging infinite re-renders, stale closures, input focus loss, animations restarting; preventing remounting; implementing transitions, lazy initialization, effect dependencies. Even simple React tasks benefit from these patterns. Covers React 19+ (useEffectEvent, Activity, ref props). Triggers - useEffect, useState, useMemo, useCallback, memo, inline components, nested components, components inside components, re-render, performance, hydration, SSR, Next.js, useDeferredValue, combined hooks.
elevenlabs-agents
IncludedBuild conversational AI voice agents with ElevenLabs Platform using React, JavaScript, React Native, or Swift SDKs. Configure agents, tools (client/server/MCP), RAG knowledge bases, multi-voice, and Scribe real-time STT. Use when: building voice chat interfaces, implementing AI phone agents with Twilio, configuring agent workflows or tools, adding RAG knowledge bases, testing with CLI "agents as code", or troubleshooting deprecated @11labs packages, Android audio cutoff, CSP violations, dynamic variables, or WebRTC config. Keywords: ElevenLabs Agents, ElevenLabs voice agents, AI voice agents, conversational AI, @elevenlabs/react, @elevenlabs/client, @elevenlabs/react-native, @elevenlabs/elevenlabs-js, @elevenlabs/agents-cli, elevenlabs SDK, voice AI, TTS, text-to-speech, ASR, speech recognition, turn-taking model, WebRTC voice, WebSocket voice, ElevenLabs conversation, agent system prompt, agent tools, agent knowledge base, RAG voice agents, multi-voice agents, pronunciation dictionary, voice speed control, elevenlabs scribe, @11labs deprecated, Android audio cutoff, CSP violation elevenlabs, dynamic variables elevenlabs, case-sensitive tool names, webhook authentication
humanizer
IncludedHumanize AI-generated text by detecting and removing patterns typical of LLM output. Rewrites text to sound natural, specific, and human. Uses 28 pattern detectors, 560+ AI vocabulary terms across 3 tiers, and statistical analysis (burstiness, type-token ratio, readability) for comprehensive detection. Use when asked to humanize text, de-AI writing, make content sound more natural/human, review writing for AI patterns, score text for AI detection, or improve AI-generated drafts. Covers content, language, style, communication, and filler categories.
generating-mermaid-diagrams
IncludedSalesforce architecture diagrams using Mermaid with ASCII fallback. Use this skill when generating text-based diagrams for Salesforce architecture, OAuth flows, ERDs, integration sequences, or Agentforce structure. TRIGGER when: user says "diagram", "visualize", "ERD", or asks for sequence diagrams, flowcharts, class diagrams, or architecture visualizations in Mermaid. DO NOT TRIGGER when: user wants PNG/SVG image output (use generating-visual-diagrams), or asks about non-Salesforce systems.