skills/lookmi.saas.group/onsite-seo-audit

onsite-seo-audit

SKILL.md

Onsite SEO Audit Skill

A structured, opinionated process for auditing the on-page and technical SEO of SaaS websites. Designed for intermediate SEO users — assumes basic familiarity with SEO concepts but not deep technical expertise.


What This Skill Produces

Depending on what the user needs, output one or more of:

  • Chat summary — prioritized findings with clear next steps
  • Audit spreadsheet (.xlsx) — issue log with severity scores and owner assignments
  • Recommendations report (.docx or .pdf) — executive-ready with context and rationale
  • Page briefs — rewrite templates for underperforming pages

Ask the user upfront which output(s) they need if not specified.


Inputs to Request

Before starting, identify what data is available. Ask the user to provide as many of these as possible:

Input What it enables
Website URL Live crawl checks, page sampling
Screaming Frog / Sitebulb crawl export (.csv) Technical + on-page analysis at scale
Google Search Console export Impressions, CTR, ranking positions
GA4 export Organic traffic, bounce rate, engagement
List of target pages or URLs Focused page-level audit
Competitor URLs Benchmark comparisons

If the user has none of these, proceed with a manual URL-based review using web_search and web_fetch to inspect pages directly.


Audit Framework

Run through all six modules. Flag issues with severity: Critical / High / Medium / Low.

Module 1: Crawlability & Indexability

  • Is the sitemap present and submitted? (/sitemap.xml)
  • Is robots.txt blocking important pages?
  • Are there noindex tags on pages that should rank?
  • Are canonical tags correct and consistent?
  • Are there redirect chains (3xx loops, unnecessary hops)?
  • Are paginated pages handled correctly?

Module 2: Site Architecture & URL Structure

  • Are URLs short, descriptive, and keyword-relevant?
  • Is the folder/category structure logical and shallow (ideally ≤3 clicks from homepage)?
  • Are there duplicate URLs (trailing slashes, www vs non-www, http vs https)?
  • Is there a clear hierarchy for the blog, features, and landing pages?

Module 3: On-Page Elements

For a sample of key pages (homepage, top 5 landing pages, top 3 blog posts):

  • Title tags: Unique, 50–60 characters, primary keyword near the front
  • Meta descriptions: Unique, 120–155 characters, includes CTA or value prop
  • H1: One per page, matches search intent, includes primary keyword
  • H2/H3 structure: Logical, keyword-rich subheadings
  • Image alt text: Descriptive, not keyword-stuffed
  • Internal links: Key pages linked from relevant content; no orphan pages

Module 4: Content Quality

  • Does the content match the search intent (informational / navigational / commercial / transactional)?
  • Is there thin content (< 300 words on pages meant to rank)?
  • Is there duplicate or near-duplicate content across pages?
  • Is the content up to date? Are there stale dates, outdated product references, or broken examples?

Module 4a: Keyword Cannibalization Analysis

When a Screaming Frog or GSC CSV is provided, run a full cannibalization check. This is one of the most common and damaging issues on SaaS sites with growing content libraries.

Detecting Cannibalization

From a Screaming Frog export, look for:

  • Pages sharing identical or near-identical H1s or title tags
  • Pages in the same subfolder with heavily overlapping body copy keywords
  • Multiple pages targeting the same root keyword with only modifier variation (e.g. /blog/rank-tracking and /features/rank-tracking)

From a GSC export (Queries + Pages report), look for:

  • The same query driving impressions to 2+ different URLs
  • A query where Google is routing traffic to a page that clearly wasn't designed for it (e.g. a blog post ranking for a keyword the features page should own)
  • Queries with split impressions across multiple pages — a strong signal Google is confused about which page to serve

Cannibalization Decision Framework

For each cannibalizing pair, determine:

  1. What is the SERP intent for this keyword? Check the live SERP (use web_search). What content type dominates?

    • Informational (blog posts, guides, how-tos)?
    • Commercial / Navigational (product pages, feature pages, comparison pages)?
    • Transactional (free trial, pricing, sign-up)?
  2. Which page matches that intent? The page whose content type matches the dominant SERP format is the correct one to optimize. Google often surfaces the wrong page when both exist — this is the root of the problem.

  3. Which page has more authority? Check internal link count pointing to each page, backlinks if data is available, and existing GSC position/impressions.

  4. Recommend one of four resolutions:

Resolution When to use
Consolidate — merge the weaker page into the stronger, redirect the URL Near-identical content, no clear differentiation possible
Differentiate — rewrite both pages so they target distinct intents Pages serve different audiences or funnel stages
Canonicalize — point the weaker page to the stronger as canonical Duplicate content, both URLs need to stay live (e.g. campaign pages)
Restructure — turn one page into a section of the other (e.g. H2 block instead of standalone page) One page is thin enough to absorb without losing value

Making Cannibalized Pages Unique

When recommending differentiation (keeping both pages), always specify:

  • Page A (canonical/optimized page): Intended keyword, intent type, content angle, what makes it distinct
  • Page B (differentiated page): Revised target keyword, revised intent, new angle, what content to remove or change to stop competing

Common SaaS differentiation patterns:

  • Feature page targets commercial intent ("rank tracking software") → Blog post pivots to informational intent ("how rank tracking works")
  • Landing page targets bottom-of-funnel ("best X for agencies") → Blog post targets top-of-funnel ("what is X")
  • Comparison page targets consideration intent ("X vs Y") → Product page focuses on unique features without mentioning competitors

Cannibalization Output Format

Produce a dedicated cannibalization table (include in spreadsheet output):

Keyword URL 1 URL 2 SERP Intent Correct Page Resolution Differentiation Notes

Flag cannibalization severity:

  • Critical: Core money pages competing (features page vs. pricing page vs. homepage)
  • High: Commercial landing pages competing with blog content
  • Medium: Blog posts competing with each other

Module 4b: Keyword Stuffing Detection

Keyword stuffing actively harms rankings and user experience. Flag it wherever found.

Signs of keyword stuffing to check:

  • Primary keyword appears in title tag, H1, first paragraph, multiple H2s, meta description, AND image alt text on the same page — when it feels forced rather than natural
  • Exact-match keyword repeated unnaturally in body copy (e.g. "rank tracking rank tracker rank tracking software" within the same paragraph)
  • Footer or sidebar blocks stuffed with keyword-rich links
  • Alt text that describes keywords rather than the image (e.g. alt="rank tracker SEO tool rank tracking")
  • Invisible or near-invisible text (white text on white background — rare but worth flagging)

Recommended keyword density guidance:

  • Primary keyword: 1–2% of total word count is a healthy ceiling; flag anything that feels repetitive on a read-through
  • Related/semantic terms (LSI keywords): should appear naturally — they support topical relevance without stuffing
  • The test: read the content aloud. If it sounds unnatural, it's over-optimized.

Remediation advice to give:

  • Replace exact-match repetitions with natural synonyms and semantic variants
  • Rewrite title/H1/meta to each serve a distinct purpose (title = SERP click, H1 = page topic, meta = value prop)
  • Use heading variations rather than repeating the exact keyword in every H2

Module 4c: Striking Distance Keywords

When GSC data is available, identify keywords in striking distance — queries where a small optimization push could move the page from the bottom of page 1 or page 2 into strong ranking positions.

Definition: Striking distance = keywords ranking in positions 4–20.

Why it matters: These pages already have relevance signals with Google. Optimizing them requires far less effort than building authority for new keywords from scratch.

How to identify striking distance opportunities

From the GSC Queries export, filter for:

  • Impressions > 50 (enough search volume to be worth targeting)
  • Average position between 4 and 20
  • CTR below the expected average for that position (signals the title/meta isn't compelling enough)

Sort by impressions descending — highest-volume striking distance keywords first.

What to do with striking distance keywords

For each identified keyword, check the ranking page and recommend:

  1. If the keyword is in striking distance but not in the title tag → add it (naturally)
  2. If it's in the title but CTR is low → rewrite the title tag for higher click-through (add power words, numbers, or a clearer value prop)
  3. If the page ranks for the keyword but it's not the focus → check for cannibalization (see Module 4a) — another page may be diluting the signal
  4. If the page has thin content for this keyword → expand with a relevant H2 section targeting the query
  5. If internal links don't include the keyword as anchor text → update internal links to reinforce the signal

Striking Distance Output Format

Produce a prioritized table (include in spreadsheet):

Keyword Current Position Impressions CTR Ranking URL Issue Recommended Action

Flag the top 10 striking distance opportunities as Quick Wins — these are the highest-ROI items in the entire audit for sites with existing GSC data.

Module 5: Core Web Vitals & Page Experience

Use PageSpeed Insights (https://pagespeed.web.dev) or user-provided data:

  • LCP (Largest Contentful Paint): Target < 2.5s
  • INP (Interaction to Next Paint): Target < 200ms
  • CLS (Cumulative Layout Shift): Target < 0.1
  • Is the site mobile-friendly?
  • Are there render-blocking resources?

Module 6: Internal Linking & Authority Distribution

  • Are high-priority pages receiving internal links from relevant content?
  • Are there orphan pages (no internal links pointing to them)?
  • Is anchor text descriptive and varied (not just "click here" or "learn more")?
  • Is PageRank being passed to conversion-critical pages (pricing, demo, trial)?

Scoring & Prioritization

After completing the modules, produce a prioritized issue log:

Priority Criteria Examples
Critical Blocks indexing or destroys ranking noindex on key pages, broken canonical, robots.txt blocking CSS/JS, core money pages cannibalizing each other
High Directly harms rankings or CTR Missing/duplicate title tags, no H1, thin content on core pages, commercial landing pages cannibalizing blog content, keyword stuffing on key pages
Medium Leaves ranking potential on the table Weak internal linking, blog-vs-blog cannibalization, slow LCP, striking distance keywords not optimized
Low Polish and best practice Image alt text gaps, meta description length, minor redirect hops, light keyword over-repetition

Output Formats

Chat Summary (always produce this first)

## SEO Audit Summary — [Site Name]
Audited: [date]

### 🔴 Critical Issues ([n])
- [Issue] — [Page/Section] — [Why it matters] — [Fix]

### 🟠 High Priority ([n])
- ...

### 🟡 Medium Priority ([n])
- ...

### 🟢 Quick Wins ([n])
- ...

### Recommended Next Steps
1. [Most impactful action]
2. ...

Spreadsheet (.xlsx)

Produce a multi-tab workbook with:

  • Issues log: Issue | Module | Affected URL(s) | Severity | Effort | Owner | Status | Notes
  • Cannibalization: Keyword | URL 1 | URL 2 | SERP Intent | Correct Page | Resolution | Differentiation Notes
  • Striking Distance: Keyword | Current Position | Impressions | CTR | Ranking URL | Issue | Recommended Action

Use the xlsx skill to generate this. Read /mnt/skills/public/xlsx/SKILL.md before creating.

Report (.docx or .pdf)

Structure:

  1. Executive Summary (3–5 bullet findings)
  2. Audit Scope & Methodology
  3. Findings by Module (prose + evidence)
  4. Prioritized Recommendations Table
  5. 30-Day Action Plan

Use the docx skill. Read /mnt/skills/public/docx/SKILL.md before creating.

Page Briefs

For each underperforming page, produce:

  • Target keyword(s) and search intent
  • Recommended title tag + meta description
  • H1 and suggested H2 structure
  • Content gaps to address
  • Internal linking recommendations

SaaS-Specific Watch Points

These issues appear frequently in SaaS SEO and deserve extra attention:

  • Feature pages vs. use-case pages: Many SaaS sites only have feature pages but miss high-intent use-case or job-to-be-done queries ("tool for X", "how to do Y")
  • Integration pages: Often thin or auto-generated — check if they have unique, indexable content
  • Changelog / release notes: Frequently unintentionally indexed and creating thin content
  • App subdomain vs. main domain: Login/app pages sometimes leak into the index
  • Pricing page optimization: Often under-optimized for commercial intent keywords
  • Trial/demo CTAs: Track whether SEO landing pages funnel correctly to conversion

Notes for Intermediate Teams

  • Start with Critical and High issues — don't get distracted by polish before fixing fundamentals
  • Focus effort on the 20% of pages driving 80% of organic traffic
  • Internal linking is often the highest-ROI quick win for sites with existing content
  • Document all changes with before/after screenshots for reporting
Weekly Installs
2
First Seen
5 days ago
Installed on
amp2
cline2
opencode2
cursor2
kimi-cli2
codex2