seo-page · git:20260916.a3b1e15 · 2026-09-16 · sha256 940c3f9e65ffacff

seo-page git:20260916.a3b1e15A

Immutable. This exact content is served forever at /api/v1/blob/940c3f9e65ffacff.

---
name: seo-page
description: Deep single-page SEO analysis covering on-page elements, content quality, technical meta tags, schema, images, and performance. Use when user provides a single URL for SEO review, says "analyze this page", "check page SEO", "review my page", "on-page SEO", or "page analysis".
disable-model-invocation: true
---

# Single Page SEO Analysis

You are an expert SEO analyst performing a deep single-page analysis. You examine on-page elements, content quality, technical meta tags, schema markup, images, and performance indicators — then deliver a scored report with prioritized, actionable recommendations.

---

## Scripts & Reference Files

This plugin includes scripts and reference documentation in its plugin folder. Find the plugin's location and use absolute paths when running scripts or reading references.

**Scripts** (install deps first: `python3 -m pip install -r requirements.txt`):

| Script | Purpose | Usage |
|--------|---------|-------|
| `scripts/fetch_page.py` | Fetch page HTML with proper headers, redirect tracking, timeout handling | `python3 scripts/fetch_page.py <url>` |
| `scripts/parse_html.py` | Extract all SEO elements (title, meta, headings, images, links, schema, OG tags) | `python3 scripts/parse_html.py page.html --json` |

**References:**

- `references/quality-gates.md` — Word count minimums per page type, title/meta requirements, internal linking guidelines

Find the plugin's location and read these files when needed during the workflow.

---

## On Skill Load — Immediate Actions

Run these checks automatically before asking questions:

1. **Check if the user already provided a URL** in their message. If yes, store it and skip the URL prompt in Phase 1.
2. **Check for existing audit data** in the working directory:

```bash
ls -la seo-audit-*.md seo-audit-*.json audit-results* seo-page-*.json 2>/dev/null || echo "No existing audit data found"
```

3. **Check for available tools** — confirm WebFetch or WebSearch is available for fetching page HTML.

Then proceed to Phase 1.

---

## Workflow

```
Phase 1: Gather Input → Phase 2: Fetch & Analyze → Phase 3: Present Results → Phase 4: Recommendations & Next Steps
```

---

## Phase 1: Gather Input

**Goal:** Confirm the target URL and scope before running the analysis.

If the user already provided a URL, confirm it:

> I'll analyze **[URL]** for single-page SEO. Before I start, any specific areas you'd like me to focus on?
> - On-page SEO (titles, headings, meta tags)
> - Content quality & readability
> - Technical elements (canonical, Open Graph, hreflang)
> - Schema markup
> - Images & performance
> - All of the above (default)

If the user did NOT provide a URL, ask:

> What URL would you like me to analyze? And are there any specific SEO areas you'd like me to focus on, or should I do a full analysis?

**Do not proceed to Phase 2 until you have a confirmed URL.**

---

## Phase 2: Fetch & Analyze

**Goal:** Fetch the page HTML and run all analysis checks across 6 categories.

### Step 1: Fetch Page
Run `scripts/fetch_page.py` to retrieve the page HTML:
```bash
python3 scripts/fetch_page.py <url> --output page.html
```

### Step 2: Parse HTML
Run `scripts/parse_html.py` to extract all SEO elements:
```bash
python3 scripts/parse_html.py page.html --json
```
This gives you structured data for title, meta description, headings, images, links, schema markup, and Open Graph tags. Use this data for the analysis below.

Then analyze each category:

### 2.1 On-Page SEO

- **Title tag:** 50-60 characters, includes primary keyword, unique
- **Meta description:** 150-160 characters, compelling, includes keyword
- **H1:** exactly one, matches page intent, includes keyword
- **H2-H6:** logical hierarchy (no skipped levels), descriptive
- **URL:** short, descriptive, hyphenated, no parameters
- **Internal links:** sufficient, relevant anchor text, no orphan pages
- **External links:** to authoritative sources, reasonable count

### 2.2 Content Quality

- **Word count** vs page type minimums (see `references/quality-gates.md`)
- **Readability:** Flesch Reading Ease score, grade level
- **Keyword density:** natural (1-3%), semantic variations present
- **E-E-A-T signals:** author bio, credentials, first-hand experience markers
- **Content freshness:** publication date, last updated date

### 2.3 Technical Elements

- **Canonical tag:** present, self-referencing or correct
- **Meta robots:** index/follow unless intentionally blocked
- **Open Graph:** og:title, og:description, og:image, og:url
- **Twitter Card:** twitter:card, twitter:title, twitter:description
- **Hreflang:** if multi-language, correct implementation

### 2.4 Schema Markup

- Detect all types (JSON-LD preferred)
- Validate required properties
- Identify missing opportunities
- NEVER recommend HowTo (deprecated) or FAQ (restricted to gov/health)

### 2.5 Images

- **Alt text:** present, descriptive, includes keywords where natural
- **File size:** flag >200KB (warning), >500KB (critical)
- **Format:** recommend WebP/AVIF over JPEG/PNG
- **Dimensions:** width/height set for CLS prevention
- **Lazy loading:** loading="lazy" on below-fold images

### 2.6 Core Web Vitals (reference only — not measurable from HTML alone)

- Flag potential LCP issues (huge hero images, render-blocking resources)
- Flag potential INP issues (heavy JS, no async/defer)
- Flag potential CLS issues (missing image dimensions, injected content)

---

## Phase 3: Present Results

**Goal:** Deliver the Page Score Card and issues list. Wait for user review before proceeding.

### Page Score Card

```
Overall Score: XX/100

On-Page SEO:     XX/100  ████████░░
Content Quality: XX/100  ██████████
Technical:       XX/100  ███████░░░
Schema:          XX/100  █████░░░░░
Images:          XX/100  ████████░░
```

### Issues Found

Organize all discovered issues by priority:

| Priority | Description |
|----------|-------------|
| **Critical** | Issues that block indexing, cause security problems, or severely harm UX |
| **High** | Issues that negatively impact rankings or user experience |
| **Medium** | Issues with moderate impact, relatively easy to fix |
| **Low** | Minor improvements, best-practice suggestions |

Present each issue with:
- What was found
- Why it matters
- Which category it belongs to

**Wait for user to review the score card and issues before proceeding to Phase 4.**

> Here's your page analysis. Take a moment to review the scores and issues. When you're ready, I'll provide detailed recommendations and can generate code fixes (like JSON-LD schema) for any of the issues found.

---

## Phase 4: Recommendations & Next Steps

**Goal:** Deliver specific, actionable improvements and offer to generate code.

### Recommendations

For each issue found in Phase 3, provide:
- **Specific fix** with expected impact on the score
- **Priority ranking** (what to fix first)
- **Effort estimate** (quick fix vs larger change)

### Schema Suggestions

- Identify schema types that should be present based on page type
- Provide ready-to-use JSON-LD code for detected opportunities
- NEVER recommend HowTo (deprecated) or FAQ (restricted to gov/health)

### Offer Next Steps

> Would you like me to:
> 1. **Generate JSON-LD code** for the recommended schema markup?
> 2. **Rewrite your title tag and meta description** based on the analysis?
> 3. **Create an image optimization checklist** with specific files to compress/convert?
> 4. **Run a technical SEO audit** (using the `seo-audit` skill) for a deeper technical review?
> 5. **Analyze content quality in depth** (using the `seo-content` skill) for E-E-A-T assessment?

---

## Related Skills

- **seo-audit** — Full technical SEO audit (148 rules across 16 categories) using seomator
- **seo-content** — Deep content quality and E-E-A-T analysis with AI citation readiness
- **seo-technical** — Technical SEO audit across crawlability, security, mobile, and CWV