analyze.viral_moments
Operation: analyze.viral_moments
Category: ai
Tags: ai, analysis, clips, viral
AI analysis of transcript + scene boundaries to identify viral clip candidates
Runtime
Section titled “Runtime”Type: AI Provider (routed via provider registry)
Timeout: 300s
Retries: 3 (ExponentialWithJitter)
Inputs
Section titled “Inputs”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
transcript | String | Yes | — | Full transcript text (with timestamps if available) |
scenes | JSON | No | — | Scene boundary data from scene_detect |
duration | Number | No | — | Total video duration in seconds |
Outputs
Section titled “Outputs”| Name | Type | Description |
|---|---|---|
viral_moments | JSON | Array of viral moment objects |
count | Number | Number of moments identified |
Default Configuration
Section titled “Default Configuration”{ "max_clips": 10, "max_duration_secs": 90, "min_clips": 3, "min_duration_secs": 15, "modality": "text", "provider": "gemini"}import { WorkflowBuilder } from "@fabric-platform/sdk";
const workflow = new WorkflowBuilder("my-workflow") .node("analyze-viral-moments", "ai_invoke", (n) => n.config({ operation: "analyze.viral_moments", // ... node-specific config }) ) .build();from fabric_platform import FabricClient
fabric = FabricClient(api_key="fab_xxx")
wf_id = fabric.upsert_workflow("my-workflow", nodes=[ { "key": "analyze-viral-moments", "kind": "ai_invoke", },])use fabric_sdk::FabricClient;
let client = FabricClient::new("http://localhost:3001", api_key)?;
let wf_id = client.upsert_workflow("my-workflow", serde_json::json!({ "nodes": [{ "key": "analyze-viral-moments", "kind": "ai_invoke" }]})).await?;curl -X POST http://localhost:3001/v1/workflow-definitions \ -H "Authorization: Bearer $FABRIC_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "my-workflow", "nodes": [{ "key": "analyze-viral-moments", "kind": "ai_invoke" }] }'