seo-mastery
Use this skill when optimizing for search engines, conducting keyword research, implementing technical SEO, or building link strategies. Triggers on SEO, keyword research, meta tags, schema markup, Core Web Vitals, sitemap, robots.txt, link building, search console, and any task requiring search engine optimization.
marketing seokeywordstechnical-seoschema-markupsearchoptimizationWhat is seo-mastery?
Use this skill when optimizing for search engines, conducting keyword research, implementing technical SEO, or building link strategies. Triggers on SEO, keyword research, meta tags, schema markup, Core Web Vitals, sitemap, robots.txt, link building, search console, and any task requiring search engine optimization.
seo-mastery
seo-mastery is a production-ready AI agent skill for claude-code, gemini-cli, openai-codex. Optimizing for search engines, conducting keyword research, implementing technical SEO, or building link strategies.
Quick Facts
| Field | Value |
|---|---|
| Category | marketing |
| Version | 0.1.0 |
| Platforms | claude-code, gemini-cli, openai-codex |
| License | MIT |
How to Install
- Make sure you have Node.js installed on your machine.
- Run the following command in your terminal:
npx skills add AbsolutelySkilled/AbsolutelySkilled --skill seo-mastery- The seo-mastery skill is now available in your AI coding agent (Claude Code, Gemini CLI, OpenAI Codex, etc.).
Overview
A practitioner's framework for search engine optimization covering keyword research, on-page signals, technical foundations, structured data, Core Web Vitals, and authority building. This skill treats SEO as an engineering discipline: measurable inputs, observable outputs, and iterative improvement - not guesswork.
Tags
seo keywords technical-seo schema-markup search optimization
Platforms
- claude-code
- gemini-cli
- openai-codex
Related Skills
Pair seo-mastery with these complementary skills:
Frequently Asked Questions
What is seo-mastery?
Use this skill when optimizing for search engines, conducting keyword research, implementing technical SEO, or building link strategies. Triggers on SEO, keyword research, meta tags, schema markup, Core Web Vitals, sitemap, robots.txt, link building, search console, and any task requiring search engine optimization.
How do I install seo-mastery?
Run npx skills add AbsolutelySkilled/AbsolutelySkilled --skill seo-mastery in your terminal. The skill will be immediately available in your AI coding agent.
What AI agents support seo-mastery?
This skill works with claude-code, gemini-cli, openai-codex. Install it once and use it across any supported AI coding agent.
Maintainers
Generated from AbsolutelySkilled
SKILL.md
SEO Mastery
A practitioner's framework for search engine optimization covering keyword research, on-page signals, technical foundations, structured data, Core Web Vitals, and authority building. This skill treats SEO as an engineering discipline: measurable inputs, observable outputs, and iterative improvement - not guesswork.
When to use this skill
Trigger this skill when the user:
- Researches keywords or analyzes search intent for content
- Writes or audits page titles, meta descriptions, headings, or body copy
- Implements structured data (JSON-LD, schema.org)
- Configures sitemaps, robots.txt, canonicals, or hreflang
- Diagnoses poor rankings, low organic traffic, or crawl coverage gaps
- Optimizes Core Web Vitals (LCP, CLS, INP)
- Plans a link building or digital PR strategy
- Sets up Google Search Console, GA4, or rank tracking
Do NOT trigger this skill for:
- Paid search / PPC campaigns - budget bidding and ad copy are a separate domain
- Social media content strategy where search ranking is not the goal
Key principles
Content quality first - Google's ranking goal is to surface the most helpful answer for a query. No technical trick compensates for thin, unhelpful content. Write for humans, then ensure machines can understand it.
Technical foundation enables ranking - A great page that cannot be crawled, indexed, or rendered earns zero organic traffic. Fix crawl/index issues before investing in content.
User intent matches content - Every query has an intent (informational, navigational, transactional, commercial). Misaligning content type with intent kills rankings no matter how well-optimized the page is.
Build authority, not just links - Backlinks are votes of trust. Ten links from authoritative, relevant sites outweigh a thousand links from irrelevant or low-quality domains. Pursue earned links through genuine value creation.
Measure and iterate - Rankings fluctuate. Traffic converts. Use Search Console, GA4, and rank tracking to form hypotheses, ship changes, and measure outcomes over 90-day windows - not days.
Core concepts
On-page vs off-page vs technical SEO
| Pillar | Scope | Examples |
|---|---|---|
| On-page | What is on the page | Title, headings, copy, images, internal links |
| Off-page | Signals from other sites | Backlinks, brand mentions, digital PR |
| Technical | How search engines access the page | Crawl budget, indexing, speed, structured data |
All three pillars compound. Technical issues block the others from working.
Crawling, indexing, ranking pipeline
Googlebot crawls URL
-> Renders JavaScript (Chromium-based)
-> Parses content and signals
-> Indexes page (adds to search database)
-> Ranks against competing pages for relevant queries
-> Serves result to userA breakdown at any stage stops organic visibility. Use Search Console's URL Inspection tool to diagnose where in this pipeline a page is stuck.
Search intent types
| Intent | What the user wants | Content match |
|---|---|---|
| Informational | Learn something | Blog posts, guides, how-tos, FAQs |
| Navigational | Find a specific site/page | Brand pages, login pages |
| Transactional | Complete a purchase or action | Product pages, checkout, sign-up |
| Commercial | Research before buying | Comparison pages, reviews, "best X" lists |
Mismatching content type to intent is the most common reason well-written pages under-rank.
E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness)
Google's quality rater guidelines use E-E-A-T as the quality signal framework. Practical implementations:
- Experience - first-hand demonstrations: screenshots, case studies, personal results
- Expertise - author credentials, bylines, depth of coverage
- Authoritativeness - third-party mentions, links from recognized industry sources
- Trustworthiness - HTTPS, clear privacy/contact pages, accurate information, citations
Common tasks
Conduct keyword research
Use this framework to identify target keywords before writing any content:
1. Seed keywords - list 5-10 core topics your product/service addresses
2. Expand seeds:
- Google Autocomplete and "People Also Ask" for each seed
- Google Search Console "Queries" report for existing rankings
- Competitor gap analysis (Ahrefs / Semrush / free: Ubersuggest)
3. Evaluate each keyword on three dimensions:
- Search volume (how many searches/month)
- Keyword difficulty (how competitive, 0-100)
- Business relevance (how likely to convert)
4. Classify intent for each keyword (informational / transactional / commercial)
5. Cluster keywords by intent and topic:
- One primary keyword per page
- 2-5 semantically related secondary keywords per page
- Build topic clusters: one pillar page + multiple supporting pagesPriority formula (rough): score = (volume * relevance) / difficulty
Target low-difficulty / high-relevance keywords first to build topical authority before going after high-difficulty head terms.
Optimize on-page SEO
Apply this checklist to every page:
Title tag - most important on-page signal:
<!-- Good: primary keyword near the front, under 60 characters -->
<title>Keyword Research Guide: 5-Step Framework (2024)</title>
<!-- Bad: brand-first, no keyword -->
<title>Acme Corp | Our Blog | How We Do Things</title>Meta description - not a ranking factor but drives click-through rate:
<!-- Compelling, action-oriented, 120-158 characters -->
<meta name="description" content="Learn how to find low-competition keywords
that drive organic traffic. Step-by-step framework used to rank 200+ pages.">Heading hierarchy - one H1 per page, H2 for major sections, H3 for subsections:
<h1>Keyword Research: The Complete Guide</h1> <!-- One per page, matches title intent -->
<h2>What Is Keyword Research?</h2>
<h2>Step 1: Find Seed Keywords</h2>
<h3>Using Google Autocomplete</h3>
<h3>Using Search Console</h3>
<h2>Step 2: Evaluate Keyword Difficulty</h2>Image optimization:
<!-- Descriptive alt text, compressed images, width/height to prevent CLS -->
<img
src="/images/keyword-research-tool-comparison.webp"
alt="Comparison chart of keyword research tools: Ahrefs vs Semrush vs Ubersuggest"
width="800"
height="450"
loading="lazy"
>Internal linking - link from high-authority pages to target pages using descriptive anchor text (not "click here"):
<a href="/keyword-research-guide">keyword research framework</a>Implement schema markup
Use JSON-LD injected in <head> or before </body>. Never use Microdata - JSON-LD is
Google's recommended format.
Article schema:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Keyword Research: The Complete Guide",
"datePublished": "2024-01-15",
"dateModified": "2024-03-10",
"author": {
"@type": "Person",
"name": "Jane Smith",
"url": "https://example.com/authors/jane-smith"
},
"publisher": {
"@type": "Organization",
"name": "Example Co",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"image": "https://example.com/images/keyword-research.jpg",
"description": "A complete framework for keyword research that drives organic traffic."
}
</script>FAQ schema (earns rich snippets in SERPs):
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is keyword difficulty?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Keyword difficulty is a 0-100 score estimating how hard it is to rank..."
}
}
]
}
</script>See references/schema-markup.md for Product, BreadcrumbList, HowTo, LocalBusiness,
and SitelinksSearchbox schemas.
Set up technical SEO
sitemap.xml - submit to Search Console, update on publish:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/keyword-research-guide</loc>
<lastmod>2024-03-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>robots.txt - allow all, block crawl-waste paths:
User-agent: *
Disallow: /admin/
Disallow: /search?
Disallow: /cart
Allow: /
Sitemap: https://example.com/sitemap.xmlCanonical tags - prevent duplicate content penalties:
<!-- Self-referencing canonical on every page -->
<link rel="canonical" href="https://example.com/keyword-research-guide">
<!-- On paginated series, canonical to first page or use rel=next/prev -->
<link rel="canonical" href="https://example.com/blog">Noindex for non-content pages:
<meta name="robots" content="noindex, follow">Use noindex on: tag pages, filter facets, thank-you pages, staging environments.
Optimize Core Web Vitals
Target thresholds: LCP < 2.5s, CLS < 0.1, INP < 200ms.
LCP (Largest Contentful Paint) - improve render time of main image/text:
<!-- Preload the LCP image - do NOT lazy-load it -->
<link rel="preload" as="image" href="/hero.webp" fetchpriority="high">
<img src="/hero.webp" alt="..." width="1200" height="600">
<!-- No loading="lazy" on above-the-fold images -->CLS (Cumulative Layout Shift) - prevent unexpected layout shifts:
<!-- Always define width and height on images and videos -->
<img src="..." width="800" height="450" alt="...">
<!-- Reserve space for embeds and ads -->
<div style="min-height: 250px;">
<!-- ad slot -->
</div>INP (Interaction to Next Paint) - reduce main thread blocking:
- Defer non-critical JavaScript:
<script defer src="analytics.js"></script> - Break long tasks using
scheduler.yield()orsetTimeout(..., 0) - Use
content-visibility: autoon off-screen sections
Measure with: PageSpeed Insights, Chrome DevTools > Performance panel, CrUX dashboard.
Build a link building strategy
Links remain among Google's top three ranking factors. Prioritize these in order:
Digital PR - create genuinely newsworthy data, research, or tools. Pitch to journalists covering your industry. One Forbes or TechCrunch link > 1000 directory links.
Resource page link building - find "[topic] + resources" pages in your niche. If your content is better than what they link to, pitch a replacement.
Broken link building - use Ahrefs/Semrush to find broken links on authoritative sites. Offer your content as a replacement.
Guest posts - write high-value articles for reputable industry blogs with a contextual link back. Avoid link farms and PBNs - manual penalties are severe.
Unlinked mentions - set up Google Alerts for brand name. When mentioned without a link, request one from the author.
Evaluate link quality before pursuing:
- Domain Rating (DR) > 40 preferred
- Topical relevance to your site
- Editorial link (not paid or exchanged)
- Site has real organic traffic (check Ahrefs/Semrush traffic estimate)
Set up Google Search Console tracking
Minimum viable Search Console setup:
- Verify ownership - HTML tag method is most reliable:
<meta name="google-site-verification" content="YOUR_VERIFICATION_CODE">Submit sitemap - Settings > Sitemaps > add
https://yourdomain.com/sitemap.xmlMonitor weekly reports:
- Performance > Search results: track clicks, impressions, CTR, position
- Coverage: watch for "Excluded" spikes (noindex, soft 404, crawl anomaly)
- Core Web Vitals: identify poor URLs before they affect rankings
- Links: track top linked pages and external link growth
Key Search Console queries to run regularly:
- Filter by "Position > 10 and < 20" - pages close to page 1 are quick wins
- Filter by "CTR < 2% and Impressions > 500" - titles/descriptions need work
- Filter by "Clicks = 0 and Impressions > 100" - content intent may be misaligned
Gotchas
Noindex on staging left in production - A
<meta name="robots" content="noindex">tag orX-Robots-Tag: noindexheader copied from staging to production will silently deindex pages. Google does not warn you - pages simply disappear from the index. Always audit robots directives post-deployment.Self-referencing canonical conflicts with noindex - If a page has both
<link rel="canonical" href="[this page]">and<meta name="robots" content="noindex">, the signals conflict. Noindex wins for crawling, but the canonical may cause Google to retain the page in index longer than expected. Remove the canonical when noindexing.Paginated pages canonicaling to page 1 loses deep content - Canonicalizing all paginated series pages (
/blog?page=2) to the root (/blog) tells Google to ignore the content on pages 2+. Use self-referencing canonicals on each paginated page and ensure internal linking surfaces the paginated content.Disavow file removes good links with bad - Submitting a broad disavow file (
domain:example.com) removes all links from a domain including any legitimate ones. Only disavow specific URLs unless the entire domain is clearly spam/malicious.Search Console impressions spike without a ranking change - A sudden impression spike in GSC often indicates Google started showing your page for a new query set, not that your ranking improved. Always check which queries drove the spike before concluding a campaign worked.
Anti-patterns
| Mistake | Why it's wrong | What to do instead |
|---|---|---|
| Keyword stuffing | Triggers spam filters, degrades readability, penalized since Panda (2011) | Use primary keyword naturally 1-3x; rely on semantic synonyms for coverage |
| Targeting one keyword per page in isolation | Misses long-tail variations, leaves traffic on table | Build topic clusters: one pillar + supporting pages targeting related intents |
| Buying links in bulk | High risk of manual/algorithmic penalty, links devalued quickly | Earn links via digital PR, original research, and genuinely helpful tools |
| Ignoring crawl budget on large sites | Low-value pages consume crawl quota, important pages indexed slowly | Block crawl-waste via robots.txt; remove or noindex thin/duplicate pages |
| Setting meta robots noindex on staging, forgetting to remove | Pages never indexed in production, invisible traffic impact until audited | Use HTTP auth or IP allowlist for staging; never rely on noindex for security |
| Changing URLs without 301 redirects | Destroys accumulated link equity, creates 404 errors | Always 301 redirect old URLs; update internal links; submit new sitemap |
References
For detailed implementation guidance on specific topics:
references/schema-markup.md- JSON-LD schemas for Article, Product, FAQ, HowTo, LocalBusiness, BreadcrumbList, and SitelinksSearchbox
Only load the references file when the task requires it - it is long and will consume context.
References
schema-markup.md
Schema Markup Reference
JSON-LD structured data examples for common page types. Always inject in <head> using
<script type="application/ld+json">. Validate with Google's Rich Results Test before
deploying.
1. Article
For blog posts, news articles, and editorial content. Enables article rich results and improves E-E-A-T signals.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to Build a Keyword Research Strategy in 5 Steps",
"description": "A complete guide to keyword research for SEO beginners and advanced practitioners.",
"image": "https://example.com/images/keyword-research-guide.jpg",
"datePublished": "2024-01-15T08:00:00+00:00",
"dateModified": "2024-03-10T10:30:00+00:00",
"author": {
"@type": "Person",
"name": "Jane Smith",
"url": "https://example.com/authors/jane-smith",
"sameAs": [
"https://twitter.com/janesmith",
"https://linkedin.com/in/janesmith"
]
},
"publisher": {
"@type": "Organization",
"name": "Example Co",
"url": "https://example.com",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png",
"width": 200,
"height": 60
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/keyword-research-guide"
}
}
</script>2. Product
For e-commerce product pages. Enables price, availability, and review rich results.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "SEO Audit Tool Pro",
"description": "Comprehensive SEO auditing software for agencies and in-house teams.",
"image": [
"https://example.com/images/seo-tool-1.jpg",
"https://example.com/images/seo-tool-2.jpg"
],
"sku": "SEO-TOOL-PRO-001",
"brand": {
"@type": "Brand",
"name": "Example Co"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/products/seo-audit-tool-pro",
"priceCurrency": "USD",
"price": "99.00",
"priceValidUntil": "2025-12-31",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "Example Co"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "312",
"bestRating": "5",
"worstRating": "1"
},
"review": [
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
},
"author": {
"@type": "Person",
"name": "Alex Johnson"
},
"reviewBody": "Best SEO tool I've used in 10 years of agency work."
}
]
}
</script>3. FAQPage
Earns accordion-style rich snippets in SERPs. Highly effective for informational pages. Each question/answer pair should be visible on the page - do not add hidden FAQ schema.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is keyword difficulty and how is it measured?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Keyword difficulty (KD) is a 0-100 score estimating how hard it is to rank on the first page for a given keyword. It is calculated from the authority of pages currently ranking - higher authority pages mean higher difficulty. Scores under 30 are generally attainable for newer sites; 30-60 requires solid backlink profiles; 60+ demands significant domain authority."
}
},
{
"@type": "Question",
"name": "How long does SEO take to show results?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Most SEO changes take 3 to 6 months to produce measurable ranking improvements. Technical fixes (crawl issues, speed) resolve faster - sometimes within weeks. Content and link building compounds over 6-12 months. Highly competitive keywords may take 12-24 months."
}
},
{
"@type": "Question",
"name": "Is it possible to rank without backlinks?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, for low-competition informational queries - especially long-tail keywords under difficulty 20. However, backlinks remain necessary for competitive head terms. Building topical authority through a content cluster strategy can reduce the number of external links needed."
}
}
]
}
</script>4. HowTo
Earns rich snippets with step-by-step structured results. Use on tutorial and guide pages.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Submit a Sitemap to Google Search Console",
"description": "Step-by-step guide to submitting your XML sitemap to Google Search Console for faster indexing.",
"totalTime": "PT10M",
"estimatedCost": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": "0"
},
"supply": [],
"tool": [
{
"@type": "HowToTool",
"name": "Google Search Console account"
}
],
"step": [
{
"@type": "HowToStep",
"name": "Open Search Console",
"text": "Go to search.google.com/search-console and sign in with your Google account.",
"url": "https://example.com/submit-sitemap#step-1",
"image": "https://example.com/images/step-1-search-console.jpg"
},
{
"@type": "HowToStep",
"name": "Select your property",
"text": "Choose the verified property you want to submit the sitemap for from the left-hand dropdown.",
"url": "https://example.com/submit-sitemap#step-2"
},
{
"@type": "HowToStep",
"name": "Navigate to Sitemaps",
"text": "In the left sidebar, click Indexing > Sitemaps.",
"url": "https://example.com/submit-sitemap#step-3"
},
{
"@type": "HowToStep",
"name": "Enter your sitemap URL",
"text": "In the 'Add a new sitemap' field, enter your sitemap URL (e.g., https://yourdomain.com/sitemap.xml) and click Submit.",
"url": "https://example.com/submit-sitemap#step-4"
}
]
}
</script>5. BreadcrumbList
Enables breadcrumb rich results in SERPs. Add to every page that has a navigable hierarchy.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "SEO Guides",
"item": "https://example.com/seo-guides"
},
{
"@type": "ListItem",
"position": 3,
"name": "Keyword Research Guide",
"item": "https://example.com/seo-guides/keyword-research"
}
]
}
</script>6. LocalBusiness
For local business pages and landing pages targeting geographic queries. Enables Knowledge Panel signals and local pack eligibility.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Acme SEO Agency",
"image": "https://example.com/images/office.jpg",
"url": "https://example.com",
"telephone": "+1-555-123-4567",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94105",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 37.7749,
"longitude": -122.4194
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "18:00"
}
],
"sameAs": [
"https://www.google.com/maps/place/acme-seo-agency",
"https://www.yelp.com/biz/acme-seo-agency",
"https://linkedin.com/company/acme-seo-agency"
]
}
</script>7. SitelinksSearchbox
Adds a search box directly in Google's SERP result for your brand query. Only show on your homepage.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"url": "https://example.com",
"name": "Example Co",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://example.com/search?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
</script>This only appears in SERPs for branded queries on sites Google already recognizes. Do not expect it to appear on a new domain with low brand authority.
Validation Checklist
Before deploying schema markup, verify:
| Check | Tool |
|---|---|
| Valid JSON syntax | jsonlint.com |
| Schema properties recognized | Google Rich Results Test (search.google.com/test/rich-results) |
| Schema eligible for rich results | Rich Results Test > "Eligible" status |
| No markup-content mismatch | Visually confirm every schema field matches visible page content |
| No hidden FAQ/review schema | Schema content must be visible to users, not hidden via CSS |
Post-deploy: monitor Search Console > Enhancements section for schema errors and warnings. Rich results typically appear within 1-4 weeks after indexing.
Frequently Asked Questions
What is seo-mastery?
Use this skill when optimizing for search engines, conducting keyword research, implementing technical SEO, or building link strategies. Triggers on SEO, keyword research, meta tags, schema markup, Core Web Vitals, sitemap, robots.txt, link building, search console, and any task requiring search engine optimization.
How do I install seo-mastery?
Run npx skills add AbsolutelySkilled/AbsolutelySkilled --skill seo-mastery in your terminal. The skill will be immediately available in your AI coding agent.
What AI agents support seo-mastery?
seo-mastery works with claude-code, gemini-cli, openai-codex. Install it once and use it across any supported AI coding agent.