jeffli1993/seo-audit-skill/seo-audit-full
Claude Code and agent skill by jeffli1993/seo-audit-skill
- community
Checking that the SKILL.md file is still in the repository.
Advanced full SEO audit skill. Runs its own full workflow from local scripts, including the basic SEO checks plus PageSpeed, social metadata, and advanced review modules when available.
Install
npx vskill@latest install jeffli1993/seo-audit-skill/seo-audit-fullSKILL.md
seo-audit-full — Advanced Full SEO Audit
This skill runs a full single-page SEO audit from the seo-audit-full directory. It does not route to seo-audit when only a URL is provided.
When to Use This Skill
Use seo-audit-full when the user asks for:
- "seo-audit-full"
- "full SEO audit"
- "advanced SEO audit"
- "technical SEO audit"
- "deep audit"
- "comprehensive SEO review"
- "audit everything"
URL-only requests are valid. When external datasets are not supplied, run the full public-signal workflow and clearly note missing data sources in the report.
Input Expected
| Input | Required | Notes | |
|---|---|---|---|
| Page URL | Yes | The primary page to audit | |
| Primary keyword | Recommended | Improves content relevance scoring | |
| PageSpeed API key | Yes | Required for full audit PageSpeed checks. Ask at the start and do not run PageSpeed without it. | |
| Raw HTML or page content | Optional | Enables more accurate content checks when supplied | |
| GSC / crawl / analytics data | Optional | Include when supplied, otherwise mark unavailable | |
| Competitor benchmark data | Optional | Include when supplied |
At the start of a full audit, ask the user for a PageSpeed Insights API key:
Do not run seo-audit-full PageSpeed checks without a PageSpeed API key supplied by --api-key, PAGESPEED_API_KEY, or GOOGLE_PAGESPEED_API_KEY. If the key is missing, stop and ask the user to configure it instead of rendering a full report with missing PageSpeed data.
Architecture: Full = Core + Performance + Advanced
Output
Produce an Advanced Full SEO Audit Report by filling the template at assets/report-template.html, then save it to a file — never print raw HTML to the terminal.
File naming: reports/<hostname>-<slug>-full-audit.html
After saving, tell the user:
If yes → run: open reports/example-com-full-audit.html
Template placeholders — fill each independently:
| Placeholder | Content | |
|---|---|---|
{{summary_verdict}} | One sentence: total checks run, how many failed/warned/passed | |
{{summary_critical_html}} | <li> per critical item, or <li class="summary-empty">None</li> | |
{{summary_warnings_html}} | <li> per warning item, or <li class="summary-empty">None</li> | |
{{summary_passing_html}} | <li> per passing check, or <li class="summary-empty">None</li> | |
{{pagespeed_checks_html}} | Full PageSpeed module using check-pagespeed.py output | |
{{site_checks_html}} | Site-level check tables | |
{{eeat_checks_html}} | E-E-A-T trust page table | |
{{page_checks_html}} | Page-level check tables, including full-only additions | |
{{priority_actions_html}} | Ordered priority action list | |
{{insights_html}} | Optional finding walkthrough cards |
Scripts
Run full scripts from this directory. All output is structured JSON — use it directly as evidence.
Dependencies: pip install requests
Phase 1: Core scripts
Phase 2: Full-only scripts
Each script exits with code 0 (all pass/warn) or 1 (any fail/error).
PageSpeed can take 200 seconds. Use a 180-second timeout by default. If it still times out, mark the Page Speed module as error and state that the PageSpeed API timed out; do not treat that as confirmed page performance failure. If PageSpeed fails because Google returns a quota/API-key error after a key was provided, keep the audit running and render the PageSpeed module as error with this instruction: Get a PageSpeed API key at https://developers.google.com/speed/docs/insights/v5/get-started → "Acquiring and using an API key" → "Get a Key".
Scope — Full Audit Check Whitelist
Full runs its own core checks plus the full-only items marked ★ below.
Site-Level Checks (in {{site_checks_html}})
Core checks:
- Sitemap URL Inventory · Staging Subdomain Indexation · robots.txt · sitemap.xml · 404 Handling · URL Canonicalization · i18n / hreflang
Staging Subdomain Indexation rules:
- Check common staging/test hosts before robots.txt:
test.,staging.,dev.,preview.,beta.,uat. - Fail when a staging/test subdomain is publicly accessible, closely mirrors the production site, and is not protected by authentication,
noindex, or a blockingrobots.txt. - Warn when a staging/test subdomain is publicly accessible but similarity or index protection cannot be confirmed.
- Pass when no public staging/test subdomain is detected, or detected staging hosts are protected by authentication, non-200 access,
noindex, orDisallow: /. - Explain the impact as duplicate indexable pages: Google may treat
test.example.comandwww.example.comas separate but near-identical URLs, splitting ranking signals and competing with the production site. - Recommended fixes: add Basic Auth/password protection first; also block crawlers on the staging host with
User-agent: *+Disallow: /; add page-levelnoindexif pages can still be accessed.
Sitemap URL Inventory rules:
- Place this as the first module in
{{site_checks_html}}, before the Crawlability table. - Render it as its own table with columns: Directory · URL Count · Page Type · Example Page.
- Use
check-site.pysitemap_inventoryoutput to summarize first-level directories, URL counts, inferred page types, and one representative example URL. - Treat this as a site-level map, not a pass/fail single-page SEO audit.
- Use status
infounless sitemap URLs cannot be parsed; do not penalize a site for having many or few URLs in a directory without deeper evidence. - Always include a next-step note: the user can continue with deeper full audits by selecting representative sample URLs from major directories such as
/blog/,/tools/,/alternatives/,/templates/, or/use-cases/.
Page Speed Checks (in {{pagespeed_checks_html}})
Full-only:
- Lighthouse category scores: Performance · Accessibility · Best Practices · SEO
- Lab metrics: FCP · LCP · TBT · CLS · Speed Index
- Final URL and screenshot availability
E-E-A-T Checks (in {{eeat_checks_html}})
Core checks:
- About Us · Contact · Privacy Policy · Terms of Service · Media/Partners (only if present)
Contact logic (Contact row only):
- A dedicated
/contactpage is not required - Pass if contact is reachable via any of: dedicated contact page (HTTP 200) · About page with contact details · footer/nav mailto, email, social links, or contact form
- Fail only when no contact pathway exists anywhere on the site
- Missing
/contactalone is not a fail when About or footer/nav already expose contact info
E-E-A-T infrastructure rules — two layers per trust page:
- Layer 1 — Exists: HTTP 200 for the trust page URL (Contact uses Contact-specific rules above)
- Layer 2 — Reachable: linked from footer or main nav
| Page | Required | |
|---|---|---|
| About Us | Yes | |
| Contact | Yes — dedicated page optional; About or footer/nav contact details satisfy this | |
| Privacy Policy | Yes | |
| Terms of Service | Yes | |
| Media / Partners | No — include only if present |
Status rules (About, Privacy, Terms, Media/Partners):
- Page missing (non-200) → Fail
- Page exists but not linked in footer/nav → Warn
- Page exists and linked in footer/nav → Pass
- Optional page missing → skip, do not include row
Contact-specific rules:
- Try common paths (
/contact,/contact-us) — HTTP 200 counts as Exists - If no contact page, check the About page body for email, social, or contact details
- Also scan homepage footer and nav for
mailto:, visible email, social links, or a contact form - Exists Pass if any contact pathway is found
- Exists Fail only when no contact information is found anywhere
- Reachable Pass if a contact page link or contact details appear in footer/nav
- Reachable Warn if contact is only reachable inside About page content, not directly in footer/nav
- Do not recommend creating
/contactwhen About or footer already expose contact info
Page-Level Checks (in {{page_checks_html}}), output in this exact order:
Core checks: URL Slug · Title Tag · Meta Description · H1 Tag · Canonical Tag · Image Alt Text · Word Count · Keyword Placement · Heading Structure · Internal Links · Schema (JSON-LD)
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingseo-audit-full/SKILL.md
Popularity
- Repository stars
- 532
- Repository forks
- 69
- 7-day trend score
- 31
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/jeffli1993/seo-audit-skill/seo-audit-full)