Every impression is a shot window. Hit it.

shotwindow is a CLI vision instrument for YouTube thumbnails. It measures what survives the glance — saliency, legibility at feed size, OCR read-back, rank against your channel's live thumbnails — then renders five redesigned variants that hit.

$ npm install -g shotwindow

free · open source · previews need zero credentials

One command in, measurements out

Point it at a channel. It lists the full upload history with view counts — no API key — and orders it by what's most worth fixing: weak thumbnail, real traffic.

$ shotwindow scan @RickAstleyYT --limit 5 --deep
  deep listing: 24 uploads via InnerTube (view counts included)

  pop    views   video
   32    20.0K   Keep Singing (Live at The O2, London, April 2026)
   36    15.0K   Dance (Live at The O2, London, April 2026)
   49    29.0K   Angels On My Side (Live at The O2, London)
   55   114.0K   Raindrops (Official Video)
   59     8.4K   '50' Track By Track (10 Years Later)

  Ordered by fix-priority (weak thumbnail × traffic).

$ shotwindow optimize LjmOX9jGoR4
  [1/1] Rick Astley - Raindrops (Official Video)
      hook "RICK ASTLEY" · pop 5594 (banner 79 · punch 94 · clean 82 · zoom 81 · cutout 67)
      channel rank: #2 → #1 of 16 live thumbnails
real session · rick astley's channel · july 2026 · reproducible from the repo

What the feed sees

The fight happens at 168 pixels. shotwindow re-measures every render there — and proves the text survives by reading it back with OCR.

Original Rick Astley thumbnail before redesign
beforepop 55rank #2 of 16
Redesigned punch variant: RICK ASTLEY headline over the calmest region
punch variant — winnerpop 94rank #1 of 16
Cutout variant: subject segmented from the background with a white outline stroke on an accent-glow backdrop
cutout variantsegmented locally · outline stroke · accent glow

The cutout, made on your machine

A local ONNX segmentation model lifts the subject, strokes the outline, and drops it on an accent-lit backdrop — the style every paid tool sells, rendered offline, with the model weights on your disk.

Original thumbnail at 168 pixels wide
before · 168px
Punch variant at 168 pixels wide
punch · 168px
Cutout variant at 168 pixels wide
cutout · 168px

at feed size, OCR recovered 2/2 hook words from the banner, zoom, and cutout renders — measured, not assumed

Five instruments

Saliency map

Where the eye lands. Text goes over the calmest region, crops center on the subject, gradients flip away from faces.

32-col grid

OCR read-back

Tesseract reads your render at 168px. The score is the share of hook words a squinting viewer's eye could actually recover.

2/2 words

Channel rank

Where the redesign lands among your currently live thumbnails — the before rank tells you which uploads most need the work.

#2 → #1 of 16

Deep listing

Full upload history with view counts, zero credentials — ordered by fix-priority: weak thumbnail × real traffic.

24 uploads

A/B rotation

Rotate variants live on YouTube; view velocity picks the winner and applies it. Unattended via Task Scheduler or cron.

views/hour

No guarantees. Measurements.

shotwindow doesn't promise viral. It automates the practices that correlate with click-through — readable text, subject close-ups, contrast that survives the shrink — and hands you instruments. Your audience stays the judge.

Everything runs on your machine: previews need no login, no API key, no upload. Your thumbnails never leave your disk until you say --apply.

407 testsMIT licensenode ≥ 18windows · macos · linux

Launching soon

The CLI is being polished for its first public release. Drop your email and we'll send one note the day it ships.

One email at launch. No spam, no list-selling.