@kolbo/mcp 1.81.6 → 1.81.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skill/GENERATED.md +1 -1
- package/skill/SKILL.md +13 -9
- package/skill/VERSION +1 -1
- package/skill/references/workflows/thumbnails.md +256 -72
package/package.json
CHANGED
package/skill/GENERATED.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AUTO-GENERATED — do not edit
|
|
2
2
|
|
|
3
|
-
This tree is mirrored from kolbo-code@
|
|
3
|
+
This tree is mirrored from kolbo-code@beae0e9, the single source of truth.
|
|
4
4
|
Canonical source: packages/opencode/skills/kolbo/
|
|
5
5
|
Distribution: .github/workflows/sync-skill-to-plugin.yml
|
|
6
6
|
|
package/skill/SKILL.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
version: 0.9.
|
|
2
|
+
version: 0.9.10
|
|
3
3
|
name: kolbo
|
|
4
4
|
description: |
|
|
5
5
|
Generate, edit, analyze, and direct creative media through Kolbo AI: images,
|
|
@@ -300,14 +300,6 @@ Four surfaces show the same job. Use this map — never invent a fifth:
|
|
|
300
300
|
|
|
301
301
|
**Checking status — NEVER poll in a loop.** `get_generation_status` takes `wait=true` (blocks server-side until done, ~3 min) and `generation_ids` (check MANY generations in ONE call — returns `all_done` + which are still running). One `wait=true` call replaces any polling loop: check ALL in-flight ids in ONE call, never one by one, never without `wait`. If it comes back with some still processing, call it ONCE more with `wait=true` and the remaining ids.
|
|
302
302
|
|
|
303
|
-
**🛑 Runaway-loop guard — ONE generation per requested item.** When the user asks for **one specific change**, the answer is **a single tool call**. After URLs return, **stop**. Surface and wait. You are NOT allowed to:
|
|
304
|
-
- Fire the same tool 3+ times in a single turn unless the user explicitly asked for "N variations".
|
|
305
|
-
- Re-fire because you think the result might not be exactly what the user wanted.
|
|
306
|
-
- Auto-retry on success.
|
|
307
|
-
- Fire 5+ parallel `generate_video*` calls speculatively.
|
|
308
|
-
|
|
309
|
-
**Only re-fire when:** user explicitly asked for variations with a count, OR previous call returned `failure.retryable === true` (ONE retry), OR previous call returned `completed` but `urls.length === 0` (ONE retry).
|
|
310
|
-
|
|
311
303
|
**Detecting failure — a generation can fail three ways. Treat ALL as failure:**
|
|
312
304
|
|
|
313
305
|
1. **Tool returns `error`** — explicit. Surface, suggest retry, log `generation_id`.
|
|
@@ -368,6 +360,18 @@ Write each session's `session_id` + plan name into `.kolbo/production.md` `### S
|
|
|
368
360
|
|
|
369
361
|
**Parameter gotcha:** `num_images` (1–4, same prompt different seeds) on `generate_image` vs `scene_count` (1–8, distinct prompt per scene) on `generate_creative_director`. **Never pass `num_images` to Creative Director.**
|
|
370
362
|
|
|
363
|
+
## 🛑 Runaway-Loop Guard — ONE Generation per Requested Item (CRITICAL)
|
|
364
|
+
|
|
365
|
+
When the user asks for **one specific change**, the answer is **a single tool call**. After URLs return, **stop**. Surface and wait.
|
|
366
|
+
|
|
367
|
+
You are NOT allowed to:
|
|
368
|
+
- Fire the same tool 3+ times in a single turn unless the user explicitly asked for "N variations".
|
|
369
|
+
- Re-fire because you think the result might not be exactly what the user wanted.
|
|
370
|
+
- Auto-retry on success.
|
|
371
|
+
- Fire 5+ parallel `generate_video*` calls speculatively.
|
|
372
|
+
|
|
373
|
+
**Only re-fire when:** user explicitly asked for variations with a count, OR previous call returned `failure.retryable === true` (ONE retry), OR previous call returned `completed` but `urls.length === 0` (ONE retry).
|
|
374
|
+
|
|
371
375
|
## ⚠️ Editing an Existing Video → ONE Call, Not Frames-First (CRITICAL)
|
|
372
376
|
|
|
373
377
|
Existing video → modify → **single `generate_video_from_video` call** with source video URL + edit prompt.
|
package/skill/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.9.
|
|
1
|
+
0.9.10
|
|
@@ -5,113 +5,297 @@ channel art**: "thumbnail for my video", "YouTube cover", "Shorts cover", "make
|
|
|
5
5
|
clickable", "higher CTR".
|
|
6
6
|
|
|
7
7
|
A thumbnail is not a nice image at small size. It is a different craft with a different
|
|
8
|
-
success test: **it is judged at ~
|
|
8
|
+
success test: **it is judged at ~168px inside a scrolling feed, next to a hundred others.**
|
|
9
9
|
Everything below follows from that.
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
##
|
|
14
|
-
|
|
15
|
-
Every thumbnail that works has exactly these, in this order of importance.
|
|
16
|
-
|
|
17
|
-
### 1. ONE hero subject — 40–70% of the frame
|
|
13
|
+
## ⚠️ Two things to get right before advising anyone
|
|
18
14
|
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
**1. The metric is watch time, not clicks.** YouTube's own A/B thumbnail test optimises
|
|
16
|
+
"for overall watch time over other metrics, like click-through rate." A thumbnail that
|
|
17
|
+
wins the click and loses the viewer *loses the test*. This is the mechanical reason the
|
|
18
|
+
shock-face era ended. Never promise something the video does not deliver — it is both a
|
|
19
|
+
spam-policy violation ("malicious clickbait" names thumbnails explicitly) and a test loss.
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
**2. Most thumbnail statistics online are fabricated.** This topic is saturated with
|
|
22
|
+
AI-generated SEO spam inventing authoritative-looking numbers ("47.3% of creators…",
|
|
23
|
+
"9% vs 4% CTR study…", "70% higher CTR for dark thumbnails"). Traced individually, they
|
|
24
|
+
have no source. **Do not quote a thumbnail statistic to a user unless it is in this file.**
|
|
25
|
+
Everything below is graded: **[A]** real study/primary source · **[A?]** real study, but
|
|
26
|
+
its page could not be opened directly — figures corroborated only via secondary quotes,
|
|
27
|
+
so treat as directional, not exact · **[B]** credible practitioner claim · **[C]** craft
|
|
28
|
+
convention, no data.
|
|
26
29
|
|
|
27
|
-
|
|
30
|
+
Also useful to know: CTR *falling* as a video spreads is normal, not failure — early
|
|
31
|
+
impressions come from subscribers, then Browse/Suggested reach cold viewers. Half of all
|
|
32
|
+
channels sit between **2% and 10% CTR**. **[A]**
|
|
28
33
|
|
|
29
|
-
|
|
30
|
-
saturated accent against its complement. **Mid-tone on mid-tone is the number-one
|
|
31
|
-
unreadable-thumbnail failure.** Muted, tasteful palettes lose in a feed.
|
|
32
|
-
|
|
33
|
-
### 3. Text — 2 to 4 words, maximum
|
|
34
|
-
|
|
35
|
-
- Quote the exact words in the prompt: `render only this text: "STOP DOING THIS"`.
|
|
36
|
-
- Topmost layer, above every element and effect.
|
|
37
|
-
- Roughly **35–45% of the canvas width**. Heavy condensed sans.
|
|
38
|
-
- White or a single accent colour with a **thick dark outline or a solid backing bar** —
|
|
39
|
-
raw text on a busy image is illegible small.
|
|
40
|
-
- Upper or lower third. **Never across the face.**
|
|
41
|
-
- Forbid everything else explicitly: `no other text, no taglines, no watermark, no logo,
|
|
42
|
-
no captions, no placeholder text`.
|
|
34
|
+
---
|
|
43
35
|
|
|
44
|
-
|
|
45
|
-
three words on the image and tell them the rest belongs in the video title. For brand
|
|
46
|
-
names, spell them letter-by-letter in the prompt and raise quality when the type is small.
|
|
36
|
+
## The four layers
|
|
47
37
|
|
|
48
|
-
|
|
49
|
-
|
|
38
|
+
### 1. ONE hero subject
|
|
39
|
+
|
|
40
|
+
A face with one **legible** emotion, or a single object caught mid-action. Crop tight.
|
|
41
|
+
|
|
42
|
+
**Faces scale with performance.** In a study of 500 breakout videos: 69% used a face,
|
|
43
|
+
rising to 75% of the top 100 and **80% of the top 50**. Face occupies about **one third
|
|
44
|
+
of the frame** in that top cohort. **[A?]** — the direction (faces matter, and matter more
|
|
45
|
+
at the top) is safe; the exact percentages are not verified at source.
|
|
46
|
+
|
|
47
|
+
**The exaggerated shocked face is dead as a default.** Only ~5% of those breakouts used
|
|
48
|
+
an exaggerated expression; 6% of the top 50. MrBeast's team A/B tested ~30 videos
|
|
49
|
+
open-mouth vs closed-mouth — **every closed-mouth version produced higher watch time**,
|
|
50
|
+
and they changed the channel's house style permanently. **[A]**
|
|
51
|
+
|
|
52
|
+
So: **a clear face beats a wild face.** Direct the expression to *one* readable emotion —
|
|
53
|
+
closed-mouth determination, a genuine restrained smile, focused concentration, real
|
|
54
|
+
scepticism. Direct eye contact into the lens, unless the gaze is deliberately pointing at
|
|
55
|
+
the subject. Forbid in the prompt: gaping "O" mouth, bulging eyes, strained forehead,
|
|
56
|
+
raised chin, any look of discomfort or effort.
|
|
57
|
+
|
|
58
|
+
**Legibility test:** at 168×94, can someone name the emotion in under a second?
|
|
59
|
+
|
|
60
|
+
**Faces are not mandatory** — 31% of breakouts had none. If the subject is a tool, an
|
|
61
|
+
interface, or a generated frame, the object can be the hero.
|
|
62
|
+
|
|
63
|
+
Kill on sight: three competing focal points, a floating UI panel over an abstract
|
|
64
|
+
gradient, "a person at a desk". If the concept has no surprise, wit, or impossibility in
|
|
65
|
+
it, invent harder before generating.
|
|
66
|
+
|
|
67
|
+
### 2. Separation — luminance first, hue second
|
|
68
|
+
|
|
69
|
+
**Greyscale test: desaturate the thumbnail. If the subject stops separating from the
|
|
70
|
+
background, no palette will save it.** Complementary pairs (orange/teal, blue/orange)
|
|
71
|
+
work mostly because they *also* carry a luminance gap.
|
|
72
|
+
|
|
73
|
+
- **Three dominant colours maximum, text included.** **[B]**
|
|
74
|
+
- **Restrain saturation.** The over-saturated HDR/clarity look — "exaggerated vibrancy,
|
|
75
|
+
bright lighting and sharp contrast" — is now documented as the visual signature of
|
|
76
|
+
AI-generated imagery, inherited from advertising imagery in training data. **[A]**
|
|
77
|
+
Push *luminance* contrast hard; keep saturation on one or two accent elements only.
|
|
78
|
+
- **Check on both YouTube themes.** The UI is near-white or near-black with red accents.
|
|
79
|
+
A dark vignette that separates your subject in dark mode can vanish in light mode.
|
|
80
|
+
Saturated red as a dominant field reads as UI chrome, not content.
|
|
81
|
+
- A single-hue thumbnail is *not* automatically weak — Kurzgesagt and MKBHD ship
|
|
82
|
+
near-monochrome successfully. What fails is a single hue with no luminance separation.
|
|
83
|
+
|
|
84
|
+
### 3. Text — often none at all
|
|
85
|
+
|
|
86
|
+
The real distribution among breakout thumbnails: **28% had no text** (the largest single
|
|
87
|
+
group), **24% had 1–3 words**, median among those that had any was 5. **[A?]** Over half
|
|
88
|
+
carried three words or fewer. The ubiquitous "3–5 bold words" advice describes a minority.
|
|
89
|
+
|
|
90
|
+
- **Drop text entirely** when the image already states the promise and the title carries
|
|
91
|
+
the specifics. Text is a crutch for a thumbnail that hasn't found its image.
|
|
92
|
+
- **Three words maximum** when used. Never repeat the title — the title is right next to
|
|
93
|
+
it. Text should add the *second half* of an idea the image starts.
|
|
94
|
+
- Quote the exact words in the prompt: `render only this text: "…"`, and forbid the rest:
|
|
95
|
+
`no other text, no taglines, no watermark, no logo, no captions, no gibberish letters`.
|
|
96
|
+
- Heavy-weight sans, one typeface. Cap height ≈ **12–15% of frame height**.
|
|
97
|
+
- **Always** an outline, drop shadow, or solid colour block behind it.
|
|
98
|
+
- Placement: top third or the side opposite the face. **Never the bottom-right quadrant.**
|
|
99
|
+
- Let the subject overlap one letter slightly — instant depth.
|
|
100
|
+
|
|
101
|
+
Long strings come back mangled from every image model. If words garble twice, generate the
|
|
102
|
+
plate **text-free** and set type in the Canvas tool or in HTML — a clean plate plus real
|
|
103
|
+
type beats a third mangled attempt. Logos are the same: **image models cannot render a
|
|
104
|
+
real brand mark.** Generate the plate without it and composite the actual logo file.
|
|
50
105
|
|
|
51
106
|
### 4. Platform-safe composition
|
|
52
107
|
|
|
53
|
-
|
|
|
108
|
+
| Zone | Rule |
|
|
54
109
|
|---|---|
|
|
55
|
-
| **
|
|
56
|
-
| **
|
|
57
|
-
| **
|
|
110
|
+
| **Bottom-right corner** | Duration chip sits here. Nothing important. |
|
|
111
|
+
| **Bottom edge, full width** | Red progress bar on partially-watched videos. Keep critical content ≥40px off the bottom (at 1280×720 scale). |
|
|
112
|
+
| **Overall safe area** | Everything load-bearing inside the centre ~1100×620 of a 1280×720 canvas. |
|
|
113
|
+
| **9:16 — Shorts/Reels/TikTok** | Must survive a **centre-square crop** (grids and cross-posts crop vertical media to the middle). Keep the top ~15% and bottom ~20% clear of platform UI. |
|
|
114
|
+
| **Validate at** | **168×94 px** — the desktop suggested-videos render size. Not 1280×720. |
|
|
58
115
|
|
|
59
|
-
**
|
|
60
|
-
|
|
116
|
+
**File spec (updated — most guides are stale):** YouTube now recommends **3840×2160**,
|
|
117
|
+
minimum width 640px, file cap **50 MB** on desktop. Driven by TV overtaking mobile as the
|
|
118
|
+
primary US YouTube device in Feb 2025. **Export at 4K; design for 168px.** **[A]**
|
|
61
119
|
|
|
62
120
|
---
|
|
63
121
|
|
|
64
122
|
## Model choice
|
|
65
123
|
|
|
66
|
-
Text fidelity is the
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
124
|
+
Text fidelity is the constraint. `gpt-image-2` is the strongest for type — use
|
|
125
|
+
**quality: medium** (its sweet spot) or high, and it handles **Hebrew** notably better
|
|
126
|
+
than the alternatives. `nano-banana-2` is strong on cinematic people but weak on text.
|
|
127
|
+
For a text-free plate, either is fine and the cheaper one wins.
|
|
128
|
+
|
|
129
|
+
**Field result (Aug 2026, head-to-head, same prompt/refs/1K):** `nano-banana-2` beat
|
|
130
|
+
`gpt-image-2` on BOTH photorealism (looked like a real studio photo, not a render) and
|
|
131
|
+
reference-mark fidelity — and rendered a short Hebrew headline + Latin badge cleanly.
|
|
132
|
+
The "weak on text" caveat applies to long/dense copy, not a 3-word headline. When a
|
|
133
|
+
thumbnail is a photographic person + short text + referenced logos, run both models
|
|
134
|
+
once and pick — do not assume gpt-image-2 wins by default.
|
|
135
|
+
|
|
136
|
+
Lock the host with a **character Visual DNA** (`workflows/visual-dna.md`) so every
|
|
137
|
+
thumbnail in a series is the same person — and check you are using the DNA of the person
|
|
138
|
+
*as themselves*, not a costumed character DNA built for a film shoot.
|
|
139
|
+
|
|
140
|
+
## Kolbo brand-asset kit — reuse these, do not rediscover them
|
|
141
|
+
|
|
142
|
+
Learned the hard way (Time Machine tutorial thumbnail, Aug 2026): re-deriving logo
|
|
143
|
+
files and the right Visual DNA from scratch every session, then patching AI mis-draws
|
|
144
|
+
with HTML overlays, is slow and produces a worse result than just generating natively
|
|
145
|
+
with the right references from the start. Check this list before generating anything
|
|
146
|
+
with a Kolbo or model logo, or with Zohar's likeness, in it.
|
|
147
|
+
|
|
148
|
+
| Asset | Where | Status |
|
|
149
|
+
|---|---|---|
|
|
150
|
+
| Kolbo K icon — **THE reference to use** | `Graphics\Logo\kolbo-ai-new-icon-black2.jpg` (white K on black) | ✅ verified real mark. **Always pass THIS file as the generation reference**, never a transparent cutout: the black background gives the model contrast to lock onto and it reproduces the K correctly. Proven tricks that keep the geometry exact fully in-model: (a) print it as a white chest logo on a black t-shirt, (b) render it inside a small dark-navy rounded chip next to a live-typed 'Kolbo.AI' wordmark — both mirror the reference's white-on-dark context |
|
|
151
|
+
| Kolbo K icon, clean cutout | `Youtube\מכונת הזמן\Exports\Thumbnail\assets\k-icon-clean.png` | ⚠️ white-on-transparent — fine for HTML/PIL compositing, but as a *generation reference* on a light background it gives zero contrast and the model redraws the K wrong. Use the black-background source above instead |
|
|
152
|
+
| Kolbo lockup (K + wordmark) | `Youtube\מכונת הזמן\Exports\Thumbnail\assets\kolbo-lockup.png` | ⚠️ this is the **stacked t-shirt lockup** (K on top, small wordmark below) — do not use for a horizontal corner mark, it misreads or gets redrawn wrong when scaled |
|
|
153
|
+
| ByteDance icon | `kolbo-api\assets\Bytedance icon.png` | ❌ **wrong file** — a generic blue bar-chart icon, not ByteDance's real mark. Confirmed by hash, pre-existing bug (not from any recent edit). Filed as `task_f3fab040`. Do not composite this into a "real logo" claim; if a real ByteDance mark is needed, source and verify one first |
|
|
154
|
+
| Zohar — real likeness Visual DNA | id `6a64b8fa5bd226f7e763367b`, name **`zohar`** (single token, so `@zohar` binds) | ✅ correct — use this whenever the ask is "me"/"my face" |
|
|
155
|
+
| Zohar — costumed character DNA | `@zohar_salon` and similar | ⚠️ these are **film-character** DNAs from specific shoots, not his real likeness — never substitute for a "me presenting" thumbnail |
|
|
156
|
+
|
|
157
|
+
**DNA naming rule that bit us:** the `@Name` prompt tag only binds if it exactly
|
|
158
|
+
matches the DNA's stored `name` field as one token. A DNA named "Zohar (Copy)" can
|
|
159
|
+
never bind via `@zohar` — rename the DNA (`update_visual_dna`) once, don't work around
|
|
160
|
+
it per-prompt.
|
|
70
161
|
|
|
71
162
|
## Routing in Kolbo
|
|
72
163
|
|
|
73
164
|
| Ask | Tool |
|
|
74
165
|
|---|---|
|
|
75
|
-
| One cover | `generate_image`
|
|
76
|
-
| Several options at once | The in-app **Thumbnail Generator** —
|
|
77
|
-
| A batch with a locked character or product | `generate_creative_director` with a Visual DNA
|
|
78
|
-
| Cover for a video the user already made | Never crop a frame out of the video — generate a fresh comp. A film frame is exposed for motion, not for a
|
|
166
|
+
| One cover | `generate_image` |
|
|
167
|
+
| Several options at once | The in-app **Thumbnail Generator** — fans out 4–8 art-directed variations |
|
|
168
|
+
| A batch with a locked character or product | `generate_creative_director` with a Visual DNA |
|
|
169
|
+
| Cover for a video the user already made | Never crop a frame out of the video — generate a fresh comp. A film frame is exposed for motion, not for a 168px grid |
|
|
170
|
+
| A second aspect ratio (e.g. 9:16 Shorts after a 16:9 main) | **Generate it natively at that aspect ratio**, do not crop/recompose the other one in HTML. Reuse the same brief, DNA, and reference logo files; write a fresh detailed prompt sized for the new canvas |
|
|
171
|
+
|
|
172
|
+
**Default workflow, one shot:** `generate_image` (or `_edit`) at **`quality: high`**,
|
|
173
|
+
native target resolution (1024-class for GPT Image 2), passing every real logo file the
|
|
174
|
+
comp needs as `reference_images` plus the matching `@Name`/`#Name` tags in the prompt
|
|
175
|
+
text, and the correct Visual DNA id. Ask for **3 concept variations in the same call
|
|
176
|
+
batch** per the ladder below rather than iterating one image through many small manual
|
|
177
|
+
fixes. Reserve HTML-compositing patches for the rare case a specific mark still comes
|
|
178
|
+
back wrong after 2–3 regenerations with references — it is a fallback, not the default
|
|
179
|
+
path.
|
|
180
|
+
|
|
181
|
+
**9:16 safe-zone discipline:** keep the hero content (face, gesture, headline, badge,
|
|
182
|
+
logo) inside roughly the **centre 70% of the canvas width**, not edge-to-edge — verified
|
|
183
|
+
by the centre-square-crop test below. State this explicitly in the prompt ("generous
|
|
184
|
+
margin on both sides, nothing touches the left/right edge") rather than fixing it after
|
|
185
|
+
generation.
|
|
79
186
|
|
|
80
187
|
## Variation ladder
|
|
81
188
|
|
|
82
|
-
|
|
83
|
-
|
|
189
|
+
Vary the **concept**, never the words: bold dynamic · clean minimal · vibrant saturated ·
|
|
190
|
+
cinematic wide · close-up dramatic · typography-forward · dark moody · flat illustration.
|
|
191
|
+
|
|
192
|
+
Make **3 thumbnails and 10 titles** per video, and design them *before* shooting. Top
|
|
193
|
+
creators spend ~30% of their effort on packaging versus ~5% for small channels. **[B]**
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## What now reads as dated or "AI slop"
|
|
84
198
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
6. Typography-forward — the text is the hero, graphic art direction
|
|
91
|
-
7. Dark moody — deep shadows, selective highlights
|
|
92
|
-
8. Flat bright illustration — playful shapes, bold outlines
|
|
199
|
+
**Correct the premise first: YouTube has NOT demoted AI thumbnails.** Its synthetic-content
|
|
200
|
+
policy explicitly exempts "using generative AI tools to create or improve a video outline,
|
|
201
|
+
script, **thumbnail**, title, or infographic." **[A]** Anyone claiming the algorithm
|
|
202
|
+
penalises AI thumbnails is repeating a fabrication. The damage is **competitive and
|
|
203
|
+
trust-based**, and it is real:
|
|
93
204
|
|
|
94
|
-
|
|
205
|
+
- **The models converge — you disappear into sameness.** 700 generation trajectories
|
|
206
|
+
through image-model feedback loops all collapsed to just **12 dominant motifs**; the
|
|
207
|
+
authors call the result "visual elevator music." **[A]**
|
|
208
|
+
- **The gloss is the tell** — see the saturation note above. **[A]**
|
|
209
|
+
- **AI faces homogenise.** Diffusion models render same-demographic individuals as
|
|
210
|
+
near-identical across professions. Your AI face looks like everyone's AI face — which
|
|
211
|
+
is exactly why a real Visual DNA built from real photos matters. **[A]**
|
|
212
|
+
|
|
213
|
+
**Avoid — evidence-backed:** exaggerated open-mouth shock · over-saturated HDR/clarity ·
|
|
214
|
+
plastic AI skin · piles of arrows and circles (one or two maximum) · **imagery not
|
|
215
|
+
actually in the video** (policy risk *and* it loses the watch-time test) · AI likeness of
|
|
216
|
+
real public figures (YouTube likeness detection is live for all YPP creators).
|
|
217
|
+
|
|
218
|
+
**Avoid — credibility damage in tech/AI niches:** glowing brains, robot-hand-touching-
|
|
219
|
+
human-hand, circuit boards, binary code, humanoid robots, the default blue "tech" wash.
|
|
220
|
+
Each is sci-fi-derived and misleading about what AI actually is. For a channel whose
|
|
221
|
+
credibility *is* the product, these are self-harm.
|
|
222
|
+
|
|
223
|
+
**Avoid on taste, no data — don't cite numbers for these:** golden particle dust and
|
|
224
|
+
bokeh, radial speed lines, neon collage, holographic UI overlays, floating tech icons,
|
|
225
|
+
gradient-mesh purple/blue backgrounds, hexagon grids, generic fantasy creatures.
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Tech / AI-tool / filmmaking channels
|
|
230
|
+
|
|
231
|
+
The grammar here is the **opposite** of the MrBeast formula, and that is the point.
|
|
232
|
+
Restraint reads as authority: controlled product photography, matte dark grounds, one
|
|
233
|
+
accent pulled from the subject itself, minimal or no text, a composed direct-to-camera
|
|
234
|
+
expression rather than a reaction. **The absence of arrows and explosions is the brand
|
|
235
|
+
signal.** For a channel selling expertise, the thumbnail is a claim about whether you
|
|
236
|
+
know what you are talking about.
|
|
237
|
+
|
|
238
|
+
What works specifically:
|
|
239
|
+
- **The tool logo as the recognisable object** — high search intent, heavily used;
|
|
240
|
+
differentiate through treatment (scale, lighting, physical staging), not by dropping it.
|
|
241
|
+
- **Before/after** — genuinely strong for AI filmmaking because the transformation *is*
|
|
242
|
+
the promise and it is honest. Skip the arrow; let the two images do the work.
|
|
243
|
+
- **The interface as hero** — a real UI cropped tight to one striking element signals
|
|
244
|
+
"actual tutorial, not hype." Under-used.
|
|
245
|
+
- **Face + artefact** — face at ~⅓ frame, closed-mouth focused, beside the generated
|
|
246
|
+
frame. Satisfies both the face finding and "show the thing."
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Hebrew and RTL
|
|
251
|
+
|
|
252
|
+
> **No evidence base exists for any of this.** There is no measured data on Hebrew vs
|
|
253
|
+
> Latin thumbnail text, Hebrew legibility at 168px, or RTL thumbnail composition. What
|
|
254
|
+
> follows is typographic reasoning plus Israeli foundry commentary. For a Hebrew channel
|
|
255
|
+
> this is worth settling empirically — ship a text-right/subject-left variant against a
|
|
256
|
+
> mirrored one and let YouTube's own test decide.
|
|
257
|
+
|
|
258
|
+
- **Hebrew has no ascenders or descenders and a uniform x-height.** Latin words have a
|
|
259
|
+
ragged silhouette that aids word-shape recognition at small size; Hebrew words are
|
|
260
|
+
near-rectangular blocks. **Hebrew needs more size, more weight and more letterspacing
|
|
261
|
+
than Latin to hit the same legibility at 168px.** Budget for it. **[C]**
|
|
262
|
+
- **Fonts:** **Ploni** (AlefAlefAlef) is purpose-built bilingual — Hebrew plus Latin
|
|
263
|
+
designed to sit together without either overshadowing the other, which is exactly the
|
|
264
|
+
problem when a tool name like `Seedance 2.5` sits inside a Hebrew phrase. **Heebo** and
|
|
265
|
+
**Rubik** are strong free alternatives with real bold weights.
|
|
266
|
+
- **Mirror the layout, not the logos.** RTL readers scan a mirrored F-pattern entering
|
|
267
|
+
from the **top-right**, so the natural composition inverts: **text block right, subject
|
|
268
|
+
left**, gaze pointing right-to-left toward the text. Latin brand marks and numerals stay
|
|
269
|
+
LTR regardless. **[B]**
|
|
270
|
+
- **Language split:** Hebrew for the emotional/promise word, Latin for the tool name — the
|
|
271
|
+
tool name is the search-intent anchor and the audience already reads it in Latin.
|
|
272
|
+
- **Per-language thumbnails exist** but are gated behind multi-language audio tracks: you
|
|
273
|
+
need at least one added audio track before a localised thumbnail can attach to it. **[A]**
|
|
274
|
+
|
|
275
|
+
---
|
|
95
276
|
|
|
96
|
-
|
|
97
|
-
(`workflows/visual-dna.md`) so every thumbnail in the series is the same person. Expression
|
|
98
|
-
is the payload: shock, delight, disbelief, triumph. A neutral face is a wasted thumbnail.
|
|
277
|
+
## Honest limits
|
|
99
278
|
|
|
100
|
-
|
|
279
|
+
Thumbnail design is a craft with weak empirical foundations. A study of 2,400 news
|
|
280
|
+
thumbnails across 21 visual features found **few statistically significant correlations
|
|
281
|
+
with engagement at all** **[A]**. The breakout data above describes what winning
|
|
282
|
+
thumbnails *look like*, not what *caused* the win. Genuinely unsettled: rule-of-thirds vs
|
|
283
|
+
centred (no data either way), and saturation levels (creator orthodoxy vs the aesthetics
|
|
284
|
+
literature). Do not present either as settled.
|
|
101
285
|
|
|
102
|
-
A
|
|
103
|
-
|
|
104
|
-
`workflows/ugc-smartphone.md`, then apply the text rules above unchanged. The type stays
|
|
105
|
-
graphic and deliberate even when the photo is deliberately casual.
|
|
286
|
+
A/B testing needs ~10k impressions per variant to mean anything. Below that, just replace
|
|
287
|
+
the thumbnail outright.
|
|
106
288
|
|
|
107
289
|
---
|
|
108
290
|
|
|
109
291
|
## Checklist
|
|
110
292
|
|
|
111
|
-
- [ ] One
|
|
112
|
-
- [ ]
|
|
113
|
-
- [ ]
|
|
114
|
-
- [ ]
|
|
115
|
-
- [ ]
|
|
116
|
-
- [ ]
|
|
117
|
-
- [ ]
|
|
293
|
+
- [ ] One idea, nameable in under a second at 168×94
|
|
294
|
+
- [ ] Face ~⅓ of frame, **one legible emotion, closed-mouth**, eye contact
|
|
295
|
+
- [ ] Greyscale test: subject still separates
|
|
296
|
+
- [ ] ≤3 colours, restrained saturation, checked on light *and* dark themes
|
|
297
|
+
- [ ] 0–3 words, outlined, ~12–15% frame height, off the face, never bottom-right
|
|
298
|
+
- [ ] Nothing in the bottom-right quadrant or bottom 40px
|
|
299
|
+
- [ ] Real logos composited from files, never model-rendered
|
|
300
|
+
- [ ] Nothing in the image that isn't in the video
|
|
301
|
+
- [ ] Exported 3840×2160; verified at 168×94 (and centre-cropped first, for 9:16)
|