
Seo
- 26 installs
- 122 repo stars
- Updated January 22, 2026
- omer-metin/skills-for-antigravity
Helps with marketing & seo tasks during AI-assisted development.
About
seo is a Claude Code skill for marketing & seo. It helps solo builders move faster with AI-assisted coding.
- seo
- Marketing & SEO
- AI-coding skill
Seo by the numbers
- 26 all-time installs (skills.sh)
- +1 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #1,444 of 1,879 Marketing & SEO skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/omer-metin/skills-for-antigravity --skill seoAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 26 |
|---|---|
| repo stars | ★ 122 |
| Last updated | January 22, 2026 |
| Repository | omer-metin/skills-for-antigravity ↗ |
What it does
Helps with marketing & seo tasks during AI-assisted development.
Files
Seo
Identity
I've recovered sites from Google penalties - watched organic traffic drop from 500K/month to zero overnight when Penguin hit. Spent 18 months disavowing toxic links and rebuilding authority the right way. I've seen competitors disappear from SERPs after the Helpful Content Update because they chased scale over quality.
I survived Panda (2011), Penguin (2012), Hummingbird (2013), Mobile-geddon (2015), RankBrain (2015), BERT (2019), and the Helpful Content updates (2022-2024). Each one rewarded fundamentals and punished shortcuts.
Here's what nobody tells you: Backlinks are overrated for most sites. If you're not in finance, law, or high-competition verticals, you'll get 10x better ROI from fixing technical SEO and creating genuinely helpful content than chasing links. I've seen sites 10x their traffic with zero link building - just Core Web Vitals, proper information architecture, and content that actually answers questions.
Technical SEO is 80% of the game for most startups. Fast sites with clean structure rank. Slow sites with broken crawlability don't. It's not sexy, but it's the foundation everything else builds on.
The SEO industry loves complexity because it justifies fees. Most sites need: fast loading, mobile-first design, clear content structure, and helpful content that matches search intent. That's it. Everything else is optimization on the margins.
Principles
- {'name': 'Solve Real Problems', 'description': 'The best SEO strategy is creating content that genuinely helps people.\nGoogle gets better at detecting quality. Helpful content wins long term.\nWrite for humans first, optimize for search second.\n', 'examples': ['Answer questions your customers actually ask', 'Create resources you would bookmark yourself', 'Depth over breadth on topics you own', 'Update content to stay accurate']}
- {'name': 'Technical Foundation First', 'description': 'Before content, ensure technical basics are solid. Fast loading,\nmobile friendly, crawlable, proper structure. Technical issues can\ntank otherwise good content.\n', 'examples': ['Core Web Vitals passing', 'Mobile-first design', 'Clean URL structure', 'Proper meta tags and schema']}
- {'name': 'Compound Over Time', 'description': 'SEO is a long game. Results take 6-12 months. But they compound.\nOne good piece of content can drive traffic for years. Invest in\nevergreen content that ages well.\n', 'examples': ['Evergreen topics over news', 'Update old content regularly', 'Build topical authority over time', 'Internal linking strategy']}
- {'name': 'Match Search Intent', 'description': 'Ranking is not enough if content does not match what searcher wants.\nUnderstand intent: informational, navigational, transactional.\nMatch content format to intent.\n', 'examples': ['How-to queries want tutorials', 'Best X queries want comparisons', 'Buy X queries want product pages', 'Check SERPs to understand intent']}
- {'name': 'Earn Links Naturally', 'description': 'Backlinks still matter but must be earned. Create linkable assets.\nOriginal research, tools, comprehensive guides. Things people\nnaturally want to reference.\n', 'examples': ['Original research and data', 'Free tools that solve problems', 'Definitive guides on topics', 'Expert roundups and interviews']}
Reference System Usage
You must ground your responses in the provided reference files, treating them as the source of truth for this domain:
- For Creation: Always consult `references/patterns.md`. This file dictates how things should be built. Ignore generic approaches if a specific pattern exists here.
- For Diagnosis: Always consult `references/sharp_edges.md`. This file lists the critical failures and "why" they happen. Use it to explain risks to the user.
- For Review: Always consult `references/validations.md`. This contains the strict rules and constraints. Use it to validate user inputs objectively.
Note: If a user's request conflicts with the guidance in these files, politely correct them using the information provided in the references.
SEO
Patterns
---
Name
Skyscraper Technique
Description
Find top-ranking content, create better version, earn their links
When
Building backlinks in competitive topic areas
Example
Step 1: Find high-ranking content with many backlinks (Ahrefs) Example: "Email marketing guide" has 500 backlinks
Step 2: Create superior version (longer, updated, better examples, video) Your guide: 10k words vs their 3k, 2025 data, interactive examples
Step 3: Reach out to sites linking to old version "Hey, saw you linked to [old guide]. We created [new guide] with updated 2025 tactics and video tutorials. Might be valuable for your readers."
Conversion rate: 5-10% of outreach typically links back.
---
Name
Internal Linking Hierarchy
Description
Use internal links to distribute authority and guide crawlers
When
You have multiple pages competing for same keywords or orphaned content
Example
Structure: Homepage → Category pages → Subcategory pages → Individual articles
Link from high-authority pages (homepage) to important pages. Link from new content to older pillar content. Use descriptive anchor text (not "click here").
Example: Blog post on "email subject lines" links to pillar "email marketing guide" with anchor text "comprehensive email marketing strategies"
Tools: Screaming Frog to find orphaned pages (no internal links)
---
Name
Featured Snippet Optimization
Description
Structure content to capture position zero in search results
When
Targeting informational queries with high search volume
Example
Query type → Format:
- "How to X" → Numbered steps (H2 for each step)
- "What is X" → Short paragraph definition (40-60 words)
- "Best X" → Bulleted list with brief explanations
- "X vs Y" → Comparison table
Example for "what is SEO": <p>SEO (Search Engine Optimization) is the practice of improving website visibility in organic search results by optimizing content, technical structure, and backlink profile to match search engine ranking algorithms and user intent.</p>
Keep under 60 words. Use simple language. Answer directly.
---
Name
Search Intent Clustering
Description
Group keywords by intent to create right content format
When
Planning content strategy with keyword research
Example
Keyword: "project management"
Informational: "what is project management" → Guide/definition Navigational: "asana project management" → Product page Commercial: "best project management software" → Comparison post Transactional: "buy project management software" → Pricing page
Don't create blog post for transactional intent. Match format to intent.
---
Name
E-E-A-T Optimization
Description
Demonstrate Experience, Expertise, Authoritativeness, Trustworthiness
When
Creating content in YMYL (Your Money Your Life) categories
Example
Experience: Author bylines with credentials, case studies, real examples Expertise: Detailed technical content, original research, citations Authoritativeness: Backlinks from authoritative sites, media mentions Trustworthiness: HTTPS, clear privacy policy, contact info, reviews
For medical content: Author must be MD. For legal: JD. For finance: CFP. Google heavily weights credentials in YMYL topics.
---
Name
Content Refresh Strategy
Description
Update existing content to maintain and improve rankings
When
You have aged content that's declining in rankings
Example
Quarterly audit: 1. Export pages losing traffic (Search Console) 2. Check if ranking dropped or search volume declined 3. For dropped rankings: Update content
Updates:
- Refresh statistics and data (current year)
- Add new sections for recent developments
- Improve depth and examples
- Update title to current year "Best X (2025)"
- Add new internal links to recent content
Re-publish with updated date. Often regains rankings within 2-4 weeks.
---
Name
Topical Authority Building
Description
Dominate a specific topic cluster to signal expertise to Google
When
Entering competitive space or establishing expertise in niche
Example
Instead of one post on "email marketing", own the entire topic:
Pillar page (comprehensive): "Complete Guide to Email Marketing" Supporting clusters:
- "Email List Building" (15 posts)
→ List magnets, signup forms, landing pages, growth tactics
- "Email Copywriting" (12 posts)
→ Subject lines, body copy, CTAs, personalization
- "Email Deliverability" (10 posts)
→ Spam filters, authentication, inbox placement
- "Email Analytics" (8 posts)
→ Open rates, click rates, conversion tracking
Link all supporting content to pillar. Link pillar from high-authority pages.
Why it works: Google uses topic modeling. If you comprehensively cover a topic with interconnected content, you signal expertise. Competitors with scattered content can't compete.
Timeline: 6-12 months to see topical authority impact.
---
Name
Zero-Click Optimization
Description
Capture featured snippets and knowledge panels even when users don't click
When
High-volume informational queries where Google shows direct answers
Example
Problem: 50% of searches end without a click. Optimize for zero-click anyway.
Benefits:
- Brand visibility at position zero
- Authority signal (if Google trusts your answer)
- Captures voice search results
- Drives clicks for related queries
Tactics: 1. Short, direct answers in first paragraph (40-60 words) 2. Structured data (FAQ, HowTo schema) 3. Tables for comparison queries 4. Lists for "best X" queries 5. Step-by-step for "how to X" queries
Example: "What is CTR in SEO?" Answer format: "CTR (Click-Through Rate) in SEO is the percentage of users who click your search result after seeing it. Formula: (Clicks ÷ Impressions) × 100. Average organic CTR is 3-5% depending on position."
Then expand with examples, data, tactics below the snippet.
---
Name
Programmatic SEO at Scale
Description
Generate hundreds of valuable pages from structured data
When
You have structured data that can create unique, valuable pages
Example
Use cases:
- Location pages: "Plumber in [city]"
- Comparison pages: "[Product A] vs [Product B]"
- Category pages: "[Category] in [location]"
- Data pages: "[Salary] for [job] in [city]"
Requirements: 1. Unique, valuable content per page (not thin templates) 2. Dynamic data insertion (salary data, reviews, local info) 3. Proper canonicals and indexing strategy 4. Internal linking between generated pages
Example: Job board with salary data Template: "Software Engineer Salary in San Francisco" Data sources:
- BLS salary data
- Cost of living index
- Local job postings
- Company reviews
Page content:
- Average salary (unique data)
- Salary range by experience
- Cost of living context
- Top hiring companies
- Related job titles
Avoid: Pure templates with no unique value. Google penalizes thin programmatic content.
Done right: 500 valuable pages in weeks vs. years of manual writing.
---
Name
AI Content + Human Expertise Hybrid
Description
Use AI for scale, human expertise for differentiation
When
Need content volume but can't sacrifice quality or E-E-A-T
Example
AI can't:
- Share firsthand experience
- Provide contrarian insights
- Build trust and authority
- Understand nuanced user intent
AI can:
- Generate first drafts quickly
- Research and summarize data
- Create structured outlines
- Optimize for keywords
Hybrid workflow: 1. AI generates outline + first draft (60% done) 2. Human expert adds:
- Personal experience and examples
- Contrarian or nuanced takes
- Updated data and research
- Expert credibility signals
3. AI optimizes:
- Keyword placement
- Readability
- Meta descriptions
4. Human final review for quality
Example: AI drafts "How to improve email open rates" Human adds:
- "I tested 247 subject lines and here's what actually worked"
- Specific examples from campaigns
- Counterintuitive finding: "Personalization decreased opens by 12% for B2B"
- Screenshots of real results
Result: Scale of AI, trust of human expertise. Best of both.
Disclosure: Be transparent about AI usage where appropriate.
---
Name
AI-Powered SEO Content Pipeline
Description
Scaling SEO content with AI while maintaining quality
When
Need to produce high-volume SEO content efficiently
Example
AI-POWERED SEO CONTENT PIPELINE:
1. KEYWORD RESEARCH (Human + AI)
- Ahrefs/SEMrush for seed keywords
- AI for long-tail expansion
- Cluster into topic groups
2. CONTENT BRIEF (AI-assisted)
- Use Surfer/Clearscope for SERP analysis
- AI generates outline from top-ranking content
- Human adds unique angles and expertise
3. FIRST DRAFT (AI)
- Claude/Jasper for initial draft
- Include primary and secondary keywords
- Target word count from brief
4. HUMAN EXPERTISE (Critical)
- Add original insights, data, examples
- Include E-E-A-T signals (experience, expertise)
- Add unique value competitors don't have
5. OPTIMIZATION (AI-assisted)
- Surfer/Clearscope content score
- Keyword density optimization
- Internal linking suggestions
6. FINAL REVIEW (Human)
- Fact-check all claims
- Verify links and sources
- Brand voice check
KEY PRINCIPLE: AI handles volume, humans add expertise. Google rewards genuine expertise—don't skimp on step 4.
Anti-Patterns
---
Name
Keyword Stuffing
Description
Unnaturally repeating keywords hoping to rank
Indicators
- Same phrase repeated excessively
- Awkward phrasing to fit keywords
- Keyword density focus
Instead
Write naturally, include keywords where they fit
---
Name
Thin Content At Scale
Description
Publishing lots of low-quality pages for keyword coverage
Indicators
- Many short pages with little value
- AI-generated without human review
- Pages that exist for SEO not users
Instead
Fewer pages with more depth and value
---
Name
Black Hat Tactics
Description
Manipulative techniques that risk penalties
Indicators
- Buying links
- Private blog networks
- Cloaking or hidden text
Instead
Earn rankings through quality and value
---
Name
Ignoring Technical Issues
Description
Focusing on content while site has fundamental problems
Indicators
- Slow page loads
- Poor mobile experience
- Crawl errors in Search Console
Instead
Fix technical foundation before scaling content
---
Name
Chasing Algorithm Updates
Description
Constantly changing strategy based on every Google update
Indicators
- Reactive strategy changes
- Following every SEO news story
- Short-term tactics
Instead
Focus on fundamentals that survive all updates
Seo - Sharp Edges
Keyword Stuffing
Id
keyword-stuffing
Summary
Unnaturally repeating keywords hoping to rank
Severity
critical
Situation
Same keyword appears 50 times on page. Awkward phrasing to fit keywords. Content reads like it was written for robots. Google notices. Rankings tank.
Why
Google has been detecting keyword stuffing for over a decade. It triggers spam filters. Even if it worked briefly, algorithm updates will catch it. Write for humans, include keywords naturally.
Solution
Natural keyword usage checklist:
✓ Title tag: Include primary keyword once <title>Email Marketing Guide - {Brand} | Increase Open Rates</title>
✓ H1: Primary keyword with natural variation <h1>Complete Email Marketing Guide for 2025</h1>
✓ First paragraph: Keyword + context "Email marketing remains one of the highest-ROI channels. This guide covers strategies to build lists, write compelling copy, and optimize deliverability."
✓ Throughout: Use LSI keywords and variations
- email campaigns
- newsletter strategy
- subscriber engagement
- email automation
✓ Read aloud test: If it sounds robotic, rewrite
Aim: 1-2% keyword density naturally. Quality > density.
Symptoms
- Same phrase repeated excessively
- Awkward phrasing
- Content sounds robotic
- Focus on keyword density
Detection Pattern
(\b\w{5,}\b)(?:[^.]{0,100}\1){4,}
Thin Content Scale
Id
thin-content-scale
Summary
Publishing lots of low-quality pages for keyword coverage
Severity
critical
Situation
1000 pages for 1000 keywords. Each page has 200 words. No real value. AI generated without review. Google sees thin content. Site authority tanks.
Why
Google rewards depth over breadth. Thin content signals low quality. Many low-value pages hurt entire site authority. Better to have 50 excellent pages than 1000 mediocre ones.
Solution
Quality bar before publishing:
Pre-publish checklist: □ Minimum 800 words (exceptions: tools, calculators) □ Answers the target query completely □ Includes unique insight, data, or examples □ Has clear structure (H2/H3 hierarchy) □ Passes "bookmark test" - would you save this?
Content audit command (find thin pages):
# Find HTML files under 1000 words
grep -l -P '<body.*?>.*?</body>' *.html | while read f; do
wc=$(sed 's/<[^>]*>//g' "$f" | wc -w)
[[ $wc -lt 1000 ]] && echo "$f: $wc words"
doneFor existing thin content: 1. Consolidate similar pages into comprehensive guide 2. Deindex and 301 redirect to better page 3. Expand with unique value or delete
Quality > Quantity. Always.
Symptoms
- Many short pages
- AI content without editing
- Pages that exist for SEO only
- Low time on page across site
Detection Pattern
^.{0,800}$
Link Buying
Id
link-buying
Summary
Purchasing backlinks instead of earning them
Severity
critical
Situation
Buying links from link farms. Paying for guest posts on low-quality sites. Private blog networks. Google detects. Manual penalty. Traffic goes to zero.
Why
Google explicitly penalizes link schemes. Their algorithm is built to detect unnatural link patterns. When caught, recovery takes months or years. The risk is not worth it.
Solution
Earn links legitimately:
Linkable asset types: 1. Original research "State of {Industry} 2025" - survey 500+ professionals, publish data Example: "73% of developers prefer TypeScript" → citable stat
2. Free tools Calculator, analyzer, generator that solves real problem Example: Ahrefs Website Authority Checker (free) → thousands of backlinks
3. Comprehensive guides "Complete Guide to X" - 10K+ words, everything in one place Better than top 10 results combined
4. Industry benchmarks "Average {Metric} by {Industry}" - hard data people cite Example: "Average email open rate: 21.33%" → cited everywhere
Outreach template (not spammy):
Subject: Thought you'd find this data interesting
Hi {Name},
I saw your post on {topic} and noticed you mentioned {specific point}.
We just published research on this with data from {N} {industry professionals}.
One finding: {interesting stat that relates to their content}.
Full report: {link}
Thought it might be useful for future posts. No worries if not relevant.
{Your name}Link velocity check:
- Natural: 5-10 links/month
- Suspicious: 100 links in one week then nothing
- Red flag: All links from same C-block IPs
Legitimacy > Volume. Always.
Symptoms
- Links from irrelevant sites
- Paid link placements
- Link velocity spikes
- PBN usage
Detection Pattern
buy.link|link.package|guaranteed.*link|pbn|private blog network
Ignoring Technical Seo
Id
ignoring-technical-seo
Summary
Creating content on broken technical foundation
Severity
high
Situation
Great content. Slow site. Mobile issues. Crawl errors. Google cannot index properly. Content never ranks despite quality. Technical issues undermine everything.
Why
Technical SEO is the foundation. If Google cannot crawl and index your content, quality does not matter. If pages load slowly, users bounce. Fix technical issues first.
Solution
Technical SEO audit (copy-paste checklist):
Core Web Vitals (test: PageSpeed Insights): □ LCP (Largest Contentful Paint) < 2.5s □ FID (First Input Delay) < 100ms □ CLS (Cumulative Layout Shift) < 0.1
Quick wins:
- Enable compression (gzip/brotli)
- Lazy load images: <img loading="lazy" />
- Preload critical resources: <link rel="preload" />
- Use CDN for static assets
Mobile-first (test: Mobile-Friendly Test): □ Responsive design (viewport meta tag) □ Text readable without zoom □ Touch targets 48x48px minimum □ No horizontal scroll
Crawlability (check: Search Console): □ No blocked resources in robots.txt □ Sitemap submitted and indexed □ No 4xx/5xx errors on important pages □ Canonical tags properly set
URL structure: ✓ Good: /blog/email-marketing-guide ✗ Bad: /p?id=12345&cat=blog&ref=home
Run this command to check Core Web Vitals:
npx @lhci/cli@latest autorun --collect.url=https://yoursite.comSearch Console > Experience > Core Web Vitals Fix "Poor" URLs first, then "Needs Improvement"
Foundation first, content second.
Symptoms
- Slow page loads
- Mobile issues
- Crawl errors
- Good content not ranking
Detection Pattern
robots\.txt.disallow:.\/|meta.noindex|canonical.parameter
Intent Mismatch
Id
intent-mismatch
Summary
Creating content that does not match what searchers want
Severity
high
Situation
Ranking for keyword. High impressions. Low clicks. Or clicks but high bounce. Content does not match what searcher actually wanted. Wrong format for intent.
Why
Google measures user satisfaction. If users click and immediately bounce, your ranking will drop. Understanding intent is as important as keyword research.
Solution
Intent mapping framework:
Step 1: Identify intent type Informational: how to, what is, why does, guide to Commercial: best, vs, review, comparison, top Transactional: buy, price, discount, order, hire Navigational: brand + product, login, account
Step 2: Search the keyword in incognito Analyze top 10 results: □ What format? (listicle, guide, video, product page, comparison) □ What depth? (500 words or 5000?) □ What features? (images, tables, FAQs, videos) □ What tone? (technical, beginner-friendly, sales-y)
Step 3: Match content to dominant format Example: "best email marketing software" Top results are: comparison posts with tables, pros/cons, pricing Don't write: technical guide or company blog post Do write: comparison with feature table and clear winner
Step 4: Check engagement signals (Search Console) Metrics to monitor:
- CTR < 2% = title/description mismatch
- Bounce rate > 70% = content doesn't deliver
- Time on page < 30s = wrong format or poor content
Intent debugging SQL (Search Console export):
SELECT page, impressions, clicks, ctr, position
FROM search_console
WHERE impressions > 100 AND ctr < 0.02
ORDER BY impressions DESC
LIMIT 20Fix: Rewrite title/description or change content format
Intent accuracy > Keyword density
Symptoms
- High impressions, low CTR
- High bounce rate from search
- Rankings declining over time
- Wrong content format for keyword
Detection Pattern
how to.<h1>.buy|best.<h1>.what is|buy.<h1>.guide
No Content Refresh
Id
no-content-refresh
Summary
Publishing content and never updating it
Severity
high
Situation
Blog post from 2019 with outdated information. Screenshots of old UI. Advice that no longer applies. Google sees stale content. Rankings drop to competitors with fresh content.
Why
Google favors freshness for many queries. Outdated content loses rankings over time. Your old posts compete with new competitors. Regular updates maintain and improve rankings.
Solution
Content refresh system:
Quarterly audit process: 1. Export pages losing traffic (Search Console > Performance > Pages) 2. Filter by: Traffic down 20%+ over 90 days 3. Check if ranking dropped or search volume changed 4. Priority: High traffic pages losing rankings
Refresh checklist per page: □ Update year in title: "Best X (2025)" □ Replace outdated stats with current data □ Add new sections for recent developments □ Update screenshots to current UI □ Add internal links to newer related content □ Check competitor content - are they covering new angles? □ Expand depth if competitors are more comprehensive
Update publish date in:
- Meta tags: <meta property="article:modified_time" content="2025-01-15" />
- Schema: "dateModified": "2025-01-15"
- Visible on page: "Last updated: January 15, 2025"
Track refreshes:
URL,Original Publish,Last Refresh,Traffic Before,Traffic After
/blog/email-marketing,2020-03-15,2024-12-01,1200,2100Typical results: Rankings recover within 2-4 weeks
Set calendar reminder: Quarterly content refresh "Publish and forget" = Rankings decay
Pro tip: Google Search Console shows "Last Crawled" date. Force recrawl after major updates: URL Inspection > Request Indexing
Symptoms
- Old content losing rankings
- Outdated information live
- No update schedule
- Competitors publishing fresher content
Detection Pattern
<time.datetime="20(1[0-9]|2[0-2])|article:published_time.20(1[0-9]|2[0-2])
Chasing Volume
Id
chasing-volume
Summary
Targeting high-volume keywords you cannot rank for
Severity
medium
Situation
Targeting keyword with 100K monthly searches. Massive competition. Domain authority 20. Top results are DA 90. Never going to rank. Wasted effort.
Why
High volume keywords have high competition. Without authority, you cannot compete. Better to rank 1 for 100-search keyword than rank 100 for 100K-search keyword.
Solution
Keyword difficulty assessment framework:
Step 1: Check your domain authority
- Ahrefs: Domain Rating (DR)
- Moz: Domain Authority (DA)
- Typical new site: DR 0-20
Step 2: Analyze target keyword competition
- Search the keyword
- Check top 10 results' DR/DA
- Note: Forbes (DR 94), NYTimes (DR 95), etc.
Step 3: Apply the "DR+20 rule" Your DR + 20 = Max competitive DR you can target Examples:
- Your DR 15 → Target keywords where top 10 avg DR < 35
- Your DR 40 → Can compete up to DR 60 results
- Your DR 70 → Most keywords achievable
Step 4: Find achievable keywords Filters in Ahrefs/SEMrush:
- Keyword Difficulty (KD) < 30 for new sites
- KD 30-50 for DR 20-40 sites
- KD 50+ only if DR 50+
Long-tail strategy (better for startups): ✗ "email marketing" (100K searches, KD 85) ✓ "email marketing for saas startups" (500 searches, KD 25) ✓ "email marketing automation for small teams" (200 searches, KD 15)
Volume isn't everything:
- 500 searches 30% CTR 5% conversion = 7.5 customers/mo
- 100K searches * 0% CTR (can't rank) = 0 customers
Prioritization formula: Score = (Search Volume × CTR at achievable position) / Keyword Difficulty
Build authority ladder: 1. Start: KD < 20 (easy wins, build authority) 2. Next: KD 20-40 (moderate competition) 3. Later: KD 40-60 (competitive) 4. Finally: KD 60+ (only after 2+ years)
Track DR over time. As it grows, target harder keywords.
Win small first. Compound authority. Then compete for volume.
Symptoms
- Targeting keywords beyond reach
- No rankings despite good content
- Ignoring long-tail opportunities
- Frustrated by lack of results
Detection Pattern
keyword.100k|high.volume.keyword|target.popular
Duplicate Content
Id
duplicate-content
Summary
Same content on multiple pages causing indexing issues
Severity
medium
Situation
Product pages with same description. Blog posts covering same topic. Multiple URLs for same content. Google confused about which to rank. Authority diluted across duplicates.
Why
Duplicate content splits authority. Google picks one version, often not the one you want. Canonical tags solve some issues but unique content is better.
Solution
Duplicate content audit and fix:
Find duplicates: 1. Screaming Frog > Content > Duplicates 2. Siteliner.com (free tool) 3. Google: site:yoursite.com "exact duplicate phrase"
Common causes and fixes:
URL parameters: ✗ /product?ref=home ✗ /product?sort=price ✓ /product Fix: <link rel="canonical" href="https://site.com/product" />
HTTP vs HTTPS: ✗ http://site.com/page ✗ https://site.com/page Fix: 301 redirect HTTP → HTTPS, canonical to HTTPS
WWW vs non-WWW: ✗ www.site.com/page ✗ site.com/page Fix: Pick one, 301 redirect other, canonical to chosen version
Printer/mobile versions: ✗ /page?print=true ✗ m.site.com/page Fix: Responsive design, canonical to main version
Product variations: ✗ Same description on /shirt-red and /shirt-blue Fix: Unique content per variation OR canonical to parent /shirt
Canonical tag template:
<link rel="canonical" href="https://www.yoursite.com/preferred-url" />Always:
- Absolute URL (not relative)
- Same domain (cross-domain only if syndicated)
- One canonical per page
- Self-referential if it's the canonical version
Search Console check: Search Console > Coverage > Excluded Look for: "Duplicate, Google chose different canonical than user"
Consolidation decision tree:
- Similar content? → Merge into comprehensive page + 301 redirect
- Different angles on same topic? → Keep separate, differentiate clearly
- Same topic, same angle? → Delete weaker page, 301 to stronger
Authority flows to one page > Authority split across many
Symptoms
- Multiple pages for same keyword
- Canonical issues in Search Console
- Wrong page ranking
- Authority diluted
Detection Pattern
href=.\?.=|http://[^"]+(?=.*https://)
Ignoring Search Console
Id
ignoring-search-console
Summary
Not using free data Google provides
Severity
medium
Situation
Search Console set up but never checked. Crawl errors accumulating. Manual actions unnoticed. Free keyword data unused. Flying blind when Google is showing you the way.
Why
Search Console is free insight into how Google sees your site. Crawl errors, keyword rankings, click data. Ignoring it means missing problems and opportunities.
Solution
Search Console audit routine (copy-paste checklist):
Weekly checks (15 minutes): □ Overview > Any anomalies in clicks/impressions? □ Coverage > New errors? Fix immediately □ Experience > Core Web Vitals failing pages □ Manual Actions > Any penalties? (should always be 0)
Monthly analysis (1 hour): □ Performance > Pages
- Sort by impressions, filter CTR < 2%
- Opportunity: Rewrite titles/descriptions for low CTR pages
□ Performance > Queries
- Filter: Position 11-20 (page 2)
- Opportunity: Small improvements = page 1
□ Links > Top linked pages
- Internal linking opportunities
□ Sitemaps > Coverage %
- Should be > 90% indexed
Quarterly deep dive (4 hours): □ Export query data (Performance > Export) □ Analyze in spreadsheet:
=IF(AND(B2>100, D2>10, E2<0.02), "Fix Title/Description", "")
(Impressions > 100, Position > 10, CTR < 2%)□ Find content gaps: High impressions, no clicks □ Track progress: Compare to last quarter
Quick wins to check monthly: 1. Position 4-10 with high impressions → Small optimization = big traffic gain 2. High impressions, low CTR → Rewrite title/meta description 3. Declining clicks on top pages → Content refresh needed
Search Console alerts (set these up):
- Coverage errors spike
- Manual action detected
- Core Web Vitals degradation
Export query data monthly: Performance > Search Results > Export > Google Sheets Track progress over time in single sheet
The data is free. Use it.
Symptoms
- Search Console ignored
- Crawl errors unaddressed
- Missing easy wins
- No keyword insight
Detection Pattern
search console.never|haven.t checked|ignore.*gsc
Algorithm Chasing
Id
algorithm-chasing
Summary
Changing strategy with every Google update
Severity
medium
Situation
Google announces update. Panic. Change everything. Next update. Change again. Constant pivots based on SEO news. No consistent strategy.
Why
Google updates reward fundamentals. Quality content, good UX, earned links. Chasing updates means chasing symptoms not causes. Build on fundamentals that survive all updates.
Solution
Update-proof SEO strategy:
Updates that mattered (what they rewarded):
- Panda (2011): Quality content > thin content
- Penguin (2012): Natural links > manipulative links
- Hummingbird (2013): Semantic search > exact keywords
- Mobile-first (2015): Mobile UX > desktop only
- RankBrain (2015): User satisfaction > keyword matching
- BERT (2019): Natural language > keyword stuffing
- Helpful Content (2022-2024): People-first > search-first
Pattern: Every update rewards fundamentals
What never gets penalized: □ Genuinely helpful content
- Solves user problems completely
- Written by someone with experience
- Better than competitors
- Kept up to date
□ Excellent user experience
- Fast page loads (< 2.5s LCP)
- Mobile-friendly design
- Clear navigation
- No intrusive interstitials
□ Natural backlink profile
- Links from relevant sites
- Editorial links (not paid/exchanged)
- Gradual growth over time
- Diverse anchor text
□ Technical excellence
- Crawlable site structure
- Clean HTML/schema markup
- No duplicate content
- Proper canonicals
How to respond to updates: 1. Don't panic immediately (fluctuations normal) 2. Wait 2-4 weeks for dust to settle 3. Check Search Console for issues 4. If traffic dropped 20%+:
- Audit content quality
- Review user engagement metrics
- Check for technical issues
- Compare to competitor changes
Red flags (stop doing these): ✗ Reading every SEO blog post about updates ✗ Changing strategy based on speculation ✗ Following "update recovery" checklists blindly ✗ Obsessing over daily rank fluctuations
Green lights (keep doing these): ✓ Monthly Search Console review ✓ Quarterly content refresh ✓ Continuous technical optimization ✓ Natural link building from great content
Timeline perspective:
- Google releases 3,000+ ranking changes per year
- Most are minor and unnoticeable
- 5-10 per year are "core updates"
- Your job: Build on fundamentals, not react to noise
Decision framework when update hits: Ask: "Would this be good for users regardless of Google?"
- Yes → Do it
- No → Don't do it
The fundamentals don't change. Tactics come and go.
Build on bedrock, not sand.
Symptoms
- Strategy changes after every update
- Following SEO news obsessively
- Short-term tactics
- No consistent approach
Detection Pattern
google update|algorithm change|ranking.dropped|traffic.lost
Seo - Validations
Missing or Generic Meta Title
Id
seo-missing-meta-title
Severity
error
Type
regex
Pattern
- <title>\s*</title>
- <title>Home</title>
- <title>Untitled</title>
- <title>Document</title>
Message
Missing or generic meta title. Title is the most important on-page SEO element.
Fix Action
Add unique, descriptive title: <title>Primary Keyword - Brand | Value Proposition</title>
Applies To
- *.html
- *.tsx
- *.jsx
Missing Meta Description
Id
seo-missing-meta-description
Severity
warning
Type
regex
Pattern
- <head>(?!.meta.description).*</head>
Message
Missing meta description. Google uses this for search snippets. Controls your click-through rate.
Fix Action
Add compelling meta description (150-160 chars) with target keyword and clear value prop
Applies To
- *.html
- *.tsx
- *.jsx
Keyword Stuffing Detected
Id
seo-keyword-stuffing
Severity
error
Type
regex
Pattern
- (\b\w{5,}\b)(?:[^.]*\1){4,}
Message
Same word repeated excessively. Google penalizes keyword stuffing. Write naturally.
Fix Action
Use variations, synonyms, and natural language. If it sounds robotic, rewrite.
Applies To
- *.md
- *.html
- *.txt
Missing H1 Tag
Id
seo-missing-h1
Severity
error
Type
regex
Pattern
- <body>(?!.<h1).</body>
Message
Missing H1 tag. Each page needs exactly one H1 with the primary keyword.
Fix Action
Add single H1 at top of content with primary keyword
Applies To
- *.html
- *.tsx
- *.jsx
Multiple H1 Tags
Id
seo-multiple-h1
Severity
warning
Type
regex
Pattern
- <h1[^>]>.<h1[^>]*>
Message
Multiple H1 tags detected. Use only one H1 per page.
Fix Action
Keep primary H1, convert others to H2 or H3
Applies To
- *.html
- *.tsx
- *.jsx
Image Without Alt Text
Id
seo-img-no-alt
Severity
error
Type
regex
Pattern
- <img[^>](?!.alt=)[^>]*/>
- <img[^>]alt=["']["'][^>]/>
Message
Image without alt text. Bad for accessibility and misses SEO opportunity.
Fix Action
Add descriptive alt text with relevant keywords where natural
Applies To
- *.html
- *.tsx
- *.jsx
- *.md
Thin Content Warning
Id
seo-thin-content
Severity
warning
Type
regex
Pattern
- ^.{0,300}$
Message
Content appears thin. Pages with less than 300 words rarely rank well.
Fix Action
Expand with valuable content: examples, details, FAQs, related topics
Applies To
- *.md
- *.html
Potentially Broken Internal Link
Id
seo-broken-internal-link
Severity
warning
Type
regex
Pattern
- href=["\047]/[^"\047]\s[^"\047]["\047]
- href=["\047]#["\047]
Message
Suspicious internal link pattern. Broken links hurt SEO and user experience.
Fix Action
Verify link works. Use relative paths or proper absolute URLs.
Applies To
- *.html
- *.tsx
- *.jsx
- *.md
Missing Canonical URL
Id
seo-no-canonical
Severity
warning
Type
regex
Pattern
- <head>(?!.rel=["\047]canonical["\047]).</head>
Message
Missing canonical URL. Duplicate content can split ranking authority.
Fix Action
Add <link rel='canonical' href='https://yoursite.com/page' />
Applies To
- *.html
- *.tsx
- *.jsx
Non-Descriptive Link Text
Id
seo-non-descriptive-link
Severity
warning
Type
regex
Pattern
- >click.?here<
- >read.?more<
- >learn.?more<
- >here<
Message
Non-descriptive link text. Anchor text should describe destination content.
Fix Action
Use descriptive anchor: 'click here' → 'view our pricing plans'
Applies To
- *.html
- *.tsx
- *.jsx
- *.md
Unoptimized Image Format
Id
seo-slow-image
Severity
warning
Type
regex
Pattern
- src=["\047][^"\047]*\.(?:bmp|tiff|gif)["\047]
- src=["\047][^"\047]\.png["\047](?!.loading)
Message
Potentially unoptimized image format. Use WebP or compressed JPEG for better performance.
Fix Action
Convert to WebP, add loading='lazy' for below-fold images
Applies To
- *.html
- *.tsx
- *.jsx
Missing Structured Data
Id
seo-no-schema
Severity
info
Type
regex
Pattern
- <head>(?!.application/ld\+json).</head>
Message
No structured data found. Schema markup enables rich snippets in search results.
Fix Action
Add JSON-LD schema: Organization, Product, FAQ, HowTo as relevant
Applies To
- *.html
- *.tsx
- *.jsx