Skip to content

video/quick-shorts

Quick shorts — lightweight faceless video from topic or script.

Category: video
Source: workflows/video/quick_shorts.py

FieldTypeDefaultDescription
backgroundstring"ai"Background video source: ‘ai’ (AI-generated from script, requires broll model in quality profile), ‘random’ (gaming/satisfying footage), ‘stock’ (Pexels), or ‘solid’ (plain color).
bgmbooleanfalseAdd background music (off by default to stay cheap).
bgm_volumenumber0.12Background music volume (0.0–1.0) when bgm is enabled.
duration_secsinteger30Target script duration in seconds (only used when generating a script from topic).
languagestring"en"Script / TTS language code.
qualitystring"cheap"SDK quality profile: ‘free’, ‘budget’, ‘cheap’, ‘standard’, ‘premium’, ‘local’. Controls model selection for TTS, script, etc.
regenerateobjectWhen 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_textstring""Explicit narration text. Skips script generation when set.
subtitle_stylestring"karaoke"Subtitle preset: ‘karaoke’, ‘word’, or ‘sentence’.
subtitlesbooleantrueBurn karaoke-style captions onto the video.
topicstring""Video topic — a script is auto-generated from this. Ignored when script_text is provided.
variantsinteger1Number of independent variant executions (1–10). When > 1, the engine runs the workflow N times with different sampling, producing N outputs.
voice_idstring""Explicit TTS voice ID. Takes precedence over voice_style.
voice_stylestring""Descriptive voice style (e.g. ‘warm female’, ‘deep narrator’).
FieldTypeDefaultDescription
asset_idobjectFabric asset ID (when server access is available).
durationnumber0.0Duration of the final video in seconds.
kindobjectVariant 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_textstring""The narration text that was spoken.
upgrade_inputobjectPre-built input for submitting to video/ai-shorts with the same script.
video_pathstringrequiredPath to the final MP4.
prepare_input → generate_voiceover → generate_background → merge_branches → compose_video → add_subtitles → add_bgm → collect_output
TaskDescription
prepare_inputValidate input and generate script if needed.
generate_voiceoverGenerate TTS voiceover — reuses SDK voiceover stage.
generate_backgroundGenerate per-segment AI video clips, or fall back to catalog/stock.
merge_branchesMerge parallel voiceover + background branches.
compose_videoCompose per-segment video clips with voiceover.
add_subtitlesBurn karaoke subtitles if enabled.
add_bgmGenerate and mix background music if enabled.
collect_outputPersist artifact, build upgrade payload, and return output.

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: video/quick-shorts
# Optional fields — copy any line(s) under `input:` and uncomment to set:
# Background video source: 'ai' (AI-generated from script, requires broll model in quality profile), 'random' (gaming/satisfying footage), 'stock' (Pexels), or 'solid' (plain color).
# background: ai
#
# Add background music (off by default to stay cheap).
# bgm: false
#
# Background music volume (0.0–1.0) when bgm is enabled.
# bgm_volume: 0.12
#
# Target script duration in seconds (only used when generating a script from topic).
# duration_secs: 30
#
# Script / TTS language code.
# language: en
#
# SDK quality profile: 'free', 'budget', 'cheap', 'standard', 'premium', 'local'. Controls model selection for TTS, script, etc.
# quality: cheap
#
# Explicit narration text. Skips script generation when set.
# script_text: ""
#
# Subtitle preset: 'karaoke', 'word', or 'sentence'.
# subtitle_style: karaoke
#
# Burn karaoke-style captions onto the video.
# subtitles: true
#
# Video topic — a script is auto-generated from this. Ignored when script_text is provided.
# topic: ""
#
# Explicit TTS voice ID. Takes precedence over voice_style.
# voice_id: ""
#
# Descriptive voice style (e.g. 'warm female', 'deep narrator').
# voice_style: ""
#
input: {}

Run it locally:

Terminal window
fab-workflow --from-file my-run.yaml

Or submit over the wire — the same file is the request body:

Terminal window
curl -X POST 'https://gofabric.dev/v1/workflows/runs?name=video/quick-shorts' \
-H 'Authorization: Bearer fab_xxx' \
-H 'content-type: application/yaml' \
--data-binary @my-run.yaml

Every 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.).

  • Task generate_voiceover has no Pydantic types — contract is opaque to consumers.
  • Task merge_branches has no Pydantic types — contract is opaque to consumers.