[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M751QN366ZWE4P702JM5K2K8":3,"skill-same:01M751QN366ZWE4P702JM5K2K8":49},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":26,"commitSha":27,"skillDirectory":28,"forksCount":29,"repositoryHtmlUrl":30,"repositoryHomepageUrl":31,"ownerHtmlUrl":32,"ownerBlogUrl":31,"ownerDescription":33,"updatedAt":34,"install":35,"resources":48},"01M751QN366ZWE4P702JM5K2K8","seo-optimizer",null,"Audits and rewrites a page for organic search - title and meta lengths, heading hierarchy, intent match, internal links, schema markup, and Core Web Vitals - and returns a prioritized fix list. Use when someone asks \"why isn't this page ranking\", \"audit my page for SEO\", \"rewrite my title and meta description\", \"does this need schema markup\", or before publishing a page that must earn organic traffic. Do NOT use for grouping keywords into topical clusters across a site - use keyword-cluster-builder instead; do NOT use for planning a site-wide internal-link architecture - use internal-linking-mapper instead; do NOT use for restructuring content into AI-answer-ready blocks - use aeo-answer-blockifier instead; do NOT use for deep page-speed engineering - use web-performance instead.","SkillMedev\u002Fskills","SkillMedev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F298078254?v=4","01M74ZSGTQ918CB0VXW4EG3RMX","SkillMe","01M74ZSGVBT497NA95CBT8JTY4",25,"MIT","https:\u002F\u002Fgithub.com\u002FSkillMedev\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fseo-optimizer\u002FSKILL.md",[],[],"2026-11-11 18:22:23",false,"---\nname: seo-optimizer\ndescription: Audits and rewrites a page for organic search - title and meta lengths, heading hierarchy, intent match, internal links, schema markup, and Core Web Vitals - and returns a prioritized fix list. Use when someone asks \"why isn't this page ranking\", \"audit my page for SEO\", \"rewrite my title and meta description\", \"does this need schema markup\", or before publishing a page that must earn organic traffic. Do NOT use for grouping keywords into topical clusters across a site - use keyword-cluster-builder instead; do NOT use for planning a site-wide internal-link architecture - use internal-linking-mapper instead; do NOT use for restructuring content into AI-answer-ready blocks - use aeo-answer-blockifier instead; do NOT use for deep page-speed engineering - use web-performance instead.\nmetadata:\n  title: \"SEO Optimizer\"\n---\n\n# SEO Optimizer\n\nImprove one page's organic visibility through content quality, technical signals, and structured data - without keyword stuffing. The costly mistake this prevents is optimizing the wrong layer: teams rewrite copy on a page whose title truncates in the SERP, whose intent mismatches the query, or that cannibalizes a sibling page, then conclude \"SEO doesn't work.\" Audit in order; fix the highest layer that fails first.\n\n## Operating procedure\n\nIntent comes before on-page elements, because a perfectly optimized page targeting the wrong intent cannot rank. On-page comes before schema and vitals, because rich results and speed amplify a page that already deserves to rank.\n\n### Step 1: Gather inputs\n\n1. The page URL or draft, and its one primary keyword. If the user has no primary keyword, that is the first deliverable - propose one and label it a guess.\n2. 2-4 semantic variants (default: derive from the primary).\n3. The intent behind the query: informational, navigational, or transactional. When unsure, check what currently ranks - the SERP is the ground truth for intent.\n4. Sibling pages targeting adjacent queries, to check cannibalization.\n\n### Step 2: Verify intent match\n\nMatch content type to intent: informational queries want guides and answers, transactional want product or category pages, navigational want the brand destination. If the page type contradicts the intent of its primary keyword, stop - no on-page fix rescues an intent mismatch; re-target or re-build. Each page must serve a distinct intent; consolidate cannibalizing pages rather than letting two half-strength pages split one query.\n\n### Step 3: Fix the head elements\n\n- Title tag: 50-60 characters - keep under 60 or the SERP truncates it; primary keyword near the front; unique per page.\n- Meta description: 140-155 characters, include a call to action. Not a ranking factor, but it is the ad copy that drives click-through.\n- URL slug: short, hyphenated, keyword-bearing, no stop words.\n\nBad: `Home | Acme Inc | Solutions, Products, Services, About Us and More` (74 chars, brand first, keyword nowhere).\nGood: `Standing Desk Buying Guide: Height, Stability, Price | Acme` (60 chars, keyword front-loaded).\n\n### Step 4: Fix the body structure\n\n1. Exactly one `\u003Ch1>` per page; logical `\u003Ch2>`\u002F`\u003Ch3>` hierarchy that a reader could skim as an outline.\n2. Answer the query in the first 100 words - this is what earns featured-snippet eligibility.\n3. Keyword usage: target the primary plus 2-4 semantic variants; keep density natural at roughly 0.5-1.5%. Optimize for topic coverage, not exact-match repetition.\n4. Internal links: 2-5 contextual links to related pages with descriptive anchor text (\"standing desk stability test\", never \"click here\"). For architecture across many pages, hand off to internal-linking-mapper.\n5. Image `alt` text describes the image for a reader who cannot see it - not a keyword slot.\n\n### Step 5: Add schema markup where it fits\n\nAdd JSON-LD in the `\u003Chead>`; use `Article`, `FAQPage`, `Product`, `BreadcrumbList`, and `HowTo` only where the visible content genuinely matches the type - schema describing content that is not on the page invites a manual action.\n\n```html\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"Standing Desk Buying Guide: Height, Stability, Price\",\n  \"author\": { \"@type\": \"Person\", \"name\": \"Jordan Lee\" },\n  \"datePublished\": \"[FILL: ISO date]\"\n}\n\u003C\u002Fscript>\n```\n\n### Step 6: Check Core Web Vitals\n\n- LCP under 2.5s: preload the hero image, serve next-gen formats, avoid render-blocking CSS.\n- CLS under 0.1: explicit width\u002Fheight on images; reserve space for ads and embeds.\n- INP under 200ms: break up long tasks, defer non-critical JS.\n\nFlag failures and hand deep remediation to web-performance.\n\n### Step 7: Check crawl hygiene\n\n- Canonicalize duplicates with `rel=\"canonical\"`; pagination uses self-referencing canonicals, not `rel=prev\u002Fnext` (deprecated).\n- JS-rendered content: confirm crawlers see the text - server-side rendering or dynamic rendering.\n- Migrations: 301-redirect old URLs one-to-one; never mass-redirect to the homepage.\n- XML sitemap submitted, under 50k URLs per file.\n\n## Deliverable\n\nProduce a page audit containing: the intent verdict, rewritten title and meta with character counts shown, the heading outline, a keyword-and-variant map with placement notes, 2-5 internal-link recommendations with anchor text, the JSON-LD block ready to paste, Core Web Vitals pass\u002Ffail against the three thresholds, and a prioritized fix list ordered by the layer that fails first.\n\n## Do NOT\n\n- Do not stuff or cloak - the helpful-content system demotes thin, spun pages, and recovery is slower than doing it right.\n- Do not ship a title over 60 characters or with the keyword at the end; truncation hides it exactly where it matters.\n- Do not write meta descriptions past 155 characters - the SERP cuts them mid-sentence.\n- Do not add schema for content the page does not visibly contain.\n- Do not let two pages target the same intent; the split kills both.\n- Do not treat this as site-wide strategy - clustering belongs to keyword-cluster-builder and link architecture to internal-linking-mapper.\n\n## Quality bar\n\n- Title 50-60 chars with the primary keyword front-loaded; meta 140-155 chars with a CTA; both counts stated in the deliverable.\n- The query is answered in the first 100 words.\n- One h1; every h2\u002Fh3 earns its place in the outline.\n- 2-5 internal links with descriptive anchors; zero \"click here\".\n- Schema validates and matches visible content.\n- Each fix in the list names its layer (intent, head, body, schema, vitals, crawl) so the user knows what moves rankings versus click-through.\n","# SEO Optimizer\n\nImprove one page's organic visibility through content quality, technical signals, and structured data - without keyword stuffing. The costly mistake this prevents is optimizing the wrong layer: teams rewrite copy on a page whose title truncates in the SERP, whose intent mismatches the query, or that cannibalizes a sibling page, then conclude \"SEO doesn't work.\" Audit in order; fix the highest layer that fails first.\n\n## Operating procedure\n\nIntent comes before on-page elements, because a perfectly optimized page targeting the wrong intent cannot rank. On-page comes before schema and vitals, because rich results and speed amplify a page that already deserves to rank.\n\n### Step 1: Gather inputs\n\n1. The page URL or draft, and its one primary keyword. If the user has no primary keyword, that is the first deliverable - propose one and label it a guess.\n2. 2-4 semantic variants (default: derive from the primary).\n3. The intent behind the query: informational, navigational, or transactional. When unsure, check what currently ranks - the SERP is the ground truth for intent.\n4. Sibling pages targeting adjacent queries, to check cannibalization.\n\n### Step 2: Verify intent match\n\nMatch content type to intent: informational queries want guides and answers, transactional want product or category pages, navigational want the brand destination. If the page type contradicts the intent of its primary keyword, stop - no on-page fix rescues an intent mismatch; re-target or re-build. Each page must serve a distinct intent; consolidate cannibalizing pages rather than letting two half-strength pages split one query.\n\n### Step 3: Fix the head elements\n\n- Title tag: 50-60 characters - keep under 60 or the SERP truncates it; primary keyword near the front; unique per page.\n- Meta description: 140-155 characters, include a call to action. Not a ranking factor, but it is the ad copy that drives click-through.\n- URL slug: short, hyphenated, keyword-bearing, no stop words.\n\nBad: `Home | Acme Inc | Solutions, Products, Services, About Us and More` (74 chars, brand first, keyword nowhere).\nGood: `Standing Desk Buying Guide: Height, Stability, Price | Acme` (60 chars, keyword front-loaded).\n\n### Step 4: Fix the body structure\n\n1. Exactly one `\u003Ch1>` per page; logical `\u003Ch2>`\u002F`\u003Ch3>` hierarchy that a reader could skim as an outline.\n2. Answer the query in the first 100 words - this is what earns featured-snippet eligibility.\n3. Keyword usage: target the primary plus 2-4 semantic variants; keep density natural at roughly 0.5-1.5%. Optimize for topic coverage, not exact-match repetition.\n4. Internal links: 2-5 contextual links to related pages with descriptive anchor text (\"standing desk stability test\", never \"click here\"). For architecture across many pages, hand off to internal-linking-mapper.\n5. Image `alt` text describes the image for a reader who cannot see it - not a keyword slot.\n\n### Step 5: Add schema markup where it fits\n\nAdd JSON-LD in the `\u003Chead>`; use `Article`, `FAQPage`, `Product`, `BreadcrumbList`, and `HowTo` only where the visible content genuinely matches the type - schema describing content that is not on the page invites a manual action.\n\n```html\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"Standing Desk Buying Guide: Height, Stability, Price\",\n  \"author\": { \"@type\": \"Person\", \"name\": \"Jordan Lee\" },\n  \"datePublished\": \"[FILL: ISO date]\"\n}\n\u003C\u002Fscript>\n```\n\n### Step 6: Check Core Web Vitals\n\n- LCP under 2.5s: preload the hero image, serve next-gen formats, avoid render-blocking CSS.\n- CLS under 0.1: explicit width\u002Fheight on images; reserve space for ads and embeds.\n- INP under 200ms: break up long tasks, defer non-critical JS.\n\nFlag failures and hand deep remediation to web-performance.\n\n### Step 7: Check crawl hygiene\n\n- Canonicalize duplicates with `rel=\"canonical\"`; pagination uses self-referencing canonicals, not `rel=prev\u002Fnext` (deprecated).\n- JS-rendered content: confirm crawlers see the text - server-side rendering or dynamic rendering.\n- Migrations: 301-redirect old URLs one-to-one; never mass-redirect to the homepage.\n- XML sitemap submitted, under 50k URLs per file.\n\n## Deliverable\n\nProduce a page audit containing: the intent verdict, rewritten title and meta with character counts shown, the heading outline, a keyword-and-variant map with placement notes, 2-5 internal-link recommendations with anchor text, the JSON-LD block ready to paste, Core Web Vitals pass\u002Ffail against the three thresholds, and a prioritized fix list ordered by the layer that fails first.\n\n## Do NOT\n\n- Do not stuff or cloak - the helpful-content system demotes thin, spun pages, and recovery is slower than doing it right.\n- Do not ship a title over 60 characters or with the keyword at the end; truncation hides it exactly where it matters.\n- Do not write meta descriptions past 155 characters - the SERP cuts them mid-sentence.\n- Do not add schema for content the page does not visibly contain.\n- Do not let two pages target the same intent; the split kills both.\n- Do not treat this as site-wide strategy - clustering belongs to keyword-cluster-builder and link architecture to internal-linking-mapper.\n\n## Quality bar\n\n- Title 50-60 chars with the primary keyword front-loaded; meta 140-155 chars with a CTA; both counts stated in the deliverable.\n- The query is answered in the first 100 words.\n- One h1; every h2\u002Fh3 earns its place in the outline.\n- 2-5 internal links with descriptive anchors; zero \"click here\".\n- Schema validates and matches visible content.\n- Each fix in the list names its layer (intent, head, body, schema, vitals, crawl) so the user knows what moves rankings versus click-through.\n",{"name":5,"metadata":24,"description":7},{"title":25},"SEO Optimizer","main","97a13607d669157a4a16d5ba79b77f208319f7b9","skills\u002Fseo-optimizer",3,"https:\u002F\u002Fgithub.com\u002FSkillMedev\u002Fskills","https:\u002F\u002Fskillme.dev","https:\u002F\u002Fgithub.com\u002FSkillMedev","MCP-native catalog of Claude Agent Skills. Browse, recommend, install, and auto-apply skills in chat. Open source, every skill free and clonable on GitHub.","2026-10-14 03:19:31",{"source":8,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add SkillMedev\u002Fskills --skill seo-optimizer",{"tool":41,"command":42},"bunx","bunx skills add SkillMedev\u002Fskills --skill seo-optimizer",{"tool":44,"command":45},"pnpm","pnpm dlx skills add SkillMedev\u002Fskills --skill seo-optimizer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSkillMedev\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fseo-optimizer\u002FSKILL.md",true,[],[50,60,67,74,81,88],{"skillNo":51,"name":52,"nameZh":53,"description":54,"descriptionZh":55,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":59},"01M75271B256DF3FX2VG5VRYEE","zone-2-cardio-plan","有氧运动计划","Use when someone asks to build a steady-state cardio plan, train an aerobic base or Zone 2, structure easy or endurance weekly cardio, train by heart-rate zones, or improve resting heart rate, VO2, or endurance. Builds a heart-rate-zone aerobic training block with session structure, modality choice, and progression. General fitness guidance, not medical advice. Do NOT use to design a strength or lifting program (use Strength Training Plan), high-intensity interval conditioning, HIIT, or circuits (use Conditioning & HIIT Program), or a mobility\u002Fflexibility routine (use Mobility Routine).","当有人要求制定稳态有氧训练计划、进行有氧基础训练或达到第二区间、安排轻松或耐力型的每周有氧训练、按心率区间训练，或提高静息心率、最大摄氧量或耐力时，可以使用此方案。该方案构建了一个包含训练计划结构、训练方式选择和进度安排的心率区间有氧训练模块。本方案仅提供一般健身指导，不构成医疗建议。请勿用于设计力量或举重训练计划（请使用力量训练计划）、高强度间歇训练 (HIIT) 或循环训练（请使用体能训练和 HIIT 计划），或灵活性\u002F柔韧性训练（请使用灵活性训练计划）。","https:\u002F\u002Fgithub.com\u002FSkillMedev\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzone-2-cardio-plan\u002FSKILL.md",[],[],"2026-11-11 18:27:18",{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":59},"01M7526VP1QBBKYBE17S1WR86Y","youtube-script-writer","Writes retention-engineered long-form YouTube scripts on a hook\u002Fbody\u002Fpayoff architecture - a first-30-seconds hook that survives the retention cliff, a beat-sheet body with mini-hooks and bridges, timed pattern interrupts, and a payoff that over-delivers - with B-roll and editing cues marked inline. Use when someone says \"script my next video\", \"my retention graph dies at the start\", \"tighten this draft\", or \"outline a video on X\". Do NOT use for the 3-second opener of TikTok, Reels, or Shorts - use video-hook-writer instead; do NOT use for spoken voiceover synced to on-screen tutorial actions - use narration-script instead; do NOT use for a sales demo built on a buyer's discovery notes - use demo-script instead; do NOT use to design the thumbnail and title - use thumbnail-concept instead.","https:\u002F\u002Fgithub.com\u002FSkillMedev\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-script-writer\u002FSKILL.md",[],[],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":59},"01M7526P2T0WKMHDXS4Q58237T","win-back-campaign","Designs segmented win-back email sequences for dormant users - dormancy tiers, a three-beat sequence with a single proportional incentive, and a suppression rule - and measures success by re-activation, not opens. Use when someone says \"our users went quiet\", \"design a win-back campaign\", \"how do I re-engage lapsed customers\", \"should we email people who haven't logged in for months\", or lifecycle messaging has stopped landing with a lapsed segment. Do NOT use for recovering an unfinished checkout - use abandoned-cart-sequence instead. Do NOT use for diagnosing and fixing why active customers cancel - use churn-reduction instead. Do NOT use for building always-on onboarding or nurture flows - use email-drip-builder instead.","https:\u002F\u002Fgithub.com\u002FSkillMedev\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fwin-back-campaign\u002FSKILL.md",[],[],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":59},"01M7526HF2RCDJ50P93WRZRHVV","wikipedia-style","Writes neutral, verifiable, encyclopedic prose following Wikipedia's core content policies and manual of style - NPOV, inline citations, notability-backed claims, and a strict ban on promotional language. Use when someone asks \"write this like a Wikipedia article\", \"draft a Wikipedia page for this company or person\", \"make this neutral and encyclopedic\", or \"why does my article draft keep getting rejected\". Do NOT use for persuasive or opinion writing - use op-ed-writer instead; for thesis-driven academic papers, use academic-essay; for verifying claims in existing text, use fact-checker.","https:\u002F\u002Fgithub.com\u002FSkillMedev\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fwikipedia-style\u002FSKILL.md",[],[],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":59},"01M7526D43CTGRKGKNQ2GB0KVX","whitepapers","Structures and writes authoritative B2B whitepapers - a standalone executive summary, a data-sized problem statement, methodology, evidence-driven findings, recommendations, and a soft call to action - flagging every claim that needs a real citation. Use when a marketer asks \"write a whitepaper on this topic\", \"turn our research into a lead-gen asset\", \"make this credible enough for executives\", or a draft reads like a product pitch instead of analysis. Do NOT use for customer-story-driven proof - use case-study-builder instead; for policy audiences, use policy-brief.","https:\u002F\u002Fgithub.com\u002FSkillMedev\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fwhitepapers\u002FSKILL.md",[],[],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":59},"01M75268423Y3K50SY5WC2NX2G","white-space-analysis","Finds unmet market gaps by ranking jobs-to-be-done on importance versus satisfaction, overlaying them against current solutions and workarounds, and validating that each gap is real, winnable, and worth winning. Use when someone asks \"where are the gaps in this market\", \"what's underserved here\", \"where should we play next\", or is hunting for product, feature, or market-entry opportunities. Do NOT use for profiling competitors and building battle cards - use competitive-intelligence instead; for putting a dollar figure on an identified opportunity - use market-sizing instead; for extracting jobs-to-be-done from raw customer interviews - use jtbd-extractor instead.","https:\u002F\u002Fgithub.com\u002FSkillMedev\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fwhite-space-analysis\u002FSKILL.md",[],[]]