Skip to Content
Video Pipeline

Video Pipeline

This starter now includes a repeatable local video pipeline for lesson exports.

The intended order is:

  1. stage raw exports into Ready/
  2. cut silence locally and run Auphonic
  3. optionally apply a repeatable LUT pass
  4. upload the final graded files to Bunny
  5. save the embed links into a report you can paste elsewhere

Root folders on disk

The pipeline uses the external media root:

/Volumes/2TB SSD Video/Movies/Ship by Sunday Raw Footage

Key folders:

  • Ready/: staged raw exports waiting to be processed
  • Processed/: original staged raws after the cut + Auphonic handoff
  • Color Correction/: Auphonic outputs kept for optional manual review
  • Color Graded/: final graded masters ready for publishing
  • Bunny Uploaded/: graded masters after the Bunny upload step

Run reports are written into:

apps/web/output/video-pipeline/

File naming contract

Use:

<sourceKey>--<slug>.<ext>

Examples:

  • L0--build-the-folder-not-just-the-app.mp4
  • L11--plan-the-work.mp4

The current upload-only Bunny step treats these as unattached media and uses the sourceKey plus slug for the Bunny title.

Commands

One-time setup for the local cut runtime:

bun run --cwd apps/web video:cut:setup

Prepare raw videos for review and color:

bun run --cwd apps/web video:prepare:color

That step:

  • reads from Ready/
  • cuts silence locally with the vendored Silero VAD editor
  • sends the cut result through the configured Auphonic preset
  • writes the downloaded Auphonic outputs into Color Correction/
  • archives the original staged raws into Processed/

Apply the current default LUT look headlessly:

bun run --cwd apps/web video:grade

Default grading behavior:

  • source: Color Correction/
  • output: Color Graded/
  • LUT: Oliur 01.cube
  • blend: 15% LUT look over 85% original image

Current default LUT path:

/Volumes/2TB SSD Video/Oliur - Video Creator Course/07-Bonus/LUT 01 by Oliur/Oliur 01.cube

Override flags when needed:

bun run --cwd apps/web video:grade -- --only L12--define-done-validation-and-rollback.mp4 bun run --cwd apps/web video:grade -- --lut-path "/abs/path/look.cube" --lut-mix 0.15

Publish final graded files to Bunny without rerunning cut or Auphonic:

bun run --cwd apps/web video:upload:bunny

That step:

  • reads from Color Graded/
  • creates Bunny videos in the configured library
  • uploads the files and waits for Bunny encoding
  • writes a JSON report plus a Markdown links manifest into apps/web/output/video-pipeline/
  • archives the uploaded graded masters into Bunny Uploaded/

If you need to replace an older Bunny run:

  1. rerun video:grade with the corrected settings
  2. run video:upload:bunny to publish a fresh corrected set
  3. delete the stale Bunny video IDs from the older upload report

Do not assume the current Bunny upload endpoint will overwrite already-encoded videos in place through this local workflow.

Inspect queue state at any time:

bun run --cwd apps/web video:status

Each run writes a timestamped JSON report:

apps/web/output/video-pipeline/run-<timestamp>.json

The Bunny upload step also writes a human-readable link manifest:

apps/web/output/video-pipeline/run-<timestamp>.links.md

Use the Markdown manifest when you need a durable pasteable source of Bunny embed links later.

Environment

Required env values live in apps/web/.env.local.

Relevant video keys:

  • AUPHONIC_API_KEY
  • AUPHONIC_PRESET_ID
  • BUNNY_STREAM_API_KEY
  • BUNNY_STREAM_LIBRARY_ID
  • VIDEO_PIPELINE_PYTHON_BIN optional override

Practical rule

Treat the pipeline as four separate stages, not one irreversible step:

  1. video:prepare:color
  2. video:grade
  3. review if needed
  4. video:upload:bunny

That keeps rework cheap. If the grade changes, rerun only the grade stage. If the upload needs to be retried, rerun only the Bunny stage.

Last updated on