start-vibing-stacks 2.28.0 → 2.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/migrate.js +81 -43
  2. package/dist/setup.js +20 -1
  3. package/package.json +1 -1
  4. package/stacks/_shared/ads-agents/README.md +452 -0
  5. package/stacks/_shared/ads-agents/RESEARCH-REPORT.md +157 -0
  6. package/stacks/_shared/ads-agents/SKILL.md +210 -0
  7. package/stacks/_shared/ads-agents/SKILLS-UPDATE-REPORT.md +255 -0
  8. package/stacks/_shared/ads-agents/agents/audit-budget.md +116 -0
  9. package/stacks/_shared/ads-agents/agents/audit-compliance.md +131 -0
  10. package/stacks/_shared/ads-agents/agents/audit-creative.md +127 -0
  11. package/stacks/_shared/ads-agents/agents/audit-google.md +113 -0
  12. package/stacks/_shared/ads-agents/agents/audit-meta.md +112 -0
  13. package/stacks/_shared/ads-agents/agents/audit-tracking.md +134 -0
  14. package/stacks/_shared/ads-agents/agents/copy-writer.md +188 -0
  15. package/stacks/_shared/ads-agents/agents/creative-strategist.md +199 -0
  16. package/stacks/_shared/ads-agents/agents/format-adapter.md +175 -0
  17. package/stacks/_shared/ads-agents/agents/visual-designer.md +245 -0
  18. package/stacks/_shared/ads-agents/references/additional-platforms.md +106 -0
  19. package/stacks/_shared/ads-agents/references/benchmarks.md +257 -0
  20. package/stacks/_shared/ads-agents/references/bidding-strategies.md +333 -0
  21. package/stacks/_shared/ads-agents/references/brand-dna-template.md +190 -0
  22. package/stacks/_shared/ads-agents/references/budget-allocation.md +150 -0
  23. package/stacks/_shared/ads-agents/references/compliance.md +280 -0
  24. package/stacks/_shared/ads-agents/references/conversion-tracking.md +246 -0
  25. package/stacks/_shared/ads-agents/references/copy-frameworks.md +187 -0
  26. package/stacks/_shared/ads-agents/references/funnel-content-copy-rules.md +44 -0
  27. package/stacks/_shared/ads-agents/references/gaql-notes.md +49 -0
  28. package/stacks/_shared/ads-agents/references/google-audit.md +217 -0
  29. package/stacks/_shared/ads-agents/references/google-creative-specs.md +119 -0
  30. package/stacks/_shared/ads-agents/references/image-providers.md +133 -0
  31. package/stacks/_shared/ads-agents/references/linkedin-audit.md +141 -0
  32. package/stacks/_shared/ads-agents/references/linkedin-creative-specs.md +129 -0
  33. package/stacks/_shared/ads-agents/references/mcp-integration.md +125 -0
  34. package/stacks/_shared/ads-agents/references/meta-audit.md +141 -0
  35. package/stacks/_shared/ads-agents/references/meta-creative-specs.md +134 -0
  36. package/stacks/_shared/ads-agents/references/microsoft-audit.md +158 -0
  37. package/stacks/_shared/ads-agents/references/microsoft-creative-specs.md +123 -0
  38. package/stacks/_shared/ads-agents/references/platform-specs.md +276 -0
  39. package/stacks/_shared/ads-agents/references/scoring-system.md +169 -0
  40. package/stacks/_shared/ads-agents/references/tiktok-audit.md +165 -0
  41. package/stacks/_shared/ads-agents/references/tiktok-creative-specs.md +139 -0
  42. package/stacks/_shared/ads-agents/references/voice-to-style.md +87 -0
  43. package/stacks/_shared/ads-agents/references/youtube-creative-specs.md +134 -0
  44. package/stacks/_shared/ads-agents/skills/ads-apple/SKILL.md +225 -0
  45. package/stacks/_shared/ads-agents/skills/ads-audit/SKILL.md +108 -0
  46. package/stacks/_shared/ads-agents/skills/ads-budget/SKILL.md +198 -0
  47. package/stacks/_shared/ads-agents/skills/ads-competitor/SKILL.md +198 -0
  48. package/stacks/_shared/ads-agents/skills/ads-create/SKILL.md +198 -0
  49. package/stacks/_shared/ads-agents/skills/ads-creative/SKILL.md +208 -0
  50. package/stacks/_shared/ads-agents/skills/ads-dna/SKILL.md +245 -0
  51. package/stacks/_shared/ads-agents/skills/ads-generate/SKILL.md +173 -0
  52. package/stacks/_shared/ads-agents/skills/ads-google/SKILL.md +192 -0
  53. package/stacks/_shared/ads-agents/skills/ads-landing/SKILL.md +186 -0
  54. package/stacks/_shared/ads-agents/skills/ads-linkedin/SKILL.md +200 -0
  55. package/stacks/_shared/ads-agents/skills/ads-math/SKILL.md +216 -0
  56. package/stacks/_shared/ads-agents/skills/ads-meta/SKILL.md +167 -0
  57. package/stacks/_shared/ads-agents/skills/ads-microsoft/SKILL.md +163 -0
  58. package/stacks/_shared/ads-agents/skills/ads-photoshoot/SKILL.md +220 -0
  59. package/stacks/_shared/ads-agents/skills/ads-plan/SKILL.md +176 -0
  60. package/stacks/_shared/ads-agents/skills/ads-test/SKILL.md +199 -0
  61. package/stacks/_shared/ads-agents/skills/ads-tiktok/SKILL.md +190 -0
  62. package/stacks/_shared/ads-agents/skills/ads-youtube/SKILL.md +199 -0
  63. package/stacks/_shared/hooks/_state.ts +8 -2
  64. package/stacks/_shared/hooks/plan-gate.ts +138 -0
  65. package/stacks/_shared/memories/funnel-content-copy.md +81 -0
  66. package/templates/CLAUDE-python.md +6 -0
@@ -0,0 +1,169 @@
1
+ # Ad Account Audit Scoring System
2
+
3
+ <!-- Updated: 2026-05-14 | v1.6: refreshed counts, cross-platform checks, ID convention -->
4
+ <!-- Sources: Google Research PDF 1, Claude Research, Gemini Research, 2026 Platform Research, 2026 Verification Pass -->
5
+
6
+ ## Check ID Convention
7
+
8
+ - **Sequential IDs** (G01, M01, L01, T01, MS01): Original v1.0 checks
9
+ - **Hyphenated IDs** (G-AI1, M-AN1, L-CRM1, T-SR1, MS-SI1, X-PI1): v1.5+ additions
10
+ - **Platform prefixes**: G = Google, M = Meta, L = LinkedIn, T = TikTok, MS = Microsoft, ASA = Apple, X = Cross-platform
11
+
12
+ ## Weighted Scoring Algorithm
13
+
14
+ ```
15
+ S_total = Σ(C_pass × W_sev × W_cat) / Σ(C_total × W_sev × W_cat) × 100
16
+ ```
17
+
18
+ - `C_pass` = check passed (1) or failed (0); WARNING = 0.5
19
+ - `W_sev` = severity multiplier of the individual check
20
+ - `W_cat` = category weight for that platform
21
+ - Result: 0-100 Health Score
22
+
23
+ ## Severity Multipliers
24
+
25
+ | Severity | Multiplier | Criteria |
26
+ |----------|-----------|----------|
27
+ | Critical | 5.0 | Immediate revenue/data loss risk. Remediation urgent. |
28
+ | High | 3.0 | Significant performance drag. Fix within 7 days. |
29
+ | Medium | 1.5 | Optimization opportunity. Fix within 30 days. |
30
+ | Low | 0.5 | Best practice, minor impact. Nice to have. |
31
+
32
+ ## Scoring Per Check Item
33
+
34
+ | Result | Points Earned |
35
+ |--------|--------------|
36
+ | PASS | Full severity × category weight |
37
+ | WARNING | 50% of full points |
38
+ | FAIL | 0 points |
39
+ | N/A | Excluded from total possible |
40
+
41
+ ## Category Weights by Platform
42
+
43
+ ### Google Ads
44
+ | Category | Weight | Rationale |
45
+ |----------|--------|-----------|
46
+ | Conversion Tracking | 25% | Foundation for all optimization; Enhanced Conv + Consent Mode V2 + CTV tracking (12 checks) |
47
+ | Wasted Spend / Negatives | 20% | Direct money leak; search terms, negative lists (8 checks) |
48
+ | Account Structure | 15% | Campaign organization, brand/non-brand separation (12 checks) |
49
+ | Keywords & Quality Score | 15% | QS as diagnostic, not KPI; keyword-ad alignment (8 checks) |
50
+ | Ads & Assets | 15% | RSA strength, PMax assets, AI Max, Demand Gen (12 checks + PMax 6 + AI/DG 4) |
51
+ | Settings & Targeting | 10% | Location, network, audiences, landing pages (12 checks) |
52
+
53
+ ### Meta Ads
54
+ | Category | Weight | Rationale |
55
+ |----------|--------|-----------|
56
+ | Pixel / CAPI Health | 30% | 87% of advertisers have poor EMQ; foundational signal (10 checks) |
57
+ | Creative (Diversity & Fatigue) | 30% | Andromeda makes creative the #1 targeting lever (12 checks) |
58
+ | Account Structure | 20% | Learning phase, Advantage+ Sales, consolidation (18 checks) |
59
+ | Audience & Targeting | 20% | Overlap, exclusions, Advantage+ Audience (6 checks) |
60
+ | Andromeda & Platform Changes | N/A | v1.5 checks scored within above categories (4 checks) |
61
+
62
+ ### LinkedIn Ads
63
+ | Category | Weight | Rationale |
64
+ |----------|--------|-----------|
65
+ | Technical Setup | 25% | Insight Tag + CAPI essential for B2B attribution (2 checks) |
66
+ | Audience Quality | 25% | LinkedIn's targeting precision is its differentiator (7 checks) |
67
+ | Creative & Formats | 20% | TLA + format diversity; video efficiency varies (4 checks) |
68
+ | Lead Gen Forms | 15% | 13% CVR (3.25x landing pages); CRM integration (2 checks) |
69
+ | Bidding & Budget | 15% | Manual CPC first for cost control (2 checks) |
70
+ | CRM & Compliance | 10% | v1.5: CRM revenue attribution, EU messaging compliance (2 checks) |
71
+
72
+ ### TikTok Ads
73
+ | Category | Weight | Rationale |
74
+ |----------|--------|-----------|
75
+ | Creative Quality | 30% | Native-feel content is #1 success factor (10 checks) |
76
+ | Technical Setup | 25% | Pixel + Events API Gateway + ttclid passback (2 checks) |
77
+ | Bidding & Learning | 20% | 50 conv/week to exit learning; budget sufficiency (3 checks) |
78
+ | Structure & Settings | 15% | Smart+ modular control, Search Toggle, Shop integration (6 checks) |
79
+ | Performance | 10% | CTR, CPA, completion rate benchmarks (3 checks) |
80
+ | Search, Commerce & Tracking | N/A | v1.5 checks scored within above categories (3 checks) |
81
+
82
+ ### Microsoft Ads
83
+ | Category | Weight | Rationale |
84
+ |----------|--------|-----------|
85
+ | Technical Setup | 25% | UET tag, import validation, Enhanced Conv (3 checks) |
86
+ | Syndication & Bidding | 20% | Partner network control (High severity), Copilot placement (4 checks) |
87
+ | Structure & Audience | 20% | LinkedIn targeting (16% CTR lift), campaign structure (3 checks) |
88
+ | Creative & Extensions | 20% | Multimedia, Video (9:16 Apr 2025), Action/Filter Link (5 checks) |
89
+ | Settings & Performance | 15% | CPC advantage tracking, conversion rate comparison (5 checks) |
90
+ | Import Safety, Compliance & Video | N/A | v1.5: scheduled imports, Consent Mode, CTV, video (4 checks) |
91
+
92
+ ## Grading Thresholds
93
+
94
+ | Grade | Score | Label | Action Required |
95
+ |-------|-------|-------|-----------------|
96
+ | A | 90-100 | Excellent | Minor optimizations only |
97
+ | B | 75-89 | Good | Some improvement opportunities |
98
+ | C | 60-74 | Needs Improvement | Notable issues need attention |
99
+ | D | 40-59 | Poor | Significant problems present |
100
+ | F | <40 | Critical | Urgent intervention required |
101
+
102
+ ## Quick Wins Logic
103
+
104
+ ```
105
+ IF severity == "Critical" OR severity == "High"
106
+ AND estimated_remediation_time < 15 minutes
107
+ THEN flag as "Quick Win"
108
+ PRIORITY: Quick Wins sorted by (severity × estimated_impact) DESC
109
+ ```
110
+
111
+ Quick Win examples:
112
+ - Enable Enhanced Conversions (Critical, 5 min)
113
+ - Turn on Search Ads Toggle in TikTok (High, 2 min)
114
+ - Add negative keyword lists (Critical, 10 min)
115
+ - Fix location targeting method (Critical, 2 min)
116
+ - Enable Advantage+ Placements (Medium, 2 min)
117
+
118
+ ## Weighting Rationale
119
+
120
+ Category weights are calibrated for paid advertising accounts where conversion tracking infrastructure is the highest-impact factor (25-30% weight across platforms). This differs from generic scoring systems because:
121
+ - Broken tracking invalidates all optimization decisions downstream
122
+ - Creative and targeting quality follow tracking in priority
123
+ - Settings and compliance are important but have lower direct revenue impact
124
+ - Weights sum to 100% per platform, enabling direct cross-platform comparison
125
+
126
+ The grading thresholds (A=90-100, B=75-89, C=60-74, D=40-59, F=<40) use wider bands than academic-style scoring because ad account health is typically distributed lower; a score of 75+ represents genuinely well-managed accounts.
127
+
128
+ ---
129
+
130
+ ## Cross-Platform Checks (v1.5)
131
+
132
+ These checks apply across all platforms during full audits:
133
+
134
+ | ID | Check | Severity | Description |
135
+ |----|-------|----------|-------------|
136
+ | X-PI1 | Privacy infrastructure completeness | Critical | Consent Mode V2 (Google/MS) + CAPI (Meta) + Events API (TikTok) + AdAttributionKit (Apple). Without proper signals, no optimization works |
137
+ | X-CD1 | Creative diversity audit | High | Andromeda, Smart+, and PMax all use creative signals for targeting. Flag accounts with <5 genuinely distinct creative concepts |
138
+ | X-RF1 | Platform-appropriate refresh cadence | High | TikTok 7-10d, Meta 14-21d, LinkedIn 4-6w, Google/MS 8-12w. Flag overdue refreshes |
139
+
140
+ Cross-platform checks are scored at 100% weight in the aggregate score (not within any single platform).
141
+
142
+ ---
143
+
144
+ ## Total Check Counts (v1.5)
145
+
146
+ | Platform | v1.0 | v1.5 | Change |
147
+ |----------|------|------|--------|
148
+ | Google | 74 | 80 | +6 (AI Max, Demand Gen, CTV, PMax negatives) |
149
+ | Meta | 46 | 50 | +4 (Andromeda, attribution, Incremental, Threads) |
150
+ | LinkedIn | 25 | 27 | +2 (CRM, EU compliance) |
151
+ | TikTok | 25 | 28 | +3 (Search, GMV Max, Events API) |
152
+ | Microsoft | 20 | 24 | +4 (imports, Consent Mode, CTV, video) |
153
+ | Cross-platform | 0 | 3 | +3 (privacy, creative diversity, refresh cadence) |
154
+ | **Total** | **190** | **212** | **+22 new checks** |
155
+
156
+ Note: Apple and YouTube checks are scored within their respective SKILL.md files, not in the reference audit checklists.
157
+
158
+ ---
159
+
160
+ ## Cross-Platform Aggregate Score
161
+
162
+ When auditing multiple platforms, calculate per-platform scores then aggregate:
163
+
164
+ ```
165
+ Aggregate Score = Σ(Platform_Score × Platform_Budget_Share)
166
+
167
+ Example: Google (82) × 40% + Meta (71) × 35% + LinkedIn (90) × 25%
168
+ = 32.8 + 24.85 + 22.5 = 80.15 → Grade B
169
+ ```
@@ -0,0 +1,165 @@
1
+ # TikTok Ads Audit Checklist
2
+
3
+ <!-- Updated: 2026-05-14 | v1.6 -->
4
+ <!-- Sources: Google Research PDF 1 (T01-T25), Claude Research, Gemini Research, 2026 Verification Pass -->
5
+ <!-- Total Checks: 28 | Categories: 6 | See scoring-system.md for weights and algorithm -->
6
+
7
+ ## Quick Reference
8
+
9
+ | Category | Weight | Check Count |
10
+ |----------|--------|-------------|
11
+ | Creative Quality | 30% | T05-T10 + T20-T25 (12 checks) |
12
+ | Technical Setup | 25% | T01-T02 (2 checks) |
13
+ | Bidding & Learning | 20% | T11-T13 (3 checks) |
14
+ | Structure & Settings | 15% | T03-T04 + T14-T16 (5 checks) |
15
+ | Performance | 10% | T17-T19 (3 checks) |
16
+ | Search, Commerce & Tracking | N/A | T-SR1, T-GM1, T-EA1 (3 checks, v1.5) |
17
+
18
+ ---
19
+
20
+ ## Creative Quality (30% weight)
21
+
22
+ | ID | Check | Severity | Pass | Warning | Fail |
23
+ |----|-------|----------|------|---------|------|
24
+ | T05 | Creative volume | Critical | ≥6 creative assets per ad group | 3-5 creatives | <3 creatives per ad group |
25
+ | T06 | Vertical video format | Critical | All video assets 9:16 (1080x1920) | Mixed ratios with some vertical | No vertical video (landscape only) |
26
+ | T07 | Native-looking content | High | Ads look organic / creator-style (not polished corporate) | Semi-native style | Clearly corporate/polished ads |
27
+ | T08 | Hook strategy | High | First 1-2 seconds have attention-grabbing hook | Decent hook but not optimized | No clear hook in opening |
28
+ | T09 | Creative lifespan | High | No creative active >7 days with declining CTR (7-10 day avg lifespan). Frequency <2.5x. Campaigns with 10+ unique creatives achieve 1.3x higher ad recall, 3.0x purchase intent, 1.5x higher awareness vs <5 | 7-14 days with minor decline; frequency approaching 2.5x | >14 days with significant CTR decline. Frequency >2.5x causes 30-40% CVR drops |
29
+ | T10 | Spark Ads utilization | High | Spark Ads tested and active (+30% completion rate, +142% engagement rate, +43% CVR, -4% CPM vs non-Spark). Profile landing page = 69% higher CVR and 37% lower CPA. Strategy: test with dark ads first, identify top performers, convert winners to Spark | Tested but paused | No Spark Ads tested (~3% CTR vs ~2% standard) |
30
+ | T20 | TikTok Shop integration | Medium | Shop catalog connected (for e-commerce) | N/A | Eligible but not connected |
31
+ | T21 | Video Shopping Ads (VSA) | Medium | VSA tested for product catalog accounts | N/A | Not tested despite eligible catalog |
32
+ | T22 | Caption SEO | High | Captions include high-intent keywords for search discovery | Some keywords in captions | No keyword optimization in captions |
33
+ | T23 | Sound/music usage | Medium | Trending or engaging audio used | Licensed audio but not trending | Silent ads (TikTok is sound-on platform) |
34
+ | T24 | CTA button | Medium | Appropriate CTA button selected (not default) | N/A | Default CTA without customization |
35
+ | T25 | Safe zone compliance | High | Key content within safe zone (X:40-940, Y:150-1470) | Minor elements outside safe zone | Key text/CTA in UI overlay zones |
36
+
37
+ ---
38
+
39
+ ## Technical Setup (25% weight)
40
+
41
+ | ID | Check | Severity | Pass | Warning | Fail |
42
+ |----|-------|----------|------|---------|------|
43
+ | T01 | TikTok Pixel installed | Critical | Pixel firing on all relevant pages | Firing on most pages (>90%) | Pixel not installed or broken |
44
+ | T02 | Events API + ttclid | High | Server-side events via Events API with ttclid passback | Events API active but no ttclid passback | No server-side tracking |
45
+
46
+ ### ttclid Critical Note
47
+ The TikTok Click ID (`ttclid`) comes in landing page URL parameters and MUST be:
48
+ 1. Captured on first page load
49
+ 2. Stored in session/cookie
50
+ 3. Sent back with ALL conversion events
51
+
52
+ Without ttclid, attribution breaks for many conversions. This is TikTok's key technical difference from other platforms.
53
+
54
+ ---
55
+
56
+ ## Bidding & Learning (20% weight)
57
+
58
+ | ID | Check | Severity | Pass | Warning | Fail |
59
+ |----|-------|----------|------|---------|------|
60
+ | T11 | Bid strategy | High | Lowest Cost for volume; Cost Cap for efficiency | N/A | Bid Cap set too aggressively (severe under-delivery) |
61
+ | T12 | Budget sufficiency | High | Daily budget ≥50x target CPA per ad group. GMV Max mandatory for all Shop Ads (July 2025). For first-time VSA campaigns, budget ≥50x target CPA. Evaluate holistically: Shop total GMV / (Ads cost + affiliate commission) | 20-49x CPA | <20x CPA per ad group |
62
+ | T13 | Learning phase | High | Ad groups achieving ≥50 conversions/week | 25-50 conversions/week | <25 conversions/week (stuck in learning) |
63
+
64
+ ### Learning Phase Rules
65
+ - Exit criteria: ~50 conversions in 7 days per ad group
66
+ - Campaign minimum budget: $50/day
67
+ - Ad group minimum budget: $20/day
68
+ - Daily budget should be ≥50x target CPA for sufficient learning room
69
+ - Avoid changes during learning (resets the phase)
70
+
71
+ ---
72
+
73
+ ## Structure & Settings (15% weight)
74
+
75
+ | ID | Check | Severity | Pass | Warning | Fail |
76
+ |----|-------|----------|------|---------|------|
77
+ | T03 | Campaign structure | High | Separate campaigns for prospecting vs retargeting | N/A | Prospecting and retargeting mixed |
78
+ | T04 | Smart+ utilization | Medium | Smart+ campaigns tested with modular control. Advertisers can lock specific modules (targeting, creative, budget, placement) while automating others. Supports up to 30 ad groups/campaign, 30 asset groups/ad group, 50 creatives/asset group | N/A | Not tested (42% adoption, 1.41-1.67 median ROAS; modular control since 2025) |
79
+ | T14 | Search Ads Toggle | High | Search Ads Toggle enabled for all campaigns (20% increase in conversions when combined with In-Feed; 18% of in-feed non-converters convert via Search Ad; 2x higher purchase lift; 57% of TikTok users use search). Max 1,000 keywords per ad group | N/A | Search Ads Toggle OFF (missing significant incremental conversions) |
80
+ | T15 | Placement selection | Medium | Appropriate placements selected (TikTok, Pangle, etc.) | Default placements without review | N/A |
81
+ | T16 | Dayparting | Low | Ad schedule aligned with target audience activity | N/A | No schedule despite clear patterns |
82
+
83
+ ---
84
+
85
+ ## Performance (10% weight)
86
+
87
+ | ID | Check | Severity | Pass | Warning | Fail |
88
+ |----|-------|----------|------|---------|------|
89
+ | T17 | CTR benchmark | High | CTR ≥1.0% for in-feed ads | CTR 0.5-1.0% | CTR <0.5% |
90
+ | T18 | CPA target | High | CPA within target range | CPA 1.5-3x target | CPA >3x target (trigger 3x Kill Rule) |
91
+ | T19 | Video completion rate | Medium | Average video watch time ≥6 seconds | 3-6 seconds | <3 seconds average watch time |
92
+
93
+ ---
94
+
95
+ ## Quick Wins (TikTok)
96
+
97
+ | Check | Fix | Time |
98
+ |-------|-----|------|
99
+ | T14: Search Ads Toggle | Enable Search Ads Toggle in campaign settings | 2 min |
100
+ | T06: Vertical video | Convert existing assets to 9:16 format | 10 min |
101
+ | T24: CTA button | Select appropriate CTA (not default) | 2 min |
102
+ | T10: Spark Ads | Whitelist top creator/organic content as Spark Ads | 10 min |
103
+ | T22: Caption SEO | Add high-intent keywords to ad captions | 5 min |
104
+ | T25: Safe zone | Verify key content within X:40-940, Y:150-1470 | 5 min |
105
+
106
+ ---
107
+
108
+ ## TikTok-Specific Context
109
+
110
+ | Fact | Value |
111
+ |------|-------|
112
+ | Smart+ adoption | 42% of US TikTok performance campaigns (surged from 9% in early 2025) |
113
+ | Smart+ capacity | 30 ad groups/campaign, 30 asset groups/ad group, 50 creatives/asset group |
114
+ | GMV Max | Default for TikTok Shop Ads (July 2025) |
115
+ | TikTok Shop CVR | >10% (vs 0.46-2.4% standard) |
116
+ | CPM advantage | 40-60% cheaper than Meta |
117
+ | Spark Ads CTR | ~3% vs ~2% standard In-Feed |
118
+ | Spark Ads CPA | ~$60 vs ~$100 standard |
119
+ | Engagement rate | 5-16% (far exceeds FB 0.09%, IG 1.22%) |
120
+ | Search Ads | Launched 2025; available in ~12 markets (US, UK, Canada, Germany, France, Italy, Spain, Mexico, Brazil, Australia, Saudi Arabia, Japan). Lead Generation: US only |
121
+ | Safe zone | X:40-940px, Y:150-1470px (900x1320px usable) |
122
+ | Available markets | 12 countries (US, UK, key Asian/European) |
123
+
124
+ ---
125
+
126
+ ## Search, Commerce & Tracking (v1.5)
127
+
128
+ | ID | Check | Severity | Pass | Warning | Fail |
129
+ |----|-------|----------|------|---------|------|
130
+ | T-SR1 | Search Ads alongside In-Feed | High | Search Ads enabled alongside In-Feed campaigns (20% conversion uplift when combined; 18% of non-converters from in-feed convert via Search; 2x purchase lift). Supports keyword targeting with exact/phrase/broad, negative keywords, search term reports | N/A | Search Ads not enabled despite available budget (missing 18-20% incremental conversions) |
131
+ | T-GM1 | GMV Max for Shop campaigns | Critical | All TikTok Shop campaigns use GMV Max (mandatory since July 2025). Three ad types: Video Shopping Ads, LIVE Shopping Ads, Product Shopping Ads | Non-GMV Max Shop campaigns still transitioning | Non-GMV Max Shop campaigns active (non-compliant with July 2025 mandate) |
132
+ | T-EA1 | Events API Gateway setup | High | Events API Gateway configured for simplified server-side tracking (recovers 13%+ of missed conversions vs pixel-only). SKAN 4 integration with coarse conversion values active for iOS | Events API planned but not deployed | No server-side tracking (pixel-only, missing 13%+ of conversions) |
133
+
134
+ ---
135
+
136
+ ## Context Notes
137
+
138
+ - **Smart+ modular control (2025)**: Lock targeting/creative/budget/placement independently
139
+ - **GMV Max (July 2025)**: Mandatory for all Shop Ads campaigns
140
+ - **Symphony Automation**: AI-powered creative variations from product URLs, which impacts creative refresh evaluation
141
+ - **Events API Gateway**: Simplified server-side setup for conversion recovery
142
+ - **Search Ads maturity**: Now supports Sales, Traffic, and Lead Generation objectives in 12 markets
143
+ - **Creative lifespan**: 7-10 days average. Refresh weekly minimum. High-spend ($1K+/day) needs variations every 3-4 days
144
+
145
+ ---
146
+
147
+ ## TikTok Safe Zone Diagram
148
+
149
+ ```
150
+ ┌──────────────────────────────┐
151
+ │ 0-150px: Status bar, account│ ← TOP UNSAFE
152
+ ├──────────────────────────────┤
153
+ │ │ │
154
+ │ SAFE ZONE │140 │ ← RIGHT: Like, comment,
155
+ │ X: 40-940px │ px │ share, profile icons
156
+ │ Y: 150-1470px │ │
157
+ │ (900×1320px) │ │
158
+ │ │ │
159
+ ├──────────────────────────────┤
160
+ │ 0-450px: Caption, music, │ ← BOTTOM UNSAFE
161
+ │ CTA, navigation bar │
162
+ └──────────────────────────────┘
163
+ ```
164
+
165
+ All critical text, logos, and CTAs MUST be within the safe box.
@@ -0,0 +1,139 @@
1
+ # TikTok Creative Specs: Generation Guide
2
+
3
+ <!-- Updated: 2026-03-12 -->
4
+ <!-- Source: platform-specs.md + TikTok Ads Manager requirements -->
5
+ <!-- Used by: ads-generate, visual-designer agent -->
6
+
7
+ ## Purpose
8
+
9
+ Generation-ready specifications for TikTok ad creative. TikTok is vertical-only and
10
+ sound-on. Horizontal or square creatives are **rejected at upload**. Safe zone
11
+ compliance is critical; UI elements cover significant portions of the frame.
12
+
13
+ ---
14
+
15
+ ## Required Format
16
+
17
+ | Ratio | Dimensions | Notes |
18
+ |-------|-----------|-------|
19
+ | **9:16 (ONLY)** | **1080×1920** | **Only accepted format for In-Feed and TopView** |
20
+
21
+ **There is no alternative.** Horizontal (16:9) or square (1:1) compositions are
22
+ rejected by TikTok Ads Manager. Always generate vertically.
23
+
24
+ **File requirements:** MP4 or MOV, H.264, AAC audio required, max 500MB.
25
+ **For image-based static ads:** PNG or JPG at 1080×1920.
26
+
27
+ ---
28
+
29
+ ## TikTok Safe Zone Diagram
30
+
31
+ ```
32
+ ┌─────────────────────────────────┐ ← Top (Y:0)
33
+ │ STATUS BAR + ACCOUNT INFO │ ← Y:0-150 (AVOID)
34
+ ├─────────────────────────────────┤
35
+ │ │LIKE │ ← RIGHT EDGE: X:940-1080
36
+ │ │COMMENT │ (AVOID; UI icons)
37
+ │ ██████████████████ │SHARE │
38
+ │ █ █ │PROFILE │
39
+ │ █ SAFE CONTENT █ │ │
40
+ │ █ ZONE █ │ │
41
+ │ █ X:40 to X:940 █ │ │
42
+ │ █ Y:150 to Y:1470█ │ │
43
+ │ █ (900×1320px) █ │ │
44
+ │ ██████████████████ │ │
45
+ │ │
46
+ │ CAPTION + MUSIC + CTA + NAV │ ← Y:1470-1920 (AVOID)
47
+ └─────────────────────────────────┘ ← Bottom (Y:1920)
48
+ ```
49
+
50
+ **Safe Box: X:40-940, Y:150-1470 (900×1320px)**
51
+
52
+ All critical text, logos, faces, CTAs, and key product elements MUST be within
53
+ the safe box. Anything outside this zone will be hidden behind UI overlays.
54
+
55
+ ---
56
+
57
+ ## Content Area Guidelines
58
+
59
+ | Zone | Y Range | X Range | Action |
60
+ |------|---------|---------|--------|
61
+ | Status bar | 0-150 | full | Keep clear |
62
+ | Right side icons | 150-1470 | 940-1080 | Keep clear |
63
+ | Caption/CTA bar | 1470-1920 | full | Keep clear |
64
+ | **Safe content zone** | **150-1470** | **40-940** | **Place all key content here** |
65
+
66
+ **Subject placement rule:** Main subject (person, product) should be centered in the
67
+ upper 60% of the safe zone (Y:150-900). This ensures visibility even on smaller screens.
68
+
69
+ ---
70
+
71
+ ## Copy Limits
72
+
73
+ | Component | Max | Notes |
74
+ |-----------|-----|-------|
75
+ | Ad text | 100 chars | Appears below video |
76
+ | Display name | 25 chars | Brand name shown |
77
+ | CTA button | Predefined list | Auto-placed in safe zone |
78
+
79
+ ---
80
+
81
+ ## Ad Format Types
82
+
83
+ ### In-Feed Ads (Non-Spark)
84
+ - Appears in For You Page (FYP) between organic videos
85
+ - Duration: 5-60 seconds (rec 9-15s for highest completion)
86
+ - Must have audio; silent video severely underperforms
87
+ - Generate: static thumbnail at 1080×1920 within safe zone
88
+
89
+ ### Spark Ads
90
+ - Promotes existing organic TikTok posts
91
+ - Use organic video content; generate only the **thumbnail frame**
92
+ - Thumbnail: 1080×1920, subject centered in safe zone
93
+
94
+ ### TopView
95
+ - First ad seen when app opens (premium placement)
96
+ - Specs: 720×1280 minimum (1080×1920 recommended), 5-60s
97
+ - Higher production quality expected
98
+
99
+ ---
100
+
101
+ ## Generation Constraints
102
+
103
+ **Always include in prompts:**
104
+ - `"vertical composition, 9:16 aspect ratio"`
105
+ - `"subject centered in upper portion of frame"`
106
+ - `"bottom third is clear or minimal background"` (caption overlay area)
107
+ - `"bold, eye-catching visual designed for mobile fullscreen"`
108
+
109
+ **Forbidden in prompts:**
110
+ - `"horizontal"`, `"landscape"`, `"widescreen"`; will generate wrong orientation
111
+ - `"text in bottom third"`: will be covered by caption UI
112
+ - `"logo in bottom corner"`: will be covered by TikTok navigation
113
+
114
+ **Text in safe zone only:** If asking for text rendered into the image (not ad copy),
115
+ specify `"text in upper center of frame, within 900px wide safe zone"`.
116
+
117
+ ---
118
+
119
+ ## Sound-On Platform Rule
120
+
121
+ **Never run silent video on TikTok.** Audio is expected.
122
+ - All video assets must have audio track
123
+ - For static image ads: no audio required, but platform may add music
124
+ - For generation: this constraint applies to video, not static image generation
125
+
126
+ ---
127
+
128
+ ## Aspect Ratio Priority
129
+
130
+ TikTok has one option: **1080×1920 (9:16)**. No alternatives.
131
+
132
+ ---
133
+
134
+ ## Smart+ Specs
135
+
136
+ Smart+ campaigns auto-generate creative variations:
137
+ - Up to 50 creatives per asset group
138
+ - Symphony AI generates variations from your base asset
139
+ - Generate 1 high-quality base image; Smart+ handles variations
@@ -0,0 +1,87 @@
1
+ # Brand Voice to Visual Style Mapping
2
+
3
+ > Updated: 2026-04-01
4
+ > Source: Used by creative-strategist and visual-designer agents
5
+
6
+ ## Purpose
7
+
8
+ Brand voice scores (1 to 10 scale) from `brand-profile.json` translate directly
9
+ into visual style descriptors for image generation prompts. Each axis maps to
10
+ specific aesthetic attributes that become the [STYLE] component in banana prompts.
11
+ When multiple axes combine, their descriptors merge into a cohesive style string.
12
+
13
+ ## Axis Mappings
14
+
15
+ ### 1. formal_casual
16
+
17
+ | Range | Score | Visual Descriptors |
18
+ |-----------|-------|---------------------------------------------------------|
19
+ | Low | 1-3 | Clean lines, symmetrical, muted palette, serif type |
20
+ | Mid | 4-6 | Balanced layout, neutral tones, modern sans-serif |
21
+ | High | 7-10 | Organic shapes, warm palette, hand-drawn elements |
22
+
23
+ ### 2. rational_emotional
24
+
25
+ | Range | Score | Visual Descriptors |
26
+ |-----------|-------|---------------------------------------------------------|
27
+ | Low | 1-3 | Data overlays, charts, structured grids, cool tones |
28
+ | Mid | 4-6 | Infographic style, balanced data and imagery |
29
+ | High | 7-10 | Expressive color, human faces, dynamic motion blur |
30
+
31
+ ### 3. bold_subtle
32
+
33
+ | Range | Score | Visual Descriptors |
34
+ |-----------|-------|---------------------------------------------------------|
35
+ | Low | 1-3 | Soft focus, pastel tones, whitespace, thin strokes |
36
+ | Mid | 4-6 | Medium contrast, standard weight type, clear hierarchy |
37
+ | High | 7-10 | High contrast, saturated color, heavy type, full bleed |
38
+
39
+ ### 4. traditional_innovative
40
+
41
+ | Range | Score | Visual Descriptors |
42
+ |-----------|-------|---------------------------------------------------------|
43
+ | Low | 1-3 | Classic compositions, heritage textures, earth tones |
44
+ | Mid | 4-6 | Contemporary layouts, balanced modern and classic cues |
45
+ | High | 7-10 | Futuristic gradients, 3D renders, neon accents, glass |
46
+
47
+ ### 5. friendly_authoritative
48
+
49
+ | Range | Score | Visual Descriptors |
50
+ |-----------|-------|---------------------------------------------------------|
51
+ | Low | 1-3 | Rounded shapes, illustration style, bright accents |
52
+ | Mid | 4-6 | Mixed photography and illustration, approachable layout |
53
+ | High | 7-10 | Editorial photography, dark backgrounds, gold accents |
54
+
55
+ ### 6. playful_serious
56
+
57
+ | Range | Score | Visual Descriptors |
58
+ |-----------|-------|---------------------------------------------------------|
59
+ | Low | 1-3 | Whimsical patterns, cartoon elements, candy colors |
60
+ | Mid | 4-6 | Lifestyle photography, natural color grading |
61
+ | High | 7-10 | Cinematic lighting, desaturated palette, minimal decor |
62
+
63
+ ## How to Apply
64
+
65
+ 1. Read `brand-profile.json` and extract the six voice axis scores.
66
+ 2. For each axis, look up the matching range (Low, Mid, High) in the table above.
67
+ 3. Collect one or two descriptors per axis that best fit the brand context.
68
+ 4. Combine all selected descriptors into a single [STYLE] string, separated by commas.
69
+ 5. Append the [STYLE] string to the banana prompt template before generation.
70
+
71
+ ## Example
72
+
73
+ Given a brand with these scores:
74
+
75
+ - formal_casual: 7 (High; organic shapes, warm palette)
76
+ - bold_subtle: 8 (High; high contrast, saturated color)
77
+ - playful_serious: 3 (Low; whimsical patterns, candy colors)
78
+
79
+ The resulting [STYLE] component:
80
+
81
+ ```
82
+ [STYLE]: organic shapes, warm palette, high contrast, saturated color,
83
+ whimsical patterns, candy colors
84
+ ```
85
+
86
+ This creates a vibrant, approachable visual identity that feels energetic
87
+ and playful while maintaining strong visual impact.