shipped@di-atomic/thumbnail · v0.1.0 · beta

Your agent makes YouTube thumbnails that read at 200 pixels.

Give it a video and its title. It plans two or three thumbnails that test different ideas, grades each one where YouTube shows it smallest, and picks the frame your video should open on. Every check prints a number, so you see why an image passed or failed.

For founders and marketers who publish on YouTube, and who have run a thumbnail test that came back with no winner.

A dark chalkboard. A video screen marked VIDEO, an arrow, and three different picture frames (a circle, two bars, a gold star), each with a gold tick, marked THREE IDEAS.
Built by Di-Atomic Marketing & compliance agency Display sizes measured on youtube.com 7-language team Clients incl. ONYX Radiance, Pamit Group
200 pxthe width YouTube's sidebar shows your thumbnail in a laptop window
26% × 21%of that thumbnail sits under the duration badge. Words there are lost.
0 to 1fingerprint distance between a thumbnail and its recolour. Real pairs score 20 or more.
1 in 10of 941 niche thumbnails had nothing readable at 200 px
Installopvs-skills install @di-atomic/thumbnail --to ./skills-cache

Use --to, not --runtime: the scripts are the skill. Then say: “make 3 thumbnails to A/B test for this video” or “make a cover for this Short”.

Why three shades of one thumbnail is not an A/B test

What most A/B sets look like
A  photo + "SWITCH TO CLAUDE"   blue
B  photo + "SWITCH TO CLAUDE"   orange
C  photo + "SWITCH TO CLAUDE"   green

→ same layout, same idea
→ fingerprint distance 0 to 1
→ readable at 200 px? never checked
→ no hypothesis to learn from

(YouTube: "no winner")

A recolour scores 0 to 1 against its original. Swapping only the words scores 0 to 12.

What thumbnail produces
A  baseline       "SWITCH TO|CLAUDE"   left
B  promise        "CLAUDE|OR GPT?"     top
C  proof-object   "4 MINUTES|FLAT"     right

distance   A-B 27 · A-C 31 · B-C 40
size       18.8′ to 23.0′ at 200 px
contrast   21:1 on every headline
corners    nothing under the badge

A set I built on test backgrounds, graded by the skill's own scripts. Every pair clears 16.

Three versions of one idea teach you nothing. Three ideas show you what your audience watches.

Five scripts, and each one prints a number

compose-thumbnailTypesets the headline at the size the smallest display needs. Refuses a missing glyph, reversed Hebrew, or words that will not fit.
verify-thumbnailGrades one image: headline height at 200 px, contrast, the badge corner and the Shorts overlays, and AI-drawn words read back.
verify-variant-setChecks the A/B set: 2 to 3 variants, one named idea and one hypothesis each, every pair at distance 16 or more.
pick-poster-frameProposes frames that are not black, not at a cut and settled, for video-editor to bake as frame 0.
verify-coordinationConfirms the four OPVS surfaces are wired: the card, the docs, memory and the protocol.

What you actually get

🧪

A YouTube A/B set

Two or three variants for Test and compare, each leading with one idea: promise, subject, proof object, emotion, or face against object. Each one carries a one-line hypothesis, so the result teaches you something.

📱

Covers for Shorts, Reels, TikTok

One cover with the words kept where the platform leaves them visible. YouTube lays its Shorts title over 74% to 88% of the cover's height, so your words stay above it.

🎞️

The right frame 0

A settled, non-black frame, picked from a contact sheet and handed to @di-atomic/video-editor, which bakes it in and reads frame 0 back to prove it.

A real set, a recolour, and a poster

> "make 3 thumbnails to A/B test for this video"   (test backgrounds, typeset headlines)

  verify-thumbnail A.jpg   PASS  "SWITCH TO CLAUDE"   19.0′ @200px · 21.00:1 · badge clear
  verify-thumbnail B.jpg   PASS  "CLAUDE OR GPT?"     23.0′ @200px · 21.00:1 · badge clear
  verify-thumbnail C.jpg   PASS  "4 MINUTES FLAT"     18.8′ @200px · 21.00:1 · badge clear

  verify-variant-set set.json
    V2 hypothesis   A=baseline · B=promise · C=proof-object
    V3 distinct     A-B 27 · A-C 31 · B-C 40          (every pair >= 16)
  RESULT ............... PASS

> a set of A and a recolour of A

  verify-variant-set set-recolour.json
    V3 distinct     A-A2 0                              FAIL
    V4 hygiene      A2 text vs ground 3.67:1            FAIL
  RESULT ............... FAIL

> "pick the poster for this clip"   (4 s, fades in from black, cut at 2 s)

  pick-poster-frame clip.mp4
    frame 0 today   black 100%
    candidates      3 of 40 frames (black 2 · at a cut 4 · unsettled 5)
  RESULT ............... PASS

Output I re-ran from the published bundle on test backgrounds I generated with ffmpeg, condensed to the lines that matter. No face and no AI render here: that path is the one untested part of this release.

What the gates see that your editor hides

A dark chalkboard. A large picture frame marked EDITOR, an arrow, and a tiny frame marked SIDEBAR with a gold box over its bottom-right corner marked BADGE.
Judged small. In a laptop window, YouTube's sidebar shows your thumbnail 200 pixels wide, and the duration badge covers its bottom-right corner. The gates grade it there.
A dark chalkboard. Three frames holding the same circle in three shades, crossed out, labelled RECOLOUR, next to three different frames labelled REAL IDEAS.
Ideas, not shades. A recolour looks identical at thumbnail size. The set only passes when every pair of variants looks different.

What it will tell you it cannot do

  • AI-drawn words are new. The render-then-read-back path has not run end to end on a real render yet. The read-back gate is tested, and typeset headlines are exact.
  • It grades readability, not clicks. In 941 niche thumbnails, layout did not separate the videos that broke out. The gates keep images readable; the test finds the winner.
  • I hold no click data of my own yet. Every finished test is written to your agent's memory, so your own evidence builds with each one.
  • Cyrillic and Hebrew are typeset. OCR read-back is unreliable for Cyrillic and absent for Hebrew, so those headlines are set as type, never trusted to the AI.
  • TikTok's grid size is an estimate. TikTok served a CAPTCHA to the measuring browser. The YouTube and Instagram sizes were measured.
  • You bring ffmpeg and your photos. The scripts run on node and ffmpeg. The face library ships empty, and you add your own photos.
Why this exists

I wanted every video to get a fair test, not three shades of one guess.

thumbnail is one skill in the system behind Di-Atomic, the marketing and compliance agency that runs cognitoAI, SpiderIQ and OPVS. If you want a video pipeline that researches, scripts, edits and packages each video, in any of my team's seven languages, that is the day job.

Book a call with Di-Atomic

Just want the skill? Get @di-atomic/thumbnail free.