YouTube Thumbnails With ChatGPT: The Prompt I Use
My face, one object, three words. The exact prompt I give ChatGPT's image model, the face photo rule that stops it drawing a stranger, and why I put the headline on with a real font afterwards instead of letting the model spell.
For a long time my thumbnails were the last thing I did and the first thing people judged. I would finish a video, open a design tool at eleven at night, and produce something that looked like a doctor made it. Which is what I am, and which is the problem.
The thumbnail is not decoration. On YouTube the thumbnail and the title are the ad for the video. If the ad is weak, the video does not get the click, and a video nobody clicks may as well not exist.
What changed is that the image model behind ChatGPT got good enough to draw me. Not a generic bearded man. Me. The catch is that it only does that if you feed it enough of your face and tell it, in plain words, not to generalise. And it still cannot spell reliably, so I stopped asking it to.
This guide is the system I run now. A chat window version you can do today with five photos, and the script version that renders a 1280 by 720 file with the headline set in a real font. Same prompt underneath both.
The three levels
You finish the video, open a design tool late at night, drag your face onto a coloured background, and hope.
You have a folder of five face photos and one prompt. You describe the video in one line, pick an expression, pick three words, and get four options in a few minutes. You put the words on with a real font.
The script runs from a job file. New video title in, four finished 1280 by 720 thumbnails out, headline already set, opened in Preview for you to pick. An agent drafts the three words from the title and you only choose.
The mental model
Describe yourself in words and ask the model for a thumbnail with the title on it.
Feed it five photos of your face, one expression, one object and a tight crop. Let it draw the picture. You put the words on afterwards.
| Role | Talks to you | Job |
|---|---|---|
| The face | Always | Five or more reference photos on disk, named in the prompt as the exact same person |
| The expression | One per thumbnail | One specific phrase from the list, never 'happy' or 'excited' |
| The object | One | The thing the video is about, beside the face at chest height |
| The headline | After the image | Three words or fewer, ALL CAPS, real font, readable at phone width |
Five photos, one prompt, three words
1. Build the face folder
Save at least five photos of yourself into one folder: a straight headshot, a three quarter angle, two close ups, and one with a strong expression. Files on disk, not pasted into a chat. With one or two photos the model averages you into a generic face. With five or more from different angles it locks on. This is the single biggest difference between 'a bearded guy' and me.
2. Write the three words
Before any image, brainstorm five to eight headlines of one to three words, all caps. Two words is ideal. The angle is one of: curiosity gap, controversy, result, shock, authority. Numbers, money and negatives ('DON'T', 'STOP', 'NEVER') pull hardest. Test each one at phone size in your head. If it needs four words it is a title, not a thumbnail.
3. Pick one expression
Vague expressions underperform specific ones. I choose one phrase and paste it verbatim: 'wide excited open mouth smile showing teeth, eyebrows raised' for reveals; 'mouth slightly open in surprise, eyes wide' for curiosity; 'smug confident smirk with one eyebrow raised' for secrets; 'confident closed mouth smile, eyes warm' for authority. If I do not want hands in the shot I say 'NO HANDS VISIBLE, head and upper shoulders only', because otherwise the model invents fingers.
4. Compose the prompt
The prompt below has a fixed order: format, the likeness block, clothing and crop, expression, the object beside me, background, style, and an avoid list. The likeness block names my actual features and says 'this is a specific real person, do not generalise'. A tight head and shoulders crop with the face filling about half the frame gives the model the most face data to work with. Wide shots drift.
5. Generate a small batch
Four images, not one. In the chat window that is four separate asks with the same prompt and the photos attached each time. In the script it is four prompts in one job file. Then look at them at the size a phone shows them. Likeness first, readability second, emotion third.
6. Put the headline on with a real font
I stopped asking the model to spell. The finished image gets the three words laid on in Anton or Archivo Black, white with a thin dark outline, top or bottom anchored, at most 92 percent of the width. That one step is what makes it look designed instead of generated. In the chat window version you do this in any editor. In the script it is a headline spec in the job file.
7. Export at 1280 by 720
YouTube wants 16 by 9. The image model I use renders 3 by 2, so the script letterboxes the reference first and trims the render back to 16 by 9, biased to keep the top where the headline sits. If you are doing it by hand, crop to 1280 by 720 and check nothing important was cut off the sides.
Starter prompts
Paste these as written. They are short on purpose, because the long ones drift.
YouTube thumbnail, 16:9 landscape. CRITICAL CHARACTER LIKENESS: the subject is the exact same person shown in ALL the attached face reference photos. Match his face EXACTLY: [describe skin tone, hair, beard or no beard, glasses, face shape]. Keep the same facial proportions, eye shape and skin tone as the references. Do not generalise. This is a specific real person and his exact likeness must be preserved. He is wearing [clothing]. Tight head and shoulders crop, face filling the central half of the frame, facing camera. NO HANDS VISIBLE. Expression: [paste one expression phrase]. To his [left or right] at chest level is [one object the video is about], large and clearly readable. Background: [dark navy gradient with a soft blue glow]. Style: clean high impact YouTube thumbnail, saturated colour, dramatic rim lighting, no text anywhere in the image. Avoid: distorted face, generic face, hands visible, extra fingers, any text or letters, blurry logos.
My video title is "[title]". Give me eight thumbnail headlines of one to three words, ALL CAPS, each tagged with its angle (curiosity gap, controversy, result, shock, authority). Prefer numbers, money and negatives. Reject anything that needs a fourth word or that would not be readable at 320 pixels wide. Then pick your top two and say why in one line each.
Here are four thumbnails for "[title]". For each one score likeness to the reference photos, readability at phone size, and whether the expression matches the angle [angle]. Rank them and tell me the one thing to change on the top pick. Do not suggest adding more elements.
From the chat window to the script
The chat window is fine for one thumbnail. The moment you want four per video and a headline in a real font, the same prompt runs better as a script against the image API. Three things change.
References become file paths
Instead of attaching photos to a message, the script sends them with the prompt through the image edits endpoint with input fidelity set high. The face folder stays on disk and is reused for every video.
The headline becomes a spec
A small JSON block: the lines, a font (anton, archivo or bebas), an anchor (top, center or bottom), a stroke colour, and a maximum width fraction. The script renders it onto the finished image. The model never sees the words.
Output is fixed at 1280 by 720
The script pads the reference to the model's 3 by 2 frame so nothing is sliced off the sides, then trims back to 16 by 9 keeping the top. You get a JPEG named by slug and number, opened in Preview.
Give it to your agent, three ways
Same skill, three worlds. Pick the one you actually use. The skill file at the bottom of this page is the instructions in every case.
An agent with connectors (Claude Desktop, Claude Code, Grok Bot)
Claude does not generate images itself, but Claude Code can run the script and review the results. Give it the skill below and the face folder path.
- Put the face photos in one folder and export the image API key in your shell as OPENAI_API_KEY (or an OpenRouter key as OPENROUTER_API_KEY, which the script prefers if both exist).
- Save the skill file from the bottom of this page as a skill. Say "make my thumbnail for [title]".
- The agent drafts the three words, composes the prompt, writes a job file, runs the generator, and opens the results. It then reads each output and ranks them.
- Grok Bot and Hermes: same skill, same script. They need a shell and the same environment variable.
# job.json
{
"slug": "grok-bot",
"refs": ["references/face/1.jpg", "references/face/2.jpg", "references/face/3.jpg", "references/face/4.jpg", "references/face/5.jpg"],
"prompts": ["<the prompt, expression 1>", "<the prompt, expression 2>"],
"headline": {"lines": [[{"t": "I FIRED", "fill": "white"}], [{"t": "MY EDITOR", "fill": "yellow"}]], "font": "anton", "anchor": "top", "stroke": "#101010"}
}
# run
python3 scripts/generate.py --job job.json --out ./thumbs --fit preserve --openChatGPT (a project or a custom GPT)
This is the native world. ChatGPT's image generation is the same model family the script calls, so the chat window works on its own with one discipline: attach the photos every time.
- Create a ChatGPT Project called Thumbnails and paste the skill below as its instructions.
- Start a new chat inside it, attach all five face photos, and paste the prompt with your details filled in. Ask for one image. Repeat in a fresh message for each expression so it does not blend them.
- Download the images and set the three words in any editor with Anton or Archivo Black, white with a thin dark outline. Do not ask the model to add text.
- Crop to 1280 by 720. Check the sides, the model's frame is narrower than YouTube's.
Anything with an API (a token and a curl call)
If your agent only speaks HTTP, the image edits endpoint takes the prompt plus the reference files as multipart form data. Key in an environment variable, never in the prompt.
- Export OPENAI_API_KEY in your shell.
- Send the prompt and the face files to the edits endpoint with input_fidelity high and a 16 by 9 or 3 by 2 size, quality high, n=1. Repeat per expression.
- Decode the base64 image in the response, lay the headline on with a real font, resize to 1280 by 720.
- Everything else in the skill is unchanged. The prompt is model agnostic.
export OPENAI_API_KEY=... # never in the prompt curl -s https://api.openai.com/v1/images/edits \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -F model=gpt-image-2 -F quality=high -F n=1 -F size=2048x1152 -F input_fidelity=high \ -F "prompt=$(cat prompt.txt)" \ -F image[]=@references/face/1.jpg -F image[]=@references/face/2.jpg \ -F image[]=@references/face/3.jpg -F image[]=@references/face/4.jpg -F image[]=@references/face/5.jpg \ | jq -r '.data[0].b64_json' | base64 -d > raw.png
Failure modes
Every one of these has happened to me or to someone I set this up for.
| Failure | Fix |
|---|---|
| Looks like a generic man with my beard | Add face references until you have five from different angles, and strengthen the likeness block |
| Model spelled the headline wrong or bent it | Remove all text from the prompt and set the words in a real font afterwards |
| Six fingers on the hand holding the phone | Say NO HANDS VISIBLE or accept a higher reject rate on pointing shots |
| Headline cut off at the edge | Letterbox the reference before generating, keep the words inside 92 percent of the width |
| Four words looked fine on the desktop, mush on the phone | Three words maximum, two is ideal, judge at 320 pixels |
| Three objects, a logo and a chart in one frame | One object. The face and the words carry the rest |
| Pasted photos into the chat and the script said no references found | References must be files on disk, a chat paste is not a file |
The tools I use for this
| Tool | What it is for here | |
|---|---|---|
| ChatGPT | The image model that draws me. Chat window for one, API for a batch. | no link, just use it |
| Claude | Drafts the three words, writes the job file, runs the script and ranks the output. | Open |
| Anton, Archivo Black, Bebas Neue | Free fonts for the headline pass. The model never spells. | no link, just use it |
| Tella | Where the video itself gets recorded; the thumbnail exists before this is done. | Get it |
The free skill
It is the thumbnail workflow I run before every upload, written as instructions for an agent. It checks the face folder exists on disk, brainstorms headlines of three words or fewer, picks one expression from a short list, composes the prompt with the likeness block, generates a small batch, then lays the headline on with a real font and reviews the results for likeness, readability at phone size and emotional match.
--- name: chatgpt-thumbnails description: Makes a YouTube thumbnail the way I make mine: five face reference photos on disk, a likeness block that stops the model drawing a stranger, one precise expression, one object, a headline of three words or fewer set afterwards in a real font, exported at 1280x720. Trigger on "make my thumbnail", "thumbnail for this video", "thumbnail variations", "redo this thumbnail with my face". --- # Thumbnail With ChatGPT You are producing the ad for a video. The thumbnail and the title are what gets the click. You make the picture with the image model and you set the words separately. You never ask the model to spell. ## Before you start 1. Ask for the video title and the angle if not given. Angles: curiosity gap, controversy, result, shock, authority. 2. Check the face folder exists ON DISK and holds at least five photos from different angles (headshot, three quarter, two close ups, one strong expression). If fewer than five, stop and ask for more. If the user pasted photos into the chat, stop: a chat paste is not a file. Ask them to drop the files into a folder. 3. If the video is about a tool, product or logo, ask for that asset as a file too. A text description of a logo produces a generic approximation. ## Step 1: The three words Brainstorm eight headlines, one to three words, ALL CAPS. Two words is ideal. Tag each with its angle. Prefer numbers, money and negatives (DON'T, STOP, NEVER). Reject anything that needs a fourth word or would not be readable at 320 pixels wide. Present the top two and let the user pick. ## Step 2: One expression Pick ONE and use the full phrase in the prompt, never a single adjective: - reveal or "this is amazing": wide excited open mouth smile showing teeth, eyebrows raised - curiosity or "wait, what": mouth slightly open in surprise, eyes wide, eyebrows raised - secret or "I know something": smug confident smirk with one eyebrow raised, slight head tilt - authority or tutorial: confident closed mouth smile, looking directly at camera, eyes warm Unless the shot needs hands, add "NO HANDS VISIBLE, head and upper shoulders only". ## Step 3: Compose the prompt Fixed order. Fill every bracket with a real specific. ``` YouTube thumbnail, 16:9 landscape. CRITICAL CHARACTER LIKENESS: the subject is the exact same person shown in ALL the attached face reference photos. Match his face EXACTLY: [skin tone, hair, beard or none, glasses, face shape]. Keep the same facial proportions, eye shape and skin tone as the references. Do not generalise. This is a specific real person and his exact likeness must be preserved. He is wearing [clothing]. Tight head and shoulders crop, face filling the central half of the frame, facing camera. NO HANDS VISIBLE. Expression: [the full phrase]. To his [left/right] at chest level is [one object the video is about], large and clear. [If a logo file exists: use the [name] reference exactly.] Background: [dark colour gradient with a soft glow]. Style: clean high impact YouTube thumbnail, saturated colour, dramatic rim lighting, no text anywhere in the image. Avoid: distorted face, generic face, hands visible, extra fingers, any text or letters, blurry logos. ``` One object. Never a collage. No text in the image, ever. ## Step 4: Generate a batch Four images per video, one expression or one background per image. Chat window: a fresh message per image with all five photos attached each time. Script: one job file with four prompts and the refs array, run `generate.py --job job.json --fit preserve --open`. ## Step 5: Headline in a real font Lay the chosen words on the finished image with Anton, Archivo Black or Bebas Neue. White (or one accent colour on the second line), thin dark outline, anchored top or bottom, no wider than 92 percent of the frame. In the script this is the `headline` spec in the job file. In a chat workflow, do it in any image editor. ## Step 6: Export and review Output is 1280x720. The image model renders 3:2, so check nothing important was cut off the sides; the script letterboxes the reference and trims back to 16:9 keeping the top. Review each result at phone size and report, per image: 1. Likeness: does it look like the reference person, or a generic version? 2. Readability: are the words legible at 320 pixels wide? 3. Emotion: does the expression match the angle? Rank them. Give one change for the top pick. Never suggest adding more elements. ## Fixes - Likeness off: more face references, name the features that drifted, tighter crop. - Wrong text: remove every mention of text from the prompt; set it with a font. - Bad hands: NO HANDS VISIBLE, or accept a higher reject rate on pointing shots. - Logo wrong: pass the actual file and say "use the [name] reference exactly". - Headline clipped: keep it inside 92 percent of the width, letterbox before generating.
What done looks like at thirty days
- A face folder with five or more photos exists and every thumbnail uses it
- Every thumbnail this month was generated before the video was uploaded
- Headlines are three words or fewer and set in a real font
- You picked from a batch of four at least three times
- Nobody had to ask who the person in the thumbnail was
- The prompt lives in a file you can hand to an agent
Want the whole YouTube packaging system, not just the picture?
Inside the AI CEO Lab the Content Engine module covers the title, the thumbnail and the first line together, with the research that tells you which of the three is actually broken.