Skip to content

Commit 4d54889

Browse files
committed
Monthly SEO keyword strategy review update (2026-03-19)
1 parent 8dbbd7a commit 4d54889

1 file changed

Lines changed: 147 additions & 91 deletions

File tree

docs/seo/keyword-strategy.md

Lines changed: 147 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,163 +1,219 @@
11
# Monthly SEO Keyword Strategy Review (getathenic.com)
22

3-
**Review date:** 2026-03-09
3+
**Review date:** 2026-03-19
44
**Primary goal:** identify keyword opportunities to grow *qualified organic traffic* and improve click-through-rate (CTR) on high-impression pages.
55

6-
## Data sources used (this month)
6+
## Data sources used (this review)
77

8-
1. **Google Search Console** (last 28 days: **2026-02-09 → 2026-03-07**, vs previous 28 days: **2026-01-12 → 2026-02-08**)
9-
2. **Google Ads Keyword Planner**: *attempted but blocked by API configuration error* (invalid Google Ads Customer ID formatting). This document therefore uses Search Console as the ground truth for “real demand we’re already showing for”, which is typically more actionable than planner estimates.
8+
1. **Google Search Console** (last 28 days: **2026-02-19 → 2026-03-18**, vs previous 28 days: **2026-01-22 → 2026-02-18**)
9+
2. **Google Ads Keyword Planner**: attempted again, but the API integration is still failing due to an invalid configured Google Ads Customer ID.
10+
11+
**Keyword Planner error (actionable fix):**
12+
- Error returned by API: `GOOGLE_ADS_CUSTOMER_ID is invalid: "476-798-8021\n"` (note the trailing newline)
13+
- Fix: update the configured customer ID to a valid **10-digit** value *with no whitespace/newlines* (dashes are fine: `123-456-7890`).
1014

1115
---
1216

13-
## Executive summary (what changed this month)
17+
## Executive summary (what changed vs last review)
18+
19+
### 1) Visibility step-change: “comparison” content is now earning large impression volume
20+
Across the last 28 days, multiple comparison pages moved into a pattern of:
21+
- **Avg position ~6–7** (top 10)
22+
- **Tens of thousands of impressions**
23+
- **Very low CTR** (often **< 0.07%**) → the site is *being shown*, but searchers aren’t choosing the snippet.
24+
25+
This is the highest-leverage SEO work for the next 30 days.
26+
27+
### 2) New cluster with real click volume: Linear vs Plane vs Height
28+
The page `/blog/linear-vs-height-vs-plane-project-management` is now a top click driver.
29+
- **28 clicks / 2,172 impressions / 1.29% CTR / avg position 6.30**
30+
31+
This is a strong signal to expand into adjacent “project management tool comparison” head-to-heads.
32+
33+
### 3) New high-impression / zero-click opportunity: HubSpot vs ActiveCampaign (AI features)
34+
The page `/blog/hubspot-activecampaign-ai-agents-comparison` has meaningful visibility but no traffic yet.
35+
- **0 clicks / 2,820 impressions / 0.00% CTR / avg position 8.58**
1436

15-
### 1) Biggest immediate upside: improve CTR on pages already ranking in positions ~5–8
16-
Several pages have **very large impression volume** and **average position inside the top 10**, but **CTR near ~0.05%–0.08%**. This is usually a snippet + intent-match problem (title/meta, SERP features, missing “pricing / free tier / 2026” modifiers).
37+
This is almost certainly a title/meta + intent-match issue.
38+
39+
---
40+
41+
## Biggest immediate upside: CTR improvement on pages already ranking in positions ~5–8
1742

1843
**Top CTR-upside pages (last 28 days):**
1944

2045
| Page | Clicks | Impressions | CTR | Avg position |
2146
|---|---:|---:|---:|---:|
22-
| /blog/vercel-vs-railway-vs-render-ai-deployment | 10 | 18,628 | 0.054% | 6.40 |
23-
| /blog/stripe-vs-paddle-vs-lemon-squeezy-saas-billing | 10 | 13,268 | 0.075% | 6.36 |
24-
| /blog/claude-vs-gpt4o-vs-gemini-enterprise-comparison | 3 | 22,400 | 0.013% | 5.84 |
25-
| /blog/supabase-vs-firebase-vs-convex-ai-backend | 5 | 6,593 | 0.076% | 7.03 |
26-
| /blog/pinecone-vs-weaviate-vs-qdrant-vs-chroma-vector-search | 4 | 5,330 | 0.075% | 7.56 |
47+
| /blog/claude-vs-gpt4o-vs-gemini-enterprise-comparison | 6 | 31,192 | 0.019% | 6.01 |
48+
| /blog/vercel-vs-railway-vs-render-ai-deployment | 12 | 23,395 | 0.051% | 6.49 |
49+
| /blog/stripe-vs-paddle-vs-lemon-squeezy-saas-billing | 9 | 16,534 | 0.054% | 6.27 |
50+
| /blog/pinecone-vs-weaviate-vs-qdrant-vs-pgvector | 6 | 10,431 | 0.058% | 6.85 |
51+
| /blog/supabase-vs-firebase-vs-convex-ai-backend | 5 | 7,869 | 0.064% | 7.16 |
52+
| /blog/hubspot-activecampaign-ai-agents-comparison | 0 | 2,820 | 0.000% | 8.58 |
2753

28-
### 2) Notable “trend / emergence” signals
29-
Compared to the prior 28 days, the site started showing meaningful demand for:
54+
**What this means in clicks (illustrative):**
55+
- If `/blog/claude-vs-gpt4o-vs-gemini-enterprise-comparison` moves from **0.019% → 0.20% CTR**, that’s roughly **+56 clicks / 28 days** at current impressions.
56+
- If `/blog/vercel-vs-railway-vs-render-ai-deployment` moves from **0.051% → 0.20% CTR**, that’s roughly **+35 clicks / 28 days**.
3057

31-
- **railway vs vercel**: 238 impressions (was 4) → *major jump*.
32-
- **paddle vs lemon squeezy** and related Lemon Squeezy fee/pricing variants → *new and growing set*.
33-
- Continued demand for **e2b vs modal** and related runtime/sandbox comparisons.
34-
35-
### 3) Service terms (“bespoke web design”) are not currently competitive
36-
The page `/blog/bespoke-web-design-complete-guide-2026` is currently showing **very low impressions** and **very weak average positions** for the core head terms:
58+
---
3759

38-
- “bespoke web design” (avg position ~80)
39-
- “bespoke web development” (avg position ~93)
60+
## Biggest movers (last 28 days vs previous 28 days)
4061

41-
This suggests the site’s topical authority is currently stronger around “X vs Y” comparison queries than around agency/service terms. If bespoke web design remains a core revenue driver, we need **dedicated landing pages** + **supporting cluster content**.
62+
| Page | Clicks (prev → now) | Impressions (prev → now) | Note |
63+
|---|---:|---:|---|
64+
| /blog/stripe-vs-paddle-vs-lemon-squeezy-saas-billing | 4 → 9 | 1,378 → 16,534 | major impression growth; CTR now the bottleneck |
65+
| /blog/vercel-vs-railway-vs-render-ai-deployment | 2 → 12 | 2,018 → 23,395 | huge visibility gain; snippet underperforming |
66+
| /blog/e2b-vs-modal-vs-flyio-sandbox-comparison | 44 → 9 | 3,511 → 3,808 | clicks down sharply; monitor ranking + intent drift |
67+
| /blog/linear-vs-height-vs-plane-project-management | (not top 50) → 28 | (not top 50) → 2,172 | new high-performing cluster |
68+
| /blog/postman-vs-insomnia-vs-bruno-api-testing | (not top 50) → 32 | (not top 50) → 3,644 | strong performer; expand variants |
4269

4370
---
4471

4572
## Updated keyword clusters (prioritized)
4673

47-
### Cluster A (P0): Deployment platforms for apps/AI workloads
48-
**Why P0:** highest impressions, page already ranks in top 10; CTR is extremely low.
74+
### Cluster A (P0): LLM model comparisons (Enterprise: Claude vs GPT-4o vs Gemini)
75+
**Why P0:** *largest impressions on the site* with average position ~6 and near-zero CTR.
4976

50-
**Core keywords (observed demand):**
51-
- railway vs vercel (238 impressions, pos ~3.5)
52-
- vercel vs railway (165 impressions, pos ~4.45)
53-
- railway vs vercel comparison 2026 (50 impressions, pos ~4.74)
54-
- railway free tier limits 2026 (18 impressions, pos ~10.78)
55-
- railway vs render pricing 2026 (11 impressions, pos ~9.91)
77+
**Observed demand patterns (Search Console):**
78+
- Many “best model for X” use-case modifiers (e.g. *HTML extraction*, *PDF to markdown*, *legal translation*).
79+
- Broad “best AI / best LLM” in multiple languages → suggests the page is being used by Google as a generic candidate, which can be good for impressions but bad for CTR if the snippet doesn’t match.
5680

5781
**Page mapping:**
58-
- Primary: `/blog/vercel-vs-railway-vs-render-ai-deployment`
82+
- Primary: `/blog/claude-vs-gpt4o-vs-gemini-enterprise-comparison`
5983

6084
**Recommendations (next 30 days):**
61-
- Rewrite title/meta to explicitly include **Railway vs Vercel (2026)** and one differentiator: *pricing*, *free tier*, *DX*, *long-running services*, *AI workloads*.
62-
- Add a short **“2026 pricing / free tier”** section near the top; many query modifiers indicate price sensitivity.
63-
- Add FAQ section targeting: “Is Railway cheaper than Vercel?”, “Does Railway support GPUs?”, “Railway free tier limits 2026”.
85+
- Title/meta: make the promise explicit and click-worthy: **Claude vs GPT-4o vs Gemini (2026): price, context, latency, benchmarks”**.
86+
- Add a “Use-cases” jump table near the top (HTML extraction, long-doc parsing, coding, RAG), so the snippet better matches the long-tail.
87+
- Add an FAQ section with exact-match questions ("best model for html data extraction", "best llm for pdf to markdown").
6488

6589
---
6690

67-
### Cluster B (P0): SaaS billing / Merchant of Record comparisons
68-
**Why P0:** very high impressions; many query variants around pricing/fees.
91+
### Cluster B (P0): Deployment platforms for apps/AI workloads (Vercel vs Railway vs Render)
92+
**Why P0:** very high impressions; page already ranks in top 10; CTR still extremely low.
6993

70-
**Core keywords (observed demand):**
71-
- paddle vs lemon squeezy (120 impressions, pos ~7.83)
72-
- lemon squeezy vs paddle (96 impressions, pos ~7.40)
73-
- lemon squeezy vs paddle vs stripe (31 impressions, pos ~5.97)
74-
- compare stripe tax vs paddle (39 impressions, pos ~6.62)
75-
- lemon squeezy pricing 5% + $0.50 (17 impressions, pos ~10.35)
94+
**Observed modifiers to capture:**
95+
- **free tier limits / pricing**
96+
- **GPU support**
97+
- “Railway vs Render (2026)” variants
7698

7799
**Page mapping:**
78-
- Primary: `/blog/stripe-vs-paddle-vs-lemon-squeezy-saas-billing`
100+
- Primary: `/blog/vercel-vs-railway-vs-render-ai-deployment`
79101

80-
**Recommendations (next 30 days):**
81-
- Tighten snippet to match intent: include “**fees**”, “**Merchant of Record**”, “**Stripe Tax**”, and “**pricing (2026)**”.
82-
- Add a “Fees calculator” style table (even static) to win clicks for the recurring “5% + $0.50” searches.
83-
- Add internal links from adjacent finance content (Atlas article) using anchors like “paddle vs lemon squeezy” and “merchant of record”.
102+
**Recommendations:**
103+
- Add a visible **Pricing / Free tier (2026)** table above the fold.
104+
- Add FAQ targeting: “Railway free tier limits 2026”, “Does Railway support GPUs?”, “Railway vs Render pricing 2026”.
105+
- Consider 1 supporting page if this query class continues to grow:
106+
- `Railway free tier limits (2026): what you get + when you pay`
84107

85108
---
86109

87-
### Cluster C (P0): Backend-as-a-Service (BaaS) decisions (Supabase / Convex / Firebase)
88-
**Why P0:** clear head-term demand with solid positions (~3–5) but near-zero CTR → snippet mismatch.
110+
### Cluster C (P0): SaaS billing / Merchant of Record (Stripe vs Paddle vs Lemon Squeezy)
111+
**Why P0:** very high impressions; recurring “fees/pricing” intent; current snippet under-matches.
89112

90-
**Core keywords (observed demand):**
91-
- convex vs supabase (290 impressions, pos ~4.56)
92-
- supabase vs convex (186 impressions, pos ~4.76)
93-
- convex vs firebase (40 impressions, pos ~7.9)
94-
- convex vs firebase vs supabase (30 impressions, pos ~6.87)
113+
**Observed modifiers to capture:**
114+
- “Stripe Tax vs Paddle”
115+
- “Lemon Squeezy pricing 5% + $0.50”
95116

96117
**Page mapping:**
97-
- Primary: `/blog/supabase-vs-firebase-vs-convex-ai-backend`
118+
- Primary: `/blog/stripe-vs-paddle-vs-lemon-squeezy-saas-billing`
98119

99-
**Recommendations (next 30 days):**
100-
- Adjust title to explicitly include “**Convex vs Supabase**” (since that’s the dominant head-to-head in Search Console).
101-
- Add a “Who should choose Convex vs Supabase?” block at the top.
102-
- Add FAQ: “Is Convex better than Supabase?”, “Convex pricing vs Firebase”, “Supabase to Convex migration”.
120+
**Recommendations:**
121+
- Add a fee-breakdown table that explicitly includes **“5% + $0.50”** wording.
122+
- Add a dedicated on-page section “Stripe Tax vs Paddle: what’s different?”
123+
- Consider 1 supporting page:
124+
- `Lemon Squeezy pricing explained: 5% + $0.50 (examples + calculator)`
103125

104126
---
105127

106-
### Cluster D (P1): API testing tools (Postman / Insomnia / Bruno)
107-
**Why P1:** consistent clicks, but there are still many variants you can capture with better intent alignment.
128+
### Cluster D (P0): BaaS decisions (Convex vs Supabase vs Firebase)
129+
**Why P0:** strong head-term visibility; the head query is getting impressions but not clicks.
108130

109-
**Core keywords (observed demand):**
110-
- insomnia vs bruno (116 impressions, 3 clicks, pos ~6.07)
111-
- postman vs insomnia vs bruno (59 impressions, 2 clicks, pos ~2.97)
112-
- bruno vs postman vs insomnia (72 impressions, 2 clicks, pos ~3.58)
131+
**Evidence:**
132+
- Query → page mapping: `convex vs supabase``/blog/supabase-vs-firebase-vs-convex-ai-backend`
133+
- For `convex vs supabase`: **267 impressions / 0 clicks / avg position 5.01**
134+
135+
**Recommendations:**
136+
- Adjust title to lead with the dominant head-to-head: **“Convex vs Supabase (vs Firebase) (2026)”**.
137+
- Add an above-the-fold “Who should pick Convex vs Supabase?” summary.
138+
- Add FAQ: “Is Convex better than Supabase?”, “Convex pricing vs Firebase”, “Supabase to Convex migration”.
139+
140+
---
141+
142+
### Cluster E (P1): API testing tools (Postman vs Insomnia vs Bruno)
143+
**Why P1:** already the top click driver; expand to capture variant head-to-heads.
113144

114145
**Page mapping:**
115146
- Primary: `/blog/postman-vs-insomnia-vs-bruno-api-testing`
116147

117148
**Recommendations:**
118-
- Add sections for “Bruno vs Postman” and “Insomnia vs Postman” as explicit H2s; those variants show up with impressions but low clicks.
149+
- Add explicit H2s for “Bruno vs Postman” and “Insomnia vs Postman”.
150+
- Add a short “Which should you use in 2026?” decision tree.
119151

120152
---
121153

122-
### Cluster E (P2): Bespoke web design / custom website (commercial intent)
123-
**Why P2:** this is commercial-intent but currently not ranking well.
154+
### Cluster F (P1): Project management tools (Linear vs Plane vs Height)
155+
**Why P1:** strong CTR + meaningful clicks; easy adjacent expansion.
156+
157+
**Page mapping:**
158+
- Primary: `/blog/linear-vs-height-vs-plane-project-management`
159+
160+
**Next keywords/pages to add (based on observed demand + adjacent SERPs):**
161+
- Linear vs Height
162+
- Linear vs Plane
163+
- Linear vs Jira vs Asana (already getting impressions)
164+
- Linear vs Asana (already getting impressions)
165+
166+
---
124167

125-
**Observed keywords (low visibility):**
126-
- bespoke web design (3 impressions, avg pos ~80)
127-
- bespoke web development (1 impression, avg pos ~93)
168+
### Cluster G (P1): Marketing automation AI features (HubSpot vs ActiveCampaign)
169+
**Why P1:** substantial impressions with **0 clicks** and average position ~8.6.
128170

129171
**Page mapping:**
130-
- Current: `/blog/bespoke-web-design-complete-guide-2026`
172+
- Primary: `/blog/hubspot-activecampaign-ai-agents-comparison`
131173

132-
**Recommendations (strategy shift):**
133-
- Create a **dedicated landing page** (not a blog post) targeting: “Bespoke web design”, “custom web design”, “bespoke website”, “web design for startups”.
134-
- Build supporting cluster posts:
135-
- “Custom website vs template: ROI breakdown”
136-
- “Website redesign checklist (2026)” (already exists—strengthen internal linking)
137-
- “Next.js website builder guide” (already exists—link to bespoke landing page)
174+
**Recommendations:**
175+
- Title/meta must explicitly match the dominant query framing:
176+
- include “**AI features**”, “**marketing automation**”, and “**2026**”.
177+
- Add an above-the-fold comparison table that includes the words users search (AI features, personalization, segmentation, deliverability, workflows).
138178

139179
---
140180

141-
## Deprioritize / exclude (this month)
181+
### Cluster H (P2): Vector database comparisons
182+
**Why P2:** high impressions, moderate clicks; CTR improvement still useful but secondary to the top 3 clusters.
183+
184+
**Page mapping:**
185+
- `/blog/pinecone-vs-weaviate-vs-qdrant-vs-pgvector`
186+
- `/blog/pinecone-vs-weaviate-vs-qdrant-vector-databases`
187+
188+
---
142189

143-
These are showing in Search Console but are either noise, low relevance, or not aligned to the site’s strategy:
190+
## Deprioritize / exclude (this month)
144191

145-
- One-word/no-intent queries: `english`, `yes`
146-
- Very long prompt-like “evaluate the company…” queries (likely LLM-generated searches). Treat as **non-primary**; do not build pages specifically for them.
147-
- Misspellings with negligible volume (`anthenic`, `athenics`) → handle via minor copy tweaks if desired, but don’t prioritize.
192+
1. **One-word/no-intent queries**: `english`, `yes`, and other noise.
193+
2. **Prompt-like “evaluate the company…” queries**: treat as non-primary. Don’t build dedicated pages for these.
194+
3. **Quoted code/token queries** (e.g. library import strings): these create impressions but rarely drive qualified traffic. Avoid optimizing titles/meta toward these; keep content readable and well-structured.
148195

149196
---
150197

151198
## 30-day action plan (SEO execution)
152199

153-
1. **CTR sprint (highest ROI):** update titles/meta + top-of-article summaries for the P0 clusters (Deployment, Billing, BaaS). Target +0.3% CTR on the two biggest pages.
154-
2. **Create 2 supporting pages** to capture modifiers already showing:
155-
- “Railway free tier limits (2026)” (or add as dedicated section + jump links)
156-
- “Lemon Squeezy fees: 5% + $0.50 explained (with examples)”
157-
3. **Commercial page build:** add a bespoke web design landing page + internal links from the high-traffic comparison posts.
200+
1. **CTR sprint (highest ROI):** update titles/meta + add above-the-fold summary blocks for:
201+
- Claude vs GPT-4o vs Gemini
202+
- Vercel vs Railway vs Render
203+
- Stripe vs Paddle vs Lemon Squeezy
204+
- Convex vs Supabase
205+
- HubSpot vs ActiveCampaign
206+
207+
2. **Publish 2 supporting pages** to capture clear modifiers already visible in Search Console:
208+
- Railway free tier limits (2026)
209+
- Lemon Squeezy pricing (5% + $0.50) explained
210+
211+
3. **Expand winning clusters:** publish 1–2 additional “Linear vs X” pages (low effort, high intent-match).
212+
213+
4. **Unblock Keyword Planner (platform-level):** fix the Google Ads customer ID configuration so we can enrich these clusters with net-new keywords that aren’t yet appearing in Search Console.
158214

159215
---
160216

161-
## Notes / issues
217+
## Appendix: previous review snapshot (2026-03-09)
162218

163-
- **Google Ads Keyword Planner API is currently failing** due to an invalid configured customer ID. Fixing this will let us enrich these clusters with **net-new keywords** that aren’t yet appearing in Search Console.
219+
The previous review content has been superseded by this update; see git history for the full prior snapshot.

0 commit comments

Comments
 (0)