video-thumbnails
Skill6 starsChanged 8 months agoApache-2.0View on GitHub
YouTube thumbnail workflow: one promise, frames from footage, short outlined text, feed-size previews, A/B variants. Use when a video needs a thumbnail.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- adamperlis/video-skillstheir own version, first seen Sep 28, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- adamperlis/video-skills★ 18same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository141 other files it gives its agents.
- AGENTS.mdAGENTS.md
- ad-bingSkill
- ad-frameworksSkill
- ad-googleSkill
- ad-linkedinSkill
- ad-metaSkill
- ad-redditSkill
- ad-tiktokSkill
- ad-xSkill
- ad-youtubeSkill
- ai-agent-designSkill
- ai-cost-finopsSkill
- ai-evals-designSkill
- ai-prompt-injection-defenseSkill
- ai-rag-patternsSkill
- analytical-reportSkill
- ats-optimizationSkill
- browser-backlink-submissionSkill
- browser-social-account-maintenanceSkill
- chef-budget-mealsSkill
- coaching-frameworksSkill
- code-review-lensesSkill
- code-reviewSkill
- content-auditSkill
- content-formatsSkill
- content-geoSkill
- content-groundingSkill
- content-humanizeSkill
- content-locale-humanize-arSkill
- content-locale-humanize-deSkill
- content-locale-humanize-esSkill
- content-locale-humanize-frSkill
- content-locale-humanize-hiSkill
- content-locale-humanize-itSkill
- content-locale-humanize-jaSkill
- content-locale-humanize-koSkill
- content-locale-humanize-ptSkill
- content-locale-humanizeSkill
- content-locale-humanize-thSkill
- content-locale-humanize-zhSkill
- content-translateSkill
- content-voiceSkill
- cover-letterSkill
- device-computer-automationSkill
- device-mobile-automationSkill
- document-exportSkill
- geo-visibility-auditSkill
- git-workflowSkill
- issue-diagnosisSkill
- learning-scienceSkill
- marketing-social-gtmSkill
- markup-landing-pageSkill
- octomind-cliSkill
- octomind-configSkill
- octomind-runtimeSkill
- octomind-supervisorSkill
- octomind-workflowSkill
- os-alpineSkill
- os-debianSkill
- os-fedoraSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 57
Keep text and faces out of the bottom-right corner (duration badge) and the bottom strip (progress bar).
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Overview
The thumbnail and the title are the whole pitch before anyone presses play. This skill is the video domain's thumbnail pipeline: decide the promise, get the best possible picture of it from the footage or a generated scene, put a real cut-out face or product on it, set two to five words of type with a renderer that measures and fits them, and check the result at the size people actually see it. It replaces drawing text onto frames with PIL or asking an image model to spell the headline, which give soft, misspelled, badly placed text.
Mental model
A thumbnail does one job: make one promise the video keeps, readable in under a second at about 360 px wide on a phone or 168 px in a sidebar.
- The picture carries the emotion or the stakes: a face, a result, a before/after, the product in use.
- The text adds what the title doesn't say. It never repeats the title.
- Contrast, size, and placement decide whether it survives the feed; detail does not survive.
The renderer is the video-thumbnail command, installed on PATH with the thumbnails capability (the same file is the bundled scripts/thumbnail.py, listed under Skill Resources). It needs python3 and an ffmpeg with libass, which it finds on its own, including Homebrew's keg-only ffmpeg-full. Fonts come with the capability in ~/.local/share/octomind/fonts. video-thumbnail render --help lists every option.
Rules
Specs (checked 2026-10)
| Surface | Size to render | Notes |
| YouTube long-form | --format youtube (1920x1080, under 2 MB) or youtube-4k (3840x2160) | 16:9, minimum 640 px wide, JPG or PNG. Desktop upload takes up to 50 MB, mobile 2 MB. Custom thumbnails need a verified channel |
| YouTube Shorts | --format shorts (1080x1920) | Custom Shorts thumbnails rolled out 2026-07-24 to Partner Program channels, desktop Studio only; elsewhere pick a frame |
| Vertical video with a 16:9 thumbnail | Keep the subject centered | YouTube auto-crops a 4:5 version for Home, Explore, Subscriptions |
| TikTok cover | --format tiktok (1080x1920) | Picked from a frame or uploaded in the app; the profile grid crops the center to about 3:4. Assume API posts can't set an uploaded cover |
| Instagram Reels cover | --format reels (1080x1920) | Frame or uploaded image; the profile grid crops the center to 3:4 (since January 2025) |
| LinkedIn video | --format linkedin (1920x1080) | Desktop upload option; ads take JPG/PNG up to 2 MB at the video's aspect |
| Square / portrait feed | --format square / portrait | 1080x1080, 1080x1350 |
What drives the click (descriptive studies, not proof of cause)
- Faces appear in 69% of 500 breakout thumbnails (80% of the top 50), usually filling about a third of the frame (vidIQ, 2026). A larger dataset (1of10, 2025) finds faces and no-faces perform about the same overall, with big differences by niche. Use a face when the person is the draw or the emotion is the story; use the result or the object when that is the promise.
- Readable emotion beats theatre: shocked faces are a small minority (5–11%); neutral, focused, and happy faces dominate.
- Text: 72% carry text, median 5 words, and "no text" is the single most common bucket. Default to 0–4 words. The renderer warns above 5 (6 for vertical covers).
- High contrast shows up in more than half of breakout thumbnails. One focal subject, one accent color.
- YouTube's own guidance: an easy-to-read font, rule of thirds, a relatable emotion, title and thumbnail working together, and shooting dedicated thumbnail photos during the shoot.
- Keep text and faces out of the bottom-right corner (duration badge) and the bottom strip (progress bar). The renderer's layouts already do; it warns when text reaches there.
Pipeline
- Promise. Write the one-line promise and the title first. The thumbnail shows the payoff, stakes, or tension; the text adds one beat the title leaves out ("I quit" + title "Why I left Google after 8 years").
- Background, in order of preference:
- A real frame.
video-thumbnail frames master.mp4 -o thumbs/frames --count 12writes 12 lossless candidates with timestamps andsheet.jpg. Viewsheet.jpgwithread_media_file, then open the shortlisted frames at full size and pick the sharpest, most expressive one; ask the user to choose when an image can't be read. - A dedicated thumbnail photo from the shoot.
- A generated scene:
generate_imagewithaspectRatio16:9 or 9:16,imageSize2K or 4K, and "no text, no letters" in the prompt. Pass real product photos or the person's photo asinputImagePathsto keep identity and packaging true. Never generate a real person's face from scratch.
- A real frame.
- Subject cut-out (optional, strong for faces and products):
uvx --python 3.12 --from "rembg[cpu,cli]==2.0.86" rembg i -m birefnet-portrait frame.png thumbs/subject.pngfor people,-m isnet-general-usefor products. The first run downloads the model, up to about 1 GB for BiRefNet. Check the edge on hair and fingers in the preview. - Render:
video-thumbnail render thumbs/frames/frame-07.png -o thumbs/a.jpg \
--text "I quit my job" --highlight quit --subject thumbs/subject.png --stroke 12 \
--layout left --title "Why I left Google after 8 years" --preview thumbs/a-preview.png- Check the preview (
--preview): the image at 360 px and 168 px on dark and light UI with the duration badge drawn in. View it withread_media_file; the text must read at 168 px. If an image can't be read, rely on the warnings and tell the user which preview to check and that legibility is unverified. - Variants. Make three for YouTube Test & Compare, each changing one variable: face vs object, text vs no text, or framing. Name them
a.jpg,b.jpg,c.jpg.
Renderer choices
| Choice | Options | Use |
--style | bold (caps, black outline, accent word), box (rounded text boxes), clean (sentence case on a darkened side) | Creator and entertainment / explainers and news / B2B and premium |
--layout | left, right, top, bottom, center | Text side; a --subject goes opposite (bottom-center for top/vertical) |
--highlight WORD | Repeatable | One accent word, usually the verb or the number |
--font | Poppins Black, Poppins ExtraBold, Anton, Archivo Black, Bebas Neue, or a brand font via --fontsdir | Keep one family per channel |
--darken, --grade | Gradient strength 0–1; pop or none | Raise --darken if the contrast warning fires |
--crop-x, --crop-y | 0–1 | Shift the crop when the source aspect differs |
The renderer measures each candidate line with libass, picks the split that allows the largest type, avoids lines ending on "I", "the", or "my", and stacks lines on a cap/descender grid. Pass the text plainly; don't add line breaks.
Policy
- YouTube removes thumbnails that mislead viewers about the content, are sexual, shock with violence or gore, use vulgar text, or impersonate. Borderline ones get age-restricted or removed; repeat violations can cost custom thumbnails for 30 days.
- Egregious clickbait (a promise the video doesn't keep, especially news and current events) is enforced with removals.
- AI-generated or AI-edited thumbnails need no synthetic-content label, but the misleading and impersonation rules still apply.
- Thumbnails on ads also fall under Google Ads clickbait rules: no "you won't believe", no fake shock, no fear of negative life events.
- Sponsored content: when the image itself endorses a product, the disclosure must be visual and on the image (FTC).
Examples
Example 1: text by the image model
❌ generate_image with the prompt "YouTube thumbnail, man shocked, big yellow text I QUIT MY JOB". The letters come out soft at feed size, the line split is arbitrary, and a variant with different text means a new image.
✅ Generate or pick the scene without text, cut out the face, and set "I quit" with video-thumbnail render ... --highlight quit. A text variant is one more command.
Example 2: title repeated
❌ Title "How we cut churn in half", overlay "HOW WE CUT CHURN IN HALF". The renderer warns; the thumbnail adds nothing.
✅ Overlay "One email" over the dashboard showing the drop: the title says what, the thumbnail shows the surprising how.
Example 3: Reels cover outside the grid crop
❌ Text placed at the very top of a 1080x1920 cover: the 3:4 profile grid cuts it off.
✅ --format reels --layout top keeps the text inside the centered 3:4 area; the preview shows both the full frame and the grid crop.
Checklist
- One promise; overlay text adds to the title instead of repeating it; 0–5 words.
- Background from a real frame, a shoot photo, or a text-free generated scene; real faces and products not invented.
- Rendered with
video-thumbnailat the platform format; no font, contrast, badge, or grid-crop warnings left unexplained. - Preview checked at 168 px, or reported to the user as unchecked.
- Three single-variable variants for YouTube Test & Compare when the channel can use it.
- Nothing misleading, sexual, gory, or impersonating; sponsored images carry a visual disclosure.
- Files saved under
./video-out/<slug>/thumbs/(variants, previews, the chosen frame, the cut-out).
Composition / References
video-hooks— the promise the thumbnail and the first three seconds share.video-spec-sheet— platform specs and safe zones for the video itself.video-editing— finding the strongest moments; the thumbnail frame often comes from the hook.- YouTube: add video thumbnails
- YouTube: Test & Compare
- YouTube: thumbnail best practices
- YouTube thumbnail policy
- YouTube Studio custom thumbnail updates, 2026-07-24
- vidIQ thumbnail study, 2026
- rembg
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

