Help us improve
Share bugs, ideas, or general feedback.
From twelvelabs
Analyzes a video synchronously using TwelveLabs AI to return a summary or answer questions about its content. Accepts video URLs, file paths, asset IDs, or indexed video IDs.
npx claudepluginhub twelvelabs-io/twelve-labs-claude-code-plugin --plugin twelvelabsHow this skill is triggered — by the user, by Claude, or both
Slash command
/twelvelabs:sync-analyzeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Analyse a video using TwelveLabs AI and return the result inline. Works on:
Asynchronously analyzes up to 2-hour videos by URL, file upload, or asset ID using Pegasus 1.5. Supports time-based metadata extraction, multimodal reference images and structured JSON output.
Analyzes video files or YouTube URLs: extracts frames/audio, detects scenes/motion/silence/transitions via ffmpeg tools with structured workflow.
Imports, searches, and analyzes videos from YouTube, TikTok, Instagram using Memories.ai LVMM for persistent intelligence, summarization, knowledge bases, and social trends research.
Share bugs, ideas, or general feedback.
Analyse a video using TwelveLabs AI and return the result inline. Works on:
videoId (legacy, Pegasus 1.2 only).assetId (Pegasus 1.5).For videos longer than 1 hour, or for time-based metadata extraction, use the async-analyze skill instead.
The user wants a quick text/JSON answer about a single video and:
For multi-segment structured extraction (e.g. "find every product mention with timestamps"), use the async-analyze skill — that supports analysisMode: "time_based_metadata".
| Input type | modelName |
|---|---|
videoId | pegasus1.2 (forced — the MCP rejects 1.5 + videoId) |
| Anything else | pegasus1.5 |
Only override to pegasus1.2 when the user explicitly says so ("use 1.2", "legacy model").
Look at what the user gave you:
videoId. Force modelName: "pegasus1.2".http(s)://... URL → videoUrl. Use modelName: "pegasus1.5".asset_* referred to as an "asset" or "uploaded thing" → assetId. modelName: "pegasus1.5".Tool: mcp__twelvelabs-mcp__create-asset
Parameters:
file: "<absolute-path>"
Capture the returned assetId. Tell the user the asset was created and that they can reuse or delete it via /twelvelabs:assets. Then continue as if they had given you an assetId.If the user gave a question, use it as prompt. Otherwise default to:
"Provide a comprehensive summary of this video including key moments, topics covered, and important details."
Set exactly one source (videoId, videoUrl, assetId, or base64Video) plus modelName and prompt:
Tool: mcp__twelvelabs-mcp__sync-analyse-video
Parameters:
<one of: videoId | videoUrl | assetId | base64Video>: "..."
modelName: "pegasus1.5" # or "pegasus1.2" only for videoId / explicit user override
prompt: "..."
Add these only when the user asks for the corresponding behavior:
temperature (0-1, default 0.2) — "more creative" / "more deterministic"maxTokens — long outputsjsonSchema — "give me JSON"; provide a JSON Schema (Draft 2020-12); cannot combine with promptV2startTime / endTime (Pegasus 1.5 only) — clip to a sub-range; end - start ≥ 4promptV2 (Pegasus 1.5 only, mutually exclusive with prompt) — structured prompt with image references via <@name> and a mediaSources array (each: { name, mediaType: "image", url | assetId | base64String })Video Analysis
<analysis output>
Video: <best identifier — filename, URL, asset ID, or videoId>
Model: pegasus1.5 (or pegasus1.2)
videoId is not accepted with modelName='pegasus1.5' → you misclassified; either drop modelName (server will fall back) or switch to pegasus1.2.Provide exactly one of videoId, videoUrl, assetId, or base64Video → you set zero or multiple sources; re-classify.create-asset returns status pending initially)."What is this video about?" (after listing videos and the user picked one)
→ sync-analyse-video with videoId + Pegasus 1.2, generic summary prompt.
"Analyse https://example.com/clip.mp4 and tell me what happens"
→ sync-analyse-video with videoUrl + Pegasus 1.5.
"Summarise /Users/me/keynote.mp4"
→ create-asset with file: "/Users/me/keynote.mp4" → sync-analyse-video with the new assetId + Pegasus 1.5.
"What products are mentioned in this video? Return JSON: { product, timestamp_sec }[]"
→ sync-analyse-video with the appropriate source + jsonSchema set to an array schema.
videoId but is capped at Pegasus 1.2 capabilities.