AI Thumbnail Generator
Generate scroll-stopping thumbnails with AI: a dramatic close-up face plus a bold hook headline in 9:16, 16:9 or 1:1. For YouTube, Shorts, Reels and ads.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
title,story,subreddit(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.15 per thumbnail = $150 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Thumbnail generated | Single result in the default dataset. | $0.15 |
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.0000125 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-08, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
title | The video title or story headline (e.g. an AITA/TIFU title). Drives emotion + hook text. | string |
story | Full story or script text for richer emotion detection and hook extraction. | string |
subreddit | If 'amitheasshole', the hook is fixed to 'AM I THE A-HOLE ?'. Otherwise informs hook style. | string |
aspectRatio | 9:16 for Shorts/Reels/TikTok, 16:9 for YouTube long-form, 1:1 for square. | string |
emotion | Force a facial emotion instead of auto-detecting from the text. | string |
hookText | Force the burned-in headline text. Leave empty to auto-derive from the title/story. | string |
gender | Bias the generated face, e.g. 'feminine' or 'masculine'. Leave empty for model default. | string |
burnText | Overlay the bold hook headline on the lower third. Turn off to get the raw face image only. | boolean |
openaiApiKey | Your OpenAI key for image generation (gpt-image-1). Kept private. Leave empty to get a labeled SAMPLE thumbnail-metadata record (no image is rendered and you are not charged) — add your key to render a real thumbnail PNG. | string |
imageModel | Image model name. Default gpt-image-1. | string |
imageQuality | gpt-image-1 quality: low / medium / high. | string |
imageBaseUrl | OpenAI-compatible images base URL. Default https://api.openai.com/v1. | string |
What you get
A structured dataset — each result includes fields like:
oktitleemotionhookTextaspectRatiooutputExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in AI Video & Content Studio
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
Social Metadata Generator
Generate platform-ready titles, captions, hashtags, SEO tags and a pinned comment for YouTube, TikTok, Reels, Shorts and X.
Hook & Virality Scorer
Score any title, hook or script for viral potential: 0-100 with a grade, per-dimension breakdown and rewrite tips. No AI key.
AI Viral Clip Cutter — Long Video to Shorts
Turn a long podcast, interview, or webinar into ranked short clips with AI-scored moments and word-synced captions for TikTok, Reels, and Shorts.
AI Text-to-Speech Voiceover
Turn any script into a natural AI voiceover audio file (MP3/WAV/Opus/AAC). Pick a voice, speed, and format. Good for faceless videos, IVR, and narration.
Video & Audio Transcriber — Word-Level + SRT/VTT
Transcribe any video or audio URL into text with word-level timestamps and ready SRT, VTT, and TXT files. Auto language detection, batch mode.
AI Character Reference Bank
Turn a text description into a consistent character reference set (portrait, 3/4, full-body, expressions) plus a reusable character-bible prompt. No code.
Where this tool sits
- Categories
- AI Video & Content Studio
AI Thumbnail Generator
Turn a title or a story into a thumbnail people actually click: an AI-generated emotional close-up face with a bold hook headline burned across the lower third. Built for YouTube, Shorts and Reels covers, TikTok, and ad creative, where the thumbnail does most of the work and you need a new one for every video.
How it works
It scans your title and story for emotional cues (betrayal, rage, shock, heartbreak, and a few others), picks the strongest match, and writes a short all-caps hook from the same text. That feeds a prompt to gpt-image-1, which renders a hyper-realistic face with deliberately empty space at the bottom. The image comes back text-free on purpose, then the hook is overlaid afterward with a real font so the type stays crisp instead of being mangled by the image model.
Input
You can run it with nothing but a title. Everything else is an override or a knob.
| Field | Required | Notes |
|---|---|---|
title | No* | The video title or story headline. Drives both the detected emotion and the hook. AITA/TIFU shorthand gets expanded automatically. |
story | No* | Full script or story text. Gives the emotion detection and hook extraction more to work with. |
aspectRatio | No | 9:16 (Shorts/Reels/TikTok, default), 16:9 (YouTube long-form), or 1:1 (square). |
emotion | No | Force the facial emotion instead of auto-detecting. One of betrayal, rage, shock, disgust, heartbreak, fear, guilt, defiance. |
hookText | No | Force the burned-in headline. Leave empty to derive it from the title or story. |
gender | No | Bias the face, e.g. feminine or masculine. Empty uses the model default. |
burnText | No | Overlay the hook on the image. Default true. Turn off to get the raw face only. |
openaiApiKey | No | Your OpenAI key for gpt-image-1. Bring your own. Marked secret. Leave it empty for a labeled SAMPLE run: you get one example thumbnail-metadata record so you can preview the output shape. No image is rendered, but the record is a dataset row and billing is per dataset row, so that preview still costs $0.15 (see Pricing). Add your key to render a real thumbnail PNG. |
imageQuality | No | gpt-image-1 quality: low, medium, or high. Default high. This is what moves your OpenAI bill. |
*At least one of title or story is needed, otherwise there's nothing to work from.
Output
One PNG per run, saved to the key-value store, with a record pushed to the dataset. The record includes output.imageUrl and output.imageKey for the file, plus emotion, hookText, aspectRatio, and size so you can see what it decided. If the text overlay fails for any reason, you still get the face image back without the headline rather than an error.
If you run without an openaiApiKey (the default keyless run), you get one clearly-labeled SAMPLE record instead — marked with _sample: true and a note explaining that no image was rendered. It carries the same fields (emotion, hookText, aspectRatio, size, imagePrompt) so you can preview the exact output shape before bringing your own key. It is still a dataset row, so it is billed at the normal $0.15.
Example
{
"title": "AITA for refusing to pay for my sister's wedding?",
"aspectRatio": "9:16",
"imageQuality": "high",
"openaiApiKey": "sk-..."
}
Pricing
$0.15 per dataset row, plus $0.0000125 each time a run starts, charged per GB of run memory — $0.00005 a run at this actor's default 4 GB.
The charge is per row written to the dataset, and this actor writes exactly one row per run either way. A run with your key writes the thumbnail record and costs $0.15. A keyless labeled SAMPLE run renders no image and calls no image API, but it still writes a row, so it also costs $0.15. Treat the sample as a paid preview of the output shape, not a free trial.
Pay per result, no subscription. The image generation runs on your own OpenAI key, so that usage is billed to you separately by OpenAI.
Notes
It needs an OpenAI key with gpt-image-1 access. Emotion detection is keyword-based, so it lands well on emotionally loaded story titles (relationship drama, AITA-style posts) and is less sure on dry or abstract ones. When auto-detection guesses wrong, set emotion and hookText directly.