Create polished YouTube thumbnails for Mike's Convex/dev videos using the image model, Mike's local cutout photos, and local Convex brand assets.
When to Use
- Creating YouTube thumbnail options for a Convex or developer video.
- Reworking the Convex static hosting "NO DASHBOARDS" thumbnail.
- Making a thumbnail that must include Mike's recognizable head-and-shoulders portrait.
- Replacing an incorrect generated mark with the real Convex logo or symbol.
When Not to Use
- Generic thumbnail advice with no image generation requested.
- Non-Convex videos unless Mike explicitly wants the same personal thumbnail style.
- Deterministic compositing in code, unless Mike explicitly asks for a manual layout. The manual collage route looked bad for this style.
Core Workflow
- Inspect the available local references before prompting the image model:
- Run
bash scripts/check-local-assets.shfrom this skill. It discovers the Google Drive account folder and prints absolute paths for the photo and brand assets. - Use
view_imageon at least one Mike headshot and the Convex symbol before calling the image model.
- Run
- If the user provided a script, Notion page, or video brief, extract the main hook first. Keep the thumbnail concept simple enough to read at feed size, and make it intriguing, not descriptive (see "What makes Mike click").
- Use the image model for the thumbnail. Do not build the main image by manually pasting cutouts and cards together unless the user asks for that.
- Keep text short. Prefer one strong phrase such as
NO DASHBOARDS,HOST ON CONVEX,STATIC APP LIVE, orSKIP HOSTING. - Prompt for Mike as a large recognizable head-and-shoulders portrait, not a full-body figure.
- The Convex logo on Mike's cap is usually enough. Don't scatter more Convex logos around the scene. If the concept needs one, pass the real swirl as a reference and replace any cube or hexagon mark the model invents. For a video about a partner's product (Daytona, for example), use the partner's real logo, downloaded from their GitHub or press kit, at the payoff (next to the green tick).
- Return 3 to 5 visually distinct options when brainstorming. If Mike points at one option, iterate that option instead of restarting the set: pass the chosen draft as the first reference and say "keep everything the same, change only ...".
What Makes Mike Click
From his review of the Daytona thumbnails (October 2026). The first round was accurate and clean, and he rejected all of it: "none of these intrigue me to click the video". What he picked, and why:
- Tension beats description. "CONVEX CAN'T DO THIS", over a failing Convex log with a big red X next to a sandbox with a green tick, won over "MY AGENT GOT A COMPUTER" and "3 APPS, 1 SANDBOX". A contradiction, a limitation or a "wait, what?" makes people click. A summary of the video doesn't. The video still has to prove the claim.
- Real screens. Use frames from the actual demo or B-roll as references, so the screen in the thumbnail is what the video shows.
- Text differs from the title and is three or four words.
- Titles that went with it: name the limitation, then the fix ("Convex has one big limitation. Daytona fixes it").
From the Build Your Own Convex thumbnail (October 2026), where he picked
[Convex logo] IS JUST A [elephant-as-O] POSTGRES WRAPPER? with a skeptical
face and an open hand:
- Put the doubt on the thumbnail and the promise in the title. The thumbnail asked the newcomer's question; the title ("Let's build a database!") said what the video does.
- A logo can be a letter. The model kept drawing the Postgres elephant as the O of POSTGRES. Mike preferred that to the logo beside the word. Don't fight a model's happy accident before showing it to him.
- Bigger text, always. He rejected a cleaner composite because the text was smaller: "bigger text generally better, easier to read, more impactful". Fill the text side of the frame.
- Stress one word with colour. To emphasise JUST he chose it in Convex
red over quotes. Recolour it in code rather than regenerating, so nothing
else moves: for each pixel, keep the alpha and pull it toward red
(
channel - alpha * (255 - red_channel)style), never a filled box, which leaves a dark rectangle around the word.
Keeping Mike's face
- A soft webcam frame as the main reference makes his face drift ("the face has changed a bit too much"). What held his likeness: grey out the face in the layout reference (so the model can't copy the soft one) and pass two sharp 4K photos from the cutout folder as identity references.
- Edits keep a face well but won't reliably remove text. To clear text from a draft, grey-box it first and ask the model to fill the hole.
- After any edit, look at the whole frame for side effects (a dark gradient crept into one corner of a BYOC edit).
Generating from Claude Code
Claude Code has no built-in image model, so use scripts/thumb.mjs
(Gemini 3 Pro Image through OpenRouter, about $0.14 an image):
set -a; source ~/dev/me/agent-skills/.env; set +a # OPENROUTER_API_KEY, never print it
node scripts/thumb.mjs t1.png p1.txt mike.png screen.png partner-logo.png
Copy the references into a working folder first (.work/thumbs/ref/ in the
video folder), generate the options in parallel, and tile them into one grid
with ffmpeg so Mike can compare at a glance. The final thumbnail goes up as a
1280x720 JPEG under 2 MB (sips -s format jpeg -z 720 1280).
Local Paths
Use these current local paths on Mike's machine:
| Purpose | Path |
|---|---|
| Mike cutout photo folder | ~/Library/CloudStorage/GoogleDrive-mike.cann@gmail.com/My Drive/Personal/Photos of Me/convex/Backgrounds Removed |
| Primary Convex symbol | ~/Assets/Images/symbol-color (1).png |
| Convex color logo | ~/Assets/Images/logo-color.png |
| Convex white wordmark | ~/Assets/Images/wordmark-white.png |
| Convex white symbol | ~/Assets/Images/symbol-white.png |
| Static hosting reference | references/static-hosting-thumbnail.md |
The Google Drive account folder can change. Use the absolute paths printed by
scripts/check-local-assets.sh instead of guessing or passing a literal ~ to
an image tool.
Preferred Mike References
Use the folder above. These files worked well in the static hosting session:
| File | Best use |
|---|---|
WIN_20250626_10_41_38_Pro.png |
Skeptical or "no dashboards" side-eye |
WIN_20250626_10_39_35_Pro.png |
Friendly/excited host-on-Convex idea |
WIN_20250701_07_35_49_Pro.png |
Excited, looking up at a concept |
WIN_20250701_07_36_01_Pro.png |
Smiling explainer pose |
WIN_20250701_07_34_53_Pro.png |
Looking right with gesture |
Prompt Patterns
Bad
Make a thumbnail about Convex hosting with Mike and some dashboard stuff.
This lets the model invent Mike, invent the logo, and create clutter.
Good
Use case: ads-marketing
Asset type: YouTube thumbnail edit, 16:9 landscape
Primary request: Create a polished version of the provided thumbnail image.
Keep Mike on the left, big "NO DASHBOARDS" text, blurred generic dashboard
panels with red X marks in the middle, and a glowing live hosting card on the
right.
Input image roles: Use the provided thumbnail as composition/style reference.
Use the visible Mike photo as identity reference. Use the visible Convex
colored swirl symbol as the exact brand/logo reference.
Required change: Replace any cube or hexagon mark on the right-side card with
the official Convex colored swirl symbol. The card can say "convex.site" and
"Live".
Constraints: Head and shoulders only. Preserve Mike's recognizable face and
black Convex cap. Keep the text exactly "NO DASHBOARDS". No real third-party
logos. No watermark.
Avoid: fake logo, misspelled text, extra words, cluttered UI, distorted face,
extra fingers, cheap collage look.
Static Hosting Recipe
Read references/static-hosting-thumbnail.md when the user asks for a thumbnail
like the Convex static hosting example or when the requested video is about
static hosting, convex.site, hosting without Vercel/Netlify/Cloudflare, SPA
fallback, CI deploys, custom domains, or update banners.
Checklist
- Loaded or inspected a Mike headshot from the local photo folder.
- Loaded or inspected the real Convex symbol or wordmark.
- Used the image model for the main thumbnail draft.
- Kept the visible text short and exact.
- Preserved Mike's recognizable head-and-shoulders identity.
- Avoided real third-party hosting provider logos unless Mike explicitly asked for them.
- Replaced any generated cube/hexagon logo with the real Convex swirl.