diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index e9a81aa..82cd4da 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "meta-ads-designer", "description": "Design and generate posters, flyers, Meta/social ads and promo graphics that look art-directed instead of AI-generated.", - "version": "5.9.0", + "version": "5.10.0", "author": { "name": "AI Evolution Labs", "url": "https://github.com/aievolutionpl" }, "homepage": "https://github.com/aievolutionpl/meta-ads-designer", "license": "MIT", diff --git a/CHANGELOG.md b/CHANGELOG.md index 7153a6f..c67f402 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,32 @@ All notable changes to Meta Ads Designer. Versions follow [SemVer](https://semve --- +## [5.10.0] — 2026-09-24 + +The 2026 feed layer: what current Meta ads look like, which structures persuade, and what changed on the platform. Researched from Behance and Dribbble portfolio patterns, Penji's Meta design guidance, Meta's Ads Guide and about thirty 2026 sources on creative performance, trends and placement changes. Third-party figures are labelled as such and never presented as promised results. + +### Added +- **`R45` Commit to one visual language** — a style is a complete language (type, colour, image treatment, layout, one signature device). One per creative; brand identity outranks trend; imperfection is a process choice, not a filter; a portfolio board is not an ad. +- **`R46` Format follows proof and funnel** — choose the persuasion skeleton before the style. A format exists only when its proof exists: no verified number, no stat drop; no real review, no review card. +- **`R47` Diversity is delivery** — Meta's Andromeda retrieval groups near-identical creatives. Campaign sets vary persona, motivation, hook, format and style; controlled tests still rotate one variable. +- **`R48` Design for the 2026 placement system** — the unified March 2026 Stories/Reels safe zone (top 14%, bottom 35%, sides 6%), 4:5 export at 1440×1800, text-field truncation, Advantage+ enhancements including image expansion and generated backgrounds, "AI info" labels, and a new hard fail, `R48-fake-ui`, for fake play buttons, close icons and notification badges. +- **`references/style-atlas-2026.md`** — twelve visual languages (oversized type, colour-block still life, direct-flash editorial, cinematic coloured light, quiet minimal, documentary phone-real, native interface, performance sticker, tactile zine, reality warp, seasonal world, device-in-hand), each with DNA, fit, a model-independent prompt fragment and its typical failure; format pairings; trend slop; a method for reading reference boards, worked on the Behance "meta advertising" page. +- **`references/static-ad-formats.md`** — fifteen static formats with 4:5 skeletons, copy budgets, proof requirements and integrity rules; funnel fit; format by vertical; hook-to-format pairings; carousel sequencing. +- **`examples/07-2026-style-directions.md`** — five fictional format-plus-style briefs with prompts and typesetting handoffs, and one Andromeda-ready campaign set. +- **`assets/style-atlas-2026.png`** and its source `assets/generated/style-atlas.html` — six deterministic, typeset demonstration ads for the README. + +### Changed +- **`scripts/qa.py`** — the 9:16 keep-out now follows Meta's unified safe zone, expressed as a share of height and measured from the canvas edge (the stricter of margin and chrome wins). Previously the fixed 250px/320px values were added on top of the margin, which both over-restricted the top and let copy sit in the Reels action area at the bottom. The format check accepts Meta's recommended 1440×1800 (4:5) and 1440×2560 (9:16) exports. Three new self-tests. +- **`references/qa-gate.md`** — the vision pass returns `visual_language` (flags `"mixed"`, R45) and `fake_functional_ui` (`R48-fake-ui`). +- **`references/platform-compliance.md`** — new §6: text fields, text-on-image guidance, Advantage+ design consequences, AI disclosure and misleading formats, with sources. +- **`references/variation-matrix.md`** — new §6 on concept diversity for delivery, with a persona × motivation concept grid. +- **`references/creative-performance-loop.md`** — fatigue signals and refresh rhythm from 2026 benchmarks. +- **`references/hook-engineering.md`**, **`references/anti-slop-registry.md`** (§1b, 2026 tells), **`references/niche-playbooks.md`**, **`references/layout-system.md`**, **`core.md`** (§20), **`design-rules.md`**, **`SKILL.md`** — the new layer wired into the workflow, the routing table and the paste-in inject. + +`R01`–`R44` are unchanged — additive, no renumbering. + +--- + ## [5.9.0] — 2026-09-09 Model-independent art direction and prompt craft. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 98363bf..fb64ed9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,7 +8,7 @@ This is a **rules repo** — the value is the design doctrine. Every contributio | File | Role | When to edit it | |------|------|-----------------| -| **`visual-advertising-engine.md`** | The canonical standard (44 rules) | **Adding/refining a rule → edit here FIRST.** This is the source of truth. English. | +| **`visual-advertising-engine.md`** | The canonical standard (48 rules) | **Adding/refining a rule → edit here FIRST.** This is the source of truth. English. | | `design-rules.md` | The readable charter (English canonical) | Summarize a rule already in the engine. | | `core.md` | The complete general-knowledge inject | Add only if a rule is so essential it must be in the inject. | | `SKILL.md` | Agent manual | Procedural/workflow changes. | diff --git a/README.en.md b/README.en.md index 2217564..626b6c7 100644 --- a/README.en.md +++ b/README.en.md @@ -6,7 +6,7 @@ An AI agent skill for choosing **composition, typography, colour and visual dire [Polski](README.md) · [Agent instructions](SKILL.md) · [Quick start](#quick-start) · [Examples](examples/README.md) -![Version](https://img.shields.io/badge/version-5.9.0-222222) +![Version](https://img.shields.io/badge/version-5.10.0-222222) ![License](https://img.shields.io/badge/license-MIT-222222) ![Model independent](https://img.shields.io/badge/prompts-model_independent-222222) @@ -36,6 +36,19 @@ The same concepts can also take a quieter editorial direction: *A second demonstration board. The art direction changes; the skill is not restricted to either style.* +## New in 5.10: the 2026 feed layer + +![Style Atlas 2026: six fictional ads, each pairing a static format with one visual language](assets/style-atlas-2026.png) + +*Six fictional ads typeset deterministically in HTML ([source](assets/generated/style-atlas.html)): no image model, no client assets, no performance claims. Each pairs a persuasion format with one visual language.* + +The skill now knows what current Meta ads look like and why some structures persuade: + +- **Style atlas 2026** — twelve visual languages, from oversized type posters and direct-flash editorial to notes-app natives, performance stickers and tactile zines, each with its type, colour, signature device, a prompt fragment and the way it fails. +- **Static formats** — fifteen persuasion skeletons (stat drop, review stack, product + callouts, comparison, offer stack…), each available only when its proof exists. +- **2026 platform facts** — Meta's unified Reels/Stories safe zone (14% top, 35% bottom), 4:5 export at 1440×1800, Advantage+ image expansion and generated backgrounds, "AI info" labels, and Andromeda's grouping of near-identical ads. +- **Four new rules, R45–R48** — one visual language per ad, format follows proof, diversity is delivery, design for the 2026 placement system. + ## How it works ```mermaid @@ -48,7 +61,7 @@ flowchart LR 1. **Brief** — establish audience, verified offer, goal, format and available assets. 2. **Idea** — choose what makes the benefit visible: product, action, detail, situation or type. -3. **Art direction** — define the focal element, reading order, copy space, fonts and palette. +3. **Art direction** — pick a format the proof supports and one visual language, then define the focal element, reading order, copy space, fonts and palette. 4. **Prompt** — write the composition, exact copy and relevant constraints. 5. **Review** — check prompt consistency; once rendered, inspect readability, spelling and reference fidelity. @@ -95,9 +108,13 @@ A prompt communicates intent. It cannot guarantee identical fonts, pixel coordin | [core.md](core.md) | Self-contained chat instruction | | [Art direction](references/art-direction.md) | Marketing goal to composition and typography | | [Prompt craft](references/prompt-craft.md) | Writing and reviewing prompts | +| [Style atlas 2026](references/style-atlas-2026.md) | Twelve visual languages, trend slop, reading reference boards | +| [Static ad formats](references/static-ad-formats.md) | Persuasion skeletons, proof, funnel and vertical fit | | [Worked prompts](examples/05-model-independent-directions.md) | Flyer, food and local service | -| [Visual Advertising Engine](visual-advertising-engine.md) | Canonical rules R01–R44 | +| [2026 style directions](examples/07-2026-style-directions.md) | Format plus style briefs and an Andromeda-ready campaign set | +| [Visual Advertising Engine](visual-advertising-engine.md) | Canonical rules R01–R48 | | [Layout system](references/layout-system.md) | Starting values for grids, margins and type | +| [Platform guidance](references/platform-compliance.md) | Safe zones, text limits, Advantage+, AI labels | | [QA gate](references/qa-gate.md) | Reviewing actual rendered images | | [More examples](examples/README.md) | Briefs, prompts and design decisions | diff --git a/README.md b/README.md index 3929e21..880d27a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Skill dla agentów AI, który pomaga dobierać **kompozycję, typografię, kolor [English](README.en.md) · [Instrukcja skilla](SKILL.md) · [Szybki start](#szybki-start) · [Przykłady](examples/README.md) -![Version](https://img.shields.io/badge/version-5.9.0-222222) +![Version](https://img.shields.io/badge/version-5.10.0-222222) ![License](https://img.shields.io/badge/license-MIT-222222) ![Model independent](https://img.shields.io/badge/prompts-model_independent-222222) @@ -36,6 +36,19 @@ Ten sam zestaw pomysłów można rozwinąć w spokojniejszym kierunku editorial: *Druga plansza demonstracyjna. Zmienia się charakter art direction, a nie zakres możliwości skilla.* +## Nowość w 5.10: warstwa 2026 + +![Style Atlas 2026: sześć fikcyjnych reklam, każda łączy format statyczny z jednym językiem wizualnym](assets/style-atlas-2026.png) + +*Sześć fikcyjnych reklam złożonych deterministycznie w HTML ([źródło](assets/generated/style-atlas.html)): bez modelu obrazu, bez materiałów klientów, bez obietnic wyników. Każda łączy format perswazji z jednym językiem wizualnym.* + +Skill wie teraz, jak wyglądają aktualne reklamy Meta i dlaczego pewne struktury przekonują: + +- **Atlas stylów 2026** — dwanaście języków wizualnych: od plakatu z wielką typografią i edytorialu z fleszem, przez natywne notatki, banery performance ze stickerem, po taktylny zin. Każdy ma typografię, kolor, sygnaturowy detal, fragment promptu i typowy błąd. +- **Formaty statyczne** — piętnaście szkieletów perswazji (stat drop, stos recenzji, produkt z calloutami, porównanie, offer stack…). Format jest dostępny tylko wtedy, gdy istnieje jego dowód. +- **Fakty platformy 2026** — ujednolicona strefa bezpieczna Reels/Stories (14% góra, 35% dół), eksport 4:5 w 1440×1800, rozszerzanie obrazu i generowane tła w Advantage+, etykiety „AI info” oraz grupowanie niemal identycznych reklam przez Andromedę. +- **Cztery nowe reguły, R45–R48** — jeden język wizualny na reklamę, format wynika z dowodu, różnorodność daje zasięg, projekt pod system placementów 2026. + ## Jak działa ```mermaid @@ -48,7 +61,7 @@ flowchart LR 1. **Brief** — agent ustala odbiorcę, prawdziwą ofertę, cel, format i dostępne materiały. 2. **Pomysł** — wybiera, co pokaże korzyść: produkt, działanie, detal, sytuacja lub typografia. -3. **Art direction** — określa dominantę, kolejność czytania, przestrzeń na tekst, fonty i paletę. +3. **Art direction** — wybiera format, na który pozwala dowód, i jeden język wizualny, a potem określa dominantę, kolejność czytania, przestrzeń na tekst, fonty i paletę. 4. **Prompt** — zapisuje konkretną kompozycję, dokładne treści i ograniczenia. 5. **Ocena** — sprawdza spójność promptu; po wygenerowaniu obrazu również czytelność, pisownię i zgodność z materiałami. @@ -95,9 +108,13 @@ Prompt wyraża intencję projektową. Nie gwarantuje identycznego fontu, położ | [core.md](core.md) | Samodzielna instrukcja do wklejenia w czacie | | [Art direction](references/art-direction.md) | Od celu marketingowego do kompozycji i typografii | | [Prompt craft](references/prompt-craft.md) | Pisanie i sprawdzanie promptów | +| [Atlas stylów 2026](references/style-atlas-2026.md) | Dwanaście języków wizualnych, trend slop, czytanie plansz referencyjnych | +| [Formaty statyczne](references/static-ad-formats.md) | Szkielety perswazji, dowód, lejek i dopasowanie do branży | | [Przykłady promptów](examples/05-model-independent-directions.md) | Flyer, gastronomia i usługa lokalna | -| [Visual Advertising Engine](visual-advertising-engine.md) | Kanoniczne reguły R01–R44 | +| [Kierunki 2026](examples/07-2026-style-directions.md) | Briefy „format + styl” i zestaw kampanii pod Andromedę | +| [Visual Advertising Engine](visual-advertising-engine.md) | Kanoniczne reguły R01–R48 | | [Layout system](references/layout-system.md) | Punkty wyjścia dla siatki, marginesów i skali tekstu | +| [Platformy](references/platform-compliance.md) | Strefy bezpieczne, limity tekstu, Advantage+, etykiety AI | | [QA gate](references/qa-gate.md) | Ocena rzeczywiście wygenerowanych obrazów | | [Pozostałe przykłady](examples/README.md) | Briefy, prompty i omówienie decyzji | diff --git a/SKILL.md b/SKILL.md index 62dc5e3..b3badbd 100644 --- a/SKILL.md +++ b/SKILL.md @@ -3,7 +3,7 @@ name: meta-ads-designer description: Art-direct social ads, posters and flyers and write model-independent image prompts when a user requests advertising visuals, stronger composition or less generic AI design. license: MIT metadata: - version: 5.9.0 + version: 5.10.0 author: AI Evolution Labs url: https://github.com/aievolutionpl/meta-ads-designer --- @@ -16,7 +16,7 @@ This skill works independently of image models, for prompt writing alone or gene ## Understand the brief -Identify subject, audience, verified offer, one takeaway, next action, language, brand assets and placement. Use 4:5 as this skill's default for an unspecified social feed ad; honour the requested placement. Ask about print specifications only when print is requested. +Identify subject, audience, verified offer, one takeaway, next action, language, brand assets and placement. Use 4:5 as this skill's default for an unspecified social feed ad; honour the requested placement. For 9:16, keep copy, logo and CTA out of the top 14%, bottom 35% and 6% sides. Ask about print specifications only when print is requested. Inspect supplied references when possible and name their roles: exact subject, official logo, brand identity or style only. Preserve identity. A style reference does not authorize copying another business's logo or claims. Never invent prices, urgency, locations, reviews or proof. @@ -27,15 +27,18 @@ Infer reasonable design choices and state material assumptions briefly. Ask only Read [art direction](references/art-direction.md) before drafting a new direction. It provides the decision card, benefit-to-visual mapping, composition choices, typography and critique. 1. Connect the message to something visible: “The viewer understands this benefit because they see this.” -2. Choose photography, documentary, editorial, typography, illustration or graphic reduction. -3. Define dominant element, reading path, copy field, quiet area, brand anchor and edge treatment. -4. Choose type by role, width, weight, language and brand. Set exact copy and line breaks. -5. Assign colour roles and, for photography, light and material treatment. -6. Remove anything that competes without helping the message. +2. For a static ad, choose the format, the persuasion skeleton, from the proof you actually have and the audience's stage. Read [static ad formats](references/static-ad-formats.md). No verified number, no stat drop; no real review, no review card. +3. Choose one visual language and commit to its type, colour, image treatment and signature device. Read [style atlas 2026](references/style-atlas-2026.md). Brand identity outranks trend; never mix two dialects in one frame. +4. Define dominant element, reading path, copy field, quiet area, brand anchor and edge treatment. +5. Choose type by role, width, weight, language and brand. Set exact copy and line breaks. +6. Assign colour roles and, for photography, light and material treatment. +7. Remove anything that competes without helping the message. + +State the choice in one line of the working note, for example “Format: product + callouts · Style: colour-block still life”. A flyer may be led by an event name, verified offer or graphic idea. Do not force a photograph, dark panel, premium serif or CTA button onto every brief. Colours, gradients and texture are choices. Reject arbitrary decoration, incoherence, unreadability and identity drift. -The canonical [engine](visual-advertising-engine.md) defines stable rule IDs. R42–R44 qualify older photographic recipes and style bans throughout the repo; consult relevant rules when resolving conflicts. User brief and identity outrank category presets. +The canonical [engine](visual-advertising-engine.md) defines stable rule IDs. R42–R44 qualify older photographic recipes and style bans throughout the repo; R45–R48 add the 2026 layer: one visual language, format by proof and funnel, concept diversity and the current placement system. Consult relevant rules when resolving conflicts. User brief and identity outrank category presets and trends. ## Write the prompt @@ -48,7 +51,7 @@ Choose a text contract: Font names and percentages express intent, not guaranteed rendering. Place official logo assets appropriately rather than inventing a plausible logo. -Read [worked directions](examples/05-model-independent-directions.md) for complete event, food and service examples. The [prompt library](references/prompt-library.md) provides optional photographic and editing skeletons. +Read [worked directions](examples/05-model-independent-directions.md) for complete event, food and service examples, and [2026 style directions](examples/07-2026-style-directions.md) for format-plus-style examples. The [prompt library](references/prompt-library.md) provides optional photographic and editing skeletons. ## Review and deliver @@ -62,12 +65,14 @@ Deliver requested outputs and placements. If image tools are unavailable, provid ## Campaigns and deeper guidance -Explore distinct ideas when concepts are requested. Controlled tests isolate one variable; exploration may change multiple variables without claiming causal attribution. Keep brand and source identity consistent. Do not force twenty hooks or a campaign onto a single-ad request. +Explore distinct ideas when concepts are requested. Meta groups near-identical ads, so a campaign set should differ in persona, motivation, hook, format or visual language, not in colour or a single word (R47). Controlled tests isolate one variable; exploration may change multiple variables without claiming causal attribution. Keep brand and source identity consistent. Do not force twenty hooks or a campaign onto a single-ad request. Read only what is relevant: | Need | Reference | |---|---| +| Visual languages, trend reading, reference boards | [Style atlas 2026](references/style-atlas-2026.md) | +| Static formats, proof and funnel fit | [Static ad formats](references/static-ad-formats.md) | | Canvas, spacing and type starting values | [Layout system](references/layout-system.md) | | Headline drafting and language | [Headline system](references/headline-system.md) | | Campaign hooks | [Hook engineering](references/hook-engineering.md) | @@ -76,7 +81,7 @@ Read only what is relevant: | Other industries | [Niche playbooks](references/niche-playbooks.md) | | Generic visuals | [Anti-slop registry](references/anti-slop-registry.md), interpreted through R42 | | Competitor analysis | [Competitor teardown](references/competitor-ad-teardown.md) | -| Placement-specific delivery | [Platform guidance](references/platform-compliance.md); verify changing requirements when relevant | +| Placement-specific delivery, Advantage+, AI labels | [Platform guidance](references/platform-compliance.md); verify changing requirements when relevant | | Existing campaign results | [Performance loop](references/creative-performance-loop.md) | | Requested motion | [Video track](references/video-ugc-track.md) | | Requested setup or tool routing | [Installation](INSTALL.md), [model routing](references/model-routing.md) | diff --git a/assets/generated/style-atlas.html b/assets/generated/style-atlas.html new file mode 100644 index 0000000..9ea5788 --- /dev/null +++ b/assets/generated/style-atlas.html @@ -0,0 +1,310 @@ + + + + +Style Atlas 2026 — Meta Ads Designer + + + + + + + + +
+
+

Style Atlas 2026

+

Format × visual language. Six fictional ads typeset in HTML from references/style-atlas-2026.md: no image model, no client assets.

+
+
Meta Ads Designer 5.10
R45 · one visual language
R46 · format follows proof
+
+ +
+ + +
+
+
Noc
brzmi
+ + + +
+
18.10.2026 · 20:00
+
Studio 8
+
Bilety: nocbrzmi.example
+
+
+
01Oversized type posterBold statement · weight contrast in one headline
+
+ + +
+
+
Notatki · dziś
+
+

Czego nigdy nie robimy
u klientów

+
24 września, 09:12
+
    +
  • nie przestawiamy rzeczy bez pytania
  • +
  • nie używamy Twoich ręczników
  • +
  • nie zmieniamy ekipy co tydzień
  • +
  • nie zostawiamy zapachu chemii
  • +
+
PORZĄDEKUmów sprzątanie →
+
+
02Native interface: notesConfession · objection handling in the owner's voice
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LUMA + SERUM · 30 ML + + + + + + +
47/60
+
reported smoother skin
in 4 weeks
+
Independent user study, 60 participants, 2026.
+
LUMA
+
+
03Colour-block still lifeStat drop · verified number with its source line
+
+ + +
+
+
Zimna
do wieczora.
+
NURT
+ + + + + + + + + + + + + + + + + + NURT + + + + + + + + + + + + + +
24 h zimna
+
750 ml
+
stal 18/8
+
−20%na start
+ +
+
04Performance sticker bannerProduct + callouts · one sticker, one verified offer
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + +
+
+
Targ
winyli
+
SOBOTA12.10
+
Hala Targowa 3
10:00–17:00 · wstęp wolny
+ + + + + +
+
05Tactile zineEvent flyer · two-ink overprint as the one process
+
+ + +
+
+

Kawa, która
nie czekała na półce.

+ + + + + +
ZIARNOz marketu
Palenie✓7 dni temudata nieznana
Mielenie✓u Ciebiew fabryce
Dostawa✓co 2 tygodniewizyta w sklepie
+
ZIARNOZamów pierwszą paczkę →
+
+
06Quiet minimalComparison · a category, not a named competitor
+
+ +
+ + diff --git a/assets/style-atlas-2026.png b/assets/style-atlas-2026.png new file mode 100644 index 0000000..b1ecb4f Binary files /dev/null and b/assets/style-atlas-2026.png differ diff --git a/core.md b/core.md index 59f438c..0020f11 100644 --- a/core.md +++ b/core.md @@ -1,6 +1,6 @@ # 🎬 Meta Ads Designer — CORE (inject me) -> **Paste this into any AI chat (ChatGPT, Claude, Gemini) or any agent's system prompt.** Self-contained: the full general knowledge for generating beautiful social-media ads. Deeper numbers: `references/layout-system.md` + `references/headline-system.md`. Full standard: `visual-advertising-engine.md` (R01–R44). QA gate: `references/qa-gate.md`. +> **Paste this into any AI chat (ChatGPT, Claude, Gemini) or any agent's system prompt.** Self-contained: the full general knowledge for generating beautiful social-media ads. Deeper numbers: `references/layout-system.md` + `references/headline-system.md`. Full standard: `visual-advertising-engine.md` (R01–R48). QA gate: `references/qa-gate.md`. --- @@ -27,8 +27,8 @@ A great ad does ONE job: stop the scroll and deliver ONE message. Everything els ## 2 · Formats (compose for the format, never rely on cropping) | Platform / slot | Ratio | Canvas | |---|---|---| -| Instagram / Facebook feed (default) | **4:5** | 1080×1350 | -| Reels / Stories / Shorts | 9:16 | 1080×1920 | +| Instagram / Facebook feed (default) | **4:5** | 1080×1350 (export 1440×1800) | +| Reels / Stories / Shorts | 9:16 | 1080×1920 — copy, logo, CTA out of top 14% / bottom 35% / sides 6% | | Marketplace / square | 1:1 | 1080×1080 | | Wide / web | 16:9 | 1920×1080 | @@ -177,6 +177,21 @@ product changed · logo wrong or redrawn · lettering fake or misspelled · hand ## 19 · The gate — score before you deliver 10 criteria × 0/1/2: hierarchy · product · realism · typography · copy · colour · space · logo · thumbnail · idea. **Ship at ≥16/20 with zero hard fails.** Ask a vision model to **transcribe** every word it can read and compare it yourself — asking "is the spelling correct?" gets a yes. +## 20 · The 2026 feed layer (R45–R48) +**What the feed rewards now:** clarity over flash · feed-native over ad-shaped · real people and real products over synthetic polish · type as the hero · one confident accent against calm neutrals · distinct concepts over near-duplicates. + +**Pick a format by the proof you have** (full list: `references/static-ad-formats.md`): +- Bold statement · stat drop (verified number + source) · review card / review stack (real words only) · product + callouts (3–5, product stays dominant) · comparison / us vs them (fair, checkable) · before/after (real, category permitting) · numbered benefits · founder quote (real person) · offer stack (verified terms) · native interface (notes, chat, post) · problem → solution · checkerboard · in-use. +- Cold audiences: bold statement, native interface, problem → solution. Warm: callouts, comparison, reviews. Retargeting: offer stack, review card. + +**Then commit to one visual language** (full atlas: `references/style-atlas-2026.md`): oversized type poster · colour-block still life · direct-flash editorial · cinematic close-up with coloured light · quiet minimal · documentary phone-real · native interface · performance sticker banner · tactile zine · reality warp · seasonal world · device-in-hand proof. Execute its full DNA: type class, colour roles, image treatment, one signature device. Never two dialects in one frame. Brand identity outranks the trend. + +**Trend slop:** grain sprinkled on a sterile render · three stickers, five arrows · a Behance-style board of tilted ad cards shipped as one ad · plastic skin in a "documentary" ad · an invented app screen · a fake play button or notification badge on a still. + +**Campaign sets:** Meta groups near-identical ads and lets them compete as one. Vary persona, motivation, hook, format or style between concepts, never just colour or one word. Controlled tests still rotate one variable. + +**Placement:** Meta's text fields show ~125 characters of primary text and a 40-character headline before truncation. Keep on-image text to the hook, offer or one proof point. Advantage+ may expand images, add overlays and rewrite text: keep critical content central, leave clean extendable edges, and flag risky enhancements for product-fidelity work. AI-made ads may carry an "AI info" label; never hide it. + --- > **One product. One idea. One strong visual. DON'T DECORATE. DIRECT.** diff --git a/design-rules.md b/design-rules.md index 295f1ee..db2989b 100644 --- a/design-rules.md +++ b/design-rules.md @@ -30,11 +30,13 @@ Use [art direction](references/art-direction.md) and [prompt craft](references/p | Your question | Open | |---------------|------| -| What are the rules? | [`visual-advertising-engine.md`](visual-advertising-engine.md) — R01–R44, authoritative | +| What are the rules? | [`visual-advertising-engine.md`](visual-advertising-engine.md) — R01–R48, authoritative | | I need one page to paste into a chat | [`core.md`](core.md) | | How big is the headline? What grid? What colors? | [`references/layout-system.md`](references/layout-system.md) | | What should the headline actually *say*? | [`references/headline-system.md`](references/headline-system.md) | | Is this output good enough to ship? | [`references/qa-gate.md`](references/qa-gate.md) | +| Which visual language fits, and what does 2026 look like? | [`references/style-atlas-2026.md`](references/style-atlas-2026.md) | +| Which static format persuades with the proof I have? | [`references/static-ad-formats.md`](references/static-ad-formats.md) | | What does a finished prompt look like? | [`examples/`](examples/) — full briefs → prompts → verdicts | | Restaurant / hotel / services brief | [`references/hospitality-food-services-playbook.md`](references/hospitality-food-services-playbook.md) | | Other industries | [`references/niche-playbooks.md`](references/niche-playbooks.md) | @@ -46,7 +48,7 @@ Use [art direction](references/art-direction.md) and [prompt craft](references/p --- -## 2 · The doctrine in seven sentences +## 2 · The doctrine in eight sentences 1. **Product first** (R02) — the product is the main character, not the set. 2. **The reference is a technical document** (R03) — never redraw what the client sent you. @@ -55,6 +57,7 @@ Use [art direction](references/art-direction.md) and [prompt craft](references/p 5. **Negative space is luxury** (R08) — a good ad has fewer elements than a weak one. 6. **Message first, scene second** (R24) — decide what the ad says, then build the picture that says it. 7. **A pretty photo is not an ad** (R17) — headline → subline → CTA → brand cue, or it's wallpaper. +8. **One language, one skeleton** (R45, R46) — commit to one visual style and a format the proof can support; vary concepts, not colours (R47). --- @@ -122,6 +125,8 @@ Full compendium with fixes: [`references/anti-slop-registry.md`](references/anti (Meta Ad Library, Instagram, competitors). If the client has existing ads they like — THAT is the style source of truth. 3. ANGLES — define 5–10 distinct promises/layouts, not 10 color swaps. + Per concept: format (by proof + funnel) and ONE visual + language (style atlas). Near-duplicates count as one ad. 4. CREATIVE — product → benefit → target → angle → metaphor → type → headline → composition → light/camera → constraints (R28) 5. GENERATE — artifact pre-flight first (texture risk, style collision, @@ -149,8 +154,8 @@ Every output is scored: **10 criteria × 0/1/2, ship at ≥16/20 with zero hard | Platform | Aspect | Resolution | |----------|--------|-----------| -| Instagram Feed | 4:5 | 1080×1350 | -| Instagram Story / Reels / TikTok | 9:16 | 1080×1920 | +| Instagram Feed | 4:5 | 1080×1350 (export 1440×1800) | +| Instagram Story / Reels / TikTok | 9:16 | 1080×1920 (Meta: keep top 14%, bottom 35% clear) | | Instagram Square / Facebook | 1:1 | 1080×1080 | | Facebook / LinkedIn / YouTube | 16:9 | 1920×1080 | | Pinterest | 2:3 | 1000×1500 | diff --git a/examples/06-readme-showcase.md b/examples/06-readme-showcase.md index 151de57..86dbde0 100644 --- a/examples/06-readme-showcase.md +++ b/examples/06-readme-showcase.md @@ -33,3 +33,11 @@ undefined [Bold README cover](../assets/meta-ads-designer-bold.png) + +## Style Atlas 2026 board + +[Style Atlas 2026](../assets/style-atlas-2026.png) is not an AI-generated image. It is typeset deterministically in HTML and CSS from [its source](../assets/generated/style-atlas.html) and rendered with a headless browser, which is the Mode B route the skill recommends when copy, diacritics and layout must be exact. The product drawings are flat vector illustrations, not photographs. + +Every brand on it is fictional: NOC BRZMI and its reserved `.example` domain come from [example 05](05-model-independent-directions.md); NURT, PORZĄDEK and LUMA from [example 07](07-2026-style-directions.md); TARG WINYLI and ZIARNO exist only on the board. The number 47/60, the offer and the comparison rows are teaching content, not claims about any real product. The board demonstrates format and style decisions; it is not evidence of advertising performance. + +To re-render after editing the HTML, open it in a Chromium-based browser at a 1400×1420 viewport and capture at 1.5× device scale. diff --git a/examples/07-2026-style-directions.md b/examples/07-2026-style-directions.md new file mode 100644 index 0000000..6afca53 --- /dev/null +++ b/examples/07-2026-style-directions.md @@ -0,0 +1,107 @@ +# 2026 style directions: format plus visual language + +These are fictional teaching briefs. Every fact below is stated as supplied by the fictional client, so the prompts show how to use proof, not how to invent it. No images were generated or scored; nothing here claims measured performance. + +Each case names its **format** from [static-ad-formats.md](../references/static-ad-formats.md) and its **visual language** from [style-atlas-2026.md](../references/style-atlas-2026.md), then compiles both into one prompt with [prompt-craft.md](../references/prompt-craft.md). + +## 1 · Performance sticker × product + callouts + +**Brief.** Fictional steel bottle brand “NURT”. Image A is the approved packshot of the 750 ml bottle in sage green. Supplied facts: keeps drinks cold for 24 hours (manufacturer test on file), 750 ml, 18/8 steel. Verified offer: “−20% na start” for a first order until 30.09.2026. Audience: warm, people who visited the product page. Polish copy. + +**Decision.** Warm audiences compare, so a callout format that answers “why this bottle” fits. The performance sticker language reads at thumbnail size, and the one sticker holds the one offer. Polish diacritics and exact callouts mean the copy is typeset separately. + +`Format: product + callouts · Style: performance sticker banner · Text contract: image + typesetting` + +Image prompt: + +> Create one photographic background for a vertical 4:5 product ad. Image A is the exact product: preserve the bottle's shape, cap, sage-green colour, matte finish and logo placement. Place the bottle large and upright in the lower-right half, slightly rotated toward the viewer, as a clean cut-out on a flat saturated tangerine background, with a soft realistic contact shadow beneath it and a few cold condensation droplets on the upper half of the bottle only. Hard, crisp studio light from the upper left gives one clean highlight along the bottle's edge. Keep the upper-left 45% of the frame completely empty and evenly coloured for a headline, and keep clear space on the left side of the bottle for three short labels. No text, logos other than the one already on the bottle, props, ice cubes, splashes or extra bottles. + +Typesetting handoff: headline upper left in a heavy condensed grotesk such as Anton, two lines, “ZIMNA” in white and “DO WIECZORA.” in near-black, tight leading. Three callouts in a medium sans such as Archivo, left of the bottle: “24 h zimna”, “750 ml”, “stal 18/8”, each joined to the bottle by one thin hand-drawn white arrow. One circular yellow sticker, rotated 8°, overlapping the bottle's shoulder: “−20% na start”. Legal line bottom left, 18px: “Oferta dla pierwszego zamówienia do 30.09.2026.” Official NURT logo file top right, clear of the sticker. Check diacritics and arrow endpoints at phone size. + +**Would fail if** a second sticker appeared, the callouts outshouted the bottle, or the tangerine tinted the sage product colour. + +## 2 · Direct-flash editorial × in-use + +**Brief.** Fictional eyewear label “KIRA”. Image A shows the approved model: black acetate frame, green lenses. Goal: awareness for a summer drop among 20–30-year-olds in cities. Approved copy: “Summer, unfiltered.” and the wordmark. No offer. + +**Decision.** Cold, style-led audience: the product sells through the attitude of the moment. Direct flash gives the candid snapshot quality the feed rewards, and the copy stays tiny because the image carries the idea. + +`Format: in-use (worn) · Style: direct-flash editorial · Text contract: short generated copy or typeset` + +Finished-ad prompt: + +> Create one vertical 4:5 fashion advertisement photographed with direct on-camera flash at dusk. A young woman leans out of the open passenger window of a dark green vintage car, one hand lifting the frame of the sunglasses from Image A slightly off her nose mid-gesture. Preserve the exact frame shape, black acetate and green lens tint from Image A. Flash lights her face, hand and the car door brightly with a crisp dark flash shadow on the door behind her; the dusk sky behind is deep blue, and roadside foliage is saturated green. Candid, slightly tilted framing with her face in the upper-middle third. Natural skin texture with visible pores and no retouched smoothness. In the calm deep-blue sky at the upper left, set “Summer, unfiltered.” in a small, clean white grotesk, sentence case, one line. No other text, logos, props or people. + +Production note: if the rendered lettering is imperfect, generate without text and set the line and the official KIRA wordmark in a design tool, bottom right, within the 86px margin. + +**Would fail if** the skin turned glossy and poreless, the flash lighting disagreed with the shadow direction, or the frame shape drifted from the reference. + +## 3 · Native interface × confession + +**Brief.** Fictional home-cleaning service “PORZĄDEK” in Kraków. Supplied: the owner's own list of practices, the booking link text “Umów sprzątanie”, the logo file. Goal: first bookings from people who hesitate to let strangers into their home. Polish copy. + +**Decision.** The objection is trust, not visual desire. A notes-app list in the owner's voice reads like a real thought, not an ad, and answers the objection point by point. No image generator is needed; this is a deterministic build. + +`Format: native interface · Style: notes app (“Notes App Chic”) · Text contract: fully typeset` + +Typesetting specification (4:5, 1080×1350 design, export 1440×1800): + +- Background: warm off-white #F7F4EE, no paper texture. +- Top 86px margin; small grey system-style label “Notatki · dziś” in 24px. +- Title in 56px semibold system-like sans (Inter or SF Pro class): “Czego nigdy nie robimy” / “u klientów”. +- Checklist, 34px regular, 1.4 line height, each with a round outline tick in the brand's teal #1F7A74: + - “nie przestawiamy rzeczy bez pytania” + - “nie używamy Twoich ręczników” + - “nie zmieniamy ekipy co tydzień” + - “nie zostawiamy zapachu chemii” +- The third item carries a soft yellow marker stroke behind the text, the only emphasis. +- Base: official PORZĄDEK logo file left, “Umów sprzątanie →” right, 28px semibold teal, both at least 86px from the bottom. + +Integrity note: the ticks are list markers, not tappable checkboxes, so keep them flat and small. Every line must be a practice the business actually keeps; the owner signs off the list before launch. + +**Would fail if** it imitated a specific phone brand's UI chrome, added fake notification badges, or stated a promise the team cannot keep. + +## 4 · Colour-block still life × stat drop + +**Brief.** Fictional skincare brand “LUMA”. Image A is the approved serum bottle: frosted glass, white dropper cap. Supplied proof: an independent 2026 user study in which 47 of 60 participants reported smoother skin after 4 weeks; the report is on file. Audience: warm beauty buyers. English copy. + +**Decision.** The number is the strongest proof the brand owns, so it leads. A colour-block set in the product's own family makes the bottle look designed rather than generic. A stat drop needs its source on the ad. + +`Format: stat drop · Style: colour-block still life · Text contract: image + typesetting` + +Image prompt: + +> Create one photographic background for a vertical 4:5 skincare ad. Image A is the exact product: preserve the frosted-glass bottle, white dropper cap, proportions and label layout. Set it on the taller of two pale-apricot cylindrical plinths in a seamless apricot studio set, with walls, floor and plinths in one warm apricot family. A single hard light from the upper right throws a crisp diagonal shadow of the bottle across the lower plinth. One small deep-plum sphere rests at the foot of the plinths as the only contrasting colour. The bottle sits in the lower-right third; keep the upper 50% and the left side calm and evenly lit for large numerals. No text, extra products, petals, water splashes or glow. + +Typesetting handoff: “47/60” in a heavy extended sans at display size, upper left, deep plum; “reported smoother skin in 4 weeks” below in 34px regular; source line in 18px at the base: “Independent user study, 60 participants, 2026.” LUMA logo file bottom right. Do not round 47/60 into “8 in 10”; 47 of 60 is 78%. + +**Would fail if** the number lost its source line, the apricot light shifted the bottle's frosted glass to orange, or a second statistic joined the first. + +## 5 · Seasonal world × offer stack + +**Brief.** Fictional café “PORA” (the same fictional café as in [example 05](05-model-independent-directions.md) §2). Image A is the café's own photo of its watermelon lemonade in a tall glass. Verified offer: “druga za pół ceny”, valid until 31.08.2026. Goal: August afternoon visits. Polish copy. + +**Decision.** August is the context, so the season builds the world. The offer is verified and short, so an offer stack in a cheerful seasonal set fits a retargeting and local audience. The drink stays the café's real drink. + +`Format: offer stack · Style: seasonal world · Text contract: image + typesetting` + +Image-edit prompt: + +> Using Image A as the exact drink, preserve the glass shape, the lemonade's colour, the ice, the mint sprig and the straw. Place the glass on a sunlit pale-stone café table with three fresh watermelon wedges beside it, one partly behind the glass, and a few watermelon seeds and droplets on the stone. Hard afternoon sun from the upper left casts short sharp shadows and makes the lemonade glow through the glass. Frame the glass large in the lower-middle area, fully inside the frame. Keep the upper third a calm, evenly lit stone-and-sky area for a headline. Match perspective, contact shadows and reflections to the table. No text, logos, extra glasses, straws or garnish beyond Image A. + +Typesetting handoff: headline upper left in Archivo Black, “Sierpień” / “smakuje arbuzem.” with a watermelon-pink highlight pill behind “Sierpień” only. Offer stack under the headline: “Druga lemoniada za pół ceny” in 34px semibold, “do 31.08.2026” in 28px regular. PORA name as an approved text cue bottom left; “Wpadnij po południu” bottom right. Check that the pill does not touch the glass. + +**Would fail if** clip-art suns or emoji watermelons replaced the real set, or the offer's end date was dropped. + +## 6 · One brand, one campaign set (R47) + +A cosmetic set for NURT would be the case 1 image in four background colours. Meta would treat those as near-duplicates and let them compete as one. A concept set differs in persona, motivation, format and style: + +| # | Persona and moment | Hook | Format | Style | +|---|---|---|---|---| +| A | Office worker comparing bottles | Feature breakdown | Product + callouts | Performance sticker (case 1) | +| B | Commuter who keeps buying plastic bottles | Confession in the founder's own, true words: “Przestałam kupować wodę w butelkach.” | Native interface | Notes app | +| C | Cyclist on a hot route | Result: “Po 6 godzinach wciąż zimna.” (verified 24 h claim covers it) | In-use | Documentary phone-real, frost on the bottle on a handlebar | +| D | Summer beachgoer | Seasonal | Offer stack | Seasonal world, pool-water set | + +Brand-lock across all four: the exact bottle from Image A, the official logo, the brand palette used in the typeset elements, and the 24-hour claim wording. When one concept wins, iterate by persona and setting (for example C for runners, C for hikers), not by recolouring. diff --git a/examples/README.md b/examples/README.md index 79f9b48..1bfc5ab 100644 --- a/examples/README.md +++ b/examples/README.md @@ -18,6 +18,8 @@ For generated visual demonstrations, see the [README showcase](06-readme-showcas Additional prompt-only teaching cases: [model-independent directions](05-model-independent-directions.md) covers a typographic flyer, food ad and service ad. These are fictional briefs without rendered results or invented QA scores. +[2026 style directions](07-2026-style-directions.md) pairs a static format with a visual language from the style atlas: performance sticker callouts, direct-flash editorial, a notes-app confession, a colour-block stat drop and a seasonal offer, plus one Andromeda-ready campaign set. Also fictional, prompt-only and unscored. + ## How each case is structured ``` diff --git a/references/anti-slop-registry.md b/references/anti-slop-registry.md index 10406ff..bdf2660 100644 --- a/references/anti-slop-registry.md +++ b/references/anti-slop-registry.md @@ -50,6 +50,24 @@ Distinct from designed slop: nobody chose these, the model produced them. They a **Density adjectives are prompt slop.** `ultra-detailed` · `hyper-detailed` · `intricate` · `rich texture everywhere` · `8k detail` — these request unbounded micro-repetition and are the direct trigger for texture dissolution. Describe the **material** instead (`R40`). +## 1b · 2026 tells: trend slop and the synthetic look + +Audiences now report that they spot AI-generated ads on sight and trust them less. These are the tells they react to, and the trend versions of decoration without a decision. Full style guidance: [`style-atlas-2026.md`](style-atlas-2026.md) §5. + +| Tell | Instead | +|--------|---------| +| plastic, poreless skin; perfect symmetrical faces; stock-perfect smiles | real people or documentary casting, natural skin texture, asymmetry | +| everything glossy: every surface a highlight, every colour saturated | one sharp material, the rest honestly matte or soft | +| the teal-and-orange "cinematic" grade on every subject | a palette from the brand, the product or the real place | +| gibberish micro-text on packaging, signs and screens | blank or real composited text (R18) | +| grain, scratches or doodles laid over a sterile render as "authenticity" | imperfection from a real process: print, film, a phone photo, a hand mark | +| two or three style dialects in one frame | one visual language per creative (R45) | +| a Behance-style board of tilted ad cards shipped as one ad | extract one card's language and build one ad (R06) | +| a sticker, an arrow and an emoji on every element | one sticker for the one key fact | +| an invented interface, listing or app screen | a real screenshot composited in a design tool | +| a play button, close icon or notification badge on a still | nothing that pretends to be tappable (R48) | +| an outpainted edge that invents product or architecture | supply native ratios; keep extendable edges clean ([`platform-compliance.md`](platform-compliance.md) §6) | + --- ## 2 · Ad-specific slop — never in a creative diff --git a/references/creative-performance-loop.md b/references/creative-performance-loop.md index 1357e3d..2a1e2e6 100644 --- a/references/creative-performance-loop.md +++ b/references/creative-performance-loop.md @@ -53,7 +53,24 @@ This is part of the deliverable, not an afterthought — a broken promise betwee --- -## 5 · When not to over-fit +## 5 · Fatigue signals and refresh rhythm + +Third-party 2026 benchmarks, not Meta rules. Read them against a 7-day rolling baseline so a single bad day does not trigger a refresh. + +| Signal | Watch line | What to do | +|---|---|---| +| Frequency (cold prospecting) | Brief a replacement around 2.5; ship it by 3.5 | Prepare the next concept, not a recolour (R47) | +| CTR | Down 15% or more against the baseline | Test a new hook or format on the same promise | +| CPM | Up 10% or more with no audience or placement change | The creative is losing relevance; refresh the concept | +| Hook rate (video) | Down 20% or more | Replace the first second or the opening frame | + +Cold creative typically decays faster than retargeting creative, and peak seasons shorten every cycle. Keep three to five approved variants ready so a refresh is an operational step, not an emergency. The fix is usually a genuinely new concept, not slower delivery of the old one. + +Sources: [AdLibrary on ad fatigue](https://adlibrary.com/posts/ad-fatigue), [GoodMorning on frequency thresholds](https://goodmorningco.com/blog/what-is-creative-fatigue-meta-ads-frequency-thresholds). + +--- + +## 6 · When not to over-fit - **Small samples are noise.** One win on a tiny spend is a hint, not a new rule — require a meaningful sample before you crown a winner. - **Creative fatigue ≠ creative failure.** A creative that wore out after scale did its job; refresh it, don't abandon the angle. diff --git a/references/hook-engineering.md b/references/hook-engineering.md index 7faafea..0efb28c 100644 --- a/references/hook-engineering.md +++ b/references/hook-engineering.md @@ -36,6 +36,8 @@ Opening mechanisms that reliably stop the scroll — pick a different one per su - **Belonging** — the target sees themselves. *"For people who cook every day."* - **Negation** — the anti-slop counter to the obvious. *"Not another gadget. A fix."* +**Hooks reported to work in 2026.** Motion's 2026 benchmarks list confession, bold claim, relatability, contrast and curiosity among the tactics that large advertisers scale. BrandMov's analysis of 4,994 hand-tagged DTC ads found that nine hook templates, led by sale, in-30-seconds, ever-tried/noticed and feature breakdown, make up about 70% of the feed. Popular is not the same as right: a crowded hook needs a sharper visual to stand out. The pairing of each hook with a static format lives in [`static-ad-formats.md`](static-ad-formats.md) §5. + Keep it **short and scannable** — the thumb-read of a feed or the first second of a reel. See the character budgets in [`headline-system.md`](headline-system.md). --- diff --git a/references/layout-system.md b/references/layout-system.md index 95e0fe3..f3b7a7c 100644 --- a/references/layout-system.md +++ b/references/layout-system.md @@ -26,8 +26,8 @@ These are production starting values, not universal definitions of taste. Choose | Format | Canvas | Outer margin | Extra keep-out | |--------|--------|--------------|----------------| -| **4:5 feed** | 1080×1350 | 86px all sides | bottom 120px — *advisory*, some placements only | -| **9:16 story/reel** | 1080×1920 | 86px sides | **top 250px** (profile row), **bottom 320px** (CTA + caption) | +| **4:5 feed** | 1080×1350 (export 1440×1800) | 86px all sides | bottom 120px — *advisory*, some placements only | +| **9:16 story/reel** | 1080×1920 | 86px sides | **top 14% ≈ 269px** (profile row), **bottom 35% ≈ 672px** (CTA, caption, actions) — Meta's unified 2026 zone | | **1:1** | 1080×1080 | 86px all sides | — | | **16:9** | 1920×1080 | 96px all sides | — | | **2:3 Pinterest** | 1000×1500 | 80px all sides | — | diff --git a/references/niche-playbooks.md b/references/niche-playbooks.md index 800ae83..0985175 100644 --- a/references/niche-playbooks.md +++ b/references/niche-playbooks.md @@ -6,6 +6,8 @@ Headline archetypes and character budgets referenced below: [`headline-system.md`](headline-system.md). Layout numbers: [`layout-system.md`](layout-system.md). +> 🧭 **2026 layer:** which static format leads per vertical (stat drop, review stack, callouts, comparison…) is in [`static-ad-formats.md`](static-ad-formats.md) §4; which visual language fits the brief is in [`style-atlas-2026.md`](style-atlas-2026.md) §2. The playbooks below say what the niche needs; those files say how to shape and dress it. + --- ## 🍽️ Restaurant / food / café @@ -17,6 +19,7 @@ Headline archetypes and character budgets referenced below: [`headline-system.md - **Native in-scene text** when the model spells reliably: small serif brand at the top, big bold headline, one short location line. - **"Food in use"** — the dish on a table, natural light, bokeh — beats a flat overhead on white. - **Café/coffee specifically:** steam, natural window light, the cup in a hand or on a counter — sensory warmth, not a stock "cappuccino on marble". +- **Lead with the food, not the room.** 2026 restaurant ad analyses report weaker hooks when an ad opens on the exterior or the interior. Texture close-ups (crust, glaze, foam, a cross-section) and a preparation or plating moment carry appetite; the room can come second. ### What to avoid - ❌ **Text-on-photo Canva template** — the #1 rejection. @@ -57,6 +60,7 @@ OBJECTION (the portal-is-cheaper belief) · NUMBER (the direct-booking gap) · P ## 🏪 Local business / services / home improvement ### What works +- **Faces build trust.** Show the real people the customer will meet (the technician, the stylist, the trainer) in documentary light; 2026 lead-generation guides consistently put real staff and real jobs ahead of stock imagery. - **Real product/install photos as references** → generate **new** premium scenes (different light, time of day, lifestyle). Never overlay on the client's raw photo. - **Angles that sell services:** Problem → Effect (before/after when it proves value instantly) · package tiers ("Installation included", "£0 deposit") · genuine deadline offers ("Fitted before October 31") · transformation (chaos → order, dark → light). - **Benefit-led headline ≤40 characters**, body ≤125. diff --git a/references/platform-compliance.md b/references/platform-compliance.md index 5510548..10552d9 100644 --- a/references/platform-compliance.md +++ b/references/platform-compliance.md @@ -1,6 +1,6 @@ # Platform Compliance & Multi-Ratio -> The operating tool behind **R38**: an ad is finished only when it survives the platform it ships on. Compose for the placement — safe zones, captions, CTA and ratios — and deliver a native file per placement, never one image the client has to hack. +> The operating tool behind **R38** and **R48**: an ad is finished only when it survives the platform it ships on. Compose for the placement — safe zones, captions, CTA and ratios — and deliver a native file per placement, never one image the client has to hack. A creative can pass QA on the canvas and still die under platform chrome: a CTA under a feed button, a headline hidden by the Stories UI, a 4:5 image cropped into a 9:16 short. Compliance is part of the deliverable. @@ -16,13 +16,13 @@ Platforms overlay their own UI on top of your creative: the caption/CTA bar on M | Platform / placement | Ratio | Keep-clear zone | |----------------------|-------|-----------------| -| **Meta / IG feed** | 4:5 (1080×1350) | Lower ~15% reserved for the caption/CTA bar; nothing critical within ~8% of the edges (R08) | -| **Meta / IG Reels, Stories** | 9:16 (1080×1920) | Top ~250px and bottom ~320px clear of UI overlays; text inside the central safe band | +| **Meta / IG feed** | 4:5 (design 1080×1350, export 1440×1800) | Lower ~15% reserved for the caption/CTA bar; nothing critical within ~8% of the edges (R08) | +| **Meta / IG Reels, Stories** | 9:16 (1080×1920) | Unified safe zone since March 2026: top 14% (~269px), bottom 35% (~672px), sides 6% (~65px) clear of UI; text inside the central band (R48) | | **TikTok** | 9:16 (1080×1920) | Right-side text-safe band + bottom caption area; keep key text central | | **YouTube Shorts** | 9:16 (1080×1920) | Top title zone and bottom action rail clear; text central | | **Marketplace / e-com** | 1:1 (1080×1080) | Product in-frame with margin for the shop overlay and title | -The 4:5/9:16 chrome zones are gated; the margin guidance is placement advice — see the layout numbers in [`layout-system.md`](layout-system.md). +The 9:16 chrome zones are gated by `scripts/qa.py`; the 4:5 bottom zone is placement advice — see the layout numbers in [`layout-system.md`](layout-system.md). Stories alone overlay less of the bottom (about 20%), but one 9:16 file usually serves both placements, so design to the Reels zone. --- @@ -58,3 +58,46 @@ For a campaign brief, deliver: 4. If the landing page is known, the **continuity note** (R37 §4) that ties ad promise to page. If a placement can't be produced without breaking hierarchy, say so and propose the re-layout instead of shipping a cropped loser. + +--- + +## 6 · The 2026 Meta placement system (R48) + +Research summary, September 2026. Platform numbers change; verify them in the [Meta Ads Guide](https://www.facebook.com/business/ads-guide/update) before final delivery. + +### 6a · Text fields around the image + +| Field | Visible before truncation | Design consequence | +|---|---|---| +| Primary text | ~125 characters, then "See more" (the field accepts more) | The hook lives in the first line and in the image | +| Headline | 40 characters; small phones may show ~27 | Front-load the key words | +| Description | ~30 characters | Optional; never the only place for essential information | + +### 6b · Text on the image + +The old 20% text rule was retired in 2020, so text-heavy images are no longer rejected. Practitioners still report weaker delivery and CTR when text covers more than roughly a third of the image. Use on-image text for the hook, offer or one proof point, and move the rest to the text fields. Type-led formats (bold statement, native interface) are deliberate exceptions: the type is the image, so keep it large and short. + +### 6c · Advantage+ creative enhancements + +Advantage+ can adjust brightness and contrast, add template overlays and text bars, rephrase and move text, expand images to fill other placements, animate stills and generate new backgrounds. Several enhancements have been on by default. Meta's in-house image model (Muse Image, announced 7 July 2026) is rolling into these tools during Q3 2026. + +Design consequences: +- **Keep critical content central.** Expansion adds pixels around the frame; anything at the edge may be recomposed. +- **Leave clean, extendable edges.** Plain backgrounds, sky, walls and soft-focus areas expand believably; a product cut off at the edge invites invented product. +- **Name the risky enhancements.** For product-fidelity, food, real-estate and regulated work, recommend the user review or switch off image expansion, background generation and text generation, and check every placement preview before launch. +- **Supply native ratios yourself** when fidelity matters, instead of relying on automatic expansion. + +### 6d · AI disclosure and misleading formats + +- Ads created or significantly edited with generative AI can carry an "AI info" label in the ad's details and in the Ad Library. Meta applies it for its own tools and when it detects provenance signals such as C2PA metadata. It is a transparency notice, not a penalty. Never strip provenance data or disguise AI use to avoid it. +- Never draw fake functional UI: play buttons on a still, close icons, notification badges, fake checkboxes or system alerts. +- Never imitate a real person, news outlet, platform account or another brand's interface. +- Before/after imagery and some health, weight-loss, finance and personal-attribute claims are restricted. Check the current advertising standards for the category before choosing those formats ([static-ad-formats.md](static-ad-formats.md) §3). + +### 6e · Sources + +- [Meta Ads Guide](https://www.facebook.com/business/ads-guide/update), the source of truth for current specs. +- Safe-zone summaries of the March 2026 unified update, for example [Aperture](https://aperture.london/blog/meta-ad-safe-zones-2026) and [AdNabu](https://blog.adnabu.com/meta-ads/meta-safe-zones/). +- Character-limit references such as [SocialRails](https://socialrails.com/blog/facebook-ad-character-limits). +- Advantage+ enhancement guides, for example [Flighted](https://www.flighted.co/blog/metas-advantage-plus-ai-creative-enhancements-each-one-explained), and coverage of Muse Image ([Forbes](https://www.forbes.com/sites/gabrielalinzainescu/2026/07/08/metas-new-image-model-is-competing-for-ad-budgets/)). +- Meta, [Expanding GenAI transparency for ads](https://about.fb.com/news/2025/02/gen-ai-transparency-metas-ads-products/), and Meta Help, [How AI-generated images are labeled in ads](https://www.meta.com/help/artificial-intelligence/355108217670024/). diff --git a/references/qa-gate.md b/references/qa-gate.md index 9c89ddc..a3fcc13 100644 --- a/references/qa-gate.md +++ b/references/qa-gate.md @@ -97,6 +97,11 @@ Return ONLY this JSON, no prose: "unbriefed_elements": ["any shape, object or colour cast present in the image with no line in the prompt behind it — session ghosting"], "style_coherence": true|false, + "visual_language": "the ONE language this reads as (oversized type, colour-block + still life, direct-flash editorial, documentary, native + interface, performance sticker, tactile zine...) or \"mixed\"", + "fake_functional_ui": ["play buttons on a still, close icons, notification + badges, tappable-looking checkboxes; [] if none"], "edge_halo_or_bleed": ["objects ringed by a glow, seam or smear, or texture leaking across their boundary; [] if none"], "duplicated_or_warped": ["duplicated objects, melted geometry, impossible @@ -115,7 +120,7 @@ Return ONLY this JSON, no prose: "hard_fails": ["R30-product|R30-logo|R30-text|R30-anatomy|R30-physics| R30-scale|R30-chaos|R30-ui|R30-background|R30-stock| R30-function|R30-overload|R40-texture|R40-ghosting| - R41-drift|R41-halo"], + R41-drift|R41-halo|R48-fake-ui"], "score": {"hierarchy":0-2, "product":0-2, "realism":0-2, "typography":0-2, "copy":0-2, "color":0-2, "space":0-2, "logo":0-2, "thumbnail":0-2, "idea":0-2}, @@ -130,6 +135,8 @@ Return ONLY this JSON, no prose: - `unrequested_changes` non-empty on an edit → **`R41-drift`**. The `PRESERVE` slot was missing or too thin. Re-edit with the preservation block for that subject; do not accept the drift because the result looks good ([`artifact-control.md`](artifact-control.md) §8). - `edge_halo_or_bleed` or `duplicated_or_warped` non-empty → **`R41-halo`**. The edit was too large to integrate. Shrink the ask, hold the original lighting, and specify contact shadows ([`artifact-control.md`](artifact-control.md) §7). - `style_coherence: false` → two colliding style descriptors. Pick one and regenerate; re-rolling will not resolve it ([`artifact-control.md`](artifact-control.md) §4). +- `visual_language: "mixed"` → **R45**. Two dialects compete (for example direct flash plus riso grain plus stickers). Keep the language that serves the message, remove the other's devices, and regenerate ([`style-atlas-2026.md`](style-atlas-2026.md) §5). +- `fake_functional_ui` non-empty → **`R48-fake-ui`**. Remove the control; a still image must not pretend to be tappable ([`platform-compliance.md`](platform-compliance.md) §6). - `spelling_errors` with `severity: hard` → regenerate (Mode A) or re-render the text layer (Mode B). - `total < 16` → fix the lowest-scoring criteria and re-run. - `reads_as_ai_generated: true` with `total ≥ 16` → trust the flag, not the score. Redesign. diff --git a/references/static-ad-formats.md b/references/static-ad-formats.md new file mode 100644 index 0000000..49b8202 --- /dev/null +++ b/references/static-ad-formats.md @@ -0,0 +1,189 @@ +# Static ad formats: the persuasion skeletons + +> The operating tool behind **R46**. A format is the structure that persuades: where the claim sits, what proves it and how the eye reaches the action. Choose the format from the proof you actually have and the audience's stage, then dress it in a style from [style-atlas-2026.md](style-atlas-2026.md). + +Static images still carry a large share of Meta conversions, and third-party analyses of 2026 ads keep finding the same few structures behind winning statics. One analysis of static layouts reports that structured templates such as quote cards, stat drops and product callouts beat plain product shots. Treat such figures as direction, not a promised lift. + +--- + +## 1 · Pick by proof, then by funnel + +**The proof rule.** Every format needs a specific kind of evidence. If the brief lacks it, the format is not available. Never manufacture the proof to fit the template (R43). + +| Format | Proof it needs | +|---|---| +| Stat drop | A verified number with a source | +| Review card / review stack | Real customer words, with permission where needed | +| Founder / expert quote | A real person who said it and agrees to be shown | +| Comparison / us vs them | Verifiable, fair differences | +| Before / after | Real, unedited results, allowed in the category | +| Offer stack | The actual offer terms | +| Product + callouts | True product features | +| Bold statement, native interface, problem → solution | A clear position; no external proof, but no false claims | + +**Funnel fit.** + +| Stage | Viewer state | Formats that fit | +|---|---|---| +| Cold | Does not know the brand or problem framing | Bold statement · native interface · problem → solution · stat drop · reality-warp metaphor | +| Warm | Knows the problem, compares options | Product + callouts · comparison · review stack · numbered benefits · founder quote | +| Hot / retargeting | Considered it, needs a reason now | Offer stack · review card · verified deadline · objection kill | + +## 2 · Canvas zones + +All skeletons below use the 4:5 canvas (1080×1350 design math, export 1440×1800 where the placement recommends it) and the 86px margin from [layout-system.md](layout-system.md). "Upper band" means roughly the top third, "hero field" the middle, "base" the lowest band. These are composition intent, not pixel promises. Re-lay out for 9:16: critical copy stays in the central band between 14% from the top and 35% from the bottom ([platform-compliance.md](platform-compliance.md)). + +## 3 · The formats + +Each entry: skeleton → copy budget → where it shines → integrity rule. + +### 3.1 · Bold statement + +- **Skeleton.** Headline fills the upper band and hero field (2–4 lines). Small product or brand cue in the base. Optional single image behind or beside. +- **Copy.** Headline ≤ 40 characters. No subline, or one short line. +- **Shines.** Cold audiences, positioning, launches, brands with a strong opinion. +- **Integrity.** A strong claim still has to be true; "the best" without proof is out. + +### 3.2 · Stat drop + +- **Skeleton.** One number at display size (the largest element), a one-line label beneath it, product or context image supporting in the base or at the side, source line in legal size. +- **Copy.** Number + ≤ 6-word label, for example "1,400 stoves fitted on this island". +- **Shines.** Supplements and beauty (clinical or customer numbers), services (volume, years, response time), apps (users). +- **Integrity.** The number is verified and its source is on file. Round honestly and never round up past the truth. + +### 3.3 · Review card + +- **Skeleton.** One quotation as the headline (quote marks as a graphic device), attribution under it (first name, context), rating or source mark if real, product in the base or beside. +- **Copy.** Quote ≤ 90 characters. Cut the review; do not rewrite its meaning. +- **Shines.** Mid-funnel trust, food and beverages, local services, beauty. +- **Integrity.** Real review, real reviewer, verbatim or faithfully shortened. Never invent names, stars or platform badges. + +### 3.4 · Review stack + +- **Skeleton.** Three short real reviews as cards or chat-like bubbles, staggered down the frame, product anchored in one corner, one line naming the review source. +- **Copy.** Each review ≤ 60 characters; together they cover three different reasons to buy. +- **Shines.** Food and beverages, e-commerce, hospitality, retargeting. +- **Integrity.** As for the review card. Three reviews saying the same thing are one review. + +### 3.5 · Product + callouts + +- **Skeleton.** Product large at the centre or offset, 3–5 short callouts at the edges connected by thin or hand-drawn arrows, headline in the upper band, CTA or brand cue in the base. +- **Copy.** Callouts ≤ 3 words each. Four is the sweet spot; seven overwhelms. +- **Shines.** Tech, tools, apparel with construction details, skincare ingredients, multi-feature products. +- **Integrity.** The product stays dominant; callouts that outshout it defeat the format. Every callout is a true feature. Keep the product identical to the reference (R03). + +### 3.6 · Comparison grid / us vs them + +- **Skeleton.** Two columns: "us" (brand colour, product) and "the usual way" (neutral grey), 3–4 rows of ticks and crosses or short phrases, headline above. +- **Copy.** Row labels ≤ 4 words. +- **Shines.** Home, tech, tools, subscriptions, services replacing a DIY habit. +- **Integrity.** Compare with a category or habit ("store-bought", "the old way") unless a named comparison is verified and legally cleared. Differences must be fair and checkable. + +### 3.7 · Before / after split + +- **Skeleton.** Two states side by side or top and bottom with a clean divider and identical framing, small labels, headline naming the change. +- **Copy.** Labels "Before" / "After" or the time between; headline ≤ 30 characters. +- **Shines.** Cleaning, renovation, furniture, landscaping, organisation, apparel fit. +- **Integrity.** Real, same-subject, same-angle, unedited results. Health, weight-loss and some beauty claims are restricted in Meta's advertising standards. Where they are, use R22's problem → effect pair or a process image instead. + +### 3.8 · Numbered benefit list + +- **Skeleton.** Headline with a number ("3 reasons…"), a numbered list with large numerals as the visual rhythm, product at the side or in the base. +- **Copy.** Items ≤ 5 words each; 3 items preferred, 5 maximum. +- **Shines.** Education, services, SaaS, anything with several decisive reasons. +- **Integrity.** Each item is a separate true benefit, not the same one reworded. + +### 3.9 · Founder / expert quote + +- **Skeleton.** Real portrait (documentary light, not a stock smile), a first-person line as the headline, name and role, small brand cue. +- **Copy.** Quote ≤ 80 characters, in the person's own voice. +- **Shines.** Food and beverage brands, craft businesses, clinics, professional services, local businesses. +- **Integrity.** Real person, real statement, consent to appear. Never a generated "founder". + +### 3.10 · Offer stack + +- **Skeleton.** Product or bundle in the hero field, the offer as the dominant type (sticker or large numeral), 2–3 lines of what is included, deadline or condition in the base. +- **Copy.** Offer ≤ 20 characters; conditions short but complete. +- **Shines.** Retargeting, seasonal sales, bundles, first-order offers. +- **Integrity.** Every term is verified, including price, percentage, deadline and stock. False urgency is a hard fail (R43). + +### 3.11 · Native interface (notes, chat, post) + +- **Skeleton.** The anatomy of a familiar screen (notes list, chat thread, post, sticky note) filling the frame, one highlighted line, product or brand cue small in a corner. Build deterministically (Mode B). +- **Copy.** As long as it takes to read in 3 seconds: a title plus 3–5 short lines. +- **Shines.** Confessions ("things I wish I knew…"), objection handling, founder notes, services, apps. +- **Integrity.** Brand's own voice, clearly the brand's own content. No fake tappable UI (play buttons, close X, notification badges), no impersonation of a real person, platform account or news outlet. + +### 3.12 · Problem → solution + +- **Skeleton.** Either a single frame showing the frustration with the solution entering, or a pair of full-size creatives (R13, R22). Headline names the problem the audience recognises. +- **Copy.** Problem headline ≤ 35 characters, solution line ≤ 30. +- **Shines.** Cold audiences, services, tools, household products. +- **Integrity.** Do not exaggerate the problem with fake damage or manipulated "before" images. + +### 3.13 · Checkerboard + +- **Skeleton.** A 2×2 grid alternating copy and imagery: headline tile, product tile, benefit tile, in-use tile. One shared palette and alignment. +- **Copy.** One idea per text tile, ≤ 6 words. +- **Shines.** Retail, apparel, home goods, restaurants showing dish, place, people and offer. +- **Integrity.** A designed grid is intentional; the QA script's collage heuristic may flag it. Declare it and judge it by eye. The collage check exists to catch *unintended* batch images, several ads returned in one render, which stay a failure. + +### 3.14 · Advertorial static + +- **Skeleton.** Editorial headline in a serif, documentary photo, short deck line, small "Sponsored"-style brand label. Reads like a feature page, clearly from the brand. +- **Copy.** Headline ≤ 60 characters, deck ≤ 90. +- **Shines.** Considered purchases, health-adjacent products, B2B, education. +- **Integrity.** Never imitate a real publication's masthead or pretend to be independent journalism. + +### 3.15 · Hand-held / in-use + +- **Skeleton.** A real hand holding or using the product in context, product sharp and large, short headline in a calm area. +- **Copy.** Headline ≤ 30 characters. +- **Shines.** Almost every physical product; beverages, cosmetics, gadgets, food to go. +- **Integrity.** Hands must be anatomically correct (R30). Product identical to the reference. + +## 4 · Format by vertical + +Starting points, combining third-party 2026 format analyses with this repo's playbooks. The brief can overrule them. + +| Vertical | Lead formats | Also test | +|---|---|---| +| Beauty & supplements | Stat drop · review card | Product + callouts · founder quote | +| Apparel & accessories | Hand-held / in-use · product + callouts | Before / after fit · checkerboard | +| Home & furniture | Before / after · comparison | Checkerboard · review stack | +| Food & beverage | Review stack · founder quote | Hand-held · seasonal offer stack | +| Restaurants & cafés | Real dish hero (hospitality playbook) · review card | Founder quote · offer stack | +| Hotels & venues | Real-place hero · review card | Advertorial · bold statement | +| Local services & trades | Documentary in-use · review card · problem → solution | Stat drop (years, jobs) · native interface | +| Tech, tools & apps | Product + callouts · comparison | Device-in-hand · stat drop | +| Real estate | Device-in-hand · real property hero | Stat drop (m², minutes to…) · checkerboard | +| Education & courses | Numbered benefits · founder / expert quote | Native interface · bold statement | +| Events | Bold statement (type-led) | Seasonal world · stat drop (line-up size) | + +## 5 · Hooks that pair with formats + +Hooks reported among 2026's most-used or most efficient for large advertisers (Motion Creative Benchmarks 2026, BrandMov's hand-tagged DTC analysis). The hook is decided before the visual (R36); this table suggests which skeleton gives each hook its strongest shape. + +| Hook | Mechanism | Best format | +|---|---|---| +| Confession | "I used to…", an admitted mistake | Native interface · founder quote | +| Bold claim | One strong position | Bold statement · stat drop | +| Relatability | "If you… you know" | Problem → solution · native interface | +| Contrast | Old way vs new way | Comparison · before / after | +| Curiosity | An open loop | Bold statement · reality warp | +| Sale | Verified offer first | Offer stack | +| In-30-seconds | Speed of result or setup | Numbered benefits · product + callouts | +| Ever tried / noticed | Names a shared experience | Problem → solution · review card | +| Feature breakdown | One differentiating feature | Product + callouts | + +## 6 · Carousel note + +For carousels, the first card must work as a complete static ad; many viewers see only one or two cards. Sequence the rest as a story: hook → context → proof → reward → action. Three to five cards are usually enough. When the order matters, turn off automatic "best-performing card first" ordering so the platform does not reshuffle the story. Keep one style across all cards. + +## 7 · Sources + +- AdRiseLab, [Static ad anatomy 2026](https://adriselab.com/blog/static-ad-anatomy-2026-9-layout-templates): nine layout templates and category fit. +- Admetrics, [Static formats outperforming video in 2026](https://www.admetrics.io/en/post/five-static-ad-formats-outperforming-video-in-2026), and Adrio, [Best Meta static formats](https://adrio.ai/blog/best-meta-ad-formats). +- Motion, [Creative Benchmarks 2026](https://motionapp.com/library/research/creative-benchmarks-2026/): about 5% of ads become winners; hook tactics used by high spenders. +- BrandMov, [The best DTC Meta ad hooks of 2026](https://brandmov.com/blog/best-dtc-meta-ad-hooks-2026/): 4,994 hand-tagged ads; nine hooks account for roughly 70% of the feed. +- Carousel sequencing guides, for example [Benly](https://benly.ai/learn/meta-ads/carousel-ads-guide) and [Adligator](https://adligator.com/blog/facebook-carousel-ads-optimization). diff --git a/references/style-atlas-2026.md b/references/style-atlas-2026.md new file mode 100644 index 0000000..eea99ca --- /dev/null +++ b/references/style-atlas-2026.md @@ -0,0 +1,217 @@ +# Style atlas 2026: visual languages that hold up in the feed + +> The operating tool behind **R45**. Use it after the decision card in [art-direction.md](art-direction.md) §1–§2, when you choose the visual grammar (§3). A style is a complete language: type, colour, image treatment, layout and one signature device. Pick one, execute it fully, and let the brand outrank the trend. + +The grammars in `art-direction.md` §3 say *what kind* of picture carries the message. This atlas lists the specific dialects that show up in current performance and portfolio work, with the details that separate a designed version from the template version. + +--- + +## 1 · What the 2026 feed rewards + +Research summary, September 2026. The figures are third-party benchmarks and vendor analyses, not Meta rules. Use them as direction, never as promised results. Sources are listed in §7. + +- **Clarity beats flash.** High-converting Meta ads use simple layouts and one clear message, and the eye travels from the main idea to the action without effort. Clever-but-slow loses. +- **Feed-native beats ad-shaped.** When a viewer registers "this is an ad" the thumb moves. Lo-fi, creator-style and screenshot-style creatives are reported to beat polished brand creative on hook rate and CTR in large ad samples. Polish is still right for luxury, fashion and hospitality; it just has to look like photography or editorial design, not like an ad template. +- **Human beats synthetic.** Trend reports describe 2026 as "imperfect by design": grain, hand marks, zine layouts, real texture. Audiences increasingly say they can spot AI-generated ads and trust them less. Real product photos, real people and real brand assets carry trust. AI belongs in production, not on display. +- **Type is the hero more often.** Oversized headlines, condensed and extended widths, and weight contrast inside one headline are the dominant typographic moves. +- **Contrast beats a single trend colour.** Pantone's 2026 colour, Cloud Dancer, is a soft white. Current palettes pair calm neutrals with one confident accent or use a saturated field colour against its complement. +- **Distinct beats similar.** Meta's retrieval system groups near-identical creatives, so a set only earns reach when its members look and argue differently (R47). + +## 2 · Choosing a language + +Decide in this order and stop as soon as the choice is forced: + +1. **Brand identity.** An existing visual system wins. Borrow a technique from a style only when it fits the brand. +2. **Message mechanism.** Choose from art-direction §2 the visible mechanism for the benefit, then the style that shows it best. +3. **Source assets.** A real product photo, real staff, a real room or only copy? Styles 3, 4 and 6 need photography; styles 1, 7 and 9 can be built without it. +4. **Placement and funnel.** Cold feed audiences favour native and bold styles. Retargeting can carry proof-dense formats (see [static-ad-formats.md](static-ad-formats.md)). +5. **Trend last.** A trend is a reason to prefer one valid option over another, never a reason to override the four decisions above. + +| Brief need | Strong candidates | +|---|---| +| Announce, shout an offer, an event | 1 Oversized type · 8 Performance sticker · 11 Seasonal world | +| Make one object desirable | 2 Colour-block still life · 4 Cinematic close-up · 5 Quiet minimal | +| Lifestyle, fashion, eyewear, beauty | 3 Direct-flash editorial · 4 Cinematic close-up · 10 Reality warp | +| Build trust for a local service | 6 Documentary phone-real · 7 Native interface · 12 Device-in-hand | +| Explain several benefits | 8 Performance sticker · formats in static-ad-formats.md | +| Culture, independent brands, community | 9 Tactile zine · 1 Oversized type | +| Real estate, apps, digital products | 12 Device-in-hand · 5 Quiet minimal | + +## 3 · The atlas + +Each entry gives the DNA, where it fits, a model-independent prompt fragment to adapt, and the way it usually fails. Fragments describe visible properties. They are not complete prompts; compile them with [prompt-craft.md](prompt-craft.md). + +### 1 · Oversized type poster + +- **DNA.** The headline is the image and covers 40–70% of the frame. Heavy condensed grotesk (Anton, Bebas Neue, Oswald class) or wide extended sans (Druk Wide, Unbounded class), tight leading (0.85–0.95), mostly caps. One saturated field colour or one photo cropped behind the letters. Weight contrast inside the headline, one word thin and the next black, is the 2026 accent. Small secondary information in a quiet sans. +- **Signature device.** One word breaks the pattern: a different colour, italic, outlined or cut by an image. +- **Use for.** Events, launches, sales with a verified offer, bold brands, cold audiences. +- **Avoid for.** Anything where the product's appearance is the selling point. +- **Prompt fragment.** "A flat typographic poster. The words 'X' and 'Y' fill the upper two thirds in a heavy condensed grotesk, all caps, tight leading, warm white on saturated cobalt. The second word is set in a thin weight of the same family for contrast. A single small line of detail sits at the bottom left in a plain medium sans. No other graphics." +- **Fails when.** The letters are distorted, tracking is loose, three weights compete, or practical details become too small to read. + +### 2 · Colour-block still life + +- **DNA.** Product on a monochrome set: floor, wall and props in one hue family, often the product's own colour or its complement. Hard or crisp directional light, a clean graphic shadow and geometric plinths or paper sweeps. A saturated tone anchors the frame and one complementary accent creates tension (yellow/violet, red/cyan, blue/orange). +- **Signature device.** A single prop or shadow that echoes the product's shape. +- **Use for.** Cosmetics, drinks, accessories, gadgets, DTC packaging. +- **Avoid for.** Food that needs natural appetite cues, services. +- **Prompt fragment.** "Studio still life on a seamless tomato-red sweep with matching red cylindrical plinths. The unchanged product stands on the tallest plinth, lit by a single hard light from the upper left that throws a crisp diagonal shadow. One small cobalt object provides the only contrasting colour. Large quiet red area in the upper third for a headline." +- **Fails when.** The product's colour gets tinted by the set, or three props become clutter. Keep the product identical to the reference (R03). + +### 3 · Direct-flash editorial + +- **DNA.** On-camera flash or hard noon sun: bright subject, hard-edged shadow directly behind it, saturated colour, specular highlights. Candid, slightly off-balance crops, a gesture caught mid-movement, real locations such as a car window, a street or a kitchen. Minimal or no type: a small wordmark and one short line. +- **Signature device.** The hard shadow halo and a "caught" moment. +- **Use for.** Fashion, eyewear, beverages, nightlife, youth brands, lifestyle launches. +- **Avoid for.** Wellness, healthcare, calm hospitality, luxury that relies on softness. +- **Prompt fragment.** "Fashion editorial photograph shot with direct on-camera flash at dusk: the subject leans out of a car window mid-gesture, skin and fabric brightly lit, a crisp dark flash shadow on the door behind. Saturated greens in the foliage behind, slightly tilted candid framing. Natural skin texture with visible pores, no retouched plastic look." +- **Fails when.** It becomes glossy and airbrushed and loses the snapshot quality, or the flash lighting looks physically inconsistent. + +### 4 · Cinematic close-up with coloured light + +- **DNA.** Low-key frame with most of it near black. One strong coloured light (magenta, red, amber, teal) models an extreme close-up of the product or of a face wearing it. Reflections carry the story. Type is small, wide-tracked caps or a single large line in a corner. +- **Signature device.** The colour of the light is the brand accent. +- **Use for.** Sport and tech accessories, eyewear, fragrance, premium audio, nightlife. +- **Avoid for.** Food (coloured light kills appetite), family products, anything needing trust through clarity. +- **Prompt fragment.** "Extreme close-up of the supplied sunglasses on a face in profile, frame and lens filling most of the image. A single saturated red light from the right rakes across the lens and reflects a thin hot highlight. Everything else falls into deep shadow. Keep the product's shape, logo placement and lens tint identical to the reference." +- **Fails when.** Neon glow or haze gets added, because a light source is not a glow effect (R05), or the product's real colour becomes unreadable. + +### 5 · Quiet minimal ("Cloud Dancer") + +- **DNA.** Soft white or off-white field, one object or one scene fragment, 50–70% empty space. Small, precise type: a refined serif or neutral grotesk at modest size, often in a corner, sometimes with editorial index labels (01, 2026, category). Natural daylight and soft shadows. +- **Signature device.** Scale: something small in a large calm field. +- **Use for.** Premium skincare, ceramics, architecture, boutique hotels, jewellery, considered SaaS. +- **Avoid for.** Discounts, urgency, cold audiences that need an explicit benefit. +- **Prompt fragment.** "Minimal product photograph on a soft warm-white surface against a matching wall. The single object sits low and off-centre to the right, occupying about a fifth of the frame, with a long soft daylight shadow extending left. The rest of the frame is calm and empty. Subtle paper-like tonal variation, no props." +- **Fails when.** Nothing tells the viewer what is advertised, so it reads as a mood with no ad. Pair it with a sharp headline. Cream used by default rather than by decision is still slop (R42). + +### 6 · Documentary phone-real (UGC-look static) + +- **DNA.** Looks shot on a phone by a customer or staff member: natural or mixed indoor light, slightly imperfect framing, real environment, hands or faces in the frame, visible use. Type is platform-native: a short caption in a system-like sans, sometimes in a white box or bubble, sentence case. +- **Signature device.** A real person and a real place, specific enough to be believed. +- **Use for.** Local services, restaurants, trades, fitness, beauty treatments, apps, lead generation. +- **Avoid for.** Luxury positioning, products whose appeal is precise form. +- **Prompt fragment.** "Candid smartphone photo, eye level, of a mechanic's hands tightening a bicycle brake in a small workshop, mixed daylight from a side window and warm overhead bulbs, slightly off-centre framing, real clutter softly out of focus. It looks like a photo a customer took, not a production." +- **Fails when.** Staged stock smiles, perfect symmetry or a staged "UGC" look that no phone would produce. Use real people, get consent, and prefer the business's own photos (R03). + +### 7 · Native interface (notes, chat, post) + +- **DNA.** The ad borrows the anatomy of something people read every day: a notes-app list, a chat thread, a social post, a sticky note, a receipt. System-like sans (SF Pro or Inter class) at readable size, plain background, one emphasised line. Canva's 2026 trend report calls this "Notes App Chic". +- **Signature device.** Content that reads as a real thought or conversation in the brand's own voice. +- **Use for.** Objection handling, lists ("3 things we never do"), confessions, founder notes, apps, services. +- **Avoid for.** Products that need to be seen to be wanted. +- **Prompt fragment.** Build this deterministically (Mode B). Specify: "notes-style card, off-white background, title 'Why our espresso tastes different' in semibold, a three-item checklist in regular weight, the last item highlighted with a yellow marker stroke." +- **Integrity.** Never fake functional UI such as a play button, a close X, notification badges or checkboxes that look tappable. Never impersonate a real person, a real platform account, a news outlet or another brand's interface. Quotes and reviews must be real (see static-ad-formats.md §3). + +### 8 · Performance sticker banner + +The dominant style on Eastern European performance boards: dense, energetic and built for fast reading at thumbnail size. + +- **DNA.** Cut-out product or person with a crisp edge and a real contact shadow. Heavy condensed caps headline (often two colours). One saturated background colour or a simple photo field. One or two rotated "sticker" badges with a verified offer or one key fact, hand-drawn-style arrows pointing at the product, and small pill tags. Strong hierarchy despite the density. +- **Signature device.** The rotated sticker, used once and holding the single most important fact. +- **Use for.** E-commerce, education/online courses, apps, promotions, retail, food delivery. +- **Avoid for.** Luxury, premium hospitality, anything that should feel calm. +- **Prompt fragment.** "Vertical 4:5 performance ad on a saturated sky-blue background. The supplied product sits large in the lower right, cut out cleanly with a soft contact shadow. Upper left: a two-line headline in heavy condensed caps, first line white, second line black. One circular yellow sticker rotated 8° overlaps the product's upper edge and carries only 'X'. One hand-drawn white arrow points from the headline to the product. Nothing else." +- **Fails when.** It has three stickers, five arrows and emoji: every device used once becomes noise used five times. Invented discounts are a hard fail (R43). + +### 9 · Tactile zine / imperfect by design + +- **DNA.** Printed-matter texture: risograph grain, halftone, misregistered two-colour print, torn or cut paper, tape, stamps, handwritten notes, photocopy contrast. Asymmetric editorial layout with type set at different scales and angles. Limited palette of two or three inks, for example fluorescent pink with blue and black. +- **Signature device.** A physical process such as print, tear or stamp that is visible in the image. +- **Use for.** Culture, music, independent retail, cafés, community events, creative services, Gen Z brands. +- **Avoid for.** Finance, healthcare, anything where credibility depends on precision. +- **Prompt fragment.** "Two-colour risograph poster look, fluorescent pink and deep blue on off-white paper, with visible grain and slight misregistration. A halftone photo of the venue is torn along one edge and taped at an angle. The event name is set large in a bold grotesk and overlaps the photo, with the date stamped in a rubber-stamp style in the corner." +- **Fails when.** Grain is sprinkled over a clean AI render as a filter. Imperfection has to come from a process choice, not from noise. Texture can also destroy letterforms, and it collides with R40 texture control if the whole frame asks for fine detail. + +### 10 · Reality warp (surreal scale) + +- **DNA.** One impossible but readable idea: the product at architectural scale, an everyday object replaced by the product, a physical metaphor made literal. Photographic realism in light and material, so the surprise stays credible. Canva's 2026 report names this "Reality Warp". +- **Signature device.** One impossibility, never two. +- **Use for.** Launches, beverages, fashion, tech, brand awareness with a memorable metaphor. +- **Avoid for.** Offers, local services, anything where the surreal image could be read as a literal product claim. +- **Prompt fragment.** "A giant version of the supplied perfume bottle stands in a quiet desert landscape like a monument, at the scale of a two-storey building. Late-afternoon sun casts a long realistic shadow across the sand. Two tiny people walk toward it for scale. The bottle's shape, cap and label layout match the reference exactly." +- **Fails when.** Surrealism becomes AI dream soup, with several impossibilities, melting materials or no product clarity. Metaphors must not misrepresent what the product does. + +### 11 · Seasonal world + +- **DNA.** The season or occasion builds the whole set: pool water in July, watermelon in August, frost in winter, specific local festivals. The product or offer sits inside that world with matching light and colour. The headline often names the moment, and a highlighter-pill behind one word marks the date or month. +- **Signature device.** A context cue that makes the ad feel current this week. +- **Use for.** Retail calendars, food and beverages, travel, hospitality, promotions, content series. +- **Avoid for.** Evergreen ads meant to run for months. +- **Prompt fragment.** "Top-down view of sunlit swimming-pool water with caustic light patterns, clear turquoise, used as a full-bleed background. The supplied product floats on the water surface at the centre with a realistic soft reflection and small ripples around it. Upper quarter left calm for a headline." +- **Fails when.** Clichéd seasonal clip art (snowflakes, suns, hearts) replaces a real environment, or the context outshines the product. + +### 12 · Device-in-hand proof + +- **DNA.** A real hand holding a phone or tablet that shows the actual listing, app screen, booking page or result. The screen is the proof and the hand gives scale and intimacy. Often combined with oversized condensed type beside or behind the device. +- **Signature device.** A genuine screen, legible at feed size. +- **Use for.** Real estate, apps, SaaS, booking, marketplaces, courses. +- **Avoid for.** Physical products that should be shown directly. +- **Prompt fragment.** Generate the hand and device with a blank, evenly lit screen area, then composite the real screenshot in a design tool: "A hand holds a modern smartphone at a slight angle in front of a softly defocused apartment balcony at golden hour. The screen is a clean flat bright area facing the camera squarely for later compositing, with no reflections or UI drawn on it." +- **Fails when.** The model invents an interface, prices or listing details. Screens must be real and composited (R18). + +## 4 · Style is the skin, format is the skeleton + +A style says how the ad looks. A format in [static-ad-formats.md](static-ad-formats.md) says how it persuades: bold statement, stat drop, review card, callouts, comparison and so on. Choose both explicitly, and state them in one line of the working note: "Format: product + callouts. Style: colour-block still life." + +| Format | Pairs well with | Clashes with | +|---|---|---| +| Bold statement | 1 Oversized type, 5 Quiet minimal, 9 Tactile zine | 3 Direct flash (image fights headline) | +| Stat drop | 1 Oversized type, 2 Colour-block | 10 Reality warp | +| Review / quote card | 7 Native interface, 6 Documentary, 5 Quiet minimal | 4 Cinematic close-up | +| Product + callouts | 8 Performance sticker, 2 Colour-block | 5 Quiet minimal (callouts destroy calm) | +| Comparison / us vs them | 7 Native interface, 8 Performance sticker | 9 Tactile zine (precision lost) | +| Offer stack | 8 Performance sticker, 11 Seasonal world | 5 Quiet minimal | +| Founder / expert quote | 6 Documentary, 5 Quiet minimal | 10 Reality warp | +| Problem → solution | 6 Documentary, 10 Reality warp | 4 Cinematic close-up | + +## 5 · Trend slop: when a style turns into a filter + +These are the 2026 versions of R05. The style is legitimate, but the execution is decoration without a decision. + +- **Fake imperfection.** Grain, scratches or a "hand-drawn" doodle added to a sterile render. Imperfection means a process choice. +- **Two dialects in one frame.** Direct flash plus riso grain plus neon plus sticker badges. One language per creative (R45). +- **Portfolio board as an ad.** Behance and Dribbble covers are case-study packaging: many tilted ad cards on a coloured background with category pills and huge "COLLECTION OF BANNERS" type. That is a presentation of ads, not an ad. Extract the language of one card; never ship a board-style collage as an ad (R06, `R30-overload`). +- **Stickers everywhere.** A sticker is a stamp of the single most important fact. Two stickers halve its force; three turn the ad into a flyer from a discount bin. +- **Trend colour without identity.** Cloud Dancer white, butter yellow or cobalt forced onto a brand that owns a different palette. The brand palette wins (R42). +- **Borrowed identity.** Copying a specific designer's composition, a campaign's layout, or a brand's typeface-and-colour signature. Borrow the principle, not the artwork. +- **AI tells in "real" styles.** Documentary or flash styles fail hardest when skin is plastic, hands are wrong or text is gibberish, because they promise reality. Inspect at 100% (R40). + +## 6 · Reading a reference board + +When the user supplies Behance, Dribbble, Pinterest or Ad Library references, or you research them, write one DNA line per reference before borrowing anything: + +``` +REF — type: [class, width, weight, case] · colour: [field / text / accent] · +image: [photo type, light, crop] · layout: [skeleton] · device: [signature] · +copy mechanism: [hook type] · borrow: [principle] · never: [identity element] +``` + +**Worked example: patterns on a Behance "meta advertising" search page (screenshot supplied by the maintainer, September 2026).** These are observations about the public work shown, not endorsements of performance. + +| Observed cover | DNA | Principle worth borrowing | +|---|---|---| +| Collection of ad banners on electric cobalt | Heavy condensed white caps, tilted ad cards, small pill category tags | Condensed caps plus one saturated field reads instantly; pill tags as a tiny meta layer | +| "400+ ads a month. Most died on purpose" | Near-black, bold coral/white sans, rubber-stamp "KILLED/SCALED" stickers over a data table | A stamp as a narrative device; testing volume as a story | +| Seasonal "100+ creatives for July / August" boards | Pool water or watermelon worlds, ad cards floating in the scene, month in a yellow highlight pill | Seasonal world as the set; highlight pill for the time cue | +| Eyewear lifestyle campaign | Hard sunlight, car window, saturated greens, gesture, no text | Direct-light editorial, a caught moment | +| AI fashion campaign cover | Low-key portrait, big uppercase sans at the bottom, corner index labels (#2, AI CAMPAIGN, 2026) | Editorial corner labels frame the image as a publication | +| Sport sunglasses close-up | Red light raking over a lens, deep shadow | Colour of the light as the brand accent | +| "May–June AD creatives" | Lifestyle photo with a thin and bold weight mix in one headline | Weight contrast inside one headline | +| Real-estate banners | Hand holding a phone showing the listing, huge condensed type on a dark photo | Device-in-hand proof | + +Recurring moves across the page: condensed heavy caps, one saturated field colour, weight contrast inside a headline, corner micro-labels, stamps and stickers as a single narrative device, seasonal environments, and real hands and devices as proof. Most covers are portfolio boards, so remember §5 before borrowing their layout. + +## 7 · Sources + +Researched September 2026. Behance, Dribbble, Penji and Meta's Ads Guide could not be opened directly from the research environment; they were used through search summaries and the supplied screenshot. Verify changing platform numbers in the [Meta Ads Guide](https://www.facebook.com/business/ads-guide/update) before final delivery. + +- Penji, [How to design high-converting Meta ads](https://penji.co/how-to-design-high-converting-meta-ads/): simple layouts, clear message, eye path from idea to CTA, design with intention. +- Behance, [meta advertising search](https://www.behance.net/search/projects/meta%20advertising) and Dribbble, [meta-ads tag](https://dribbble.com/tags/meta-ads): portfolio patterns summarised in §6. +- Canva, [Imperfect by Design: 2026 design trends](https://www.canva.com/newsroom/news/design-trends-2026/): Reality Warp, Notes App Chic, Zinegeist, tactile textures, Opt-Out Era. +- Fontfabric, [Design and typography trends 2026](https://www.fontfabric.com/blog/10-design-trends-shaping-the-visual-typographic-landscape-in-2026/): extended and condensed type, typography as the main character, visible human touch. +- Pantone, [Colour of the Year 2026: Cloud Dancer](https://www.pantone.com/articles/press-releases/pantone-announces-color-of-the-year-2026-cloud-dancer). +- Favoured, [Ugly ad creative 2026](https://favoured.co.uk/ugly-ad-creative-2026/), and similar analyses of lo-fi versus polished creative. +- Photography trend roundups on direct flash, colour blocking and surreal still life, for example [Squareshot](https://www.squareshot.com/post/product-photography-trends) and [Envato](https://elements.envato.com/learn/photography-trends). +- On audience trust in AI-generated ads: [eMarketer](https://www.emarketer.com/content/shoppers-aren-t-impressed-by-ai-generated-marketing) and [AdPulse](https://adpulse.com/ai-advertising-trends-2026-the-real-content-comeback-no-one-saw-coming/). diff --git a/references/variation-matrix.md b/references/variation-matrix.md index f66f73a..32f41bd 100644 --- a/references/variation-matrix.md +++ b/references/variation-matrix.md @@ -79,3 +79,29 @@ Before you generate: 5. **QA every variant** against the gate (R34) before it ships. If you cannot name the single rotating axis, you are not ready to generate — go back to the brief. + +--- + +## 6 · Concept diversity for delivery (R47) + +A controlled test and a delivery portfolio are different tools. The matrix above isolates one variable so a result can be attributed. Meta's retrieval system (Andromeda) works the other way: it groups creatives it judges similar and treats them as one candidate, so near-duplicates share one chance to reach people instead of each getting their own. Practitioner guides describe a creative-similarity signal in Ads Manager that flags these clusters. + +What counts as similar: the same scene with a new headline colour, one word swapped, a slightly different crop, the same layout with a different background tint. What counts as distinct: a different persona on screen, a different motivation or pain point, a different hook mechanism, a different format (static, carousel, video, native screenshot) or a different visual language from the [style atlas](style-atlas-2026.md). + +**Plan an exploration set as a concept grid, not a colour grid:** + +``` + | Persona A (busy parent) | Persona B (first-time buyer) | Persona C (expert) +-----------+-------------------------+------------------------------+------------------- +Problem | Native notes, lo-fi | Documentary in-use | Stat drop, type-led +Proof | Review stack | Founder quote | Comparison grid +Desire | Seasonal world | Colour-block still life | Cinematic close-up +``` + +Each cell differs from its neighbours in at least two of persona, motivation, format and style. Brand-lock rows from §2 still apply, so the set reads as one brand. + +**When a concept wins**, iterate on it in ways that change who it speaks to: a new persona, a new setting, a new copy tone, the same winning angle. A recolour of the winner is not an iteration; it is the same ad. + +**Volume matters.** Motion's 2026 benchmark of more than 550,000 Meta ads found that only about 5% become clear winners, and stronger accounts ship more new creatives each week. A set of three is a start, not a portfolio. Scale variants only as far as the brief and budget justify, and never pad a set with cosmetic copies. + +Sources: [Atria on Andromeda](https://www.tryatria.com/blog/andromeda-meta-ads), [Confect](https://confect.io/tactics/meta-andromeda-2026), [303 London on creative diversity](https://www.303.london/blog/complete-guide-to-creative-diversity-for-meta-andromeda), [Motion Creative Benchmarks 2026](https://motionapp.com/library/research/creative-benchmarks-2026/). diff --git a/scripts/qa.py b/scripts/qa.py index fff5046..329b741 100644 --- a/scripts/qa.py +++ b/scripts/qa.py @@ -43,6 +43,13 @@ "4:1": (2048, 512), } +# Larger exports a placement also accepts. Meta's feed guidance recommends +# uploading 4:5 at 1440x1800; the design math in layout-system stays on 1080. +ALT_SIZES = { + "4:5": [(1440, 1800)], + "9:16": [(1440, 2560)], +} + MARGIN_RATIO = 0.08 # R08 / layout-system §1a MIN_CONTRAST = 4.5 # layout-system §4a MIN_THUMBNAIL_RETENTION = 0.40 @@ -50,14 +57,16 @@ MIN_SCRIM_UNIFORMITY = 0.85 # layout-system §3b # Placement chrome that actually sits *on top of* the creative (layout-system -# §1b), in px on the canonical canvas, scaled by the short edge. +# §1b), as a share of canvas height measured from the edge — the way Meta +# states the unified Stories/Reels safe zone (March 2026: top 14%, bottom 35%, +# sides 6%). The 6% sides sit inside the 8% margin, so only top/bottom are listed. # # Only 9:16 is gated. The 120px bottom zone listed for 4:5 is placement-dependent # advice, not chrome — the canonical photo+panel layout (§3a) deliberately runs # its CTA/logo row at 64px from the bottom, and gating on 120px would fail the # repo's own reference layout. KEEPOUTS = { - "9:16": {"top": 250, "bottom": 320}, # profile row / CTA + caption + "9:16": {"top": 0.14, "bottom": 0.35}, # profile row / CTA, caption, actions } @@ -106,8 +115,10 @@ def check_dimensions(img: Image.Image, fmt: str | None) -> tuple[str, bool]: want = FORMATS.get(fmt) if want is None: return f"{got} (unknown format {fmt})", True - ok = (img.width, img.height) == want - return f"{got} {'ok' if ok else f'expected {want[0]}x{want[1]}'}", ok + accepted = [want, *ALT_SIZES.get(fmt, [])] + ok = (img.width, img.height) in accepted + expected = " or ".join(f"{w}x{h}" for w, h in accepted) + return f"{got} {'ok' if ok else f'expected {expected}'}", ok def check_safe_area(size: tuple[int, int], boxes: dict[str, tuple[int, int, int, int]], @@ -124,9 +135,9 @@ def check_safe_area(size: tuple[int, int], boxes: dict[str, tuple[int, int, int, w, h = size m = int(round(min(h, w) * MARGIN_RATIO)) keep = KEEPOUTS.get(fmt or "", {}) - scale = min(h, w) / 1080 - top = m + int(round(keep.get("top", 0) * scale)) - bottom = h - m - int(round(keep.get("bottom", 0) * scale)) + # Chrome and margin are both measured from the canvas edge: the stricter wins. + top = max(m, int(round(keep.get("top", 0) * h))) + bottom = h - max(m, int(round(keep.get("bottom", 0) * h))) problems = [] for name, (x0, y0, x1, y1) in boxes.items(): over = [] diff --git a/scripts/test_qa.py b/scripts/test_qa.py index 909feac..0d1102a 100644 --- a/scripts/test_qa.py +++ b/scripts/test_qa.py @@ -124,6 +124,28 @@ def _(tmp: Path): assert "safe_area" in r["failed"], r +@case("a CTA in the 9:16 bottom 35% (Reels actions/caption) fails safe_area") +def _(tmp: Path): + photo_panel_ad().resize((1080, 1920)).save(tmp / "story.png") + # y 1300-1420 cleared the old 320px keep-out; the unified 35% zone starts at 1248. + r = qa.audit(tmp / "story.png", "9:16", (86, 1300, 994, 1420)) + assert "safe_area" in r["failed"], r + + +@case("copy inside the 9:16 central band passes safe_area") +def _(tmp: Path): + photo_panel_ad().resize((1080, 1920)).save(tmp / "story.png") + r = qa.audit(tmp / "story.png", "9:16", (86, 300, 994, 1200)) + assert "safe_area" not in r["failed"], r + + +@case("Meta's recommended 1440x1800 feed export passes the 4:5 format check") +def _(tmp: Path): + photo_panel_ad().resize((1440, 1800)).save(tmp / "feed_hi.png") + r = qa.audit(tmp / "feed_hi.png", "4:5", None) + assert "dimensions" not in r["failed"], r + + @case("the canonical 4:5 panel layout is not failed by advisory chrome") def _(tmp: Path): photo_panel_ad().save(tmp / "good.png") diff --git a/visual-advertising-engine.md b/visual-advertising-engine.md index a6203fc..8088e40 100644 --- a/visual-advertising-engine.md +++ b/visual-advertising-engine.md @@ -8,7 +8,7 @@ | | | |---|---| -| **Rules** | R01–R44 below | +| **Rules** | R01–R48 below | | **Layout / type / color numbers** | [`references/layout-system.md`](references/layout-system.md) | | **Headline & copy generation** | [`references/headline-system.md`](references/headline-system.md) | | **Creative variation matrix (test-ready sets)** | [`references/variation-matrix.md`](references/variation-matrix.md) | @@ -18,6 +18,8 @@ | **Video / UGC motion track** | [`references/video-ugc-track.md`](references/video-ugc-track.md) | | **Model routing & cost discipline** | [`references/model-routing.md`](references/model-routing.md) | | **Competitor ad teardown** | [`references/competitor-ad-teardown.md`](references/competitor-ad-teardown.md) | +| **2026 visual languages (style atlas)** | [`references/style-atlas-2026.md`](references/style-atlas-2026.md) | +| **Static ad formats (persuasion skeletons)** | [`references/static-ad-formats.md`](references/static-ad-formats.md) | | **QA gate (scored, machine-checkable)** | [`references/qa-gate.md`](references/qa-gate.md) | | **Worked end-to-end examples** | [`examples/`](examples/) | @@ -25,7 +27,7 @@ ## Scope and precedence -This standard teaches model-independent advertising judgment and prompt writing. R42–R44 qualify older recipes: choose the medium for the message, and distinguish a style preference from a fidelity requirement. Photography-specific rules apply only to photography. Numerical layouts are starting points. User brief and supplied identity outrank category defaults. Tool setup is optional production guidance, never a prerequisite for writing a prompt. +This standard teaches model-independent advertising judgment and prompt writing. R45–R48 add the 2026 layer: one committed visual language, a format chosen by proof and funnel, concept diversity and the current placement system. R42–R44 qualify older recipes: choose the medium for the message, and distinguish a style preference from a fidelity requirement. Photography-specific rules apply only to photography. Numerical layouts are starting points. User brief and supplied identity outrank category defaults. Tool setup is optional production guidance, never a prerequisite for writing a prompt. ## R01 · MAIN GOAL @@ -262,8 +264,8 @@ Either way: **never let the model invent** logos · prices · product names · s Design for the phone first. -- **META FEED — 4:5 (1080×1350).** **The default for static ads.** Use 4:5 unless the user explicitly asks otherwise. -- **REELS / STORIES — 9:16 (1080×1920).** Keep key elements out of the top 250px / bottom 320px UI zones. +- **META FEED — 4:5 (1080×1350).** **The default for static ads.** Use 4:5 unless the user explicitly asks otherwise. Design on 1080×1350; export 1440×1800 where the placement recommends it (R48). +- **REELS / STORIES — 9:16 (1080×1920).** Keep key elements out of the top 14% and bottom 35% UI zones and 6% from the sides (Meta's unified 2026 safe zone, R48). - **MARKETPLACE / E-COMMERCE — 1:1 (1080×1080)**, or whatever the marketplace requires. > Don't generate one image and hope random cropping solves every placement. Compose for the specific format. When text or a logo sits near an edge, resize with **scale+pad**, never a hard crop. @@ -567,6 +569,38 @@ Prompting cannot guarantee exact fonts, pixels, spelling or preservation. For pr Depth: [prompt craft](references/prompt-craft.md) and [worked directions](examples/05-model-independent-directions.md). +## R45 · COMMIT TO ONE VISUAL LANGUAGE + +A style is a complete language: type class and weight, colour roles, image treatment, layout skeleton and one signature device. Choose one per creative, name it in the working note and execute all of its parts. Mixing two dialects in one frame, such as direct flash with riso grain and sticker badges, reads as noise, not richness. + +Choose in this order: brand identity → message mechanism → available source assets → placement and funnel → trend. A trend can tip the choice between valid options; it never overrides identity or message. Imperfection, grain and hand marks are process decisions, never filters sprinkled over a clean render. A portfolio presentation board (several tilted ads on one background) is packaging for designers, not an ad. + +Depth: [style atlas 2026](references/style-atlas-2026.md). + +## R46 · FORMAT FOLLOWS PROOF AND FUNNEL + +Before styling a static ad, choose its persuasion skeleton: bold statement, stat drop, review card or stack, product + callouts, comparison, before/after, numbered benefits, founder quote, offer stack, native interface, problem → solution, checkerboard, advertorial, or in-use. The style is the skin; the format is the skeleton. State both. + +A format is available only when its proof exists: a verified number for a stat drop, real customer words for a review card, a real person for a founder quote, fair and checkable differences for a comparison, real terms for an offer. Never manufacture proof to fit a template. Match the format to the audience's stage: positioning and native formats for cold audiences, proof-dense formats for warm ones, verified offers for retargeting. + +Depth: [static ad formats](references/static-ad-formats.md). + +## R47 · DIVERSITY IS DELIVERY + +Meta's retrieval system (Andromeda) groups creatives it judges similar and lets them compete as one. Ten ads that differ only in headline colour, a word or a crop behave like one ad. A campaign set earns reach when its members differ in concept: persona, motivation, hook, format and visual language. + +Plan exploration as distinct concepts; plan a controlled test as one rotated variable (R35). They answer different questions, so do not present a cosmetic variant as a new concept. When a concept wins, iterate on it for new personas or contexts rather than recolouring it. + +Depth: [variation matrix](references/variation-matrix.md) §6. + +## R48 · DESIGN FOR THE 2026 PLACEMENT SYSTEM + +Meta unified the Stories and Reels safe zone in March 2026: keep text, logos and CTAs out of the top 14%, the bottom 35% and 6% at each side of a 9:16 canvas. Feed statics are 4:5; design on 1080×1350 and export 1440×1800 where the placement recommends it. Meta's text fields show roughly 125 characters of primary text, a 40-character headline (fewer on small phones) and a 30-character description before truncation; put the essential message in the image and the first line. + +Advantage+ creative enhancements can expand images, add overlays, rewrite text and generate backgrounds, and Meta's in-house image model is rolling into those tools. Keep brand-critical content inside the central area, leave clean extendable edges, and tell the user which enhancements to switch off when identity or product fidelity matters. Ads created or substantially edited with generative AI may carry an "AI info" label; never hide it. Never draw fake functional UI such as play buttons, close icons or notification badges; one on a still is a hard fail, `R48-fake-ui`. Platform numbers change: verify them in Meta's Ads Guide before final delivery. + +Depth: [platform guidance](references/platform-compliance.md). + ## 🏁 FINAL PRINCIPLE — DON'T DECORATE. DIRECT. Don't treat the image generator as a tool for adding more and more effects. Treat it like a **production crew**. First decide: what we show · why we show it · where the viewer looks · what emotions we want · what benefit must be understood. Only later choose: light · lens · set design · styling · color · effects.