ClipFarm
ClipFarm scores a long recording by its own loudness and cuts the peaks into 9:16 clips. Each clip waits on disk for your review.
What it does
Scored by its own sound
It reads a loudness curve once a second and, on a live stream, the speed of the chat. Both are z-scored and blended, six parts sound to four parts chat.
Cut at the peaks
Peaks above a threshold, with overlaps removed, become clips. One pass crops each to 9:16 at 1080 by 1920, with a JSON score beside it.
A person between the stages
Three tools generate the audio, assemble the episode and cut the clips. A person passes the path from each stage to the next.
How a clip gets cut
The light runs a recorded episode, then a live one. Every step is signal processing, with no model in the loop.
Core responsibilities
Read the recording's own loudness
It measures RMS once a second over the whole recording and z-scores it against the recording's own baseline. A quiet show and a loud one are judged on the same scale.
Add the chat when it is live
On a live stream, the chat's messages per second join the score, six parts sound to four parts chat. A recording is scored on sound alone.
Keep the peaks apart
Candidates above the threshold are ranked. Any within thirty seconds of a kept one is dropped, so two clips never cover the same moment.
Cut once, to 9:16
One pass takes the middle column of the frame at 1080 by 1920, from eight seconds before the peak to twenty after. It writes a JSON score beside the file.
Stop at a file on disk
The clip and its score land in a review folder, where a person watches each one and decides whether to publish. The pipeline has no publishing step.
ClipFarm in figures
- 5episodes assembled to 1080p, 51 minutes in all, every one ownedread from the run's telemetry
- 39:16 clips cut from one episode, each with its score beside itthe clips' JSON on disk
- 30 sminimum gap between two clips, so no moment is cut twicethe scorer's defaults
- 17tests on the scoring math, all offlinecounted in the repository
Counted in the repository, read from a run or set in the code. No figure is estimated.
ClipFarmBuilt
Why it is built this way
Rules written into the code, and what each one prevents.
Apply for a seatNo model in the loop
Scoring is signal processing throughout: loudness and chat velocity. Each highlight is a number, and the arithmetic behind it is in the repository.
Three tools, three hand-offs
Each stage is its own tool. A person passes the path from one to the next, so no stage runs ahead of a review.
Nothing publishes on its own
The clipper ends at an MP4 and a JSON score on disk. Posting is a later stage, opt-in per channel, that only a person can start.
The code behind ClipFarm
Three files from the repository, shown in turn. Select one to read it.
01def detect_highlights(02 audio_curve: list[tuple[float, float]],03 chat_curve: list[tuple[float, int]] | None,04 *,05 bin_seconds: float = 2.0,06 alpha: float = 0.6,07 beta: float = 0.4,08 min_score: float = 1.2,09 min_gap_seconds: float = 30.0,10 max_highlights: int | None = None,11) -> list[Highlight]:01kept: list[Highlight] = []02for c in candidates:03 if all(abs(c.timestamp - k.timestamp) >= min_gap_seconds for k in kept):04 kept.append(c)05 if max_highlights and len(kept) >= max_highlights:06 break07 08kept.sort(key=lambda h: h.timestamp)09return kept01vf = (02 f"crop=ih*9/16:ih,"03 f"scale={target_width}:{target_height}:force_original_aspect_ratio=increase,"04 f"crop={target_width}:{target_height}"05)Bring the workflow that keeps breaking.
Our engineers work through it with you in a free 45-minute briefing.