Video Pipeline
This starter now includes a repeatable local video pipeline for lesson exports.
The intended order is:
- stage raw exports into
Ready/ - cut silence locally and run Auphonic
- optionally apply a repeatable LUT pass
- upload the final graded files to Bunny
- 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 FootageKey folders:
Ready/: staged raw exports waiting to be processedProcessed/: original staged raws after the cut + Auphonic handoffColor Correction/: Auphonic outputs kept for optional manual reviewColor Graded/: final graded masters ready for publishingBunny 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.mp4L11--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:setupPrepare raw videos for review and color:
bun run --cwd apps/web video:prepare:colorThat 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:gradeDefault grading behavior:
- source:
Color Correction/ - output:
Color Graded/ - LUT:
Oliur 01.cube - blend:
15%LUT look over85%original image
Current default LUT path:
/Volumes/2TB SSD Video/Oliur - Video Creator Course/07-Bonus/LUT 01 by Oliur/Oliur 01.cubeOverride 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.15Publish final graded files to Bunny without rerunning cut or Auphonic:
bun run --cwd apps/web video:upload:bunnyThat 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:
- rerun
video:gradewith the corrected settings - run
video:upload:bunnyto publish a fresh corrected set - 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:statusReports and links
Each run writes a timestamped JSON report:
apps/web/output/video-pipeline/run-<timestamp>.jsonThe Bunny upload step also writes a human-readable link manifest:
apps/web/output/video-pipeline/run-<timestamp>.links.mdUse 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_KEYAUPHONIC_PRESET_IDBUNNY_STREAM_API_KEYBUNNY_STREAM_LIBRARY_IDVIDEO_PIPELINE_PYTHON_BINoptional override
Practical rule
Treat the pipeline as four separate stages, not one irreversible step:
video:prepare:colorvideo:grade- review if needed
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.