[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6J5WCW77WZDF8TDPJ470W5G":3,"skill-same:01M6J5WCW77WZDF8TDPJ470W5G":83},{"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":31,"publishedAt":51,"linkOnly":52,"markdownContent":53,"markdownBody":54,"frontMatter":55,"refName":60,"commitSha":61,"skillDirectory":62,"forksCount":63,"repositoryHtmlUrl":64,"repositoryHomepageUrl":65,"ownerHtmlUrl":66,"ownerBlogUrl":6,"ownerDescription":67,"updatedAt":68,"install":69,"resources":82},"01M6J5WCW77WZDF8TDPJ470W5G","seo",null,"Optimize for search engine visibility and ranking. Use when asked to \"improve SEO\", \"optimize for search\", \"fix meta tags\", \"add structured data\", \"sitemap optimization\", or \"search engine optimization\".","onfire7777\u002Funiversal-ai-skills-library","onfire7777","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F240866566?v=4","01M6HZJCF2QEW8DY7HE1JDKGK2","Jake B","01M6HZJCKK8SEXKN76V9SGKZ12",17,"MIT","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fseo\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000019","营销推广","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000035","市场营销","PROFESSION","适用职业",[5,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],"quality","for","sitemap","add","tags","ranking","structured","optimize","use","fix","structured data","engine","improve","Meta Tags","Meta","data","Optimization","search","web","2026-11-10 10:12:30",false,"---\nname: seo\nlicense: MIT\ndescription: Optimize for search engine visibility and ranking. Use when asked to \"improve SEO\", \"optimize for search\", \"fix meta tags\", \"add structured data\", \"sitemap optimization\", or \"search engine optimization\".\nmetadata:\n  metadata:\n    author: web-quality-skills\n    version: '1.0'\n---\n# SEO optimization\n\nSearch engine optimization based on Lighthouse SEO audits and Google Search guidelines. Focus on technical SEO, on-page optimization, and structured data.\n\n## SEO fundamentals\n\nSearch ranking factors (approximate influence):\n\n| Factor | Influence | This Skill |\n|--------|-----------|------------|\n| Content quality & relevance | ~40% | Partial (structure) |\n| Backlinks & authority | ~25% | ✗ |\n| Technical SEO | ~15% | ✓ |\n| Page experience (Core Web Vitals) | ~10% | See [Core Web Vitals](..\u002Fcore-web-vitals\u002FSKILL.md) |\n| On-page SEO | ~10% | ✓ |\n\n---\n\n## Technical SEO\n\n### Crawlability\n\n**robots.txt:**\n```text\n# \u002Frobots.txt\nUser-agent: *\nAllow: \u002F\n\n# Block admin\u002Fprivate areas\nDisallow: \u002Fadmin\u002F\nDisallow: \u002Fapi\u002F\nDisallow: \u002Fprivate\u002F\n\n# Don't block resources needed for rendering\n# ❌ Disallow: \u002Fstatic\u002F\n\nSitemap: https:\u002F\u002Fexample.com\u002Fsitemap.xml\n```\n\n**Meta robots:**\n```html\n\u003C!-- Default: indexable, followable -->\n\u003Cmeta name=\"robots\" content=\"index, follow\">\n\n\u003C!-- Noindex specific pages -->\n\u003Cmeta name=\"robots\" content=\"noindex, nofollow\">\n\n\u003C!-- Indexable but don't follow links -->\n\u003Cmeta name=\"robots\" content=\"index, nofollow\">\n\n\u003C!-- Control snippets -->\n\u003Cmeta name=\"robots\" content=\"max-snippet:150, max-image-preview:large\">\n```\n\n**Canonical URLs:**\n```html\n\u003C!-- Prevent duplicate content issues -->\n\u003Clink rel=\"canonical\" href=\"https:\u002F\u002Fexample.com\u002Fpage\">\n\n\u003C!-- Self-referencing canonical (recommended) -->\n\u003Clink rel=\"canonical\" href=\"https:\u002F\u002Fexample.com\u002Fcurrent-page\">\n\n\u003C!-- For paginated content -->\n\u003Clink rel=\"canonical\" href=\"https:\u002F\u002Fexample.com\u002Fproducts\">\n\u003C!-- Or use rel=\"prev\" \u002F rel=\"next\" for explicit pagination -->\n```\n\n### XML sitemap\n\n```xml\n\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003Curlset xmlns=\"http:\u002F\u002Fwww.sitemaps.org\u002Fschemas\u002Fsitemap\u002F0.9\">\n  \u003Curl>\n    \u003Cloc>https:\u002F\u002Fexample.com\u002F\u003C\u002Floc>\n    \u003Clastmod>2024-01-15\u003C\u002Flastmod>\n    \u003Cchangefreq>daily\u003C\u002Fchangefreq>\n    \u003Cpriority>1.0\u003C\u002Fpriority>\n  \u003C\u002Furl>\n  \u003Curl>\n    \u003Cloc>https:\u002F\u002Fexample.com\u002Fproducts\u003C\u002Floc>\n    \u003Clastmod>2024-01-14\u003C\u002Flastmod>\n    \u003Cchangefreq>weekly\u003C\u002Fchangefreq>\n    \u003Cpriority>0.8\u003C\u002Fpriority>\n  \u003C\u002Furl>\n\u003C\u002Furlset>\n```\n\n**Sitemap best practices:**\n- Maximum 50,000 URLs or 50MB per sitemap\n- Use sitemap index for larger sites\n- Include only canonical, indexable URLs\n- Update `lastmod` when content changes\n- Submit to Google Search Console\n\n### URL structure\n\n```\n✅ Good URLs:\nhttps:\u002F\u002Fexample.com\u002Fproducts\u002Fblue-widget\nhttps:\u002F\u002Fexample.com\u002Fblog\u002Fhow-to-use-widgets\n\n❌ Poor URLs:\nhttps:\u002F\u002Fexample.com\u002Fp?id=12345\nhttps:\u002F\u002Fexample.com\u002Fproducts\u002Fitem\u002Fcategory\u002Fsubcategory\u002Fblue-widget-2024-sale-discount\n```\n\n**URL guidelines:**\n- Use hyphens, not underscores\n- Lowercase only\n- Keep short (\u003C 75 characters)\n- Include target keywords naturally\n- Avoid parameters when possible\n- Use HTTPS always\n\n### HTTPS & security\n\n```html\n\u003C!-- Ensure all resources use HTTPS -->\n\u003Cimg src=\"https:\u002F\u002Fexample.com\u002Fimage.jpg\">\n\n\u003C!-- Not: -->\n\u003Cimg src=\"http:\u002F\u002Fexample.com\u002Fimage.jpg\">\n```\n\n**Security headers for SEO trust signals:**\n```\nStrict-Transport-Security: max-age=31536000; includeSubDomains\nX-Content-Type-Options: nosniff\nX-Frame-Options: DENY\n```\n\n---\n\n## On-page SEO\n\n### Title tags\n\n```html\n\u003C!-- ❌ Missing or generic -->\n\u003Ctitle>Page\u003C\u002Ftitle>\n\u003Ctitle>Home\u003C\u002Ftitle>\n\n\u003C!-- ✅ Descriptive with primary keyword -->\n\u003Ctitle>Blue Widgets for Sale | Premium Quality | Example Store\u003C\u002Ftitle>\n```\n\n**Title tag guidelines:**\n- 50-60 characters (Google truncates ~60)\n- Primary keyword near the beginning\n- Unique for every page\n- Brand name at end (unless homepage)\n- Action-oriented when appropriate\n\n### Meta descriptions\n\n```html\n\u003C!-- ❌ Missing or duplicate -->\n\u003Cmeta name=\"description\" content=\"\">\n\n\u003C!-- ✅ Compelling and unique -->\n\u003Cmeta name=\"description\" content=\"Shop premium blue widgets with free shipping. 30-day returns. Rated 4.9\u002F5 by 10,000+ customers. Order today and save 20%.\">\n```\n\n**Meta description guidelines:**\n- 150-160 characters\n- Include primary keyword naturally\n- Compelling call-to-action\n- Unique for every page\n- Matches page content\n\n### Heading structure\n\n```html\n\u003C!-- ❌ Poor structure -->\n\u003Ch2>Welcome to Our Store\u003C\u002Fh2>\n\u003Ch4>Products\u003C\u002Fh4>\n\u003Ch1>Contact Us\u003C\u002Fh1>\n\n\u003C!-- ✅ Proper hierarchy -->\n\u003Ch1>Blue Widgets - Premium Quality\u003C\u002Fh1>\n  \u003Ch2>Product Features\u003C\u002Fh2>\n    \u003Ch3>Durability\u003C\u002Fh3>\n    \u003Ch3>Design\u003C\u002Fh3>\n  \u003Ch2>Customer Reviews\u003C\u002Fh2>\n  \u003Ch2>Pricing\u003C\u002Fh2>\n```\n\n**Heading guidelines:**\n- Single `\u003Ch1>` per page (the main topic)\n- Logical hierarchy (don't skip levels)\n- Include keywords naturally\n- Descriptive, not generic\n\n### Image SEO\n\n```html\n\u003C!-- ❌ Poor image SEO -->\n\u003Cimg src=\"IMG_12345.jpg\">\n\n\u003C!-- ✅ Optimized image -->\n\u003Cimg src=\"blue-widget-product-photo.webp\"\n     alt=\"Blue widget with chrome finish, side view showing control panel\"\n     width=\"800\"\n     height=\"600\"\n     loading=\"lazy\">\n```\n\n**Image guidelines:**\n- Descriptive filenames with keywords\n- Alt text describes the image content\n- Compressed and properly sized\n- WebP\u002FAVIF with fallbacks\n- Lazy load below-fold images\n\n### Internal linking\n\n```html\n\u003C!-- ❌ Non-descriptive -->\n\u003Ca href=\"\u002Fproducts\">Click here\u003C\u002Fa>\n\u003Ca href=\"\u002Fwidgets\">Read more\u003C\u002Fa>\n\n\u003C!-- ✅ Descriptive anchor text -->\n\u003Ca href=\"\u002Fproducts\u002Fblue-widgets\">Browse our blue widget collection\u003C\u002Fa>\n\u003Ca href=\"\u002Fguides\u002Fwidget-maintenance\">Learn how to maintain your widgets\u003C\u002Fa>\n```\n\n**Linking guidelines:**\n- Descriptive anchor text with keywords\n- Link to relevant internal pages\n- Reasonable number of links per page\n- Fix broken links promptly\n- Use breadcrumbs for hierarchy\n\n---\n\n## Structured data (JSON-LD)\n\n### Organization\n\n```html\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"Example Company\",\n  \"url\": \"https:\u002F\u002Fexample.com\",\n  \"logo\": \"https:\u002F\u002Fexample.com\u002Flogo.png\",\n  \"sameAs\": [\n    \"https:\u002F\u002Ftwitter.com\u002Fexample\",\n    \"https:\u002F\u002Flinkedin.com\u002Fcompany\u002Fexample\"\n  ],\n  \"contactPoint\": {\n    \"@type\": \"ContactPoint\",\n    \"telephone\": \"+1-555-123-4567\",\n    \"contactType\": \"customer service\"\n  }\n}\n\u003C\u002Fscript>\n```\n\n### Article\n\n```html\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"How to Choose the Right Widget\",\n  \"description\": \"Complete guide to selecting widgets for your needs.\",\n  \"image\": \"https:\u002F\u002Fexample.com\u002Farticle-image.jpg\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"Jane Smith\",\n    \"url\": \"https:\u002F\u002Fexample.com\u002Fauthors\u002Fjane-smith\"\n  },\n  \"publisher\": {\n    \"@type\": \"Organization\",\n    \"name\": \"Example Blog\",\n    \"logo\": {\n      \"@type\": \"ImageObject\",\n      \"url\": \"https:\u002F\u002Fexample.com\u002Flogo.png\"\n    }\n  },\n  \"datePublished\": \"2024-01-15\",\n  \"dateModified\": \"2024-01-20\"\n}\n\u003C\u002Fscript>\n```\n\n### Product\n\n```html\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"Blue Widget Pro\",\n  \"image\": \"https:\u002F\u002Fexample.com\u002Fblue-widget.jpg\",\n  \"description\": \"Premium blue widget with advanced features.\",\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"WidgetCo\"\n  },\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"price\": \"49.99\",\n    \"priceCurrency\": \"USD\",\n    \"availability\": \"https:\u002F\u002Fschema.org\u002FInStock\",\n    \"url\": \"https:\u002F\u002Fexample.com\u002Fproducts\u002Fblue-widget\"\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"4.8\",\n    \"reviewCount\": \"1250\"\n  }\n}\n\u003C\u002Fscript>\n```\n\n### FAQ\n\n```html\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What colors are available?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Our widgets come in blue, red, and green.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is the warranty?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"All widgets include a 2-year warranty.\"\n      }\n    }\n  ]\n}\n\u003C\u002Fscript>\n```\n\n### Breadcrumbs\n\n```html\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 1,\n      \"name\": \"Home\",\n      \"item\": \"https:\u002F\u002Fexample.com\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 2,\n      \"name\": \"Products\",\n      \"item\": \"https:\u002F\u002Fexample.com\u002Fproducts\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 3,\n      \"name\": \"Blue Widgets\",\n      \"item\": \"https:\u002F\u002Fexample.com\u002Fproducts\u002Fblue-widgets\"\n    }\n  ]\n}\n\u003C\u002Fscript>\n```\n\n### Validation\n\nTest structured data at:\n- [Google Rich Results Test](https:\u002F\u002Fsearch.google.com\u002Ftest\u002Frich-results)\n- [Schema.org Validator](https:\u002F\u002Fvalidator.schema.org\u002F)\n\n---\n\n## Mobile SEO\n\n### Responsive design\n\n```html\n\u003C!-- ❌ Not mobile-friendly -->\n\u003Cmeta name=\"viewport\" content=\"width=1024\">\n\n\u003C!-- ✅ Responsive viewport -->\n\u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n```\n\n### Tap targets\n\n```css\n\u002F* ❌ Too small for mobile *\u002F\n.small-link {\n  padding: 4px;\n  font-size: 12px;\n}\n\n\u002F* ✅ Adequate tap target *\u002F\n.mobile-friendly-link {\n  padding: 12px;\n  font-size: 16px;\n  min-height: 48px;\n  min-width: 48px;\n}\n```\n\n### Font sizes\n\n```css\n\u002F* ❌ Too small on mobile *\u002F\nbody {\n  font-size: 10px;\n}\n\n\u002F* ✅ Readable without zooming *\u002F\nbody {\n  font-size: 16px;\n  line-height: 1.5;\n}\n```\n\n---\n\n## International SEO\n\n### Hreflang tags\n\n```html\n\u003C!-- For multi-language sites -->\n\u003Clink rel=\"alternate\" hreflang=\"en\" href=\"https:\u002F\u002Fexample.com\u002Fpage\">\n\u003Clink rel=\"alternate\" hreflang=\"es\" href=\"https:\u002F\u002Fexample.com\u002Fes\u002Fpage\">\n\u003Clink rel=\"alternate\" hreflang=\"fr\" href=\"https:\u002F\u002Fexample.com\u002Ffr\u002Fpage\">\n\u003Clink rel=\"alternate\" hreflang=\"x-default\" href=\"https:\u002F\u002Fexample.com\u002Fpage\">\n```\n\n### Language declaration\n\n```html\n\u003Chtml lang=\"en\">\n\u003C!-- or -->\n\u003Chtml lang=\"es-MX\">\n```\n\n---\n\n## SEO audit checklist\n\n### Critical\n- [ ] HTTPS enabled\n- [ ] robots.txt allows crawling\n- [ ] No `noindex` on important pages\n- [ ] Title tags present and unique\n- [ ] Single `\u003Ch1>` per page\n\n### High priority\n- [ ] Meta descriptions present\n- [ ] Sitemap submitted\n- [ ] Canonical URLs set\n- [ ] Mobile-responsive\n- [ ] Core Web Vitals passing\n\n### Medium priority\n- [ ] Structured data implemented\n- [ ] Internal linking strategy\n- [ ] Image alt text\n- [ ] Descriptive URLs\n- [ ] Breadcrumb navigation\n\n### Ongoing\n- [ ] Fix crawl errors in Search Console\n- [ ] Update sitemap when content changes\n- [ ] Monitor ranking changes\n- [ ] Check for broken links\n- [ ] Review Search Console insights\n\n---\n\n## Tools\n\n| Tool | Use |\n|------|-----|\n| Google Search Console | Monitor indexing, fix issues |\n| Google PageSpeed Insights | Performance + Core Web Vitals |\n| Rich Results Test | Validate structured data |\n| Lighthouse | Full SEO audit |\n| Screaming Frog | Crawl analysis |\n\n## References\n\n- [Google Search Central](https:\u002F\u002Fdevelopers.google.com\u002Fsearch)\n- [Schema.org](https:\u002F\u002Fschema.org\u002F)\n- [Core Web Vitals](..\u002Fcore-web-vitals\u002FSKILL.md)\n- [Web Quality Audit](..\u002Fweb-quality-audit\u002FSKILL.md)\n","# SEO optimization\n\nSearch engine optimization based on Lighthouse SEO audits and Google Search guidelines. Focus on technical SEO, on-page optimization, and structured data.\n\n## SEO fundamentals\n\nSearch ranking factors (approximate influence):\n\n| Factor | Influence | This Skill |\n|--------|-----------|------------|\n| Content quality & relevance | ~40% | Partial (structure) |\n| Backlinks & authority | ~25% | ✗ |\n| Technical SEO | ~15% | ✓ |\n| Page experience (Core Web Vitals) | ~10% | See [Core Web Vitals](..\u002Fcore-web-vitals\u002FSKILL.md) |\n| On-page SEO | ~10% | ✓ |\n\n---\n\n## Technical SEO\n\n### Crawlability\n\n**robots.txt:**\n```text\n# \u002Frobots.txt\nUser-agent: *\nAllow: \u002F\n\n# Block admin\u002Fprivate areas\nDisallow: \u002Fadmin\u002F\nDisallow: \u002Fapi\u002F\nDisallow: \u002Fprivate\u002F\n\n# Don't block resources needed for rendering\n# ❌ Disallow: \u002Fstatic\u002F\n\nSitemap: https:\u002F\u002Fexample.com\u002Fsitemap.xml\n```\n\n**Meta robots:**\n```html\n\u003C!-- Default: indexable, followable -->\n\u003Cmeta name=\"robots\" content=\"index, follow\">\n\n\u003C!-- Noindex specific pages -->\n\u003Cmeta name=\"robots\" content=\"noindex, nofollow\">\n\n\u003C!-- Indexable but don't follow links -->\n\u003Cmeta name=\"robots\" content=\"index, nofollow\">\n\n\u003C!-- Control snippets -->\n\u003Cmeta name=\"robots\" content=\"max-snippet:150, max-image-preview:large\">\n```\n\n**Canonical URLs:**\n```html\n\u003C!-- Prevent duplicate content issues -->\n\u003Clink rel=\"canonical\" href=\"https:\u002F\u002Fexample.com\u002Fpage\">\n\n\u003C!-- Self-referencing canonical (recommended) -->\n\u003Clink rel=\"canonical\" href=\"https:\u002F\u002Fexample.com\u002Fcurrent-page\">\n\n\u003C!-- For paginated content -->\n\u003Clink rel=\"canonical\" href=\"https:\u002F\u002Fexample.com\u002Fproducts\">\n\u003C!-- Or use rel=\"prev\" \u002F rel=\"next\" for explicit pagination -->\n```\n\n### XML sitemap\n\n```xml\n\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003Curlset xmlns=\"http:\u002F\u002Fwww.sitemaps.org\u002Fschemas\u002Fsitemap\u002F0.9\">\n  \u003Curl>\n    \u003Cloc>https:\u002F\u002Fexample.com\u002F\u003C\u002Floc>\n    \u003Clastmod>2024-01-15\u003C\u002Flastmod>\n    \u003Cchangefreq>daily\u003C\u002Fchangefreq>\n    \u003Cpriority>1.0\u003C\u002Fpriority>\n  \u003C\u002Furl>\n  \u003Curl>\n    \u003Cloc>https:\u002F\u002Fexample.com\u002Fproducts\u003C\u002Floc>\n    \u003Clastmod>2024-01-14\u003C\u002Flastmod>\n    \u003Cchangefreq>weekly\u003C\u002Fchangefreq>\n    \u003Cpriority>0.8\u003C\u002Fpriority>\n  \u003C\u002Furl>\n\u003C\u002Furlset>\n```\n\n**Sitemap best practices:**\n- Maximum 50,000 URLs or 50MB per sitemap\n- Use sitemap index for larger sites\n- Include only canonical, indexable URLs\n- Update `lastmod` when content changes\n- Submit to Google Search Console\n\n### URL structure\n\n```\n✅ Good URLs:\nhttps:\u002F\u002Fexample.com\u002Fproducts\u002Fblue-widget\nhttps:\u002F\u002Fexample.com\u002Fblog\u002Fhow-to-use-widgets\n\n❌ Poor URLs:\nhttps:\u002F\u002Fexample.com\u002Fp?id=12345\nhttps:\u002F\u002Fexample.com\u002Fproducts\u002Fitem\u002Fcategory\u002Fsubcategory\u002Fblue-widget-2024-sale-discount\n```\n\n**URL guidelines:**\n- Use hyphens, not underscores\n- Lowercase only\n- Keep short (\u003C 75 characters)\n- Include target keywords naturally\n- Avoid parameters when possible\n- Use HTTPS always\n\n### HTTPS & security\n\n```html\n\u003C!-- Ensure all resources use HTTPS -->\n\u003Cimg src=\"https:\u002F\u002Fexample.com\u002Fimage.jpg\">\n\n\u003C!-- Not: -->\n\u003Cimg src=\"http:\u002F\u002Fexample.com\u002Fimage.jpg\">\n```\n\n**Security headers for SEO trust signals:**\n```\nStrict-Transport-Security: max-age=31536000; includeSubDomains\nX-Content-Type-Options: nosniff\nX-Frame-Options: DENY\n```\n\n---\n\n## On-page SEO\n\n### Title tags\n\n```html\n\u003C!-- ❌ Missing or generic -->\n\u003Ctitle>Page\u003C\u002Ftitle>\n\u003Ctitle>Home\u003C\u002Ftitle>\n\n\u003C!-- ✅ Descriptive with primary keyword -->\n\u003Ctitle>Blue Widgets for Sale | Premium Quality | Example Store\u003C\u002Ftitle>\n```\n\n**Title tag guidelines:**\n- 50-60 characters (Google truncates ~60)\n- Primary keyword near the beginning\n- Unique for every page\n- Brand name at end (unless homepage)\n- Action-oriented when appropriate\n\n### Meta descriptions\n\n```html\n\u003C!-- ❌ Missing or duplicate -->\n\u003Cmeta name=\"description\" content=\"\">\n\n\u003C!-- ✅ Compelling and unique -->\n\u003Cmeta name=\"description\" content=\"Shop premium blue widgets with free shipping. 30-day returns. Rated 4.9\u002F5 by 10,000+ customers. Order today and save 20%.\">\n```\n\n**Meta description guidelines:**\n- 150-160 characters\n- Include primary keyword naturally\n- Compelling call-to-action\n- Unique for every page\n- Matches page content\n\n### Heading structure\n\n```html\n\u003C!-- ❌ Poor structure -->\n\u003Ch2>Welcome to Our Store\u003C\u002Fh2>\n\u003Ch4>Products\u003C\u002Fh4>\n\u003Ch1>Contact Us\u003C\u002Fh1>\n\n\u003C!-- ✅ Proper hierarchy -->\n\u003Ch1>Blue Widgets - Premium Quality\u003C\u002Fh1>\n  \u003Ch2>Product Features\u003C\u002Fh2>\n    \u003Ch3>Durability\u003C\u002Fh3>\n    \u003Ch3>Design\u003C\u002Fh3>\n  \u003Ch2>Customer Reviews\u003C\u002Fh2>\n  \u003Ch2>Pricing\u003C\u002Fh2>\n```\n\n**Heading guidelines:**\n- Single `\u003Ch1>` per page (the main topic)\n- Logical hierarchy (don't skip levels)\n- Include keywords naturally\n- Descriptive, not generic\n\n### Image SEO\n\n```html\n\u003C!-- ❌ Poor image SEO -->\n\u003Cimg src=\"IMG_12345.jpg\">\n\n\u003C!-- ✅ Optimized image -->\n\u003Cimg src=\"blue-widget-product-photo.webp\"\n     alt=\"Blue widget with chrome finish, side view showing control panel\"\n     width=\"800\"\n     height=\"600\"\n     loading=\"lazy\">\n```\n\n**Image guidelines:**\n- Descriptive filenames with keywords\n- Alt text describes the image content\n- Compressed and properly sized\n- WebP\u002FAVIF with fallbacks\n- Lazy load below-fold images\n\n### Internal linking\n\n```html\n\u003C!-- ❌ Non-descriptive -->\n\u003Ca href=\"\u002Fproducts\">Click here\u003C\u002Fa>\n\u003Ca href=\"\u002Fwidgets\">Read more\u003C\u002Fa>\n\n\u003C!-- ✅ Descriptive anchor text -->\n\u003Ca href=\"\u002Fproducts\u002Fblue-widgets\">Browse our blue widget collection\u003C\u002Fa>\n\u003Ca href=\"\u002Fguides\u002Fwidget-maintenance\">Learn how to maintain your widgets\u003C\u002Fa>\n```\n\n**Linking guidelines:**\n- Descriptive anchor text with keywords\n- Link to relevant internal pages\n- Reasonable number of links per page\n- Fix broken links promptly\n- Use breadcrumbs for hierarchy\n\n---\n\n## Structured data (JSON-LD)\n\n### Organization\n\n```html\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"Example Company\",\n  \"url\": \"https:\u002F\u002Fexample.com\",\n  \"logo\": \"https:\u002F\u002Fexample.com\u002Flogo.png\",\n  \"sameAs\": [\n    \"https:\u002F\u002Ftwitter.com\u002Fexample\",\n    \"https:\u002F\u002Flinkedin.com\u002Fcompany\u002Fexample\"\n  ],\n  \"contactPoint\": {\n    \"@type\": \"ContactPoint\",\n    \"telephone\": \"+1-555-123-4567\",\n    \"contactType\": \"customer service\"\n  }\n}\n\u003C\u002Fscript>\n```\n\n### Article\n\n```html\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"How to Choose the Right Widget\",\n  \"description\": \"Complete guide to selecting widgets for your needs.\",\n  \"image\": \"https:\u002F\u002Fexample.com\u002Farticle-image.jpg\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"Jane Smith\",\n    \"url\": \"https:\u002F\u002Fexample.com\u002Fauthors\u002Fjane-smith\"\n  },\n  \"publisher\": {\n    \"@type\": \"Organization\",\n    \"name\": \"Example Blog\",\n    \"logo\": {\n      \"@type\": \"ImageObject\",\n      \"url\": \"https:\u002F\u002Fexample.com\u002Flogo.png\"\n    }\n  },\n  \"datePublished\": \"2024-01-15\",\n  \"dateModified\": \"2024-01-20\"\n}\n\u003C\u002Fscript>\n```\n\n### Product\n\n```html\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"Blue Widget Pro\",\n  \"image\": \"https:\u002F\u002Fexample.com\u002Fblue-widget.jpg\",\n  \"description\": \"Premium blue widget with advanced features.\",\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"WidgetCo\"\n  },\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"price\": \"49.99\",\n    \"priceCurrency\": \"USD\",\n    \"availability\": \"https:\u002F\u002Fschema.org\u002FInStock\",\n    \"url\": \"https:\u002F\u002Fexample.com\u002Fproducts\u002Fblue-widget\"\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"4.8\",\n    \"reviewCount\": \"1250\"\n  }\n}\n\u003C\u002Fscript>\n```\n\n### FAQ\n\n```html\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What colors are available?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Our widgets come in blue, red, and green.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is the warranty?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"All widgets include a 2-year warranty.\"\n      }\n    }\n  ]\n}\n\u003C\u002Fscript>\n```\n\n### Breadcrumbs\n\n```html\n\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 1,\n      \"name\": \"Home\",\n      \"item\": \"https:\u002F\u002Fexample.com\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 2,\n      \"name\": \"Products\",\n      \"item\": \"https:\u002F\u002Fexample.com\u002Fproducts\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 3,\n      \"name\": \"Blue Widgets\",\n      \"item\": \"https:\u002F\u002Fexample.com\u002Fproducts\u002Fblue-widgets\"\n    }\n  ]\n}\n\u003C\u002Fscript>\n```\n\n### Validation\n\nTest structured data at:\n- [Google Rich Results Test](https:\u002F\u002Fsearch.google.com\u002Ftest\u002Frich-results)\n- [Schema.org Validator](https:\u002F\u002Fvalidator.schema.org\u002F)\n\n---\n\n## Mobile SEO\n\n### Responsive design\n\n```html\n\u003C!-- ❌ Not mobile-friendly -->\n\u003Cmeta name=\"viewport\" content=\"width=1024\">\n\n\u003C!-- ✅ Responsive viewport -->\n\u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n```\n\n### Tap targets\n\n```css\n\u002F* ❌ Too small for mobile *\u002F\n.small-link {\n  padding: 4px;\n  font-size: 12px;\n}\n\n\u002F* ✅ Adequate tap target *\u002F\n.mobile-friendly-link {\n  padding: 12px;\n  font-size: 16px;\n  min-height: 48px;\n  min-width: 48px;\n}\n```\n\n### Font sizes\n\n```css\n\u002F* ❌ Too small on mobile *\u002F\nbody {\n  font-size: 10px;\n}\n\n\u002F* ✅ Readable without zooming *\u002F\nbody {\n  font-size: 16px;\n  line-height: 1.5;\n}\n```\n\n---\n\n## International SEO\n\n### Hreflang tags\n\n```html\n\u003C!-- For multi-language sites -->\n\u003Clink rel=\"alternate\" hreflang=\"en\" href=\"https:\u002F\u002Fexample.com\u002Fpage\">\n\u003Clink rel=\"alternate\" hreflang=\"es\" href=\"https:\u002F\u002Fexample.com\u002Fes\u002Fpage\">\n\u003Clink rel=\"alternate\" hreflang=\"fr\" href=\"https:\u002F\u002Fexample.com\u002Ffr\u002Fpage\">\n\u003Clink rel=\"alternate\" hreflang=\"x-default\" href=\"https:\u002F\u002Fexample.com\u002Fpage\">\n```\n\n### Language declaration\n\n```html\n\u003Chtml lang=\"en\">\n\u003C!-- or -->\n\u003Chtml lang=\"es-MX\">\n```\n\n---\n\n## SEO audit checklist\n\n### Critical\n- [ ] HTTPS enabled\n- [ ] robots.txt allows crawling\n- [ ] No `noindex` on important pages\n- [ ] Title tags present and unique\n- [ ] Single `\u003Ch1>` per page\n\n### High priority\n- [ ] Meta descriptions present\n- [ ] Sitemap submitted\n- [ ] Canonical URLs set\n- [ ] Mobile-responsive\n- [ ] Core Web Vitals passing\n\n### Medium priority\n- [ ] Structured data implemented\n- [ ] Internal linking strategy\n- [ ] Image alt text\n- [ ] Descriptive URLs\n- [ ] Breadcrumb navigation\n\n### Ongoing\n- [ ] Fix crawl errors in Search Console\n- [ ] Update sitemap when content changes\n- [ ] Monitor ranking changes\n- [ ] Check for broken links\n- [ ] Review Search Console insights\n\n---\n\n## Tools\n\n| Tool | Use |\n|------|-----|\n| Google Search Console | Monitor indexing, fix issues |\n| Google PageSpeed Insights | Performance + Core Web Vitals |\n| Rich Results Test | Validate structured data |\n| Lighthouse | Full SEO audit |\n| Screaming Frog | Crawl analysis |\n\n## References\n\n- [Google Search Central](https:\u002F\u002Fdevelopers.google.com\u002Fsearch)\n- [Schema.org](https:\u002F\u002Fschema.org\u002F)\n- [Core Web Vitals](..\u002Fcore-web-vitals\u002FSKILL.md)\n- [Web Quality Audit](..\u002Fweb-quality-audit\u002FSKILL.md)\n",{"name":5,"license":15,"metadata":56,"description":7},{"metadata":57},{"author":58,"version":59},"web-quality-skills","1.0","main","2a76bf42ce5c860adf8d0f3fcf3f6804109ac65b","skills\u002Fseo",0,"https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fwiki","https:\u002F\u002Fgithub.com\u002Fonfire7777","trying to create something actually useful","2026-09-11 13:25:26",{"source":8,"skillName":5,"commands":70,"prompt":80,"zipAvailable":81},[71,74,77],{"tool":72,"command":73},"npx","npx skills add onfire7777\u002Funiversal-ai-skills-library --skill seo",{"tool":75,"command":76},"bunx","bunx skills add onfire7777\u002Funiversal-ai-skills-library --skill seo",{"tool":78,"command":79},"pnpm","pnpm dlx skills add onfire7777\u002Funiversal-ai-skills-library --skill seo","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fseo\u002FSKILL.md",true,[],[84,108,117,127,147,163],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":97,"publishedAt":51},"01M6J7MPK8ZE9VQJR4KK6ZMZJQ","zyte-api-automation","Automate Zyte API tasks via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fzyte-api-automation\u002FSKILL.md",[90,93,94],{"categoryNo":91,"categoryName":92,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":95,"categoryName":96,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000030","开发工程师",[98,99,100,33,101,102,103,104,105,106,49,107],"automation","api","zyte api automation","MCP","via","composio","automate","first","Tools","tasks",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":115,"publishedAt":51},"01M6J7MK45K2ZZ0EWTP1N6SZ7F","zylvie-automation","Automate Zylvie tasks via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fzylvie-automation\u002FSKILL.md",[114],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[98,116,101,107,33,102,103,104,105,106,49],"zylvie automation",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":124,"publishedAt":51},"01M6J7MGDCVZ3YCXGEAPR5V3MS","zoominfo-automation","Automate Zoominfo tasks via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fzoominfo-automation\u002FSKILL.md",[123],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[125,126,98,104,103,106,102,107,33,49,101,105],"zoominfo","zoominfo automation",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":134,"publishedAt":51},"01M6J7MDK48N09B7C6H9TCPY9A","zoom-out","Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture.","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fzoom-out\u002FSKILL.md",[133],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[135,136,137,138,139,140,141,142,143,40,144,145,146],"zoom out","zoom","perspective","code","re","you","with","understand","it","context","how","true",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":154,"publishedAt":51},"01M6J7MAD47Q9A55AK3EXS914H","zoho-mail-automation","Automate Zoho Mail tasks via Rube MCP (Composio): email sending, folders, labels, and mailbox management. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fzoho-mail-automation\u002FSKILL.md",[153],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[155,156,157,158,98,159,49,107,101,106,160,33,102,161,103,162,104,105],"mail","zoho mail automation","zoho","zoho mail","email","labels","mailbox","management",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":173,"publishedAt":51},"01M6J7M76HTWPP8TRWWCDS42NB","zoho-invoice-automation","Automate Zoho Invoice tasks via Rube MCP (Composio): invoices, estimates, expenses, clients, and payment tracking. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fzoho-invoice-automation\u002FSKILL.md",[169,170],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":171,"categoryName":172,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000040","财务",[174,98,157,175,101,102,33,176,177,178,103,179,180,104,105,106,49,107],"invoice","zoho invoice automation","invoices","expenses","clients","payment","tracking"]