global/formula-shorts
Formula Shorts — generate videos that clone the style of reference videos.
Category: global
Source: workflows/video/formula_shorts.py
Input Schema
Section titled “Input Schema”| Field | Type | Default | Description |
|---|---|---|---|
duration_secs | integer | 0 | Duration override (0 = use formula pacing) |
formula | object | "" | Formula name (loads from ~/.fabric/formulas/<name>.json), path to a formula JSON file, or inline formula dict |
mood | string | "" | Mood/tone override (formula default used if empty) |
platform | string | "tiktok" | Target platform |
regenerate | object | — | When set, this run is a regeneration. Workflows may read direction / keep / extra_instructions to modulate prompts; the engine persists parent_run_id and parent_variant_index as run lineage columns. |
script_formula | string | "" | Optional script narrative formula (independent of the VideoFormula above). One of: ‘reframe’, ‘youre_doing_it_wrong’, ‘validation’, ‘pattern_interrupt’, ‘listicle’. The VideoFormula drives visuals/audio; script_formula drives narration structure. See fabric_workflow_sdk.stages.script_formulas. |
topic | string | "" | Video topic |
variants | integer | 1 | Number of independent variant executions (1–10). When > 1, the engine runs the workflow N times with different sampling, producing N outputs. |
visual_style | string | "" | Visual style override |
Output Schema
Section titled “Output Schema”| Field | Type | Default | Description |
|---|---|---|---|
audio_asset_id | object | — | Fabric asset ID of the TTS audio |
kind | object | — | Variant card shape: video / carousel / image / text. Surfaced on the per-variant entry of the run-output API and used by gallery UIs to pick the right layout. |
script | string | "" | The narration script text |
tags | string[] | — | Hashtags/keywords |
title | string | "" | Generated title for the short |
video_asset_id | object | — | Fabric asset ID of the generated video |
Task Pipeline
Section titled “Task Pipeline”load_formula → apply_formula_inputs → normalize_input → generate_script → generate_keyframes → resolve_character_refs → merge_pre_production → reconcile_continuity → multiview_character_prep → generate_ai_actor → generate_voiceover → generate_all_broll → generate_bgm → merge_generation → generate_talking_heads → lipsync_talking_heads → mix_audio → compose_timeline → prepare_for_post_processing → burn_subtitles → burn_hook_overlay_safe → generate_effect_filters → apply_effects → add_outro_fade → ai-shorts-output → collect_final_output → export_for_platforms → evaluate_output → collect_ai_shorts_output| Task | Description |
|---|---|
load_formula | Load and validate a VideoFormula from file or inline dict. |
apply_formula_inputs | Map formula fields to the input keys that ai_shorts pipeline expects. |
normalize_input | Normalize simplified input params to the pipeline’s internal keys. |
generate_script | Generate viral script — delegates to SDK stage. |
generate_keyframes | Generate 2x2 grid keyframes for visual consistency across b-roll segments. |
resolve_character_refs | Normalize character_refs (URL/path/asset_id) → resolved URLs. |
merge_pre_production | Merge parallel pre-production branches (keyframes + character refs). |
reconcile_continuity | Vision-based continuity reconciliation (opt-in). |
multiview_character_prep | Generate multi-view character references for stronger visual consistency. |
generate_ai_actor | Generate AI actor portrait — delegates to SDK stage. |
generate_voiceover | Generate TTS voiceover — delegates to SDK stage. |
generate_all_broll | Generate all b-roll clips — delegates to SDK stage. |
generate_bgm | Generate background music — delegates to SDK stage. |
merge_generation | Merge parallel generation branches into a single context. |
generate_talking_heads | Generate talking heads — delegates to SDK stage. |
lipsync_talking_heads | Lip-sync talking heads — delegates to SDK stage. |
mix_audio | Mix voiceover + BGM — delegates to SDK stage. |
compose_timeline | Assemble video timeline — delegates to SDK stage. |
prepare_for_post_processing | Map keys for post-processing — delegates to SDK stage. |
burn_subtitles | Burn word-level subtitles — delegates to SDK stage. |
burn_hook_overlay_safe | Burn hook text overlay — delegates to SDK stage. |
generate_effect_filters | Use Gemini to suggest FFmpeg filters based on content type. |
apply_effects | Apply AI-generated FFmpeg filters to the video. |
add_outro_fade | Add a fade-to-black outro at the end of the video. |
ai-shorts-output | Video output validation: ai-shorts-output |
collect_final_output | Collect final output — delegates to SDK stage. |
export_for_platforms | Conditionally resize + generate metadata for target platforms. |
evaluate_output | Score the generated short for engagement potential. |
collect_ai_shorts_output | Extract the AiShortsOutput fields from the pipeline result. |
Run-spec example
Section titled “Run-spec example”Save the YAML below as my-run.yaml, edit the values, and run with the CLI or POST it to the API. Required fields are uncommented; optional knobs are documented above the input: block — copy any line under input: and uncomment to set.
workflow: global/formula-shorts
# Optional fields — copy any line(s) under `input:` and uncomment to set:# Duration override (0 = use formula pacing)# duration_secs: 0## Formula name (loads from ~/.fabric/formulas/<name>.json), path to a formula JSON file, or inline formula dict# formula: ""## Mood/tone override (formula default used if empty)# mood: ""## Target platform# platform: tiktok## Optional script narrative formula (independent of the VideoFormula above). One of: 'reframe', 'youre_doing_it_wrong', 'validation', 'pattern_interrupt', 'listicle'. The VideoFormula drives visuals/audio; script_formula drives narration structure. See fabric_workflow_sdk.stages.script_formulas.# script_formula: ""## Video topic# topic: ""## Visual style override# visual_style: ""#
input: {}Run it locally:
fab-workflow --from-file my-run.yamlOr submit over the wire — the same file is the request body:
curl -X POST 'https://gofabric.dev/v1/workflows/runs?name=global/formula-shorts' \ -H 'Authorization: Bearer fab_xxx' \ -H 'content-type: application/yaml' \ --data-binary @my-run.yamlEvery workflow also accepts the universal WorkflowInput fields — variants (1–10 fan-out) and regenerate (creative-direction hints with run lineage). See Run-specs (YAML / TOML / JSON) for the full top-level shape (metadata, priority, bundle, parent, etc.).
Warnings
Section titled “Warnings”- Task
generate_scripthas no Pydantic types — contract is opaque to consumers. - Task
merge_pre_productionhas no Pydantic types — contract is opaque to consumers. - Task
reconcile_continuityhas no Pydantic types — contract is opaque to consumers. - Task
generate_ai_actorhas no Pydantic types — contract is opaque to consumers. - Task
generate_voiceoverhas no Pydantic types — contract is opaque to consumers. - Task
generate_all_brollhas no Pydantic types — contract is opaque to consumers. - Task
generate_bgmhas no Pydantic types — contract is opaque to consumers. - Task
merge_generationhas no Pydantic types — contract is opaque to consumers. - Task
generate_talking_headshas no Pydantic types — contract is opaque to consumers. - Task
lipsync_talking_headshas no Pydantic types — contract is opaque to consumers. - Task
mix_audiohas no Pydantic types — contract is opaque to consumers. - Task
prepare_for_post_processinghas no Pydantic types — contract is opaque to consumers. - Task
burn_subtitleshas no Pydantic types — contract is opaque to consumers. - Task
burn_hook_overlay_safehas no Pydantic types — contract is opaque to consumers. - Task
ai-shorts-outputhas no Pydantic types — contract is opaque to consumers. - Task
collect_final_outputhas no Pydantic types — contract is opaque to consumers.