skills/seo-optimizer/SKILL.md
Use when optimizing website content for search rankings, conducting keyword research, auditing technical SEO issues, implementing schema markup, or planning organic content strategy. NEVER use for paid search (PPC/Google Ads), social media strategy, or general copywriting that is not search-intent-driven.
npx skillsauth add sharkitect-solutions/sharkitect-claude-toolkit seo-optimizerInstall 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.
These are the real decisions that require judgment. Claude's default behavior without this skill is to treat each SEO factor in isolation. Apply these resolutions instead.
| Conflict | Default Mistake | Correct Resolution | |---|---|---| | Page speed vs. content richness | Remove images/JS to hit Core Web Vitals targets | Optimize delivery (lazy load, WebP, CDN) before removing content. Speed wins only when content removal has zero user-experience cost. | | Keyword density vs. natural readability | Force keyword to 1-2% density even when it sounds robotic | Semantic variants and related terms count. One natural mention in H1 + one in intro is sufficient. Readability beats density every time. | | Content length vs. search intent | Default to 2,000+ words because "longer ranks better" | Match intent: transactional queries want concise pages with clear CTAs, not exhaustive guides. Long-form is correct for informational head terms only. | | Internal linking vs. user flow | Add 5+ internal links per page because "links pass authority" | Cap at 3-5 per 1,000 words. Each link is a distraction. Prioritize links that help the user complete their task, not links that sculpt PageRank. | | Canonical vs. content variation | Canonical every near-duplicate to the main URL by default | Let pages compete when they serve different intent variants (e.g., "best running shoes" vs. "cheap running shoes"). Canonical kills ranking opportunity for legitimately distinct pages. | | Schema completeness vs. maintenance burden | Mark up every schema type on every page | Focus schema on pages with direct SERP feature opportunity: FAQ on support pages, Product on e-commerce, HowTo on tutorials. Skip schema on pages with no realistic rich result chance. | | Freshness signals vs. content stability | Update dates and rewrite sections to appear fresh | Only update when content accuracy has degraded. Gratuitous refreshes without substance changes can trigger re-evaluation and temporary ranking dips. |
Search intent determines format before any other consideration. Getting this wrong makes optimization effort irrelevant.
| Intent Type | Signal Words | Correct Format | Wrong Format | |---|---|---|---| | Informational | "how to", "what is", "guide", "tutorial", "learn" | Long-form guide, step-by-step, comparison tables | Product pages with CTAs | | Navigational | Brand name, "[brand] login", "[product] pricing" | Landing page, direct answer, quick links | Blog posts, guides | | Transactional | "buy", "price", "discount", "order", "cheap" | Product page with clear CTA, minimal friction | Long editorial content | | Commercial investigation | "best", "vs", "review", "alternative", "top 10" | Comparison page, review with verdict, case study | Pure informational guides with no recommendation |
When intent is ambiguous: check the top 5 SERP results. The format Google is already ranking reveals the inferred intent. Match that format.
Fix in this order. Impact is not alphabetical or intuitive -- this sequence is derived from what creates the fastest measurable ranking lift.
Tier 1 -- Fix immediately (blocks indexing or signals penalties):
Tier 2 -- Fix this week (direct ranking signal improvement):
Tier 3 -- Fix this month (incremental gains, compounding over time):
| Scenario | How Standard SEO Advice Breaks | What to Do Instead | |---|---|---| | Single-page app (SPA) with client-side rendering | Standard crawling advice fails -- Googlebot may not execute JS fully | Implement server-side rendering (SSR) or static site generation (SSG). Test with Google's URL Inspection tool. Treat hydration time as a Core Web Vitals factor. | | International/multilingual site | Separate-URL strategy creates duplicate content risk; subdomain vs. subdirectory debate is context-dependent | Use hreflang annotations for every language/region pair. Prefer subdirectory (/en/, /es/) over subdomains for sites without CDN infrastructure to support subdomain authority building. | | E-commerce with 10,000+ product pages | Crawl budget becomes a real constraint; faceted navigation creates URL explosion | Use robots.txt or canonical tags to consolidate faceted navigation. Prioritize crawl budget for pages with sales potential. Paginate category pages with rel=next/prev patterns. | | Content behind login or paywall | Google cannot index gated content by default | Use first-click-free or structured data paywallContent schema. For lead gen, ensure metadata (title, description) is descriptive enough to generate clicks even when content is gated. | | Site migration (domain change or URL restructure) | Redirect mapping errors can erase years of ranking history | Map every URL with inbound links or organic traffic. Implement 301s before DNS cutover. Monitor Search Console for coverage errors for 90 days post-migration. Expect 10-20% temporary traffic dip. |
These principles are deeply known. This table exists only as a pre-flight check -- not learning material. Review before starting any optimization task.
| Area | One-Line Check | |---|---| | Title tag | Under 60 chars, primary keyword near start, unique per page | | Meta description | 150-160 chars, compelling, matches page content (does not affect ranking, affects CTR) | | H1 | One per page, contains primary keyword, matches or closely mirrors title tag | | URL structure | Lowercase, hyphens not underscores, keyword-relevant, stable once published | | Images | WebP or compressed JPEG, descriptive alt text on content images, width/height set | | E-E-A-T | Author credentials, cited sources, original insight -- applies to YMYL topics most | | Core Web Vitals | LCP < 2.5s, FID/INP < 200ms, CLS < 0.1 -- measure on field data not lab only | | Mobile-first | Test on real devices -- viewport, tap target size (48x48px min), font 16px min | | Internal links | Descriptive anchor text, 3-5 per 1,000 words, update old content to link new | | Schema | Validate with Google's Rich Results Test before deploying |
| Rationalization | Why It Is Wrong | |---|---| | "The user just wants the content written, not a full SEO audit" | Keyword placement, title tag, and intent alignment take 2 minutes and compound over years. Skipping them on request is negligence, not efficiency. | | "This page doesn't need schema -- it's just a blog post" | Blog posts are eligible for Article schema, breadcrumb schema, and FAQ schema if they contain Q&A sections. Skipping schema is a missed rich result opportunity. | | "I'll optimize for search volume -- just pick the highest volume keyword" | High volume without intent match = traffic that bounces. A lower-volume keyword with correct intent match will outperform on conversions and dwell time, which are ranking signals. | | "The content is good so the technical SEO doesn't matter much" | A page blocked in robots.txt or missing a canonical tag will not rank regardless of content quality. Technical SEO is a prerequisite, not optional polish. | | "Long-form content always ranks better" | Intent determines length. A transactional page with 3,000 words of explanation will underperform a concise 400-word page that converts. Length should match what the user came to find. | | "We can always fix the URL structure later" | Changing URLs on ranking pages requires 301 redirects and costs link equity temporarily. URL structure decisions should be made before content is indexed. | | "Duplicate content penalty is a myth so it doesn't matter" | While there is no manual penalty, Google chooses which duplicate to index and rank -- often not the one intended. Canonical tags are the mechanism for controlling this choice. |
Signs this skill is being applied incorrectly or incompletely:
| Prohibition | Why | |---|---| | NEVER recommend changing URLs on ranking pages without a redirect plan | Changing URLs without 301 redirects destroys ranking history. Even with redirects, there is a temporary ranking impact. | | NEVER keyword stuff -- including in alt text, title tags, or meta descriptions | Modern Google identifies and discounts over-optimized text. Readability is itself a ranking signal via engagement metrics. | | NEVER block CSS or JavaScript in robots.txt | Googlebot needs to render the page to evaluate it. Blocking render resources causes Google to see a broken page. | | NEVER set noindex on pages without confirming they have no ranking value | Noindex is irreversible in the short term -- removed pages take weeks to de-index, and re-indexing after removing noindex is not immediate. | | NEVER treat schema markup as a guaranteed rich result | Schema is eligibility, not entitlement. Google decides whether to display rich results based on quality signals beyond schema presence. | | NEVER recommend a site migration without a full URL redirect map | Unmapped URLs from a migration lose all accumulated link equity and ranking history permanently. |
development
When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms. Also use when the user mentions 'PPC,' 'paid media,' 'ad copy,' 'ad creative,' 'ROAS,' 'CPA,' 'ad campaign,' 'retargeting,' or 'audience targeting.' This skill covers campaign strategy, ad creation, audience targeting, and optimization.
testing
--- name: using-sharkitect-methodology description: Use when starting any conversation in a Sharkitect workspace OR before any task involving NEW pricing, positioning, proposal, strategy, plan-execution, or schema-design work — mandates invocation of Sharkitect-specific methodology skills (pricing-strategy, marketing-strategy-pmm, smb-cfo, hq-revenue-ops, executing-plans, brainstorming) under the same anti-rationalization discipline as using-superpowers. Documentation has failed 4 times across H
testing
Use when user says 'end session', 'wrap up', 'stop for the day', 'done for today', 'close out', 'save session', 'wrapping up', or invokes /end-session. Runs the full 9-step end-of-session protocol: resource audit, MEMORY.md update, lessons capture, plan status, pending items, workspace checklist, .tmp/ audit, git commit+push, Supabase brain sync, session brief, summary. Final step schedules a detached self-kill of the current session ONLY (3s delay) so the window closes cleanly. Other claude.exe processes (active workspaces) are NOT touched -- orphan cleanup is handled separately by Claude-Orphan-Cleanup-Hourly with proper age safeguards. Do NOT use for: mid-session quick saves (use session-checkpoint), skill syncing (use sync-skills.py), brain memory queries (use supabase-sync.py pull), document freshness reviews (use document-lifecycle), resource gap detection (use resource-auditor).
testing
Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, passive voice, negative parallelisms, and filler phrases.