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.
- package/dist/migrate.js +81 -43
- package/dist/setup.js +20 -1
- package/package.json +1 -1
- package/stacks/_shared/ads-agents/README.md +452 -0
- package/stacks/_shared/ads-agents/RESEARCH-REPORT.md +157 -0
- package/stacks/_shared/ads-agents/SKILL.md +210 -0
- package/stacks/_shared/ads-agents/SKILLS-UPDATE-REPORT.md +255 -0
- package/stacks/_shared/ads-agents/agents/audit-budget.md +116 -0
- package/stacks/_shared/ads-agents/agents/audit-compliance.md +131 -0
- package/stacks/_shared/ads-agents/agents/audit-creative.md +127 -0
- package/stacks/_shared/ads-agents/agents/audit-google.md +113 -0
- package/stacks/_shared/ads-agents/agents/audit-meta.md +112 -0
- package/stacks/_shared/ads-agents/agents/audit-tracking.md +134 -0
- package/stacks/_shared/ads-agents/agents/copy-writer.md +188 -0
- package/stacks/_shared/ads-agents/agents/creative-strategist.md +199 -0
- package/stacks/_shared/ads-agents/agents/format-adapter.md +175 -0
- package/stacks/_shared/ads-agents/agents/visual-designer.md +245 -0
- package/stacks/_shared/ads-agents/references/additional-platforms.md +106 -0
- package/stacks/_shared/ads-agents/references/benchmarks.md +257 -0
- package/stacks/_shared/ads-agents/references/bidding-strategies.md +333 -0
- package/stacks/_shared/ads-agents/references/brand-dna-template.md +190 -0
- package/stacks/_shared/ads-agents/references/budget-allocation.md +150 -0
- package/stacks/_shared/ads-agents/references/compliance.md +280 -0
- package/stacks/_shared/ads-agents/references/conversion-tracking.md +246 -0
- package/stacks/_shared/ads-agents/references/copy-frameworks.md +187 -0
- package/stacks/_shared/ads-agents/references/funnel-content-copy-rules.md +44 -0
- package/stacks/_shared/ads-agents/references/gaql-notes.md +49 -0
- package/stacks/_shared/ads-agents/references/google-audit.md +217 -0
- package/stacks/_shared/ads-agents/references/google-creative-specs.md +119 -0
- package/stacks/_shared/ads-agents/references/image-providers.md +133 -0
- package/stacks/_shared/ads-agents/references/linkedin-audit.md +141 -0
- package/stacks/_shared/ads-agents/references/linkedin-creative-specs.md +129 -0
- package/stacks/_shared/ads-agents/references/mcp-integration.md +125 -0
- package/stacks/_shared/ads-agents/references/meta-audit.md +141 -0
- package/stacks/_shared/ads-agents/references/meta-creative-specs.md +134 -0
- package/stacks/_shared/ads-agents/references/microsoft-audit.md +158 -0
- package/stacks/_shared/ads-agents/references/microsoft-creative-specs.md +123 -0
- package/stacks/_shared/ads-agents/references/platform-specs.md +276 -0
- package/stacks/_shared/ads-agents/references/scoring-system.md +169 -0
- package/stacks/_shared/ads-agents/references/tiktok-audit.md +165 -0
- package/stacks/_shared/ads-agents/references/tiktok-creative-specs.md +139 -0
- package/stacks/_shared/ads-agents/references/voice-to-style.md +87 -0
- package/stacks/_shared/ads-agents/references/youtube-creative-specs.md +134 -0
- package/stacks/_shared/ads-agents/skills/ads-apple/SKILL.md +225 -0
- package/stacks/_shared/ads-agents/skills/ads-audit/SKILL.md +108 -0
- package/stacks/_shared/ads-agents/skills/ads-budget/SKILL.md +198 -0
- package/stacks/_shared/ads-agents/skills/ads-competitor/SKILL.md +198 -0
- package/stacks/_shared/ads-agents/skills/ads-create/SKILL.md +198 -0
- package/stacks/_shared/ads-agents/skills/ads-creative/SKILL.md +208 -0
- package/stacks/_shared/ads-agents/skills/ads-dna/SKILL.md +245 -0
- package/stacks/_shared/ads-agents/skills/ads-generate/SKILL.md +173 -0
- package/stacks/_shared/ads-agents/skills/ads-google/SKILL.md +192 -0
- package/stacks/_shared/ads-agents/skills/ads-landing/SKILL.md +186 -0
- package/stacks/_shared/ads-agents/skills/ads-linkedin/SKILL.md +200 -0
- package/stacks/_shared/ads-agents/skills/ads-math/SKILL.md +216 -0
- package/stacks/_shared/ads-agents/skills/ads-meta/SKILL.md +167 -0
- package/stacks/_shared/ads-agents/skills/ads-microsoft/SKILL.md +163 -0
- package/stacks/_shared/ads-agents/skills/ads-photoshoot/SKILL.md +220 -0
- package/stacks/_shared/ads-agents/skills/ads-plan/SKILL.md +176 -0
- package/stacks/_shared/ads-agents/skills/ads-test/SKILL.md +199 -0
- package/stacks/_shared/ads-agents/skills/ads-tiktok/SKILL.md +190 -0
- package/stacks/_shared/ads-agents/skills/ads-youtube/SKILL.md +199 -0
- package/stacks/_shared/hooks/_state.ts +8 -2
- package/stacks/_shared/hooks/plan-gate.ts +138 -0
- package/stacks/_shared/memories/funnel-content-copy.md +81 -0
- 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.
|