moda-social-youtube
PREREQUISITE — load moda-core once per session (step-0, write contract,
free/metered map). Already loaded? Skip ahead. If you cannot load it, the
non-negotiables: run moda doctor --json before anything; moda brand list
before creating; writes that pin a revision use your last read's — on
stale_revision, re-read and retry once (it heals); send the canvas link the
moment it exists; stuck or failed? moda ask "<question>" — free and fast,
never guess.
Sizes and defaults
| Format |
Size |
--category |
Notes |
| Thumbnail |
1280×720 |
social |
judged at ~320px wide — that is the real brief |
| Channel banner |
2560×1440 |
social |
only 1546×423 centred is visible on every device |
- Thumbnail rules, not preferences: ≤4 words of on-image text; the subject
or face fills a third of the frame; one high-contrast focal point; type ≥120px
at 1280 wide so it survives the shrink. No thin weights, no full sentences.
- Banner safe core: everything that must be seen — name, tagline, upload
cadence, logo — lives inside the centred 1546×423. Decoration extends outward
into the 2560×1440 field, which desktop shows and phones crop away.
Recipe — thumbnail
moda canvas create --name "[Episode] — thumb" --intent "[one-line brief]" --size 1280x720 --category social --brand [KIT] — send the link immediately.
- Subject first: a photo the user gave you (
moda file upload [photo.jpg]) or moda media generate-image --prompt "[subject, high contrast, brand palette]" --model [MODEL].
- Author in ONE apply:
moda canvas markup [CANVAS_REF] --file - --page [PAGE_ID] — ≤4 words, type ≥120px, one focal point (references/markup.md).
- The 320px check (this recipe's verify twist):
moda canvas screenshot [CANVAS_REF] -o thumb.png, then judge it at thumbnail scale — a thumbnail that only reads full-size is a failed thumbnail. Fix and re-screenshot.
moda export [CANVAS_REF] --format png --pixel-ratio 2 -o [episode]-thumb.png.
Recipe — channel banner
moda canvas create --name "[Channel] — banner" --intent "[brief]" --size 2560x1440 --category social --brand [KIT] — link immediately.
- Author the safe core FIRST — the centred 1546×423 — then extend background,
texture, and colour outward to the full frame in the same apply.
moda canvas screenshot [CANVAS_REF]; check that cropping to the core loses
nothing that carries meaning; fix and re-screenshot.
moda export [CANVAS_REF] --format png --pixel-ratio 2 -o [channel]-banner.png.
Examples
- "a thumbnail for this episode" → thumbnail recipe, judged at 320px.
- "thumbnails for these 3 videos" → run the thumbnail recipe per video, one
canvas each; the winning layout goes to moda-templates.
- "refresh our channel art" → banner recipe, everything meaningful in the core.
- "a YouTube banner AD" → not channel art: moda-social-ads owns paid formats.
Errors
Any typed error → load moda-core and read its recovery reference.
Most likely here: type that passes full-size and dies at 320px — shrink the
screenshot before delivering. stale_revision heals — retry once.
Make it recurring
Template-ize the winning thumbnail via moda-templates, then moda-automate the
per-video instance — a thumbnail system beats a thumbnail.
See also: moda-social — other platforms, ad sets, one-off graphics ·
moda-core — the contract, recovery, everything Moda can do.
References
| Doc |
Load when |
| references/youtube.md |
depth: thumbnail composition patterns, banner device crops |
| references/markup.md |
before any markup apply |
| references/no-brand-design.md |
no kit is active — inventing the identity: palette law, type, imagery, layout system |
1---2name: moda-social-youtube3description: YouTube art: thumbnails (readable at 320px) and channel banners.4---56# moda-social-youtube78<!-- moda:banner -->9**PREREQUISITE — load `moda-core` once per session** (step-0, write contract,10free/metered map). Already loaded? Skip ahead. If you cannot load it, the11non-negotiables: run `moda doctor --json` before anything; `moda brand list`12before creating; writes that pin a revision use your last read's — on13`stale_revision`, re-read and retry once (it heals); send the canvas link the14moment it exists; stuck or failed? `moda ask "<question>"` — free and fast,15never guess.16<!-- /moda:banner -->1718## Sizes and defaults1920| Format | Size | `--category` | Notes |21|---|---|---|---|22| Thumbnail | 1280×720 | `social` | judged at ~320px wide — that is the real brief |23| Channel banner | 2560×1440 | `social` | only 1546×423 centred is visible on every device |2425- **Thumbnail rules, not preferences**: ≤4 words of on-image text; the subject26 or face fills a third of the frame; one high-contrast focal point; type ≥120px27 at 1280 wide so it survives the shrink. No thin weights, no full sentences.28- **Banner safe core**: everything that must be seen — name, tagline, upload29 cadence, logo — lives inside the centred 1546×423. Decoration extends outward30 into the 2560×1440 field, which desktop shows and phones crop away.3132## Recipe — thumbnail33341. `moda canvas create --name "[Episode] — thumb" --intent "[one-line brief]" --size 1280x720 --category social --brand [KIT]` — send the link immediately.352. Subject first: a photo the user gave you (`moda file upload [photo.jpg]`) or `moda media generate-image --prompt "[subject, high contrast, brand palette]" --model [MODEL]`.363. Author in ONE apply: `moda canvas markup [CANVAS_REF] --file - --page [PAGE_ID]` — ≤4 words, type ≥120px, one focal point (references/markup.md).374. **The 320px check** (this recipe's verify twist): `moda canvas screenshot [CANVAS_REF] -o thumb.png`, then judge it at thumbnail scale — a thumbnail that only reads full-size is a failed thumbnail. Fix and re-screenshot.385. `moda export [CANVAS_REF] --format png --pixel-ratio 2 -o [episode]-thumb.png`.3940## Recipe — channel banner41421. `moda canvas create --name "[Channel] — banner" --intent "[brief]" --size 2560x1440 --category social --brand [KIT]` — link immediately.432. Author the safe core FIRST — the centred 1546×423 — then extend background,44 texture, and colour outward to the full frame in the same apply.453. `moda canvas screenshot [CANVAS_REF]`; check that cropping to the core loses46 nothing that carries meaning; fix and re-screenshot.474. `moda export [CANVAS_REF] --format png --pixel-ratio 2 -o [channel]-banner.png`.4849## Examples5051- "a thumbnail for this episode" → thumbnail recipe, judged at 320px.52- "thumbnails for these 3 videos" → run the thumbnail recipe per video, one53 canvas each; the winning layout goes to moda-templates.54- "refresh our channel art" → banner recipe, everything meaningful in the core.55- "a YouTube banner AD" → not channel art: moda-social-ads owns paid formats.5657## Errors5859Any typed error → load moda-core and read its recovery reference.60Most likely here: type that passes full-size and dies at 320px — shrink the61screenshot before delivering. `stale_revision` heals — retry once.6263## Make it recurring6465Template-ize the winning thumbnail via moda-templates, then moda-automate the66per-video instance — a thumbnail system beats a thumbnail.6768See also: moda-social — other platforms, ad sets, one-off graphics ·69moda-core — the contract, recovery, everything Moda can do.7071## References7273| Doc | Load when |74|---|---|75| references/youtube.md | depth: thumbnail composition patterns, banner device crops |76| references/markup.md | before any markup apply |77| references/no-brand-design.md | no kit is active — inventing the identity: palette law, type, imagery, layout system |