Files
cycle-atlas/.agents/skills/ad-creative-video/references/platform-specs.md
T

73 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Platform Specs & Message-Match Worksheet
Exact pixel safe zones, durations, aspect ratios, and format limits per placement (2025/2026), plus a worksheet for building message-matched hook→CTA pairs before they go into the CSV. Verify against each platform's current Ads Manager docs before a big spend — placements and safe zones shift.
## Aspect ratio → placement map
| Aspect | Resolution | Native placements |
|---|---|---|
| 9:16 | 1080×1920 | TikTok In-Feed, Instagram/Facebook Reels, Stories, YouTube Shorts |
| 4:5 | 1080×1350 | Meta Feed (largest feed real estate, recommended for Feed video) |
| 1:1 | 1080×1080 | Meta Feed, broad/automatic placements, X |
| 16:9 | 1920×1080 | YouTube in-stream, landscape feed, in-article |
Master rule: design the hook, product, and CTA inside the **1:1 center square** so a single composition reframes to every aspect by re-centering, not letterboxing. Black bars on a vertical feed read as "ad" and underperform.
## Safe zones (keep-clear bands)
Platform UI — captions, CTA chips, usernames, profile icons, progress bars — overlaps the frame. Keep all critical content out of these bands.
| Aspect / placement | Top keep-clear | Bottom keep-clear | Sides |
|---|---|---|---|
| 9:16 Reels/Stories (Meta) | ~14% (~270px on 1920h) | ~20–35% (~384–672px) | ~6% (~65px) |
| 9:16 TikTok In-Feed | ~130px | ~484px (right-side icon rail + caption) | right ~140px |
| 4:5 Meta Feed | ~5% | ~10% (keep CTA above it) | ~5% |
| 1:1 / 16:9 | center 90% safe | center 90% safe | center 90% safe |
The 9:16 bottom third is the single most violated zone — captions, the CTA button, and the handle stack there. The `bottomSafe` padding in `batch-ad-pipeline.md` reserves it.
## Duration & format limits
| Placement | Sweet spot | Hard limits | Format |
|---|---|---|---|
| Meta Feed (4:5/1:1) | 6–15s | up to 240 min, ≤4GB | MP4/MOV, H.264 |
| Meta Reels/Stories (9:16) | 8–15s | Reels ≤90s, Stories ≤2 min | MP4/MOV |
| TikTok In-Feed (9:16) | 15–30s (TikTok cites 21–34s) | up to 10 min (non-Spark) | MP4/MOV, ≥540×960 |
| YouTube in-stream (16:9) | 15–30s | skippable after 5s | MP4 |
Practical default for performance video: **15–30s, with the hook trigger landing before 2s.** Most ad-account data shows attention falls off a cliff after ~15s, so front-load everything that matters.
## Hook → CTA message-match worksheet
Fill one row per ad *before* writing the CSV. The CTA must pay off the exact promise the hook made; if it doesn't, the click is wasted and the test is noisy. Each completed row becomes one record in `variants.csv`.
| Hook (0–3s promise) | Hook type | Single benefit | Proof point | CTA (pays off the hook) |
|---|---|---|---|---|
| "Spending 2 hrs/day on reports?" | problem-first | one-click report build | "save 11 hrs/week" | "Save 2 hours — try free" |
| "Your reporting tool is lying to you." | pattern interrupt | shows real numbers instantly | "save 11 hrs/week" | "See the real numbers — free" |
| "Nobody talks about this reporting trick." | curiosity gap | one click builds it | "save 11 hrs/week" | "Try the trick — free" |
| "Cut report time in half this week." | immediate benefit | auto-built reports | "save 11 hrs/week" | "Cut it in half — free" |
| "If you build reports by hand, stop." | direct callout | automate it now | "save 11 hrs/week" | "Automate yours — free" |
Bad pairing to avoid: a "stop wasting 2 hours" hook ending on a generic "Shop now" — the promise and the payoff don't connect, so even a great hook converts poorly.
## Testing order (which field to vary first)
Run tests in funnel order; isolate one field per wave using the matrix generator:
1. **Hook** — biggest lever on CPA; test 5–8 hooks against one identical body.
2. **Offer / benefit** — take the winning hook, vary the core promise.
3. **CTA** — winning hook + offer, vary the closing action.
4. **Format / aspect** — same winning ad, compare placements.
Budget guide many teams use: ~60% to proven winners, ~30% to variations of winners, ~10% to fresh concepts. Run each test long enough for a real sample (commonly several hundred impressions per variant, ~1 week to smooth daily swings) before declaring a winner.
## Pre-flight checklist per variant
- Hook trigger lands before 2s and fits the frame (≤~60 chars in 9:16).
- CTA visibly pays off the hook's specific promise.
- Critical content inside the center square and outside every keep-clear band.
- Duration within the placement's sweet spot.
- Exported in every aspect the campaign's placements require.
- Exactly one field differs from the other variants in this test wave.