claude-plugin-wordpress-manager 2.3.1 → 2.6.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/.claude-plugin/plugin.json +15 -3
- package/CHANGELOG.md +62 -0
- package/agents/wp-content-strategist.md +104 -0
- package/agents/wp-distribution-manager.md +98 -0
- package/docs/GUIDE.md +183 -23
- package/docs/plans/2026-03-01-tier3-wcop-design.md +373 -0
- package/docs/plans/2026-03-01-tier3-wcop-implementation.md +915 -0
- package/hooks/hooks.json +18 -0
- package/package.json +18 -3
- package/servers/wp-rest-bridge/build/tools/buffer.d.ts +3 -0
- package/servers/wp-rest-bridge/build/tools/buffer.js +205 -0
- package/servers/wp-rest-bridge/build/tools/comments.d.ts +6 -6
- package/servers/wp-rest-bridge/build/tools/gsc.d.ts +3 -0
- package/servers/wp-rest-bridge/build/tools/gsc.js +354 -0
- package/servers/wp-rest-bridge/build/tools/index.d.ts +38 -38
- package/servers/wp-rest-bridge/build/tools/index.js +12 -0
- package/servers/wp-rest-bridge/build/tools/mailchimp.d.ts +3 -0
- package/servers/wp-rest-bridge/build/tools/mailchimp.js +265 -0
- package/servers/wp-rest-bridge/build/tools/media.d.ts +2 -2
- package/servers/wp-rest-bridge/build/tools/multisite-sites.d.ts +2 -2
- package/servers/wp-rest-bridge/build/tools/plugin-repository.d.ts +1 -1
- package/servers/wp-rest-bridge/build/tools/search.d.ts +2 -2
- package/servers/wp-rest-bridge/build/tools/sendgrid.d.ts +3 -0
- package/servers/wp-rest-bridge/build/tools/sendgrid.js +255 -0
- package/servers/wp-rest-bridge/build/tools/unified-content.d.ts +8 -8
- package/servers/wp-rest-bridge/build/tools/unified-taxonomies.d.ts +4 -4
- package/servers/wp-rest-bridge/build/tools/users.d.ts +6 -6
- package/servers/wp-rest-bridge/build/tools/wc-coupons.d.ts +1 -1
- package/servers/wp-rest-bridge/build/tools/wc-customers.d.ts +3 -3
- package/servers/wp-rest-bridge/build/tools/wc-orders.d.ts +4 -4
- package/servers/wp-rest-bridge/build/tools/wc-products.d.ts +8 -8
- package/servers/wp-rest-bridge/build/tools/wc-webhooks.d.ts +4 -4
- package/servers/wp-rest-bridge/build/types.d.ts +122 -0
- package/servers/wp-rest-bridge/build/wordpress.d.ts +14 -0
- package/servers/wp-rest-bridge/build/wordpress.js +151 -0
- package/servers/wp-rest-bridge/package.json +1 -0
- package/skills/wordpress-router/references/decision-tree.md +8 -2
- package/skills/wp-content/SKILL.md +2 -0
- package/skills/wp-content-attribution/SKILL.md +2 -0
- package/skills/wp-content-optimization/SKILL.md +172 -0
- package/skills/wp-content-optimization/references/content-freshness.md +234 -0
- package/skills/wp-content-optimization/references/headline-optimization.md +171 -0
- package/skills/wp-content-optimization/references/meta-optimization.md +243 -0
- package/skills/wp-content-optimization/references/readability-analysis.md +201 -0
- package/skills/wp-content-optimization/references/seo-content-scoring.md +245 -0
- package/skills/wp-content-optimization/scripts/content_optimization_inspect.mjs +237 -0
- package/skills/wp-content-repurposing/SKILL.md +1 -0
- package/skills/wp-monitoring/SKILL.md +1 -0
- package/skills/wp-programmatic-seo/SKILL.md +2 -0
- package/skills/wp-search-console/SKILL.md +121 -0
- package/skills/wp-search-console/references/competitor-gap-analysis.md +226 -0
- package/skills/wp-search-console/references/content-seo-feedback.md +181 -0
- package/skills/wp-search-console/references/gsc-setup.md +110 -0
- package/skills/wp-search-console/references/indexing-management.md +182 -0
- package/skills/wp-search-console/references/keyword-tracking.md +181 -0
- package/skills/wp-search-console/scripts/search_console_inspect.mjs +178 -0
- package/skills/wp-social-email/SKILL.md +152 -0
- package/skills/wp-social-email/references/audience-segmentation.md +173 -0
- package/skills/wp-social-email/references/buffer-social-publishing.md +124 -0
- package/skills/wp-social-email/references/content-to-distribution.md +156 -0
- package/skills/wp-social-email/references/distribution-analytics.md +208 -0
- package/skills/wp-social-email/references/mailchimp-integration.md +145 -0
- package/skills/wp-social-email/references/sendgrid-transactional.md +165 -0
- package/skills/wp-social-email/scripts/distribution_inspect.mjs +165 -0
- package/skills/wp-webhooks/SKILL.md +1 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# Content Freshness Audit
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Content freshness measures how current and accurate published content remains over time. Search engines factor freshness into rankings, and stale content can erode traffic and authority. Claude performs content freshness audits by analyzing publish dates, modification history, traffic trends from GSC, and content accuracy — then classifies content into refresh priorities. This workflow uses `list_content`, `get_content`, and GSC tools.
|
|
6
|
+
|
|
7
|
+
## Content Decay Patterns
|
|
8
|
+
|
|
9
|
+
### What Is Content Decay
|
|
10
|
+
Content decay occurs when a page gradually loses organic traffic over time due to:
|
|
11
|
+
- Newer, more comprehensive competitor content
|
|
12
|
+
- Outdated statistics, data, or references
|
|
13
|
+
- Changed search intent for target keywords
|
|
14
|
+
- Algorithm updates favoring fresher content
|
|
15
|
+
- Broken links or outdated external references
|
|
16
|
+
|
|
17
|
+
### Decay Timeline
|
|
18
|
+
|
|
19
|
+
| Content Age | Risk Level | Typical Action |
|
|
20
|
+
|-------------|-----------|----------------|
|
|
21
|
+
| 0-6 months | Low | Monitor, no action needed |
|
|
22
|
+
| 6-12 months | Medium | Review for accuracy, consider minor updates |
|
|
23
|
+
| 12-18 months | High | Data refresh, section updates required |
|
|
24
|
+
| 18-24 months | Very High | Major refresh or rewrite |
|
|
25
|
+
| 24+ months | Critical | Full rewrite, republish, or archive |
|
|
26
|
+
|
|
27
|
+
### Decay Signals
|
|
28
|
+
Indicators that content is decaying:
|
|
29
|
+
1. **Traffic decline** — steady month-over-month drop in organic traffic (via GSC)
|
|
30
|
+
2. **Position drops** — average position worsening for target keywords
|
|
31
|
+
3. **Impression decline** — fewer impressions means less search visibility
|
|
32
|
+
4. **Bounce rate increase** — users leaving quickly (content not meeting expectations)
|
|
33
|
+
5. **Outdated references** — statistics from 2+ years ago, dead links
|
|
34
|
+
|
|
35
|
+
## Freshness Signals
|
|
36
|
+
|
|
37
|
+
### What Search Engines Evaluate
|
|
38
|
+
|
|
39
|
+
| Signal | Description | WordPress Field |
|
|
40
|
+
|--------|-------------|-----------------|
|
|
41
|
+
| Published date | Original publication date | `date` |
|
|
42
|
+
| Modified date | Last content modification | `modified` |
|
|
43
|
+
| Content changes | Actual meaningful edits (not cosmetic) | Content diff |
|
|
44
|
+
| Data currency | Statistics and facts are current | Manual check |
|
|
45
|
+
| Link freshness | External links still active and current | Automated check |
|
|
46
|
+
|
|
47
|
+
### Meaningful vs Cosmetic Updates
|
|
48
|
+
```
|
|
49
|
+
Meaningful updates (search engines recognize):
|
|
50
|
+
- Adding new sections or paragraphs
|
|
51
|
+
- Updating statistics and data points
|
|
52
|
+
- Adding new examples or case studies
|
|
53
|
+
- Expanding topic coverage
|
|
54
|
+
- Updating recommendations based on new information
|
|
55
|
+
|
|
56
|
+
Cosmetic updates (do NOT count as fresh):
|
|
57
|
+
- Changing the date without content changes
|
|
58
|
+
- Fixing typos or minor formatting
|
|
59
|
+
- Rearranging existing content
|
|
60
|
+
- Adding images without new text
|
|
61
|
+
- Changing the author
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Refresh Strategies
|
|
65
|
+
|
|
66
|
+
### Strategy 1: Date and Data Refresh
|
|
67
|
+
**When to use:** Content is fundamentally sound but contains outdated numbers or references.
|
|
68
|
+
```
|
|
69
|
+
Effort: Low (30 min - 1 hour)
|
|
70
|
+
Impact: Medium
|
|
71
|
+
Actions:
|
|
72
|
+
- Update statistics with current data
|
|
73
|
+
- Replace outdated year references
|
|
74
|
+
- Verify all external links still work
|
|
75
|
+
- Update the modified date
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Strategy 2: Section Expansion
|
|
79
|
+
**When to use:** Content covers the topic but competitors have more depth.
|
|
80
|
+
```
|
|
81
|
+
Effort: Medium (1-3 hours)
|
|
82
|
+
Impact: High
|
|
83
|
+
Actions:
|
|
84
|
+
- Add 1-3 new sections addressing gaps
|
|
85
|
+
- Add FAQ section based on current search queries
|
|
86
|
+
- Include updated examples or case studies
|
|
87
|
+
- Add internal links to newer related content
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Strategy 3: Full Rewrite
|
|
91
|
+
**When to use:** Content is outdated, poorly structured, or fundamentally off-target.
|
|
92
|
+
```
|
|
93
|
+
Effort: High (3-6 hours)
|
|
94
|
+
Impact: Very High
|
|
95
|
+
Actions:
|
|
96
|
+
- Rewrite from scratch with current keyword research
|
|
97
|
+
- Maintain the same URL (preserve any existing backlinks)
|
|
98
|
+
- Update all meta elements (title, description)
|
|
99
|
+
- Republish with current date
|
|
100
|
+
- Submit to GSC for re-indexing
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Strategy 4: Republish
|
|
104
|
+
**When to use:** Content is significantly updated and should be treated as new.
|
|
105
|
+
```
|
|
106
|
+
Effort: Medium (after rewrite)
|
|
107
|
+
Impact: High
|
|
108
|
+
Actions:
|
|
109
|
+
- Change publish date to current date
|
|
110
|
+
- Share on social channels as new content
|
|
111
|
+
- Update internal links pointing to this page
|
|
112
|
+
- Submit URL to GSC for re-crawling
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Strategy 5: Archive / Redirect
|
|
116
|
+
**When to use:** Content has no traffic, no keyword value, and no update potential.
|
|
117
|
+
```
|
|
118
|
+
Effort: Low
|
|
119
|
+
Impact: Positive (reduces index bloat)
|
|
120
|
+
Actions:
|
|
121
|
+
- Set up 301 redirect to the most relevant active page
|
|
122
|
+
- Or add noindex meta tag
|
|
123
|
+
- Remove from XML sitemap
|
|
124
|
+
- Remove internal links pointing to this page
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Evergreen vs Temporal Content
|
|
128
|
+
|
|
129
|
+
### Classification
|
|
130
|
+
|
|
131
|
+
| Type | Characteristics | Freshness Need | Examples |
|
|
132
|
+
|------|----------------|----------------|----------|
|
|
133
|
+
| Evergreen | Topic stays relevant, answers don't change | Low (annual review) | "How to Install WordPress", "What Is SEO" |
|
|
134
|
+
| Semi-Evergreen | Core topic stable, details change | Medium (6-12 months) | "Best WordPress Plugins 2026", "WordPress Security Guide" |
|
|
135
|
+
| Temporal | Time-bound, loses relevance quickly | High (monthly or event-based) | "WordPress 6.5 New Features", "Black Friday Deals 2026" |
|
|
136
|
+
| News | Immediate relevance, short lifespan | Not refreshable | "WordPress Acquires Company X" |
|
|
137
|
+
|
|
138
|
+
### Strategy by Content Type
|
|
139
|
+
|
|
140
|
+
| Type | Refresh Strategy | Frequency |
|
|
141
|
+
|------|-----------------|-----------|
|
|
142
|
+
| Evergreen | Minor data updates, link checks | Every 12 months |
|
|
143
|
+
| Semi-Evergreen | Section expansion, data refresh | Every 6-12 months |
|
|
144
|
+
| Temporal | Full rewrite for new period or archive | When period expires |
|
|
145
|
+
| News | Archive (301 to evergreen resource) | When news cycle ends |
|
|
146
|
+
|
|
147
|
+
## Content Freshness Audit Workflow
|
|
148
|
+
|
|
149
|
+
### Step 1: Inventory All Content
|
|
150
|
+
```
|
|
151
|
+
Use list_content to fetch all published posts and pages.
|
|
152
|
+
Collect: post ID, title, URL, publish date, modified date, category.
|
|
153
|
+
Sort by publish date (oldest first).
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Step 2: Calculate Content Age
|
|
157
|
+
```
|
|
158
|
+
For each content piece:
|
|
159
|
+
- Age = current date - publish date
|
|
160
|
+
- Days since last update = current date - modified date
|
|
161
|
+
- Flag: age > 12 months AND no modification in 6+ months
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Step 3: Pull Traffic Trends (GSC)
|
|
165
|
+
```
|
|
166
|
+
Use gsc_page_performance for each page (or top pages by age).
|
|
167
|
+
Compare last 3 months vs previous 3 months:
|
|
168
|
+
- Traffic trend: growing, stable, or declining
|
|
169
|
+
- Position trend: improving, stable, or worsening
|
|
170
|
+
- CTR trend: improving, stable, or declining
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Step 4: Classify Each Content Piece
|
|
174
|
+
```
|
|
175
|
+
For each piece of content, assign a freshness category:
|
|
176
|
+
|
|
177
|
+
| Category | Criteria |
|
|
178
|
+
|----------|---------|
|
|
179
|
+
| Fresh | <6 months old OR recently updated with growing traffic |
|
|
180
|
+
| Aging | 6-12 months, stable traffic, no recent updates |
|
|
181
|
+
| Stale | 12-18 months, declining traffic, no updates |
|
|
182
|
+
| Decayed | 18+ months, significant traffic loss |
|
|
183
|
+
| Dead | 24+ months, near-zero traffic, no keyword rankings |
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Step 5: Assign Refresh Priority
|
|
187
|
+
```
|
|
188
|
+
Priority 1 (Urgent): Stale content with high historical traffic → quick refresh
|
|
189
|
+
Priority 2 (High): Aging content in important categories → preventive refresh
|
|
190
|
+
Priority 3 (Medium): Decayed content with some keyword potential → rewrite
|
|
191
|
+
Priority 4 (Low): Dead content with no recovery potential → archive/redirect
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Step 6: Generate Audit Report
|
|
195
|
+
```
|
|
196
|
+
Content Freshness Audit Report
|
|
197
|
+
══════════════════════════════
|
|
198
|
+
Total Content Pieces: 85
|
|
199
|
+
Fresh (0-6 months): 12 (14%)
|
|
200
|
+
Aging (6-12 months): 23 (27%)
|
|
201
|
+
Stale (12-18 months): 28 (33%)
|
|
202
|
+
Decayed (18-24 months): 15 (18%)
|
|
203
|
+
Dead (24+ months): 7 (8%)
|
|
204
|
+
|
|
205
|
+
Priority Actions:
|
|
206
|
+
┌─────────┬────────────────────────────────────┬───────────┬──────────────┐
|
|
207
|
+
│ Priority│ Content │ Age │ Action │
|
|
208
|
+
├─────────┼────────────────────────────────────┼───────────┼──────────────┤
|
|
209
|
+
│ 1 │ "WordPress Speed Guide" │ 14 months │ Data refresh │
|
|
210
|
+
│ 1 │ "Best WooCommerce Plugins" │ 16 months │ Rewrite │
|
|
211
|
+
│ 2 │ "How to Install WordPress" │ 10 months │ Review │
|
|
212
|
+
│ 4 │ "WordPress 5.9 Features" │ 26 months │ Archive │
|
|
213
|
+
└─────────┴────────────────────────────────────┴───────────┴──────────────┘
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Step 7: Execute Refresh Plan
|
|
217
|
+
For each priority item, apply the appropriate refresh strategy:
|
|
218
|
+
```
|
|
219
|
+
Use get_content to fetch the full content.
|
|
220
|
+
Apply the selected refresh strategy (data refresh, expansion, rewrite).
|
|
221
|
+
Use update_content to publish the updated version.
|
|
222
|
+
Submit refreshed URLs to GSC for re-crawling if significantly changed.
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Best Practices
|
|
226
|
+
|
|
227
|
+
- Run freshness audits quarterly (every 3 months) for sites with 50+ posts
|
|
228
|
+
- Prioritize high-traffic decaying content over zero-traffic content
|
|
229
|
+
- Always refresh meaningfully — date-only changes do not fool search engines
|
|
230
|
+
- Track content age as a standard metric alongside traffic and rankings
|
|
231
|
+
- Set calendar reminders for semi-evergreen content refresh cycles
|
|
232
|
+
- When refreshing, also update internal links from other posts pointing to the refreshed content
|
|
233
|
+
- Keep a content calendar that includes refresh dates alongside new content publication
|
|
234
|
+
- Consider combining freshness audits with the Bulk Content Triage procedure (SKILL.md Section 6) for comprehensive content management
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Headline Optimization
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Headlines are the single most impactful element for both search CTR and on-page engagement. Claude performs headline analysis by evaluating keyword placement, emotional impact, clarity, length, and formula adherence — then generates scored alternatives. No external headline analyzer APIs are needed.
|
|
6
|
+
|
|
7
|
+
## Headline Scoring Criteria (1-10 Scale)
|
|
8
|
+
|
|
9
|
+
| Score | Criteria | Weight |
|
|
10
|
+
|-------|----------|--------|
|
|
11
|
+
| 0-2 | Keyword presence (primary keyword in title) | 20% |
|
|
12
|
+
| 0-2 | Power word usage (emotional/urgency/curiosity) | 20% |
|
|
13
|
+
| 0-2 | Length optimization (50-60 chars for SEO, 6-12 words) | 20% |
|
|
14
|
+
| 0-2 | Clarity and specificity (reader knows what to expect) | 20% |
|
|
15
|
+
| 0-2 | Formula adherence (matches proven headline pattern) | 20% |
|
|
16
|
+
|
|
17
|
+
### Score Interpretation
|
|
18
|
+
|
|
19
|
+
| Score | Rating | Action |
|
|
20
|
+
|-------|--------|--------|
|
|
21
|
+
| 9-10 | Excellent | No changes needed |
|
|
22
|
+
| 7-8 | Good | Minor tweaks for improvement |
|
|
23
|
+
| 5-6 | Average | Rewrite recommended |
|
|
24
|
+
| 3-4 | Below Average | Rewrite required |
|
|
25
|
+
| 1-2 | Poor | Complete headline overhaul |
|
|
26
|
+
|
|
27
|
+
## Power Word Categories
|
|
28
|
+
|
|
29
|
+
### Emotional Words
|
|
30
|
+
- Trust: proven, guaranteed, authentic, certified, trusted
|
|
31
|
+
- Fear: warning, dangerous, mistake, avoid, never
|
|
32
|
+
- Joy: amazing, incredible, brilliant, stunning, remarkable
|
|
33
|
+
- Surprise: secret, shocking, unexpected, little-known, hidden
|
|
34
|
+
|
|
35
|
+
### Urgency Words
|
|
36
|
+
- Time: now, today, immediately, hurry, limited, deadline
|
|
37
|
+
- Scarcity: exclusive, rare, only, last chance, while supplies last
|
|
38
|
+
- Action: act, rush, grab, claim, don't miss
|
|
39
|
+
|
|
40
|
+
### Curiosity Words
|
|
41
|
+
- Mystery: secret, hidden, little-known, underground, insider
|
|
42
|
+
- Question: why, how, what if, did you know, ever wonder
|
|
43
|
+
- Incomplete: the real reason, what nobody tells you, the truth about
|
|
44
|
+
|
|
45
|
+
### Value Words
|
|
46
|
+
- Benefit: free, save, boost, increase, maximize, transform
|
|
47
|
+
- Ease: simple, easy, quick, effortless, step-by-step, beginner
|
|
48
|
+
- Authority: ultimate, complete, definitive, comprehensive, expert
|
|
49
|
+
|
|
50
|
+
## Headline Formulas
|
|
51
|
+
|
|
52
|
+
### How-To Formula
|
|
53
|
+
```
|
|
54
|
+
How to [Achieve Desired Result] [Without Undesired Outcome]
|
|
55
|
+
```
|
|
56
|
+
Examples:
|
|
57
|
+
- "How to Optimize WordPress Speed Without Plugins"
|
|
58
|
+
- "How to Write SEO Headlines That Actually Get Clicks"
|
|
59
|
+
|
|
60
|
+
### List Formula
|
|
61
|
+
```
|
|
62
|
+
[Number] [Adjective] [Keyword] [Promise/Benefit]
|
|
63
|
+
```
|
|
64
|
+
Examples:
|
|
65
|
+
- "7 Proven Ways to Improve Your WordPress Page Speed"
|
|
66
|
+
- "15 Essential WordPress Plugins for Small Business"
|
|
67
|
+
|
|
68
|
+
### Question Formula
|
|
69
|
+
```
|
|
70
|
+
[Question Word] [Keyword] [Intriguing Element]?
|
|
71
|
+
```
|
|
72
|
+
Examples:
|
|
73
|
+
- "Why Is Your WordPress Site So Slow? (And How to Fix It)"
|
|
74
|
+
- "What Makes the Best WordPress Themes Actually Convert?"
|
|
75
|
+
|
|
76
|
+
### Comparison Formula
|
|
77
|
+
```
|
|
78
|
+
[Option A] vs [Option B]: [Decisive Factor]
|
|
79
|
+
```
|
|
80
|
+
Examples:
|
|
81
|
+
- "Yoast vs Rank Math: Which SEO Plugin Actually Performs Better?"
|
|
82
|
+
- "WooCommerce vs Shopify: The Complete 2026 Comparison"
|
|
83
|
+
|
|
84
|
+
### Result Formula
|
|
85
|
+
```
|
|
86
|
+
[Action] That [Specific Result] in [Timeframe]
|
|
87
|
+
```
|
|
88
|
+
Examples:
|
|
89
|
+
- "WordPress Caching Setup That Cuts Load Time by 60% in 10 Minutes"
|
|
90
|
+
- "SEO Fixes That Doubled Our Organic Traffic in 30 Days"
|
|
91
|
+
|
|
92
|
+
## Keyword Placement Rules
|
|
93
|
+
|
|
94
|
+
1. **Front-load the keyword** — primary keyword in the first 3-4 words
|
|
95
|
+
2. **Natural phrasing** — keyword must read naturally, not forced
|
|
96
|
+
3. **Exact match first** — try exact keyword match; partial match as fallback
|
|
97
|
+
4. **Avoid keyword stuffing** — keyword appears once in the headline
|
|
98
|
+
5. **Brand at the end** — if including brand name, use pipe separator at end
|
|
99
|
+
|
|
100
|
+
### Examples
|
|
101
|
+
```
|
|
102
|
+
Good: "WordPress Speed Optimization: 10 Proven Techniques"
|
|
103
|
+
^ keyword at front
|
|
104
|
+
|
|
105
|
+
Bad: "10 Proven Techniques for Making Your WordPress Website Speed Faster"
|
|
106
|
+
^ keyword buried, awkward phrasing
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## A/B Title Generation Workflow
|
|
110
|
+
|
|
111
|
+
### Step 1: Fetch Current Title
|
|
112
|
+
```
|
|
113
|
+
Use list_content to get the current post title and slug.
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Step 2: Analyze Current Title
|
|
117
|
+
Claude evaluates the title against the scoring criteria above and assigns a score.
|
|
118
|
+
|
|
119
|
+
### Step 3: Generate 3 Alternatives
|
|
120
|
+
Claude generates three headline variants using different formulas:
|
|
121
|
+
- Variant A: Same formula, optimized (improve power words, keyword placement)
|
|
122
|
+
- Variant B: Different formula (e.g., if original is How-To, try List)
|
|
123
|
+
- Variant C: Curiosity-driven variant (question or result formula)
|
|
124
|
+
|
|
125
|
+
### Step 4: Score All Variants
|
|
126
|
+
Each variant receives a 1-10 score with per-criteria breakdown.
|
|
127
|
+
|
|
128
|
+
### Step 5: Apply Best Option
|
|
129
|
+
```
|
|
130
|
+
Use update_content to set the winning title.
|
|
131
|
+
Track the change for future CTR comparison via GSC data.
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Example Workflow
|
|
135
|
+
|
|
136
|
+
### Input
|
|
137
|
+
```
|
|
138
|
+
Current title: "Tips for WordPress"
|
|
139
|
+
Target keyword: "WordPress performance optimization"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Analysis
|
|
143
|
+
```
|
|
144
|
+
Score: 2/10
|
|
145
|
+
- Keyword presence: 0/2 (target keyword missing)
|
|
146
|
+
- Power words: 0/2 (none)
|
|
147
|
+
- Length: 0/2 (too short — 3 words)
|
|
148
|
+
- Clarity: 1/2 (vague, no specificity)
|
|
149
|
+
- Formula: 1/2 (implied list, but no number)
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Generated Alternatives
|
|
153
|
+
```
|
|
154
|
+
Variant A (List): "9 WordPress Performance Optimization Tips That Actually Work" → 8/10
|
|
155
|
+
Variant B (How-To): "How to Master WordPress Performance Optimization in 2026" → 7/10
|
|
156
|
+
Variant C (Result): "WordPress Performance Optimization: Cut Load Time by 50%" → 9/10
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Recommendation
|
|
160
|
+
Apply Variant C — highest score, strong keyword placement, specific result promise, power word ("cut"), appropriate length (56 chars).
|
|
161
|
+
|
|
162
|
+
## Best Practices
|
|
163
|
+
|
|
164
|
+
- Always preserve the primary keyword when rewriting headlines
|
|
165
|
+
- Test one title change at a time to measure impact via GSC CTR data
|
|
166
|
+
- Wait 2-4 weeks after title change before evaluating CTR impact
|
|
167
|
+
- Keep headline under 60 characters for full display in search results
|
|
168
|
+
- Use numbers when possible (odd numbers perform slightly better)
|
|
169
|
+
- Front-load the most important information
|
|
170
|
+
- Avoid clickbait — headline must accurately represent content
|
|
171
|
+
- Consider the search intent behind the target keyword when choosing formula
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
# Meta Description and Title Tag Optimization
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Title tags and meta descriptions are the first impression users see in search results. Optimizing these elements directly impacts click-through rate (CTR). Claude generates optimized meta elements by combining best practices with GSC CTR data, then produces A/B variants for testing. This process uses existing WP REST Bridge and GSC tools — no additional APIs needed.
|
|
6
|
+
|
|
7
|
+
## Title Tag Best Practices
|
|
8
|
+
|
|
9
|
+
### Rules
|
|
10
|
+
|
|
11
|
+
| Rule | Standard |
|
|
12
|
+
|------|----------|
|
|
13
|
+
| Maximum length | 60 characters (Google truncates at ~60) |
|
|
14
|
+
| Keyword placement | Primary keyword in the first 3-4 words |
|
|
15
|
+
| Uniqueness | Every page must have a unique title |
|
|
16
|
+
| Brand inclusion | Optional, at end with pipe separator |
|
|
17
|
+
| Keyword repetition | Keyword appears once only |
|
|
18
|
+
| Readability | Must make sense as a standalone phrase |
|
|
19
|
+
|
|
20
|
+
### Title Tag Formula
|
|
21
|
+
```
|
|
22
|
+
[Primary Keyword] — [Benefit or Differentiator] | [Brand]
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Character Count Optimization
|
|
26
|
+
```
|
|
27
|
+
Ideal: 50-60 characters (full display in all search results)
|
|
28
|
+
OK: 40-50 characters (may look short but fully visible)
|
|
29
|
+
Warning: 60-65 characters (partial truncation on some devices)
|
|
30
|
+
Error: 65+ characters (truncated, meaning lost)
|
|
31
|
+
Too Short: <30 characters (underutilizing title space)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Examples
|
|
35
|
+
```
|
|
36
|
+
Good (55 chars): "WordPress Speed Optimization — 10 Proven Techniques | Brand"
|
|
37
|
+
Good (48 chars): "How to Speed Up WordPress in 2026 | Brand"
|
|
38
|
+
Bad (72 chars): "The Complete and Ultimate Guide to WordPress Speed Optimization Tips 2026"
|
|
39
|
+
Bad (18 chars): "Speed Tips"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Meta Description Guidelines
|
|
43
|
+
|
|
44
|
+
### Rules
|
|
45
|
+
|
|
46
|
+
| Rule | Standard |
|
|
47
|
+
|------|----------|
|
|
48
|
+
| Maximum length | 155-160 characters |
|
|
49
|
+
| Minimum length | 120 characters (shorter looks incomplete) |
|
|
50
|
+
| Keyword inclusion | Primary keyword once, naturally |
|
|
51
|
+
| Call to action | Include an action verb (learn, discover, get, try) |
|
|
52
|
+
| Uniqueness | Every page must have a unique description |
|
|
53
|
+
| Emotional trigger | Include benefit or pain point |
|
|
54
|
+
| Specificity | Use numbers, data, or specific outcomes |
|
|
55
|
+
|
|
56
|
+
### Meta Description Formula
|
|
57
|
+
```
|
|
58
|
+
[Action verb] [what the reader gets/learns]. [Specific detail or data point]. [CTA].
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Examples
|
|
62
|
+
```
|
|
63
|
+
Good (152 chars):
|
|
64
|
+
"Learn 10 proven WordPress speed optimization techniques that cut load time
|
|
65
|
+
by 50%. Step-by-step guide with benchmarks. Start optimizing today."
|
|
66
|
+
|
|
67
|
+
Bad (89 chars):
|
|
68
|
+
"This article is about WordPress speed optimization. Read more on our website."
|
|
69
|
+
|
|
70
|
+
Bad (185 chars):
|
|
71
|
+
"In this comprehensive and detailed guide we will cover everything you need to
|
|
72
|
+
know about optimizing your WordPress website for speed including caching and
|
|
73
|
+
image optimization techniques."
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Using GSC CTR Data for Optimization
|
|
77
|
+
|
|
78
|
+
### Identifying Low-CTR Pages
|
|
79
|
+
|
|
80
|
+
#### Step 1: Pull Page Performance Data
|
|
81
|
+
```
|
|
82
|
+
Use gsc_page_performance to get CTR data for all pages.
|
|
83
|
+
Sort by impressions (descending) to focus on high-visibility pages first.
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
#### Step 2: CTR Benchmarks by Position
|
|
87
|
+
|
|
88
|
+
| Average Position | Expected CTR | Below Average |
|
|
89
|
+
|-----------------|-------------|---------------|
|
|
90
|
+
| 1 | 25-35% | <20% |
|
|
91
|
+
| 2 | 12-18% | <10% |
|
|
92
|
+
| 3 | 8-12% | <6% |
|
|
93
|
+
| 4-5 | 5-8% | <4% |
|
|
94
|
+
| 6-10 | 2-5% | <2% |
|
|
95
|
+
|
|
96
|
+
#### Step 3: Flag Optimization Candidates
|
|
97
|
+
Pages with high impressions but below-average CTR are prime candidates:
|
|
98
|
+
```
|
|
99
|
+
Example:
|
|
100
|
+
Page: /wordpress-speed-guide
|
|
101
|
+
Position: 3
|
|
102
|
+
Impressions: 5,000/month
|
|
103
|
+
CTR: 4.2% (expected 8-12% for position 3)
|
|
104
|
+
→ META OPTIMIZATION NEEDED — potential to double clicks
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
#### Step 4: Analyze Current Meta
|
|
108
|
+
```
|
|
109
|
+
Use get_content to fetch the current title tag and meta description.
|
|
110
|
+
Evaluate against the rules above.
|
|
111
|
+
Identify specific issues (too long, missing keyword, no CTA, etc.).
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### CTR Impact Estimation
|
|
115
|
+
```
|
|
116
|
+
Current: Position 3, 5000 impressions, 4.2% CTR = 210 clicks/month
|
|
117
|
+
After optimization to 8% CTR: 5000 × 0.08 = 400 clicks/month
|
|
118
|
+
Potential gain: +190 clicks/month (+90% improvement)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## A/B Variant Generation
|
|
122
|
+
|
|
123
|
+
### Process
|
|
124
|
+
|
|
125
|
+
#### Step 1: Generate Two Variants
|
|
126
|
+
Claude generates two meta description variants using different approaches:
|
|
127
|
+
|
|
128
|
+
**Variant A: Benefit-focused**
|
|
129
|
+
```
|
|
130
|
+
"Cut your WordPress load time by 50% with these 10 proven optimization
|
|
131
|
+
techniques. Includes caching, image compression, and CDN setup. Free guide."
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Variant B: Problem-focused**
|
|
135
|
+
```
|
|
136
|
+
"Slow WordPress site losing visitors? Fix it with 10 tested speed
|
|
137
|
+
techniques. Average improvement: 50% faster. Step-by-step instructions."
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
#### Step 2: Score Both Variants
|
|
141
|
+
|
|
142
|
+
| Criteria | Variant A | Variant B |
|
|
143
|
+
|----------|-----------|-----------|
|
|
144
|
+
| Keyword presence | Yes (1st sentence) | Yes (1st sentence) |
|
|
145
|
+
| Length | 148 chars ✓ | 142 chars ✓ |
|
|
146
|
+
| CTA | "Free guide" | "Step-by-step" |
|
|
147
|
+
| Emotional trigger | Benefit (cut load time) | Pain (losing visitors) |
|
|
148
|
+
| Specificity | 50%, 10 techniques | 50% faster |
|
|
149
|
+
| Readability | Clear | Clear |
|
|
150
|
+
|
|
151
|
+
#### Step 3: Apply and Monitor
|
|
152
|
+
```
|
|
153
|
+
Apply the highest-scoring variant via update_content.
|
|
154
|
+
Set a review date 2-4 weeks out.
|
|
155
|
+
Compare CTR data in GSC after the review period.
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Title Tag A/B Variants
|
|
159
|
+
Same process for title tags:
|
|
160
|
+
```
|
|
161
|
+
Original: "WordPress Speed Guide"
|
|
162
|
+
Variant A: "WordPress Speed Optimization — 10 Techniques That Work"
|
|
163
|
+
Variant B: "How to Speed Up WordPress by 50% (2026 Guide)"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Rich Snippet Optimization
|
|
167
|
+
|
|
168
|
+
### Content-Type Specific Guidance
|
|
169
|
+
|
|
170
|
+
| Content Type | Rich Snippet Opportunity | Meta Optimization |
|
|
171
|
+
|-------------|------------------------|-------------------|
|
|
172
|
+
| How-to articles | HowTo schema | Include "how to" in title, steps count in meta |
|
|
173
|
+
| FAQ pages | FAQPage schema | Include question in title, "answers" in meta |
|
|
174
|
+
| Product pages | Product schema (rating, price) | Include price/rating in meta |
|
|
175
|
+
| Review posts | Review schema (star rating) | Include rating in title/meta |
|
|
176
|
+
| List posts | ItemList schema | Include count in title ("10 Best...") |
|
|
177
|
+
|
|
178
|
+
### Meta for Featured Snippets
|
|
179
|
+
To optimize for position zero:
|
|
180
|
+
- Structure content to answer specific questions
|
|
181
|
+
- Use the question as an H2 heading
|
|
182
|
+
- Provide a concise answer in the first paragraph (40-60 words)
|
|
183
|
+
- Follow with detailed explanation
|
|
184
|
+
- Include a summary table or list
|
|
185
|
+
|
|
186
|
+
## Step-by-Step Workflow
|
|
187
|
+
|
|
188
|
+
### Step 1: Identify Optimization Targets
|
|
189
|
+
```
|
|
190
|
+
Use gsc_page_performance to find pages with:
|
|
191
|
+
- High impressions (>500/month)
|
|
192
|
+
- Below-average CTR for their position
|
|
193
|
+
- Sort by potential impact (impressions × CTR gap)
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Step 2: Fetch Current Meta Elements
|
|
197
|
+
```
|
|
198
|
+
Use get_content for each target page.
|
|
199
|
+
Extract: title tag, meta description, H1, URL slug.
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Step 3: Analyze and Score Current Meta
|
|
203
|
+
Claude evaluates each element against rules above:
|
|
204
|
+
- Title: length, keyword position, clarity, brand
|
|
205
|
+
- Description: length, keyword, CTA, emotional trigger, specificity
|
|
206
|
+
|
|
207
|
+
### Step 4: Generate Optimized Variants
|
|
208
|
+
For each page, Claude produces:
|
|
209
|
+
- 2 title tag variants
|
|
210
|
+
- 2 meta description variants
|
|
211
|
+
- Score comparison with current version
|
|
212
|
+
- Estimated CTR impact
|
|
213
|
+
|
|
214
|
+
### Step 5: Apply Changes
|
|
215
|
+
```
|
|
216
|
+
Use update_content to apply the winning variants.
|
|
217
|
+
Document changes for tracking:
|
|
218
|
+
- Page URL
|
|
219
|
+
- Previous title/meta
|
|
220
|
+
- New title/meta
|
|
221
|
+
- Date changed
|
|
222
|
+
- Baseline CTR from GSC
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Step 6: Monitor Results
|
|
226
|
+
After 2-4 weeks:
|
|
227
|
+
```
|
|
228
|
+
Use gsc_page_performance to pull updated CTR data.
|
|
229
|
+
Compare against baseline.
|
|
230
|
+
Iterate if CTR did not improve.
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Best Practices
|
|
234
|
+
|
|
235
|
+
- Prioritize high-impression pages first (biggest impact from small CTR gains)
|
|
236
|
+
- Never duplicate meta descriptions across pages
|
|
237
|
+
- Avoid meta descriptions that do not match page content (causes bounce)
|
|
238
|
+
- Include the year in title tags for time-sensitive content (guides, reviews)
|
|
239
|
+
- Use active voice and power verbs in meta descriptions
|
|
240
|
+
- Test one change at a time to isolate impact
|
|
241
|
+
- Review and refresh meta descriptions quarterly
|
|
242
|
+
- Consider search intent when crafting meta — informational vs transactional queries need different approaches
|
|
243
|
+
- Do not force keywords into meta descriptions unnaturally — readability trumps keyword presence
|