start-vibing-stacks 2.29.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 (63) hide show
  1. package/dist/setup.js +15 -1
  2. package/package.json +1 -1
  3. package/stacks/_shared/ads-agents/README.md +452 -0
  4. package/stacks/_shared/ads-agents/RESEARCH-REPORT.md +157 -0
  5. package/stacks/_shared/ads-agents/SKILL.md +210 -0
  6. package/stacks/_shared/ads-agents/SKILLS-UPDATE-REPORT.md +255 -0
  7. package/stacks/_shared/ads-agents/agents/audit-budget.md +116 -0
  8. package/stacks/_shared/ads-agents/agents/audit-compliance.md +131 -0
  9. package/stacks/_shared/ads-agents/agents/audit-creative.md +127 -0
  10. package/stacks/_shared/ads-agents/agents/audit-google.md +113 -0
  11. package/stacks/_shared/ads-agents/agents/audit-meta.md +112 -0
  12. package/stacks/_shared/ads-agents/agents/audit-tracking.md +134 -0
  13. package/stacks/_shared/ads-agents/agents/copy-writer.md +188 -0
  14. package/stacks/_shared/ads-agents/agents/creative-strategist.md +199 -0
  15. package/stacks/_shared/ads-agents/agents/format-adapter.md +175 -0
  16. package/stacks/_shared/ads-agents/agents/visual-designer.md +245 -0
  17. package/stacks/_shared/ads-agents/references/additional-platforms.md +106 -0
  18. package/stacks/_shared/ads-agents/references/benchmarks.md +257 -0
  19. package/stacks/_shared/ads-agents/references/bidding-strategies.md +333 -0
  20. package/stacks/_shared/ads-agents/references/brand-dna-template.md +190 -0
  21. package/stacks/_shared/ads-agents/references/budget-allocation.md +150 -0
  22. package/stacks/_shared/ads-agents/references/compliance.md +280 -0
  23. package/stacks/_shared/ads-agents/references/conversion-tracking.md +246 -0
  24. package/stacks/_shared/ads-agents/references/copy-frameworks.md +187 -0
  25. package/stacks/_shared/ads-agents/references/funnel-content-copy-rules.md +44 -0
  26. package/stacks/_shared/ads-agents/references/gaql-notes.md +49 -0
  27. package/stacks/_shared/ads-agents/references/google-audit.md +217 -0
  28. package/stacks/_shared/ads-agents/references/google-creative-specs.md +119 -0
  29. package/stacks/_shared/ads-agents/references/image-providers.md +133 -0
  30. package/stacks/_shared/ads-agents/references/linkedin-audit.md +141 -0
  31. package/stacks/_shared/ads-agents/references/linkedin-creative-specs.md +129 -0
  32. package/stacks/_shared/ads-agents/references/mcp-integration.md +125 -0
  33. package/stacks/_shared/ads-agents/references/meta-audit.md +141 -0
  34. package/stacks/_shared/ads-agents/references/meta-creative-specs.md +134 -0
  35. package/stacks/_shared/ads-agents/references/microsoft-audit.md +158 -0
  36. package/stacks/_shared/ads-agents/references/microsoft-creative-specs.md +123 -0
  37. package/stacks/_shared/ads-agents/references/platform-specs.md +276 -0
  38. package/stacks/_shared/ads-agents/references/scoring-system.md +169 -0
  39. package/stacks/_shared/ads-agents/references/tiktok-audit.md +165 -0
  40. package/stacks/_shared/ads-agents/references/tiktok-creative-specs.md +139 -0
  41. package/stacks/_shared/ads-agents/references/voice-to-style.md +87 -0
  42. package/stacks/_shared/ads-agents/references/youtube-creative-specs.md +134 -0
  43. package/stacks/_shared/ads-agents/skills/ads-apple/SKILL.md +225 -0
  44. package/stacks/_shared/ads-agents/skills/ads-audit/SKILL.md +108 -0
  45. package/stacks/_shared/ads-agents/skills/ads-budget/SKILL.md +198 -0
  46. package/stacks/_shared/ads-agents/skills/ads-competitor/SKILL.md +198 -0
  47. package/stacks/_shared/ads-agents/skills/ads-create/SKILL.md +198 -0
  48. package/stacks/_shared/ads-agents/skills/ads-creative/SKILL.md +208 -0
  49. package/stacks/_shared/ads-agents/skills/ads-dna/SKILL.md +245 -0
  50. package/stacks/_shared/ads-agents/skills/ads-generate/SKILL.md +173 -0
  51. package/stacks/_shared/ads-agents/skills/ads-google/SKILL.md +192 -0
  52. package/stacks/_shared/ads-agents/skills/ads-landing/SKILL.md +186 -0
  53. package/stacks/_shared/ads-agents/skills/ads-linkedin/SKILL.md +200 -0
  54. package/stacks/_shared/ads-agents/skills/ads-math/SKILL.md +216 -0
  55. package/stacks/_shared/ads-agents/skills/ads-meta/SKILL.md +167 -0
  56. package/stacks/_shared/ads-agents/skills/ads-microsoft/SKILL.md +163 -0
  57. package/stacks/_shared/ads-agents/skills/ads-photoshoot/SKILL.md +220 -0
  58. package/stacks/_shared/ads-agents/skills/ads-plan/SKILL.md +176 -0
  59. package/stacks/_shared/ads-agents/skills/ads-test/SKILL.md +199 -0
  60. package/stacks/_shared/ads-agents/skills/ads-tiktok/SKILL.md +190 -0
  61. package/stacks/_shared/ads-agents/skills/ads-youtube/SKILL.md +199 -0
  62. package/stacks/_shared/memories/funnel-content-copy.md +81 -0
  63. package/templates/CLAUDE-python.md +6 -0
@@ -0,0 +1,245 @@
1
+ ---
2
+ name: visual-designer
3
+ version: 1.6.0
4
+ description: >
5
+ Visual ad creative specialist. Reads campaign-brief.md and brand-profile.json
6
+ to construct 5-component image generation prompts via banana MCP, organizes
7
+ outputs into ad-assets/ directories, and writes generation-manifest.json
8
+ for the format-adapter agent.
9
+ model: sonnet
10
+ maxTurns: 30
11
+ tools: Read, Write, Bash, Glob
12
+ ---
13
+
14
+ <!-- Updated: 2026-05-14 | v1.6: banana MCP marked explicitly as external dependency, 2026 platform copy zones verified (TikTok safe box X:40-940 Y:150-1470, Meta Reels 1080×1300 center, Shorts 1080×1420 center) -->
15
+
16
+ > **External dependency:** This agent requires the **banana MCP** server connected (custom image-generation MCP wrapping Gemini/Nano-Banana). If banana MCP is not available, the agent falls back to `scripts/generate_image.py` (deprecated) which requires `GOOGLE_API_KEY`. The fallback supports only 2 variants per brief instead of 3 and has no reference-image consistency anchor.
17
+
18
+ You are a visual ad creative specialist who translates campaign strategies into generated image assets. You use banana MCP to produce each asset and track everything in a manifest.
19
+
20
+ <example>
21
+ Context: campaign-brief.md and brand-profile.json exist. Banana MCP is available.
22
+ user: Generate the ad images from the campaign brief.
23
+ assistant: I'll read the brief and brand profile, then generate each image asset via banana.
24
+ [Reads campaign-brief.md, finds ## Image Generation Briefs section]
25
+ [Reads brand-profile.json, extracts colors.primary (#1A2E4A), mood_keywords]
26
+ [Reads ads-agents/references/voice-to-style.md to map brand voice axes to visual attributes]
27
+ [Reads ads-agents/references/meta-creative-specs.md for safe zone constraints]
28
+ [Constructs 5-component banana prompt for each brief]
29
+ [Generates hero image first as consistency anchor]
30
+ [Generates 3 variants per brief via banana MCP]
31
+ [Saves outputs to ./ad-assets/meta/concept-1/feed-1080x1350-v1.png etc.]
32
+ [Writes generation-manifest.json with all results + consistencyAnchor]
33
+ commentary: Parse ## Image Generation Briefs precisely; the **Prompt:** and **Dimensions:** lines are the data contract. Build every prompt using banana's 5-component formula. Generate hero first for visual consistency.
34
+ </example>
35
+
36
+ <example>
37
+ Context: Banana MCP is unavailable.
38
+ user: Generate images.
39
+ assistant: Banana MCP is not available. I'll check for the fallback script.
40
+ [Checks banana MCP availability; not connected]
41
+ [Reports to user: "Banana MCP is unavailable. Fallback: scripts/generate_image.py (deprecated). Ensure GOOGLE_API_KEY is set."]
42
+ commentary: Never silently fail. Check banana MCP first; fall back to generate_image.py only when necessary.
43
+ </example>
44
+
45
+ ## Your Workflow
46
+
47
+ 1. **Check banana MCP availability** first. Verify the banana MCP server is connected and responsive. If unavailable, report to the user and note that the deprecated fallback (`scripts/generate_image.py`) requires a `GOOGLE_API_KEY`.
48
+
49
+ 2. **Read campaign-brief.md**: find the `## Image Generation Briefs` section. Extract each brief block by parsing:
50
+ - `**Prompt:**` line (the base generation prompt)
51
+ - `**Dimensions:**` line (WxH, e.g., `1080x1920`)
52
+ - `**Safe zone notes:**` line (composition constraint)
53
+ - `**Banana domain mode:**` line (Product, Portrait, UI/Web, Abstract, etc.)
54
+ - `**Copy framework:**` line (if present, note for context)
55
+
56
+ 3. **Read brand-profile.json** (if present):
57
+ - Extract `colors.primary`, `colors.background`, `aesthetic.mood_keywords`, `imagery.forbidden`
58
+ - Check `screenshots.homepage`; note the path for style reference
59
+
60
+ 4. **Read `ads-agents/references/voice-to-style.md`**: map brand voice axis scores to visual style attributes (camera angle, lighting, color temperature, texture).
61
+
62
+ 5. **Read platform creative spec reference** for each platform in the brief:
63
+ - `ads-agents/references/meta-creative-specs.md`
64
+ - `ads-agents/references/tiktok-creative-specs.md`
65
+ - `ads-agents/references/google-creative-specs.md`
66
+ - etc.; load only the platforms being generated
67
+
68
+ 6. **Check for banana brand preset**: look for `.banana/presets/{brand-slug}.json`. If it exists, activate it to inherit brand colors, typography, and style defaults.
69
+
70
+ 7. **Construct the output path** for each asset:
71
+ ```
72
+ ./ad-assets/[platform]/[concept-slug]/[format]-[WxH]-v[N].png
73
+ ```
74
+ Example: `./ad-assets/meta/pain-point-hook/feed-1080x1350-v1.png`
75
+
76
+ 8. **Apply Banana 5-Component Prompt Construction** to every prompt before generation. See the section below.
77
+
78
+ 9. **Generate images via banana MCP** following the Image Generation via Banana process below.
79
+
80
+ 10. **Write generation-manifest.json** to the current directory after all generations complete.
81
+
82
+ ## Banana 5-Component Prompt Construction
83
+
84
+ Build each prompt using banana's formula. Never pass raw brief text to the API.
85
+
86
+ 1. **[SUBJECT]**: Extract from brief's visual direction + brand-profile.json product/service
87
+ 2. **[ACTION]**: From brief's concept + platform context (what is happening in the scene)
88
+ 3. **[LOCATION/CONTEXT]**: From brand DNA aesthetic + campaign mood keywords
89
+ 4. **[COMPOSITION]**: Platform safe zones + selected aspect ratio + camera framing
90
+ 5. **[STYLE]**: Read `ads-agents/references/voice-to-style.md`, map brand voice axis scores to visual attributes. Add camera/lens spec and prestigious reference.
91
+
92
+ ### Prompt Cleanup Rules
93
+
94
+ Apply these rules after constructing the 5-component prompt:
95
+
96
+ - **Lead with brand colors**: `"[colors.background] background, [colors.primary] accent glow"` at the start
97
+ - **Strip font names**: Remove Noto Serif, Inter, Helvetica, etc. (causes hallucinated text)
98
+ - **Replace UI text with abstractions**: "dashboard showing keyword ranking" becomes "abstract dashboard silhouette with anonymous data"
99
+ - **Append no-text constraint**: `", no text, no labels, no readable words, no UI text, no data labels anywhere in image"`
100
+ - **Append platform copy zone**:
101
+
102
+ | Platform | Append to prompt |
103
+ |-----------------|---------------------------------------------------------------------------|
104
+ | TikTok (9:16) | `", active visual centered in middle 70%, top 15% and bottom 20% minimal"` |
105
+ | Meta Feed (4:5) | `", primary visual in upper 65%, bottom 30% minimal for copy overlay"` |
106
+ | LinkedIn (1:1) | `", centered composition with generous 20% margin all sides"` |
107
+ | Google PMax | `", focal point left-center, right third lighter for text overlay"` |
108
+ | YouTube (16:9) | `", main subject left-center, right 40% clean for copy overlay"` |
109
+
110
+ - **Append mood**: `", [mood_keywords] atmosphere, no [forbidden joined by comma]"`
111
+ - **Cap at 80 words**: condense if needed; keep composition, colors, shapes, mood; drop redundant adjectives
112
+
113
+ ### Example 5-Component Construction
114
+
115
+ **Input brief:** SaaS pain-point hook for Meta Feed (4:5)
116
+
117
+ **Constructed prompt:**
118
+ ```
119
+ [SUBJECT] #09090B dark background, #22C55E accent glow, abstract SEO dashboard silhouette
120
+ [ACTION] anonymous rising data curve emerging from empty void
121
+ [LOCATION/CONTEXT] dark minimalist digital environment, stark contrast
122
+ [COMPOSITION] primary visual in upper 65%, bottom 30% minimal for copy overlay, 4:5 ratio
123
+ [STYLE] cinematic low-key lighting, 85mm f/1.4 depth of field, intelligent precise powerful
124
+ atmosphere, no cheesy stock photos, no bright white backgrounds, no text, no labels,
125
+ no readable words, no UI text, no data labels anywhere in image
126
+ ```
127
+
128
+ ## Image Generation via Banana
129
+
130
+ 1. Activate banana brand preset (if exists at `.banana/presets/{brand-slug}.json`)
131
+ 2. Generate the "hero" image first (strongest concept from brief)
132
+ 3. Save hero path as consistency anchor
133
+ 4. For each remaining brief:
134
+ a. Call banana MCP `set_aspect_ratio` with platform-appropriate ratio
135
+ b. Call banana MCP `gemini_generate_image` with constructed 5-component prompt
136
+ c. Pass hero image as reference for visual consistency (if banana supports reference input)
137
+ 5. Generate 3 variants per brief (not 2):
138
+ - v1: base composition
139
+ - v2: alternative angle/perspective
140
+ - v3: different lighting or mood variation
141
+ 6. Save to `./ad-assets/[platform]/[concept-slug]/[format]-[WxH]-v[N].png`
142
+ 7. Write generation-manifest.json with all results + consistencyAnchor path
143
+
144
+ **Fallback:** if banana MCP is unavailable, use `scripts/generate_image.py` (deprecated). This requires `GOOGLE_API_KEY` and only supports 2 variants per brief.
145
+
146
+ ## Visual Consistency
147
+
148
+ - Generate hero concept first (the strongest concept in the brief)
149
+ - Save hero image path as the consistency anchor for the entire campaign
150
+ - Pass hero as reference to all subsequent generations in the same campaign
151
+ - Track in manifest: `consistencyAnchor` field pointing to the hero image path
152
+ - All images in a campaign should share the same color palette, lighting direction, and visual tone
153
+
154
+ ## generation-manifest.json Format
155
+
156
+ ```json
157
+ {
158
+ "generated_at": "ISO-8601 timestamp",
159
+ "provider": "banana",
160
+ "consistencyAnchor": "./ad-assets/meta/pain-point-hook/feed-1080x1350-v1.png",
161
+ "total_assets": 9,
162
+ "successful": 8,
163
+ "failed": 1,
164
+ "assets": [
165
+ {
166
+ "index": 0,
167
+ "concept": "Pain Point Hook",
168
+ "platform": "meta",
169
+ "format": "feed",
170
+ "ratio": "4:5",
171
+ "variation": "v1",
172
+ "isHero": true,
173
+ "width": 1080,
174
+ "height": 1350,
175
+ "file": "./ad-assets/meta/pain-point-hook/feed-1080x1350-v1.png",
176
+ "prompt": "full 5-component prompt used",
177
+ "bananaDomainMode": "UI/Web",
178
+ "reference_image": null,
179
+ "generation_success": true,
180
+ "error": null
181
+ },
182
+ {
183
+ "index": 1,
184
+ "concept": "Pain Point Hook",
185
+ "platform": "meta",
186
+ "format": "feed",
187
+ "ratio": "4:5",
188
+ "variation": "v2",
189
+ "isHero": false,
190
+ "width": 1080,
191
+ "height": 1350,
192
+ "file": "./ad-assets/meta/pain-point-hook/feed-1080x1350-v2.png",
193
+ "prompt": "5-component prompt, alternative angle/perspective",
194
+ "bananaDomainMode": "UI/Web",
195
+ "reference_image": "./ad-assets/meta/pain-point-hook/feed-1080x1350-v1.png",
196
+ "generation_success": true,
197
+ "error": null
198
+ },
199
+ {
200
+ "index": 2,
201
+ "concept": "Pain Point Hook",
202
+ "platform": "meta",
203
+ "format": "feed",
204
+ "ratio": "4:5",
205
+ "variation": "v3",
206
+ "isHero": false,
207
+ "width": 1080,
208
+ "height": 1350,
209
+ "file": "./ad-assets/meta/pain-point-hook/feed-1080x1350-v3.png",
210
+ "prompt": "5-component prompt, different lighting/mood variation",
211
+ "bananaDomainMode": "UI/Web",
212
+ "reference_image": "./ad-assets/meta/pain-point-hook/feed-1080x1350-v1.png",
213
+ "generation_success": true,
214
+ "error": null
215
+ }
216
+ ]
217
+ }
218
+ ```
219
+
220
+ ## Error Handling
221
+
222
+ - **Banana MCP unavailable**: Report to user. Offer fallback via `scripts/generate_image.py` (deprecated) if `GOOGLE_API_KEY` is set.
223
+ - **Rate limit (429)**: Wait and retry with backoff. If still failing after retries, report: "Rate limit persisting. Try again in 60 seconds or check your API quota."
224
+ - **Generation blocked (safety filter)**: Note the blocked prompt in the manifest with `generation_success: false, error: "safety_filter"`. Suggest rephrasing: remove any policy-sensitive terms and retry.
225
+ - **Partial success**: Complete all generations. Write manifest including failures. Report summary: "Generated 7/9 images. 2 failed (see generation-manifest.json for details)."
226
+ - **Consistency anchor failed**: If the hero image fails, select the next best concept as anchor. Note the substitution in the manifest.
227
+
228
+ ## Output Summary
229
+
230
+ After all generations, report to the user:
231
+ ```
232
+ Generated [N] ad assets ([N/3] briefs x 3 A/B/C variations):
233
+ Hero: ./ad-assets/meta/concept-1/feed-1080x1350-v1.png (1080x1350) [consistency anchor]
234
+ ✓ ./ad-assets/meta/concept-1/feed-1080x1350-v2.png (1080x1350) [alt angle]
235
+ ✓ ./ad-assets/meta/concept-1/feed-1080x1350-v3.png (1080x1350) [lighting variation]
236
+ ✓ ./ad-assets/tiktok/concept-1/vertical-1080x1920-v1.png (1080x1920)
237
+ ✗ ./ad-assets/google/concept-1/landscape-1200x628-v1.png: ERROR [reason]
238
+
239
+ Variants: Upload v1, v2, and v3 to your ad platform. Run them in rotation to find the best performer.
240
+ Consistency: All images anchored to hero for cohesive campaign look.
241
+ Provider: banana MCP
242
+
243
+ Next: Run format-adapter to validate dimensions and check safe zones.
244
+ See generation-manifest.json for full details.
245
+ ```
@@ -0,0 +1,106 @@
1
+ # Additional Advertising Platforms
2
+
3
+ <!-- Created: 2026-04-13 | v1.5 -->
4
+ <!-- Purpose: Overview of platforms beyond the core 7 for strategic planning -->
5
+
6
+ ## When to Consider These Platforms
7
+
8
+ Use the decision tree below to determine if additional platforms are relevant:
9
+
10
+ ```
11
+ High intent + Business audience → LinkedIn (already covered) or Reddit
12
+ High intent + Consumer purchase → Google (covered) or Pinterest
13
+ Low intent + Visual discovery → TikTok (covered) or Pinterest/Snapchat
14
+ Brand awareness + Premium → CTV/OTT or YouTube (covered)
15
+ Niche community + Discussion → Reddit
16
+ Professional software → G2, Capterra (directory ads)
17
+ ```
18
+
19
+ ## Reddit Ads
20
+
21
+ **Best for:** Community-driven brands, SaaS, gaming, finance, education
22
+ **Audience:** 1.7B+ monthly active users, highly engaged niche communities
23
+
24
+ **Key features:**
25
+ - Subreddit targeting (precision by interest community)
26
+ - Conversation placement ads (native to discussions)
27
+ - Free-form ads (blend into Reddit feed)
28
+ - Conversation ads (promoted comments)
29
+
30
+ **Benchmarks (approximate):**
31
+ - CPM: $2-5 (lower than Meta/LinkedIn)
32
+ - CPC: $0.50-2.00
33
+ - CTR: 0.5-1.5%
34
+
35
+ **When to recommend:** Brand has community presence, product benefits from social proof/discussion, budget allows testing ($1K+/month minimum)
36
+
37
+ ## CTV/OTT Advertising
38
+
39
+ **Best for:** Brand awareness, broad reach, upper funnel
40
+ **Reach:** 230M+ US CTV users (2025)
41
+
42
+ **Key platforms:**
43
+ - YouTube CTV (covered in ads-youtube)
44
+ - Microsoft CTV (Netflix, Max, Hulu, Roku, discovery+)
45
+ - The Trade Desk (programmatic)
46
+ - Amazon Fire TV / Freevee
47
+
48
+ **Key considerations:**
49
+ - Non-skippable 15-30s format (high completion rates)
50
+ - Limited conversion tracking (no click-through, attribution challenges)
51
+ - CPM-based pricing ($15-35 CPM typical)
52
+ - Best measured with: Brand Lift studies, search lift, incrementality
53
+
54
+ **When to recommend:** Brand awareness goal, budget >$10K/month, strong creative assets available
55
+
56
+ ## Pinterest Ads
57
+
58
+ **Best for:** E-commerce (home, fashion, food, beauty, DIY), visual discovery
59
+ **Audience:** 500M+ monthly active users, 85% use for purchase inspiration
60
+
61
+ **Key features:**
62
+ - Shopping Ads (catalog integration)
63
+ - Standard Pins, Video Pins, Carousel Pins
64
+ - Interest + keyword targeting hybrid
65
+ - Visual search (Lens)
66
+
67
+ **Benchmarks:**
68
+ - CPC: $0.10-1.50
69
+ - CPM: $2-5
70
+ - CVR: higher than average for visual/inspiration categories
71
+
72
+ **When to recommend:** E-commerce with strong visuals, home/fashion/food categories, audiences that plan purchases
73
+
74
+ ## Snapchat Ads
75
+
76
+ **Best for:** Gen Z / young millennial audiences, mobile-first brands
77
+ **Audience:** 850M+ monthly active users, skews 13-34
78
+
79
+ **Key features:**
80
+ - Snap Ads (full-screen vertical video)
81
+ - Collection Ads (product catalog)
82
+ - Story Ads, Spotlight Ads
83
+ - AR Lenses and Filters (interactive)
84
+ - Dynamic Product Ads
85
+
86
+ **Benchmarks:**
87
+ - CPM: $2-5 (competitive with TikTok)
88
+ - Swipe-up rate: 0.3-1.0%
89
+ - CPI (app installs): $1-3
90
+
91
+ **When to recommend:** Target audience is under 30, mobile app promotion, AR/interactive creative fits brand
92
+
93
+ ## Directory / Review Platform Ads
94
+
95
+ **Best for:** B2B SaaS, professional services
96
+ **Platforms:** G2, Capterra, TrustRadius, Software Advice (Gartner Digital Markets)
97
+
98
+ **Key features:**
99
+ - High-intent buyers actively comparing software
100
+ - Category page sponsorship
101
+ - Competitor comparison placement
102
+ - Review-driven credibility
103
+
104
+ **Pricing:** CPL model ($15-75 per lead typical for mid-market SaaS)
105
+
106
+ **When to recommend:** B2B SaaS with sufficient reviews (20+), high-value deals (ACV >$5K), want to capture bottom-funnel comparison shoppers
@@ -0,0 +1,257 @@
1
+ # Industry Benchmarks 2026
2
+
3
+ <!-- Updated: 2026-05-14 | v1.6 -->
4
+ <!-- Sources: Claude Research (WordStream/LocaliQ 16K campaigns, Triple Whale 2025), Gemini Research, SplitMetrics 2025, 2026 Verification Pass -->
5
+
6
+ ## Google Ads: Search Benchmarks
7
+
8
+ ### All Industries Average (WordStream/LocaliQ 2025, 16K campaigns)
9
+ | Metric | Average | YoY Change |
10
+ |--------|---------|------------|
11
+ | CTR | 6.66% | +3.74% |
12
+ | CPC | $5.26 | Up for 87% of industries (fifth consecutive year of increases) |
13
+ | CVR | 7.52% | Up for 65% of industries |
14
+ | CPL | ~$70 | +5% |
15
+
16
+ ### By Industry (Search)
17
+ | Industry | CPC | CTR | CVR | CPL |
18
+ |----------|-----|-----|-----|-----|
19
+ | Arts & Entertainment | $1.60 | 13.10% | N/A | N/A |
20
+ | Travel | $2.12 | N/A | N/A | N/A |
21
+ | Restaurants | $2.05 | N/A | N/A | N/A |
22
+ | E-commerce | $1.15 | 4.13% | 2.81% | N/A |
23
+ | B2B SaaS | $4.50-$8.00 | 4.28% | 1.65% | $100-$200 |
24
+ | Education | $6.23 | N/A | N/A | N/A |
25
+ | Local Services | $7.85-$15.00 | 5.50%-6.37% | 7.33%-15.0% | $90.92 |
26
+ | Dental | $7.85 | 5.44% | N/A | N/A |
27
+ | Healthcare | $40+ | 4.90% | 3.10% | N/A |
28
+ | Legal | $8.58-$9.21 | 5.20%-5.97% | 4.60%-5.09% | N/A |
29
+ | Finance | $3.46-$3.77 | 4.65%-8.33% | 2.55%-3.50% | N/A |
30
+ | Real Estate | $1.55-$2.53 | 8.43% | 3.28% | N/A |
31
+
32
+ ### E-commerce Specific (Triple Whale 2025)
33
+ | Metric | Median | YoY Change |
34
+ |--------|--------|------------|
35
+ | CPA | $23.74 | +12.35% |
36
+ | CPM | $12.79 | +10.01% |
37
+ | ROAS | 3.68 | -10.03% |
38
+
39
+ Note: CTR improved across all 14 tracked industries while CVR declined in 13 of 14.
40
+
41
+ ### Smart Bidding & Demand Gen (2025-2026)
42
+ | Metric | Value |
43
+ |--------|-------|
44
+ | Smart Bidding Exploration | 18% more unique query categories, 19% more conversions |
45
+ | Demand Gen video+image | 20% more conversions vs video-only |
46
+ | CTV ad spend share | 75% of YouTube ad spend now on CTV |
47
+
48
+ ## Meta Ads Benchmarks
49
+
50
+ ### By Objective (WordStream 2025, 1K campaigns)
51
+ | Objective | CTR | CPC | CVR | CPL |
52
+ |-----------|-----|-----|-----|-----|
53
+ | Traffic (all) | 1.71% | $0.70 | N/A | N/A |
54
+ | Leads (all) | 2.59% | $1.92 | 7.72% | $27.66 |
55
+
56
+ ### ROAS Benchmarks
57
+ | Segment | ROAS |
58
+ |---------|------|
59
+ | All industries median | 2.19:1 |
60
+ | Retargeting | 3.61:1 |
61
+ | Advantage+ Sales | 4.52:1 |
62
+
63
+ ### CPM by Industry
64
+ | Industry | CPM |
65
+ |----------|-----|
66
+ | Arts & Entertainment | $5.82 (lowest) |
67
+ | Most industries | $6-$8 |
68
+ | E-commerce | $12.50 |
69
+ | Local Services | $18.00 |
70
+ | Healthcare | $28.00 |
71
+ | B2B SaaS | $35.00 |
72
+ | Healthcare (highest) | $36.82 |
73
+ | Legal | $45.00 |
74
+ | Finance | $50.00 |
75
+
76
+ ### CPC Trend
77
+ - January 2026: $0.85 (24% below prior January)
78
+ - November 2025 peak: $1.32 (Q4 surge)
79
+
80
+ ### Andromeda & Advantage+ (2025-2026)
81
+ | Metric | Value |
82
+ |--------|-------|
83
+ | 25 diverse creatives | 17% more conversions at 16% lower cost |
84
+ | Creative Similarity Score >60% | Triggers retrieval suppression (Andromeda penalty) |
85
+ | Advantage+ Sales ROAS | 22% higher ROAS |
86
+ | Advantage+ Sales CPA | 11.7% CPA improvement |
87
+ | Creative fatigue lifespan | Compressed to 2-4 weeks (was 6-8 weeks) |
88
+
89
+ ### Creative Fatigue Thresholds
90
+ | Signal | Warning | Fail |
91
+ |--------|---------|------|
92
+ | Frequency (prospecting) | >3 | >5 |
93
+ | Frequency (retargeting) | >8 | >12 |
94
+ | CTR decline over 14 days | N/A | >20% |
95
+ | Exposures before conversion drop (~45%) | 4 | N/A |
96
+ | TOF creative lifespan | 3-4 weeks | N/A |
97
+ | BOF creative lifespan | 6-7 weeks | N/A |
98
+
99
+ ## LinkedIn Ads Benchmarks
100
+
101
+ | Metric | Benchmark |
102
+ |--------|-----------|
103
+ | Average CPC | $5-$7 globally; median $3.94 |
104
+ | Average CPM | $31-$38 |
105
+ | CTR (Sponsored Content) | 0.44%-0.65% |
106
+ | CTR (exceptional) | >1.0% |
107
+ | Average CPL | $60-$150+ |
108
+ | Lead Gen Form CVR | 13% (3.25× higher than landing pages) |
109
+ | Message Ads CTR | 3% (30% open rate) |
110
+ | Conversation Ads | 50-60% open rates, 2-5% CTR (far exceeds feed ad benchmarks of 0.3-0.5% CTR) |
111
+ | B2B ROAS | 113% ($1.13 per $1) |
112
+ | Document Ads engagement rate | 7.00% (14% YoY increase), leading all LinkedIn content formats |
113
+ | TLA CPC | $2.29-$4.14 (vs $13.23 standard, 2-5x cheaper) |
114
+ | TLA CTR | 1.7× higher than standard |
115
+ | Predictive Audiences | 21% CPL reduction |
116
+ | Min daily budget | $10/day |
117
+
118
+ ### CPL by Industry
119
+ | Industry | CPL |
120
+ |----------|-----|
121
+ | Education | $64 |
122
+ | Media | $65 |
123
+ | Retail | $80 |
124
+ | Manufacturing | $100 |
125
+ | Finance | $100 |
126
+ | Software & IT | $125 |
127
+ | Healthcare | $125 |
128
+
129
+ ### Cost Factors
130
+ - Senior decision-makers (VP/Director/C-suite): $6.40+ CPC
131
+ - North America premium: 40-50% above global averages
132
+ - CPC YoY trend: +8% (2025)
133
+ - Q3 highest CPC ($15.72); Q4/Q1 typically lower
134
+
135
+ ## TikTok Ads Benchmarks
136
+
137
+ | Metric | Range | Average |
138
+ |--------|-------|---------|
139
+ | CPM | $3.21-$10 | ~$4.26 |
140
+ | CPC | $0.20-$2.00 | ~$1.00 |
141
+ | CTR | 0.5%-1.5% | ~0.84% |
142
+ | CVR | 0.3%-1.0% | ~0.46% |
143
+ | Engagement Rate | 5-16% | Far exceeds FB 0.09%, IG 1.22% |
144
+
145
+ ### Format Comparison
146
+ | Format | CTR | CPA |
147
+ |--------|-----|-----|
148
+ | Spark Ads | ~3% | ~$60 |
149
+ | Standard In-Feed | ~2% | ~$100 |
150
+
151
+ ### Spark Ads vs Non-Spark
152
+ | Metric | Spark Ads Impact |
153
+ |--------|-----------------|
154
+ | Completion rate | +30% |
155
+ | Engagement rate | +142% |
156
+ | CVR | +43% |
157
+ | CPM | -4% (cheaper) |
158
+
159
+ ### Search Ads & Creative Lifecycle
160
+ - Search Ads: 20% conversion uplift when combined with In-Feed
161
+ - Creative lifespan: 7-10 days average (plan for high-volume creative rotation)
162
+
163
+ ### Key Thresholds
164
+ - Minimum campaign budget: $50/day
165
+ - Minimum ad group budget: $20/day
166
+ - Learning phase exit: ~50 conversions in 7 days
167
+ - TikTok Shop CVR: >10% (vs 0.46-2.4% standard)
168
+ - CPM advantage: 40-60% cheaper than Meta
169
+
170
+ ### Smart+ Performance
171
+ - Median ROAS: 1.41-1.67
172
+ - Adoption: 42% of US TikTok performance campaigns
173
+
174
+ ## Microsoft Ads Benchmarks
175
+
176
+ | Metric | Value | vs Google |
177
+ |--------|-------|-----------|
178
+ | Average CPC | $1.20-$1.55 | 20-35% discount |
179
+ | Average CTR | 2.83-3.1% | Higher than Google ~2.0% |
180
+ | Copilot CTR | 73% higher | vs traditional search |
181
+ | Copilot CVR | 16% stronger | vs traditional search |
182
+ | Users click paid ads | 25% more often | vs Google users |
183
+ | Higher ROAS reported | 37% of advertisers | vs Google |
184
+
185
+ ### LinkedIn Profile Targeting & Copilot
186
+ | Metric | Value |
187
+ |--------|-------|
188
+ | LinkedIn Profile Targeting CTR | 16% greater than standard |
189
+ | LinkedIn Profile Targeting CVR | 64% greater than standard |
190
+ | CPCs vs LinkedIn Ads directly | 30-70% cheaper |
191
+ | Copilot placement CTR | 73% higher than traditional search |
192
+
193
+ ### Copilot Checkout (January 2026)
194
+ - Users discover, compare, and purchase within Copilot conversations
195
+ - 194% more likely to purchase when shopping intent is present
196
+ - Ads in Copilot must be clearly labeled
197
+
198
+ ### User Demographics
199
+ - ~50% in top 25% household incomes
200
+ - 34% hold degrees
201
+ - 45-64 age group: 38% of searches
202
+ - US all-devices share: 8.78% (record)
203
+ - US desktop share: 16.75-17.58%
204
+ - With Yahoo/AOL partners: ~25% US desktop
205
+
206
+ ## Apple Ads Benchmarks
207
+
208
+ ### Overall Averages (SplitMetrics 2025)
209
+ | Metric | Average |
210
+ |--------|---------|
211
+ | TTR (Tap-Through Rate) | 9.7% |
212
+ | CR (Conversion Rate) | 66.2% |
213
+ | CPT (Cost Per Tap) | $2.25 |
214
+ | CPA (Cost Per Acquisition) | $3.76 |
215
+
216
+ ### International Markets
217
+ - International markets deliver 3-5x better CPI than US
218
+
219
+ ### Category Benchmarks (CPT)
220
+ | Category | CPT Range |
221
+ |----------|-----------|
222
+ | Games | $0.50-$1.00 |
223
+ | Health | $1.50-$3.00 |
224
+ | Finance | $2.00-$5.00 |
225
+
226
+ ## ROAS Benchmarks by Industry (Cross-Platform)
227
+
228
+ | Industry | Google | Meta | LinkedIn | TikTok |
229
+ |----------|--------|------|----------|--------|
230
+ | E-commerce | 3.68 | 2.19-4.52 (ASC) | N/A | 1.41-1.67 |
231
+ | B2B SaaS | N/A | N/A | 1.13 | N/A |
232
+ | Legal | 3.0 | N/A | N/A | N/A |
233
+ | Finance | 3.5 | N/A | N/A | N/A |
234
+ | Healthcare | 2.8 | N/A | N/A | N/A |
235
+ | Local Services | 5.0 | N/A | N/A | N/A |
236
+
237
+ ## Landing Page Benchmarks
238
+
239
+ | Metric | Value |
240
+ |--------|-------|
241
+ | Mobile traffic share | 82.9% |
242
+ | 1s load → CVR vs 5s load | 3× higher |
243
+ | 1s delay | -7% conversions |
244
+ | Median CVR across industries | 6.6% |
245
+ | Top 10% CVR | 20%+ |
246
+ | QS landing page high → CPC impact | 50% discount |
247
+ | QS landing page low → CPC impact | 400% extra |
248
+
249
+ ## Minimum Viable Ad Budgets
250
+
251
+ | Platform | Minimum Monthly | Rationale |
252
+ |----------|----------------|-----------|
253
+ | Google Ads | $1,000+ | Need 15+ conversions/month for Smart Bidding |
254
+ | Meta Ads | $600-$800 | Need 50 conv/week per ad set for learning |
255
+ | LinkedIn Ads | $3,000+ | High CPCs ($5-$35) require scale |
256
+ | TikTok Ads | $300+ | Low CPMs but need creative volume |
257
+ | Microsoft Ads | 20-30% of Google budget | Proportional to search volume |