skills/ai-marketing-suite/skills/market-seo/SKILL.md
# SEO Content Audit ## Skill Purpose Perform a comprehensive SEO audit of a webpage or website, covering on-page SEO, content quality (E-E-A-T), keyword analysis, technical SEO, and content strategy. This skill combines automated analysis via `scripts/analyze_page.py` with expert-level manual review to produce an actionable SEO audit document. ## When to Use - User provides a URL and asks for SEO analysis, audit, or recommendations - User wants to improve organic search rankings and traffic -
npx skillsauth add kennyolofsson23-netizen/claude-code-config skills/ai-marketing-suite/skills/market-seoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Perform a comprehensive SEO audit of a webpage or website, covering on-page SEO, content quality (E-E-A-T), keyword analysis, technical SEO, and content strategy. This skill combines automated analysis via scripts/analyze_page.py with expert-level manual review to produce an actionable SEO audit document.
/market seo <url> or /market seoUse the Python analysis script to gather baseline data:
python3 scripts/analyze_page.py <url>
This script extracts:
Capture the JSON output and use it as the foundation for the manual analysis.
Evaluate each element and score it as Pass, Needs Work, or Fail.
| Criteria | Best Practice | Check | |---|---|---| | Exists | Every page must have a unique title tag | Pass/Fail | | Length | 50-60 characters (displays fully in SERPs) | Pass/Needs Work/Fail | | Primary keyword | Contains the primary target keyword | Pass/Needs Work/Fail | | Keyword position | Primary keyword appears near the beginning | Pass/Needs Work/Fail | | Brand name | Includes brand name (typically at the end, separated by pipe or dash) | Pass/Needs Work/Fail | | Uniqueness | Different from other pages on the site | Pass/Fail | | Compelling | Would a searcher want to click this? | Pass/Needs Work/Fail |
Common title tag mistakes:
| Criteria | Best Practice | Check | |---|---|---| | Exists | Every page should have a meta description | Pass/Fail | | Length | 150-160 characters | Pass/Needs Work/Fail | | Primary keyword | Naturally includes the target keyword | Pass/Needs Work/Fail | | Call to action | Includes a reason to click | Pass/Needs Work/Fail | | Unique | Different from other pages | Pass/Fail | | Compelling | Acts as ad copy for the search result | Pass/Needs Work/Fail |
| Criteria | Best Practice | Check | |---|---|---| | H1 exists | Exactly one H1 per page | Pass/Fail | | H1 contains keyword | Primary keyword in the H1 | Pass/Needs Work/Fail | | H1 differs from title | H1 and title tag are different (but related) | Pass/Needs Work/Fail | | Logical hierarchy | H2 under H1, H3 under H2 (no skipping levels) | Pass/Needs Work/Fail | | Descriptive subheadings | H2s and H3s describe content sections clearly | Pass/Needs Work/Fail | | Keywords in subheadings | Secondary keywords appear naturally in H2s/H3s | Pass/Needs Work/Fail | | Not overused | Headers used for structure, not styling | Pass/Needs Work/Fail |
| Criteria | Best Practice | Check | |---|---|---| | Alt text | Every image has descriptive alt text | Pass/Needs Work/Fail | | Alt text quality | Alt text describes the image and includes keywords naturally | Pass/Needs Work/Fail | | File names | Descriptive filenames (not IMG_001.jpg) | Pass/Needs Work/Fail | | File size | Images optimized for web (WebP preferred, compressed) | Pass/Needs Work/Fail | | Lazy loading | Below-fold images use lazy loading | Pass/Needs Work/Fail | | Responsive images | Uses srcset or picture element for different sizes | Pass/Needs Work/Fail | | Decorative images | Decorative images have empty alt="" (not missing alt) | Pass/Needs Work/Fail |
| Criteria | Best Practice | Check | |---|---|---| | Internal links present | Page links to other relevant pages on the site | Pass/Needs Work/Fail | | Anchor text | Internal link anchor text is descriptive (not "click here") | Pass/Needs Work/Fail | | Deep linking | Links go to specific pages, not just homepage | Pass/Needs Work/Fail | | Relevant context | Links are contextually relevant to surrounding content | Pass/Needs Work/Fail | | Reasonable count | 3-10 internal links per 1,000 words of content | Pass/Needs Work/Fail | | Broken links | No broken internal links (404s) | Pass/Fail |
| Criteria | Best Practice | Check | |---|---|---| | Readable | URL is human-readable and descriptive | Pass/Needs Work/Fail | | Keywords | URL contains relevant keywords | Pass/Needs Work/Fail | | Length | Under 75 characters (ideally under 60) | Pass/Needs Work/Fail | | Hyphens | Words separated by hyphens (not underscores) | Pass/Fail | | Lowercase | All lowercase characters | Pass/Fail | | No parameters | Clean URLs without unnecessary query parameters | Pass/Needs Work/Fail | | Trailing slashes | Consistent use (either always or never) | Pass/Needs Work/Fail |
Evaluate the content against Google's E-E-A-T framework:
Does the content demonstrate first-hand experience with the topic?
Check for:
Score: Strong / Present / Weak / Missing
Does the author have demonstrated knowledge in this subject?
Check for:
Score: Strong / Present / Weak / Missing
Is the website and author recognized as an authority on this topic?
Check for:
Score: Strong / Present / Weak / Missing
Can users trust this content and this website?
Check for:
Score: Strong / Present / Weak / Missing
| Element | Evaluation | |---|---| | Primary keyword identified | What keyword is this page targeting? | | Search intent alignment | Does the content match what searchers expect? (informational, commercial, transactional, navigational) | | Keyword in title | Present, position, natural usage | | Keyword in H1 | Present, natural usage | | Keyword in first 100 words | Appears early in the content | | Keyword in subheadings | Appears in at least one H2 or H3 | | Keyword in meta description | Present and natural | | Keyword in URL | Present | | Keyword density | 1-2% is ideal. Over 3% is keyword stuffing. |
Identify 5-10 related keywords that should be naturally included in the content:
Determine the search intent behind the target keyword and evaluate if the content matches:
| Intent Type | User Goal | Content Should Be | |---|---|---| | Informational | Learn something | Blog post, guide, tutorial, FAQ | | Commercial | Compare options | Comparison page, review, list | | Transactional | Buy something | Product page, pricing page, checkout | | Navigational | Find a specific page | Homepage, login page, specific tool |
Misalignment is a ranking killer. If the user searches "how to do X" (informational) and lands on a sales page (transactional), they bounce -- and Google notices.
Check: Does /robots.txt exist and is it properly configured?
Check: Does /sitemap.xml exist?
Reference benchmarks:
| Metric | Good | Needs Work | Poor | |---|---|---|---| | Largest Contentful Paint (LCP) | Under 2.5s | 2.5-4.0s | Over 4.0s | | First Input Delay (FID) | Under 100ms | 100-300ms | Over 300ms | | Cumulative Layout Shift (CLS) | Under 0.1 | 0.1-0.25 | Over 0.25 | | Time to First Byte (TTFB) | Under 200ms | 200-500ms | Over 500ms | | First Contentful Paint (FCP) | Under 1.8s | 1.8-3.0s | Over 3.0s |
Common speed issues to flag:
<meta name="viewport" content="width=device-width, initial-scale=1">)Methodology for identifying content gaps:
Content Gap Template: | Missing Topic | Search Volume Potential | Competition | Content Type Needed | Priority | |---|---|---|---|---| | [Topic] | High/Med/Low | High/Med/Low | Blog/Guide/Tool/Page | 1-5 |
Identify opportunities to capture featured snippets:
Types of featured snippets:
Optimization checklist:
Check for structured data implementation:
| Schema Type | Applicable To | Status | |---|---|---| | Organization | Homepage, About page | Present/Missing | | LocalBusiness | Local businesses | Present/Missing/N/A | | Product | Product pages | Present/Missing/N/A | | Article | Blog posts, news | Present/Missing/N/A | | FAQ | FAQ sections | Present/Missing | | HowTo | Tutorial content | Present/Missing/N/A | | Review/AggregateRating | Reviews, testimonials | Present/Missing/N/A | | BreadcrumbList | All pages with breadcrumbs | Present/Missing | | WebSite/SearchAction | Homepage (sitelinks search box) | Present/Missing | | Event | Event pages | Present/Missing/N/A |
Implementation guidance:
Identify specific internal linking improvements:
Linking Architecture Assessment:
Homepage
|-- Category/Service Pages (Pillar Content)
|-- Individual Blog Posts/Articles (Cluster Content)
|-- Back-links to Pillar Content
|-- Key Conversion Pages (Pricing, Signup, Contact)
|-- Linked from relevant content
Evaluate the revenue impact of Core Web Vitals performance:
Research-backed impacts:
Recommendations by metric: | Metric | If Failing | Typical Fixes | |---|---|---| | LCP | Over 2.5s | Optimize hero image, preload critical resources, use CDN, reduce server response time | | FID/INP | Over 100ms | Reduce JavaScript execution, defer non-critical scripts, use web workers | | CLS | Over 0.1 | Set image dimensions, reserve space for ads/embeds, avoid inserting content above existing content |
Based on the audit findings, recommend:
Content Prioritization Matrix: | Content Idea | Search Volume | Competition | Business Value | Priority Score | |---|---|---|---|---| | [Topic] | High/Med/Low | High/Med/Low | High/Med/Low | 1-10 |
Scoring: High volume + Low competition + High business value = Highest priority
Generate a file called SEO-AUDIT.md with:
# SEO Content Audit
## [URL]
### Date: [Date]
---
## SEO Health Score: [X/100]
---
## On-Page SEO Checklist
### Title Tag
- Status: [Pass/Needs Work/Fail]
- Current: "[current title]"
- Recommended: "[improved title]"
- Issues: [list issues]
### Meta Description
- Status: [Pass/Needs Work/Fail]
- Current: "[current meta]"
- Recommended: "[improved meta]"
### Heading Hierarchy
[H1-H6 structure analysis]
### Image Optimization
[Alt text audit results]
### Internal Linking
[Link analysis]
### URL Structure
[URL assessment]
---
## Content Quality (E-E-A-T)
| Dimension | Score | Evidence |
|---|---|---|
| Experience | [Strong/Present/Weak/Missing] | [details] |
| Expertise | [Strong/Present/Weak/Missing] | [details] |
| Authoritativeness | [Strong/Present/Weak/Missing] | [details] |
| Trustworthiness | [Strong/Present/Weak/Missing] | [details] |
---
## Keyword Analysis
- Primary Keyword: [keyword]
- Search Intent: [type]
- Keyword Placement: [checklist results]
- Secondary Keywords: [list]
---
## Technical SEO
[Quick check results]
---
## Content Gap Analysis
[Missing topics table]
---
## Featured Snippet Opportunities
[Specific opportunities]
---
## Schema Markup
[Current vs recommended]
---
## Internal Linking Opportunities
[Specific recommendations]
---
## Core Web Vitals
[Performance assessment with revenue impact]
---
## Content Strategy Recommendations
[Publishing plan, content priorities]
---
## Prioritized Recommendations
### Critical (Fix Immediately)
1. [recommendation with expected impact]
### High Priority (This Month)
1. [recommendation]
### Medium Priority (This Quarter)
1. [recommendation]
### Low Priority (When Resources Allow)
1. [recommendation]
/market audit or /market landing previously, cross-reference those findings with the SEO audit for a more complete picture.development
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
testing
Full QA pass: run all tests, check types, catch regressions, write missing tests. Use when the user says "run tests", "QA", "verify changes", "check for regressions", "test everything", or "make sure it works".
development
Provides guidance for property-based testing across multiple languages and smart contracts. Use when writing tests, reviewing code with serialization/validation/parsing patterns, designing features, or when property-based testing would provide stronger coverage than example-based tests.
development
Initialize a new project with Kenny's universal conventions and stack-appropriate infrastructure. Use this skill whenever: setting up a new project, creating a new repo, scaffolding a new app, starting fresh on a new idea, 'init project', 'new project', 'set up a new app', 'create a project for X', or any variant of starting a new codebase from scratch. Also trigger when the user says 'bootstrap', 'scaffold', or 'kickstart'. This skill ensures every project gets the same quality gates and conventions while adapting infrastructure to the chosen stack.