{"id":"36a54475-5097-42e1-8ae4-eb310d87750a","shortId":"kVDskr","kind":"skill","title":"seo-onpage","tagline":"Run a comprehensive on-page SEO audit or optimization pass covering title tags, meta descriptions, header structure, content quality, internal links, image optimization, URL hygiene, and on-page schema. Use this skill whenever the user asks to optimize a page, audit on-page SEO, ","description":"# On-Page SEO\n\nOptimize a single page for search relevance, click-through, and crawler comprehension. Stack-agnostic. Works on any CMS, framework, or static site.\n\n---\n\n## When to use\n\n- Auditing or optimizing a single page (homepage, product page, article, landing page)\n- Writing or reviewing title tags and meta descriptions\n- Fixing header structure or content hierarchy\n- Reviewing internal links from or to a page\n- Improving a page's CTR from search results\n\n## When NOT to use\n\n- Site-wide crawl, indexing, or speed issues (use `seo-technical`)\n- Keyword research or intent mapping (use `seo-keyword`)\n- Competitor SERP analysis (use `seo-competitor`)\n- Auditing many pages at once for prune/merge decisions (use `seo-content-audit`)\n\n---\n\n## Required inputs\n\n- The page URL or the draft content if pre-launch\n- The primary target query (one phrase the page should rank for)\n- The page's role in the site (commercial, informational, navigational)\n\nIf the target query is unknown, run `seo-keyword` first or ask the user to name one.\n\n---\n\n## The framework: 8 dimensions\n\nA complete on-page audit covers eight dimensions. Score each as Pass, Needs work, or Fail. Note the specific fix.\n\n### 1. Title tag\n- One unique title per URL across the site\n- Roughly 50 to 60 characters (longer gets truncated in SERPs)\n- Primary query near the front\n- Brand at the end if it earns inclusion\n- Distinct from the H1 (often very similar, but should not be identical word-for-word)\n\n### 2. Meta description\n- One unique description per URL\n- Roughly 150 to 160 characters\n- Restates the value proposition, not the title\n- Includes a soft CTA where natural\n- Treats the description as ad copy that earns the click\n\n### 3. Header structure\n- Exactly one H1 per page\n- H1 contains or paraphrases the primary query\n- H2 sections cover the major sub-topics\n- H3+ used only when an H2 has genuine sub-points\n- No skipped levels (no H2 followed by H4)\n- Headers describe sections accurately enough that a reader could navigate by them alone\n\n### 4. Body content\n- Opens with the primary user intent answered in the first paragraph\n- Covers the topic comprehensively (define your competition's depth, then match or exceed it)\n- Includes related entities and supporting concepts naturally\n- Avoids keyword stuffing (write for the reader, not the bot)\n- Reading level matches the audience (run a readability check)\n- Paragraphs short enough to scan on mobile (3 to 5 lines)\n\n### 5. Internal links\n- At least 2 to 3 outbound internal links to closely related pages\n- At least 2 to 3 inbound internal links from related pages\n- Anchor text is descriptive, not \"click here\" or \"learn more\"\n- Links to canonical URLs, not redirects\n- No broken internal links\n\n### 6. Images and media\n- Every meaningful image has descriptive alt text (skip alt for purely decorative images)\n- File names are descriptive (\"blue-running-shoe.jpg\" not \"IMG_4032.jpg\")\n- Modern format used where supported (WebP, AVIF)\n- Lazy loading on below-the-fold images\n- Width and height attributes set to prevent layout shift\n\n### 7. URL slug\n- Lowercase, hyphen-separated\n- Includes the primary query naturally (no stuffing)\n- Short (under 60 characters where possible)\n- No dates unless the page is genuinely time-bound\n- No session IDs, tracking parameters, or random hashes\n- Matches the site's URL pattern conventions\n\n### 8. On-page schema\n- Appropriate Schema.org type for the content (Article, Product, FAQPage, HowTo, Recipe, etc.)\n- Required properties filled (review Schema.org docs for the type)\n- Validates in Google's Rich Results Test or equivalent\n- Matches what is visible on the page (do not lie to crawlers)\n- Author and publisher schema linked correctly for content pages\n\n---\n\n## Workflow\n\n1. **Confirm the target query.** If unclear, ask. Do not optimize without one.\n2. **Render the page.** View it as a user would. Read the content top to bottom.\n3. **View the rendered HTML.** Inspect the actual served markup, not just the visual page. Check `<title>`, `<meta>`, headers, and schema in the source.\n4. **Run the 8-dimension framework.** Score each, note specific fixes.\n5. **Prioritize.** Group fixes into Critical (broken or missing), Important (suboptimal), and Nice-to-have (polish).\n6. **Write the report.** Use the template in [`references/audit-template.md`](references/audit-template.md).\n7. **Offer to draft fixes.** If the user wants, draft the new title, meta, headers, or copy directly.\n\n---\n\n## Failure patterns\n\nWhen you spot one of these, push back before delivering.\n\n- **\"Make it more SEO.\"** Vague. Ask for the target query and what's broken first.\n- **\"Add the keyword 5 times in the body.\"** Keyword density is not a real ranking signal. Prioritize relevance and topical depth instead.\n- **Optimizing a page that is not crawlable or indexable.** Check `seo-technical` first. No on-page work helps a noindexed page.\n- **Optimizing a page with no clear user intent.** A page that does not serve a real query will not rank no matter how well-tagged it is.\n- **Targeting the same query as another page on the site.** This is cannibalization. Use `seo-content-audit` to decide which page should rank.\n\n---\n\n## Output format\n\nDefault output is a markdown audit at `seo-audit-[page-slug].md` in the project root. Structure:\n\n1. Page summary (URL, target query, role)\n2. Score across 8 dimensions\n3. Critical fixes\n4. Important fixes\n5. Nice-to-have polish\n6. Drafted replacements (if requested)\n\nKeep audits under 1500 words. If a page needs more detail, link to deeper appendices.\n\n---\n\n## Reference files\n\n- [`references/audit-template.md`](references/audit-template.md) - Fillable audit template, copy and use.\n- [`references/onpage-checklist.md`](references/onpage-checklist.md) - Quick-reference checklist for the 8 dimensions.\n- [`references/title-and-meta-patterns.md`](references/title-and-meta-patterns.md) - Patterns for writing strong titles and meta descriptions.","tags":["seo","onpage","claude","skills","rampstackco","agent-skills","anthropic","awesome-claude-code","awesome-claude-prompts","awesome-claude-skills","claude-code","claude-skills"],"capabilities":["skill","source-rampstackco","skill-seo-onpage","topic-agent-skills","topic-anthropic","topic-awesome-claude-code","topic-awesome-claude-prompts","topic-awesome-claude-skills","topic-claude","topic-claude-code","topic-claude-skills","topic-good-first-issue","topic-mcp","topic-product-management","topic-seo"],"categories":["claude-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/rampstackco/claude-skills/seo-onpage","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add rampstackco/claude-skills","source_repo":"https://github.com/rampstackco/claude-skills","install_from":"skills.sh"}},"qualityScore":"0.540","qualityRationale":"deterministic score 0.54 from registry signals: · indexed on github topic:agent-skills · 181 github stars · SKILL.md body (5,962 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:55:20.798Z","embedding":null,"createdAt":"2026-04-30T01:01:30.696Z","updatedAt":"2026-05-18T18:55:20.798Z","lastSeenAt":"2026-05-18T18:55:20.798Z","tsv":"'1':246,648,900 '150':305 '1500':932 '160':307 '2':296,457,469,661,907 '3':332,448,459,471,677,912 '4':387,699,915 '5':450,452,710,785,918 '50':258 '6':498,727,924 '60':260,562 '7':546,737 '8':223,591,702,910,962 'accur':377 'across':254,909 'actual':684 'ad':326 'add':782 'agnost':70 'alon':386 'alt':507,510 'analysi':151 'anchor':478 'anoth':860 'answer':396 'appendic':943 'appropri':596 'articl':91,602 'ask':41,215,655,772 'attribut':540 'audienc':436 'audit':11,46,82,156,168,230,872,886,890,930,949 'author':638 'avif':528 'avoid':422 'back':764 'below-the-fold':532 'blue-running-shoe.jpg':519 'bodi':388,789 'bot':431 'bottom':676 'bound':575 'brand':272 'broken':495,716,780 'cannib':867 'canon':490 'charact':261,308,563 'check':440,692,813 'checklist':959 'clear':832 'click':63,331,483 'click-through':62 'close':464 'cms':74 'commerci':200 'competit':407 'competitor':149,155 'complet':226 'comprehens':6,67,404 'concept':420 'confirm':649 'contain':341 'content':22,106,167,177,389,601,645,673,871 'convent':590 'copi':327,753,951 'correct':643 'could':382 'cover':15,231,349,401 'crawl':131 'crawlabl':810 'crawler':66,637 'critic':715,913 'cta':319 'ctr':120 'date':567 'decid':874 'decis':163 'decor':513 'deeper':942 'default':881 'defin':405 'deliv':766 'densiti':791 'depth':409,802 'describ':375 'descript':19,101,298,301,324,481,506,518,973 'detail':939 'dimens':224,233,703,911,963 'direct':754 'distinct':280 'doc':613 'draft':176,740,746,925 'earn':278,329 'eight':232 'end':275 'enough':378,443 'entiti':417 'equival':625 'etc':607 'everi':502 'exact':335 'exceed':413 'fail':241 'failur':755 'faqpag':604 'file':515,945 'fill':610 'fillabl':948 'first':213,399,781,817 'fix':102,245,709,713,741,914,917 'fold':535 'follow':371 'format':523,880 'framework':75,222,704 'front':271 'genuin':362,572 'get':263 'googl':619 'group':712 'h1':283,337,340 'h2':347,360,370 'h3':355 'h4':373 'hash':583 'header':20,103,333,374,693,751 'height':539 'help':823 'hierarchi':107 'homepag':88 'howto':605 'html':681 'hygien':29 'hyphen':551 'hyphen-separ':550 'id':578 'ident':291 'imag':26,499,504,514,536 'img_4032.jpg':521 'import':719,916 'improv':116 'inbound':472 'includ':316,415,553 'inclus':279 'index':132,812 'inform':201 'input':170 'inspect':682 'instead':803 'intent':143,395,834 'intern':24,109,453,461,473,496 'issu':135 'keep':929 'keyword':140,148,212,423,784,790 'land':92 'launch':181 'layout':544 'lazi':529 'learn':486 'least':456,468 'level':368,433 'lie':635 'line':451 'link':25,110,454,462,474,488,497,642,940 'load':530 'longer':262 'lowercas':549 'major':351 'make':767 'mani':157 'map':144 'markdown':885 'markup':686 'match':411,434,584,626 'matter':848 'md':894 'meaning':503 'media':501 'meta':18,100,297,750,972 'miss':718 'mobil':447 'modern':522 'name':219,516 'natur':321,421,557 'navig':202,383 'near':269 'need':238,937 'new':748 'nice':723,920 'nice-to-hav':722,919 'noindex':825 'note':242,707 'offer':738 'often':284 'on-pag':7,31,47,51,227,592,819 'one':186,220,249,299,336,660,760 'onpag':3 'open':390 'optim':13,27,43,55,84,658,804,827 'outbound':460 'output':879,882 'page':9,33,45,49,53,58,87,90,93,115,118,158,172,189,194,229,339,466,477,570,594,632,646,664,691,806,821,826,829,836,861,876,892,901,936 'page-slug':891 'paragraph':400,441 'paramet':580 'paraphras':343 'pass':14,237 'pattern':589,756,966 'per':252,302,338 'phrase':187 'point':365 'polish':726,923 'possibl':565 'pre':180 'pre-launch':179 'prevent':543 'primari':183,267,345,393,555 'priorit':711,798 'product':89,603 'project':897 'properti':609 'proposit':312 'prune/merge':162 'publish':640 'pure':512 'push':763 'qualiti':23 'queri':185,206,268,346,556,652,776,843,858,905 'quick':957 'quick-refer':956 'random':582 'rank':191,796,846,878 'read':432,671 'readabl':439 'reader':381,428 'real':795,842 'recip':606 'redirect':493 'refer':944,958 'references/audit-template.md':735,736,946,947 'references/onpage-checklist.md':954,955 'references/title-and-meta-patterns.md':964,965 'relat':416,465,476 'relev':61,799 'render':662,680 'replac':926 'report':730 'request':928 'requir':169,608 'research':141 'restat':309 'result':123,622 'review':96,108,611 'rich':621 'role':196,906 'root':898 'rough':257,304 'run':4,209,437,700 'scan':445 'schema':34,595,641,695 'schema.org':597,612 'score':234,705,908 'search':60,122 'section':348,376 'seo':2,10,50,54,138,147,154,166,211,770,815,870,889 'seo-audit':888 'seo-competitor':153 'seo-content-audit':165,869 'seo-keyword':146,210 'seo-onpag':1 'seo-techn':137,814 'separ':552 'serp':150,266 'serv':685,840 'session':577 'set':541 'shift':545 'short':442,560 'signal':797 'similar':286 'singl':57,86 'site':78,129,199,256,586,864 'site-wid':128 'skill':37 'skill-seo-onpage' 'skip':367,509 'slug':548,893 'soft':318 'sourc':698 'source-rampstackco' 'specif':244,708 'speed':134 'spot':759 'stack':69 'stack-agnost':68 'static':77 'strong':969 'structur':21,104,334,899 'stuf':424,559 'sub':353,364 'sub-point':363 'sub-top':352 'suboptim':720 'summari':902 'support':419,526 'tag':17,98,248,852 'target':184,205,651,775,855,904 'technic':139,816 'templat':733,950 'test':623 'text':479,508 'time':574,786 'time-bound':573 'titl':16,97,247,251,315,749,970 'top':674 'topic':354,403,801 'topic-agent-skills' 'topic-anthropic' 'topic-awesome-claude-code' 'topic-awesome-claude-prompts' 'topic-awesome-claude-skills' 'topic-claude' 'topic-claude-code' 'topic-claude-skills' 'topic-good-first-issue' 'topic-mcp' 'topic-product-management' 'topic-seo' 'track':579 'treat':322 'truncat':264 'type':598,616 'unclear':654 'uniqu':250,300 'unknown':208 'unless':568 'url':28,173,253,303,491,547,588,903 'use':35,81,127,136,145,152,164,356,524,731,868,953 'user':40,217,394,669,744,833 'vagu':771 'valid':617 'valu':311 'view':665,678 'visibl':629 'visual':690 'want':745 'webp':527 'well':851 'well-tag':850 'whenev':38 'wide':130 'width':537 'without':659 'word':293,295,933 'word-for-word':292 'work':71,239,822 'workflow':647 'would':670 'write':94,425,728,968","prices":[{"id":"e592b947-177d-46f5-bbfb-b26635130cea","listingId":"36a54475-5097-42e1-8ae4-eb310d87750a","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"rampstackco","category":"claude-skills","install_from":"skills.sh"},"createdAt":"2026-04-30T01:01:30.696Z"}],"sources":[{"listingId":"36a54475-5097-42e1-8ae4-eb310d87750a","source":"github","sourceId":"rampstackco/claude-skills/seo-onpage","sourceUrl":"https://github.com/rampstackco/claude-skills/tree/main/skills/seo-onpage","isPrimary":false,"firstSeenAt":"2026-04-30T01:01:30.696Z","lastSeenAt":"2026-05-18T18:55:20.798Z"}],"details":{"listingId":"36a54475-5097-42e1-8ae4-eb310d87750a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"rampstackco","slug":"seo-onpage","github":{"repo":"rampstackco/claude-skills","stars":181,"topics":["agent-skills","anthropic","awesome-claude-code","awesome-claude-prompts","awesome-claude-skills","claude","claude-code","claude-skills","good-first-issue","mcp","product-management","seo","show-hn","showcase","showdev","web-design","web-development"],"license":"mit","html_url":"https://github.com/rampstackco/claude-skills","pushed_at":"2026-05-10T22:40:22Z","description":"Stack-agnostic Claude Skills covering the full website lifecycle: brand, design, content, SEO, dev, ops, growth, and research. Build, ship, audit, optimize.","skill_md_sha":"ae226feab3724b6e04e688f9732559c30b3ffb30","skill_md_path":"skills/seo-onpage/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/rampstackco/claude-skills/tree/main/skills/seo-onpage"},"layout":"multi","source":"github","category":"claude-skills","frontmatter":{"name":"seo-onpage","description":"Run a comprehensive on-page SEO audit or optimization pass covering title tags, meta descriptions, header structure, content quality, internal links, image optimization, URL hygiene, and on-page schema. Use this skill whenever the user asks to optimize a page, audit on-page SEO, fix titles or meta tags, review header structure, check internal linking, improve a single URL's search performance, or write SEO-friendly copy. Triggers on on-page SEO, page audit, title tag, meta description, H1, header structure, internal links, image alt, URL slug, page optimization, optimize this page, SEO this page. Also triggers for any single-page review where ranking, click-through, or relevance signal quality is the goal, even if the user does not say 'SEO' explicitly."},"skills_sh_url":"https://skills.sh/rampstackco/claude-skills/seo-onpage"},"updatedAt":"2026-05-18T18:55:20.798Z"}}