Skip to content

Commit f61fc7b

Browse files
feat(marketing): add weighted scoring systems to seo-audit + paid-ads
Phase 1 of the marketing skills improvement plan. Inspired by patterns from claude-seo (4.7k stars) and claude-ads (2.4k stars) — the highest- traction Claude Code plugins in the SEO/ads space. Adopts their best patterns without replacing our existing skills. seo-audit additions: - scripts/seo_health_scorer.py — weighted 0-100 health score across 7 categories (Technical 22%, Content 23%, On-Page 20%, Schema 10%, Performance 10%, AI Readiness 10%, Images 5%). Industry profiles (SaaS/ecommerce/local/publisher) adjust weights. Severity-weighted scoring with Critical/High/Medium/Low priority levels and Quick Wins extraction. Demo mode included. - references/cwv-thresholds.md — Core Web Vitals 2026 thresholds (LCP, CLS, INP) with good/needs-improvement/poor ranges and common fixes - references/eeat-framework.md — E-E-A-T audit checklist per Google's Sept 2025 Quality Rater Guidelines, YMYL topic handling - references/schema-types.md — active/deprecated JSON-LD types with validation checklist and common mistakes paid-ads additions: - scripts/ad_health_scorer.py — multi-platform ad account scoring with severity multipliers (Critical=5x, High=3x, Medium=1.5x, Low=0.5x). Platform-specific category weights for Google (6 categories, 74 checks), Meta (4 categories), LinkedIn (4), TikTok (4). Cross-platform aggregation weighted by budget share. Quick Wins prioritization. Demo mode with Google + Meta sample data. - references/scoring-system.md — full scoring algorithm, severity multipliers, platform weights, grade bands, quality gates (hard rules like "never Broad Match + Manual CPC") - references/copy-frameworks.md — 6 ad copy frameworks (PAS, BAB, AIDA, FAB, 4P, Star-Story-Solution) with selection matrix by product type, platform-specific character limits, and brand DNA extraction (7 voice axes as JSON schema) Key patterns adopted from claude-seo/ads: - Weighted numeric scores replace binary pass/fail - Severity multipliers make critical issues dominate the score - Industry/platform auto-detection adjusts weights - Quick Wins = high severity + partially working (warn not fail) - Reference files are lazy-loaded, not inline - Demo mode with realistic sample data All scripts stdlib-only, --json + --help verified. Also saved: documentation/implementation/marketing-skills-improvement-plan.md covering all 3 phases (Phase 2: content scoring, Phase 3: AI detection). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 47d458a commit f61fc7b

8 files changed

Lines changed: 960 additions & 0 deletions

File tree

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Marketing Skills Improvement Plan — Inspired by claude-seo/ads/blog
2+
3+
**Status:** Active (created 2026-04-13)
4+
**Inspired by:** claude-seo (4.7k stars), claude-ads (2.4k stars), claude-blog (466 stars)
5+
**Scope:** Improve 5 existing marketing skills with 8 cross-cutting patterns. No replacements — purely additive.
6+
7+
---
8+
9+
## The 8 patterns to adopt
10+
11+
1. **Weighted 0-100 scoring** — replace binary pass/fail with numeric health scores
12+
2. **Priority levels with SLAs** — Critical/High/Medium/Low + time-to-fix
13+
3. **Industry auto-detection** — route to different check weights by business type
14+
4. **On-demand reference loading** — modular .md files instead of inline knowledge
15+
5. **Quality gates (hard stops)** — non-negotiable rules that block action
16+
6. **Multi-tier API fallback** — free tier always works, premium tier enhances
17+
7. **Quick Wins prioritization** — severity × impact / time-to-fix
18+
8. **AI citation readiness** — dual-optimize for Google + AI platforms
19+
20+
---
21+
22+
## Phase 1 — Scoring systems + references (seo-audit, paid-ads)
23+
24+
### seo-audit improvements
25+
- Weighted 0-100 health score: Technical 22%, Content 23%, On-Page 20%, Schema 10%, Performance 10%, AI Readiness 10%, Images 5%
26+
- Priority levels (Critical/High/Medium/Low) with SLAs on every finding
27+
- Industry auto-detection (SaaS/local/ecommerce/publisher) → different weight profiles
28+
- New references: cwv-thresholds.md, schema-types.md, eeat-framework.md
29+
- New script: seo_health_scorer.py (compute weighted score from check results)
30+
31+
### paid-ads improvements
32+
- Platform-specific checks with weighted scoring (Google 74, Meta 46, LinkedIn 25, TikTok 25)
33+
- Severity multiplier matrix (Critical=5x, High=3x, Medium=1.5x, Low=0.5x) × category weights
34+
- Budget-weighted cross-platform aggregation: Score = Σ(Platform_Score × Budget_Share)
35+
- Brand DNA extraction (7 voice axes) as reusable JSON
36+
- Copy framework selection logic: AIDA vs PAS vs BAB by product type
37+
- Quick Wins: severity × estimated_impact / time_to_fix
38+
- New references: google-audit.md, meta-audit.md, scoring-system.md, copy-frameworks.md
39+
- New script: ad_health_scorer.py
40+
41+
## Phase 2 — Content scoring + quality gates (content-creator, content-production)
42+
43+
### content-creator improvements
44+
- Dual-optimization: Google rankings + AI citation platforms (Perplexity, ChatGPT, AI Overviews)
45+
- 12 content templates with auto-selection logic
46+
- Answer-first formatting (40-60 word paragraphs at H2) for AI extractability
47+
- Passage-level citability checks (120-180 word chunks, Q&A formatting)
48+
- New references: content-templates.md, ai-citation-readiness.md
49+
50+
### content-production improvements
51+
- 100-point scoring: Content Quality 30, SEO 25, E-E-A-T 15, Technical 15, AI Citation 15
52+
- Score bands → action: <60 rewrite, 60-69 rework, 70-79 target, 80-89 publish, 90+ flagship
53+
- Quality gates: zero fabricated stats, heading hierarchy, image alt text, source tier
54+
- Freshness signals: dateModified tracking, decay detection
55+
- New script: content_scorer.py
56+
57+
## Phase 3 — AI detection + readability (copy-editing)
58+
59+
### copy-editing improvements
60+
- AI content detection: burstiness (sentence length variance), vocabulary diversity (TTR), 17 AI phrases
61+
- Readability bands: Consumer (Flesch 60-80), Professional (50-60), Technical (30-50)
62+
- Anti-pattern enforcement: passive voice ≤10%, AI words ≤5/1K, transition words 20-30%
63+
- Paragraph micro-scoring: 40-80 word ideal, >150 blocking
64+
- New scripts: ai_content_detector.py, readability_scorer.py
65+
66+
---
67+
68+
## What we DON'T adopt (anti-patterns to avoid)
69+
70+
- No timeout fallbacks on parallel agents (claude-ads blocks if one agent fails — we should fail gracefully)
71+
- No paid API requirements (claude-seo needs DataForSEO for full coverage — we keep stdlib-only)
72+
- No external ML model dependencies (claude-blog uses Google NLP — we use deterministic analysis)
73+
- No WeasyPrint/matplotlib for reporting (heavy deps — we use markdown/JSON output)
74+
75+
---
76+
77+
## Execution
78+
79+
- Each phase: feature branch → PR to dev → /plugin-audit → merge
80+
- Each skill keeps its existing SKILL.md structure; new files are additive
81+
- Scripts are Python stdlib-only, CLI-first, --json output
82+
- References are lazy-loaded .md files, not inline in SKILL.md
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# Ad Copy Frameworks
2+
3+
Reference for selecting the right copy framework based on product type and campaign goal. Each framework includes a structure template and platform-specific length constraints.
4+
5+
## Framework selection matrix
6+
7+
| Product type | Pain-point heavy? | Transformation story? | Feature-led? | Recommended framework |
8+
|---|---|---|---|---|
9+
| SaaS / B2B || | | PAS (Problem-Agitate-Solve) |
10+
| Coaching / courses | || | BAB (Before-After-Bridge) |
11+
| Ecommerce / physical | | || FAB (Features-Advantages-Benefits) |
12+
| Content / info product ||| | AIDA (Attention-Interest-Desire-Action) |
13+
| App / tool launch | | || 4P (Promise-Picture-Proof-Push) |
14+
| Services / consulting ||| | Star-Story-Solution |
15+
16+
## The 6 frameworks
17+
18+
### PAS — Problem → Agitate → Solve
19+
**Best for:** Pain-point products, SaaS solving specific frustrations
20+
21+
```
22+
Problem: Name the exact pain (1 sentence)
23+
Agitate: Twist the knife — what happens if they don't fix it (1-2 sentences)
24+
Solve: Your product is the answer (1 sentence + CTA)
25+
```
26+
27+
### BAB — Before → After → Bridge
28+
**Best for:** Transformation products, coaching, courses
29+
30+
```
31+
Before: Current painful state (1 sentence)
32+
After: Desired state they'll achieve (1 sentence)
33+
Bridge: Your product connects the two (1 sentence + CTA)
34+
```
35+
36+
### AIDA — Attention → Interest → Desire → Action
37+
**Best for:** Content marketing, info products, broad audiences
38+
39+
```
40+
Attention: Hook with a surprising stat or question
41+
Interest: Explain why this matters to them
42+
Desire: Show social proof or specific outcomes
43+
Action: Clear CTA with urgency
44+
```
45+
46+
### FAB — Features → Advantages → Benefits
47+
**Best for:** Product-led, ecommerce, feature-rich offerings
48+
49+
```
50+
Feature: What it has (spec/capability)
51+
Advantage: Why that matters vs alternatives
52+
Benefit: What the user gains (outcome)
53+
```
54+
55+
### 4P — Promise → Picture → Proof → Push
56+
**Best for:** App launches, tools, direct response
57+
58+
```
59+
Promise: Bold claim (1 headline)
60+
Picture: Vivid scenario of life with the product
61+
Proof: Social proof, stats, testimonial
62+
Push: Strong CTA with urgency/scarcity
63+
```
64+
65+
### Star-Story-Solution
66+
**Best for:** Personal brands, services, consulting
67+
68+
```
69+
Star: Introduce the hero (the customer, not you)
70+
Story: Their struggle (relatable narrative)
71+
Solution: How your service transforms their situation
72+
```
73+
74+
## Platform-specific constraints
75+
76+
| Platform | Headline | Body | CTA |
77+
|---|---|---|---|
78+
| Google RSA | 30 chars × 15 headlines | 90 chars × 4 descriptions | Auto from list |
79+
| Meta Feed | 40 chars (before truncation) | 125 chars primary text (before "See more") | Button from list |
80+
| Meta Stories | 40 chars overlay | Minimal — visual-first | Swipe up / button |
81+
| LinkedIn Sponsored | 70 chars intro text visible | 150 chars before truncation | Button from list |
82+
| TikTok | Overlay text in video | Caption 100 chars | Button from list |
83+
| Microsoft | 30 chars × 15 headlines | 90 chars × 4 descriptions | Auto from list |
84+
85+
## Brand DNA extraction (7 voice axes)
86+
87+
Before writing ad copy, extract the brand's voice profile on these 7 axes:
88+
89+
```json
90+
{
91+
"formal_casual": 0.7, // 0 = corporate formal, 1 = casual/friendly
92+
"bold_subtle": 0.6, // 0 = understated, 1 = bold/provocative
93+
"technical_human": 0.4, // 0 = jargon-heavy, 1 = plain language
94+
"serious_playful": 0.5, // 0 = gravitas, 1 = humor/wit
95+
"traditional_innovative": 0.8, // 0 = established, 1 = cutting-edge
96+
"exclusive_inclusive": 0.6, // 0 = luxury/elite, 1 = accessible/everyone
97+
"data_emotional": 0.5 // 0 = stats-driven, 1 = story-driven
98+
}
99+
```
100+
101+
Save as `brand-profile.json` for reuse across campaigns. Each axis is 0.0-1.0.
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# Ad Account Scoring System
2+
3+
Reference for `ad_health_scorer.py`. Defines the weighted scoring algorithm, severity multipliers, and platform-specific category weights.
4+
5+
## Scoring formula
6+
7+
```
8+
Category_Score = Σ(Check_Result × Severity_Multiplier) / Σ(Severity_Multiplier) × 100
9+
Platform_Score = Σ(Category_Score × Category_Weight)
10+
Aggregate_Score = Σ(Platform_Score × Budget_Share)
11+
```
12+
13+
## Severity multipliers
14+
15+
| Severity | Multiplier | Meaning | SLA |
16+
|---|---|---|---|
17+
| Critical | 5.0x | Blocks revenue or burns budget | Fix immediately |
18+
| High | 3.0x | Significant performance impact | Fix within 1 week |
19+
| Medium | 1.5x | Optimization opportunity | Fix within 1 month |
20+
| Low | 0.5x | Polish / best practice | Backlog |
21+
22+
Critical issues dominate the score. A single critical failure drops the category score significantly, which is the correct behavior — a missing conversion tag invalidates everything downstream.
23+
24+
## Platform category weights
25+
26+
### Google Ads
27+
| Category | Weight | Key checks |
28+
|---|---|---|
29+
| Conversion Tracking | 25% | Tag installed, Enhanced Conversions, attribution model, conversion window |
30+
| Wasted Spend | 20% | Negative keywords, search terms review, broad match rules, 3× CPA kill rule |
31+
| Account Structure | 15% | Naming conventions, ad group size, campaign types |
32+
| Keywords | 15% | Quality Score, duplicates, match types, search intent alignment |
33+
| Ads | 15% | RSA headlines count, extensions, A/B testing |
34+
| Settings | 10% | Location targeting, schedules, networks, bidding strategy |
35+
36+
### Meta (Facebook/Instagram)
37+
| Category | Weight | Key checks |
38+
|---|---|---|
39+
| Pixel & CAPI | 30% | Pixel installed, CAPI active, event deduplication, domain verification |
40+
| Creative | 30% | Format diversity, fatigue detection, safe zones, copy length |
41+
| Structure | 20% | CBO, campaign naming, advantage+ settings |
42+
| Audience | 20% | Lookalike seed size, exclusions, overlap, custom audiences |
43+
44+
### LinkedIn
45+
| Category | Weight | Key checks |
46+
|---|---|---|
47+
| Technical | 25% | Insight tag, conversion events, matched audiences |
48+
| Targeting | 25% | Audience size, job function vs title, company lists |
49+
| Creative | 25% | Format mix, single-image vs carousel vs video, CTA alignment |
50+
| Budget | 25% | Daily budget sufficiency, bid strategy, pacing |
51+
52+
### TikTok
53+
| Category | Weight | Key checks |
54+
|---|---|---|
55+
| Pixel | 25% | Pixel installed, events configured, match quality |
56+
| Creative | 30% | Native-feel content, format mix, hook rate (3s), UGC ratio |
57+
| Targeting | 25% | Interest vs behavior, custom audiences, lookalikes |
58+
| Budget | 20% | Learning phase budget (50× target CPA), pacing |
59+
60+
## Grade bands
61+
62+
| Grade | Score | Meaning |
63+
|---|---|---|
64+
| A | 90-100 | Excellent — maintain and scale |
65+
| B | 75-89 | Good — address high-priority items |
66+
| C | 60-74 | Needs work — systematic improvements needed |
67+
| D | 40-59 | Poor — significant issues blocking performance |
68+
| F | <40 | Critical — account needs fundamental restructuring |
69+
70+
Bands are calibrated wider than SEO scoring because ad accounts typically have more actionable but non-critical issues (e.g., missing extensions, suboptimal ad copy).
71+
72+
## Quick Wins formula
73+
74+
```
75+
Quick Win = severity ∈ {critical, high} AND result = "warn" (not full fail)
76+
```
77+
78+
Quick wins are issues that are important (high severity) but partially working (warn, not fail) — meaning the fix is usually small: enable a toggle, add a few negative keywords, activate an extension.
79+
80+
## Hard rules (quality gates)
81+
82+
These combinations should NEVER be recommended together:
83+
- Broad Match + Manual CPC (wastes budget without smart bidding control)
84+
- CPA target below $5 with < $50/day budget (can't exit learning phase)
85+
- Conversion action = page view as primary (inflates numbers, misleads bidding)
86+
87+
The scorer doesn't enforce these directly but the SKILL.md workflow should flag them as critical failures.

0 commit comments

Comments
 (0)