← All runbooks
cheerios / ff-gay-intro-fr

Fast & Furious

Generate a 30-second French-language opening scene in the spirit of The Fast and the Furious, reimagined with an openly queer/gay aesthetic — leather, chrome, neon, slow homoerotic camera work, two male leads exchanging charged looks across rumbling muscle…

agent opencodemodel anthropic/claude-sonnet-4.6snapshot python312-uveval rubric9 stepsv1.0.0

Deploy Fast & Furious to your jetty.io

One-click installs this runbook into a collection on your Jetty account. You can run it from the Spot dashboard, schedule it, or pipe inputs in via the API.

The shape of the run

9 steps · start to finish.

  1. 1
    Step 1

    Environment Setup

    # Install Python deps
    pip install replicate requests
    
    # Verify ffmpeg is on PATH (pre-installed on python312-uv snapshot)
    which ffmpeg || { echo "ERROR: ffmpeg not found"; exit 1; }
    
    # Create output directory
    mkdir -p {{results_dir}}
    
    # Verify required secret
    if [ -z "$REPLICATE_API_TOKEN" ]; then
      echo "ERROR: REPLICATE_API_TOKEN is not set. Add it to the cheerios collection environment on Jetty (or export locally)."
      exit 1
    fi
    
    # Smoke-test the token: list models the token can see
    python -c "import replicate, os; r = replicate.Client(api_token=os.environ['REPLICATE_API_TOKEN']); print('Replicate auth OK')"
    

    If the smoke test fails with 401, the token is missing or invalid. If it fails with a timeout, check network egress from the sandbox.


  2. 2
    Step 2

    Write the Bilingual Treatment

    Draft {{results_dir}}/script.md before generating any video. The script is what every downstream evaluation hinges on — do not skip this step.

  3. 3
    Step 3

    Generate Keyframes with Nano Banana

    Generate three keyframes that lock in character + car + lighting consistency across the cut. The model is google/nano-banana (image input/output, supports editing prompts).

  4. 4
    Step 4

    Generate Two 15-Second Clips with Seedance 2.0

    Use bytedance/seedance-2.0 with image (start) + last_frame_image (end) for each clip. This is the key mechanism for consistency — Seedance interpolates between the two locked keyframes you just…

  5. 5
    Step 5

    Stitch with ffmpeg

    Concatenate clip_01.mp4 + clip_02.mp4 into a single 30-second intro_30s.mp4. Use stream copy (no re-encode) to avoid quality loss; fall back to re-encode only if codecs mismatch.

  6. 6
    Step 6

    Evaluate Against Rubric

    Score the final intro_30s.mp4 against each criterion on a 1-5 scale. Watch the full 30 seconds at least twice with audio on.

  7. 7
    Step 7

    Iterate on Weak Criteria (max 3 rounds)

    If the rubric score is below the pass threshold:

  8. 8
    Step 8

    Write Executive Summary

    Write {{results_dir}}/summary.md:

  9. 9
    Step 9

    Write Validation Report

    Write {{results_dir}}/validation_report.json: