← All drops

Drop 007Replaces OpusClip $29/moBuilt — 484 tests, verified end to end in Docker

fableclip

A long video in, ranked vertical shorts out — with the score explained.

The fableclip interface: a URL field with clip count, length, framing and caption-style controls, above a completed fetch, transcribe, analyse and render pipeline
Paste a link, pick how many clips and how long, and the pipeline runs: fetch, transcribe, analyse, render. The model is named in the corner — it is yours, and it is the only thing here you supply.

Paste a long video and get vertical, captioned shorts back, ranked by how likely each is to travel and told in plain numbers why. The model never writes a timestamp: transcript lines are numbered, it returns line ids, and TypeScript does the arithmetic. Every contribution to the 0–100 score is shown on the card.

Why it works

The model never writes a timestamp

Transcript lines are numbered and the model returns line ids; TypeScript turns those into times. A model that cannot invent a number cannot hand you a clip that starts mid-word.

The score is arithmetic you can read

Six 0–10 judgements weighted in code, plus modifiers measured from the transcript. Every contribution is shown on the card, so a ranking you disagree with tells you exactly which part to argue with.

Free word-level alignment, if you know where to look

YouTube's machine captions carry per-word tOffsetMs — creator-uploaded tracks do not, so the machine track is preferred over the human one. That is a word-accurate caption timing for nothing.

Auto-focus without face detection

96×54 greyscale samples, columns scored on motion and detail. It picked the speaker out of a side-by-side Zoom two-shot where a centre crop lands on the seam.

Run it

shell
git clone https://github.com/openwarehq/fableclip
cd fableclip
docker compose up

Then open the app and connect a model — pick a provider, paste a free key, done. It also reads a repo-root .env if you prefer a file.

Measured

Tests green
484
Docker image
1.6 GB
38-min interview
4 clips out
Clip output
1080×1920 H.264+AAC

What it doesn’t do

Stated up front, because scope discovered at 2am is a betrayal.

  • No face tracking, and it shows. Measured on the four clips above: three are framed on the speaker, one on the armchair beside him — a high-contrast object the heuristic likes as much as a face. One drag of the focus slider fixes it.
  • Filler is removed from the captions, not the audio. You still hear the “um”; you just do not read it.
  • No b-roll, no zooms, no music, no stock footage, no AI voice. It cuts what is there.
  • No speaker diarisation. The transcript knows what was said, not who said it.
  • No emoji or animated caption effects. Scaling the active word was tried and removed — ASS re-lays the line out every frame, so the caption twitches for the length of the clip.
  • It cannot tell you what will go viral. Nothing can. It ranks the moments in this video against each other, which is a genuinely useful and different thing.
  • The image is large — 1.6 GB measured. That is what ffmpeg, Python and faster-whisper weigh.