[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71J7SP06JRAPQZBXRFJ3DAW":3,"skill-same:01M71J7SP06JRAPQZBXRFJ3DAW":77},{"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":28,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":14,"repositoryHtmlUrl":59,"repositoryHomepageUrl":60,"ownerHtmlUrl":61,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":62,"install":63,"resources":76},"01M71J7SP06JRAPQZBXRFJ3DAW","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\".","bobvarkey\u002Fdiabetes-buddy","bobvarkey","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F72114170?v=4","01M6KP64KQA4GNH11CSV7FXKNB","Bob Varkey","01M71J703CY616M3Q53B0VQPY7",0,"MIT","https:\u002F\u002Fgithub.com\u002Fbobvarkey\u002Fdiabetes-buddy\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fseo\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000019","营销推广","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000035","市场营销","PROFESSION","适用职业",[5,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"add","quality","web","engine","tags","Meta Tags","use","structured data","Optimization","for","data","optimize","when","improve","ranking","fix","Meta","search","search engine","2026-11-10 10:12:30",false,"---\nname: seo\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\".\nlicense: MIT\nmetadata:\n  author: web-quality-skills\n  version: \"1.0\"\n---\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":53,"description":7},{"author":54,"version":55},"web-quality-skills","1.0","main","96c323ae8e97220e2713e00f6b4a548258ea364b",".agents\u002Fskills\u002Fseo","https:\u002F\u002Fgithub.com\u002Fbobvarkey\u002Fdiabetes-buddy","https:\u002F\u002Fdiabetes-buddy.vercel.app","https:\u002F\u002Fgithub.com\u002Fbobvarkey","2026-09-28 10:30:17",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add bobvarkey\u002Fdiabetes-buddy --skill seo",{"tool":69,"command":70},"bunx","bunx skills add bobvarkey\u002Fdiabetes-buddy --skill seo",{"tool":72,"command":73},"pnpm","pnpm dlx skills add bobvarkey\u002Fdiabetes-buddy --skill seo","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbobvarkey\u002Fdiabetes-buddy\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fseo\u002FSKILL.md",true,[],[78,106,137,160,171,198],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":82,"sourceHtmlUrl":83,"categories":84,"keywords":91,"publishedAt":48},"01M71JB0ESZJDBPJCQHG5CTZZ2","youtube","YouTube Data API integration with managed OAuth. Search videos, manage playlists, access channel data, and interact with comments. Use this skill when users want to interact with YouTube. For other third party apps, use the api-gateway skill (https:\u002F\u002Fclawhub.ai\u002Fbyungkyu\u002Fapi-gateway).","https:\u002F\u002Fgithub.com\u002Fbobvarkey\u002Fdiabetes-buddy\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-api-skill\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fbobvarkey\u002Fdiabetes-buddy\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-api-skill\u002FSKILL.md",[85,88],{"categoryNo":86,"categoryName":87,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":89,"categoryName":90,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师",[80,92,93,35,94,95,96,97,38,98,99,39,100,101,41,102,103,104,105,46],"api","OAuth","gateway skill","clawhub","api integration","manage","api-gateway","gateway","network","valid","apps","access","maton","managed",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":118,"publishedAt":48},"01M71JAW9XM1K0FKXHR30ZWC5Y","xcellent","Free, open-source X (Twitter) growth tool. Analytics dashboard, niche discovery, AI tweet writer, best posting times, and credit usage monitoring — all running locally on your machine. BYOK (Bring Your Own Key) model means users only pay X directly for API usage (~$5-15\u002Fmo). A free alternative to SuperX ($39\u002Fmo), Typefully, and Tweet Hunter.","https:\u002F\u002Fgithub.com\u002Fbobvarkey\u002Fdiabetes-buddy\u002Fblob\u002Fmain\u002Fskills\u002Fxcellent\u002FSKILL.md",[112,115],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":116,"categoryName":117,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000033","数据分析师",[108,38,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136],"hunter","bring","model","machine","discovery","tool","twitter","typefully","tweet writer","posting","usage","running","writer","open","analytics dashboard","free","pay","only",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":143,"publishedAt":48},"01M71JAR498425CSRJKPPTJ6F4","work-application","CV generation, job scraping, offer analysis, and application tracking. Use when: (1) generating or adapting a CV\u002Fresume for a job offer, (2) scraping job offers from French platforms, (3) analyzing and ranking job offers, (4) generating a full analysis report for a single offer (skills, company, location, salary), (5) tracking candidatures and their status, (6) validating CV content against formatting guardrails. NOT for: cover letter generation (planned), LinkedIn direct messaging, job application submission, salary negotiation coaching.","https:\u002F\u002Fgithub.com\u002Fbobvarkey\u002Fdiabetes-buddy\u002Fblob\u002Fmain\u002Fskills\u002Fwork-application\u002FSKILL.md",[],[144,145,146,147,148,39,149,100,41,150,151,152,153,43,154,155,156,157,158,159],"work","work application","application","master","cover","status","config","reports","analysis","files","Guardrails","company","messaging","french","scraping","analyzing",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":48},"01M71JAPH8A5CH6G5T8K24YQ85","weather","Get current weather and forecasts (no API key required).","https:\u002F\u002Fgithub.com\u002Fbobvarkey\u002Fdiabetes-buddy\u002Fblob\u002Fmain\u002Fskills\u002Fweather\u002FSKILL.md",[],[162,92,167,168,169,170],"https","help","get","curl",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":177,"publishedAt":48},"01M71JAMMTE4K1HZW7D8JQWKDQ","to-do","Give your AI the power to act in the future. Schedule delayed prompts and one-off reminders that automatically wake the agent up at an exact moment to execute workflows, check systems, or send notifications.","https:\u002F\u002Fgithub.com\u002Fbobvarkey\u002Fdiabetes-buddy\u002Fblob\u002Fmain\u002Fskills\u002Fto-do\u002FSKILL.md",[],[178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197],"to do","do","reminders","wake","notifications","check","schedule","one","workflows","up","send","power","at","openclaw","prompts","execute","tz","act","systems","node",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":202,"categories":203,"keywords":207,"publishedAt":48},"01M71JAKBCTYE3D7V8B72VKSJE","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fbobvarkey\u002Fdiabetes-buddy\u002Fblob\u002Fmain\u002Fskills\u002Fsummarize\u002FSKILL.md",[204],{"categoryNo":205,"categoryName":206,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[200,208,153,209,210,167,31,211,212,80,213,214,215],"tap","pdfs","install","Audio","cli","with","brew","images"]