{
  "schemaVersion": "1.0",
  "item": {
    "slug": "afrexai-technical-seo",
    "name": "Technical SEO Mastery",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/1kalin/afrexai-technical-seo",
    "canonicalUrl": "https://clawhub.ai/1kalin/afrexai-technical-seo",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/afrexai-technical-seo",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-technical-seo",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/afrexai-technical-seo"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/afrexai-technical-seo",
    "agentPageUrl": "https://openagent3.xyz/skills/afrexai-technical-seo/agent",
    "manifestUrl": "https://openagent3.xyz/skills/afrexai-technical-seo/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/afrexai-technical-seo/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Technical SEO Mastery",
        "body": "Complete technical SEO audit, fix, and monitoring system. From crawlability to Core Web Vitals to international SEO — everything search engines need to find, crawl, index, and rank your site."
      },
      {
        "title": "When to Use",
        "body": "\"Technical SEO audit for my site\"\n\"Why isn't Google indexing my pages?\"\n\"Fix Core Web Vitals issues\"\n\"Pre-migration SEO checklist\"\n\"My site is slow / rankings dropped\"\n\"Check robots.txt / sitemap / schema markup\"\n\"International SEO / hreflang setup\""
      },
      {
        "title": "Phase 1: Quick Health Check (5-Minute Triage)",
        "body": "Before a full audit, run a rapid assessment. Fetch the site and check:\n\nquick_health:\n  url: \"[domain]\"\n  checks:\n    robots_txt: \"[accessible / blocked / missing]\"\n    sitemap_xml: \"[found / missing / errors]\"\n    https: \"[yes / mixed content / no]\"\n    mobile_viewport: \"[set / missing]\"\n    page_load: \"[fast <2s / moderate 2-4s / slow >4s]\"\n    h1_present: \"[yes / missing / multiple]\"\n    canonical: \"[set / missing / self-referencing]\"\n    structured_data: \"[present / missing / errors]\"\n  \n  severity: \"[healthy / needs work / critical]\"\n  priority_fix: \"[top issue to address first]\"\n\nSeverity guide:\n\n🟢 Healthy: 0-1 issues — minor optimizations only\n🟡 Needs work: 2-4 issues — schedule fixes this week\n🔴 Critical: 5+ issues or any blocking issue — fix immediately"
      },
      {
        "title": "2.1 Robots.txt Analysis",
        "body": "Fetch [domain]/robots.txt and evaluate:\n\nrobots_txt_audit:\n  exists: true/false\n  valid_syntax: true/false\n  issues:\n    - type: \"[blocked_important_page / missing_sitemap / wildcard_block / syntax_error]\"\n      detail: \"[specific line or pattern]\"\n      severity: \"critical/warning/info\"\n      fix: \"[exact fix]\"\n  \n  checks:\n    - \"Sitemap directive present\"\n    - \"No accidental blocking of CSS/JS/images\"\n    - \"No blocking of important page directories\"\n    - \"Correct user-agent targeting (Googlebot, Bingbot, etc.)\"\n    - \"No conflicting rules (allow + disallow same path)\"\n    - \"Crawl-delay only if needed (slows indexing)\"\n\nCommon mistakes:\n\nMistakeImpactFixDisallow: / blocking everythingNo pages indexedRemove or narrow scopeBlocking CSS/JSPoor rendering = ranking dropAllow: /assets/No sitemap referenceSlower discoveryAdd Sitemap: directiveMultiple sitemaps not declaredPartial crawlingDeclare all sitemapsBlocking search/filter pages poorlyCrawl wasteUse Disallow: /*? patterns\n\nRecommended template:\n\nUser-agent: *\nAllow: /\nDisallow: /admin/\nDisallow: /api/\nDisallow: /checkout/\nDisallow: /*?sort=\nDisallow: /*?filter=\n\nSitemap: https://example.com/sitemap.xml\nSitemap: https://example.com/sitemap-images.xml"
      },
      {
        "title": "2.2 XML Sitemap Audit",
        "body": "Fetch sitemap(s) and evaluate:\n\nsitemap_audit:\n  url: \"[sitemap URL]\"\n  type: \"[index / single / none]\"\n  url_count: 0\n  issues:\n    - type: \"[missing / too_large / includes_noindex / stale_lastmod / broken_urls]\"\n      severity: \"critical/warning/info\"\n      fix: \"[specific action]\"\n  \n  quality_checks:\n    - \"All URLs return 200 (no 404s, 301s, or 5xx)\"\n    - \"No noindex pages included\"\n    - \"lastmod dates are accurate (not all same date)\"\n    - \"Under 50,000 URLs per sitemap file\"\n    - \"Under 50MB uncompressed per file\"\n    - \"Sitemap index if >50K URLs\"\n    - \"Matches canonical URLs (not alternate versions)\"\n    - \"Images/video sitemaps if applicable\"\n\nSitemap best practices:\n\nOne URL per <url> entry — canonical version only\nlastmod should reflect actual content change date\nPriority and changefreq are largely ignored by Google — optional\nCompress with gzip for large sitemaps\nSubmit in Google Search Console AND robots.txt"
      },
      {
        "title": "2.3 Crawl Budget Optimization",
        "body": "crawl_budget_analysis:\n  total_pages: 0\n  indexable_pages: 0\n  crawl_waste_ratio: \"[indexable / total — target >80%]\"\n  \n  waste_sources:\n    - source: \"[faceted navigation / pagination / parameters / duplicate content / thin pages]\"\n      page_count: 0\n      action: \"[noindex / canonical / robots block / parameter handling / consolidate]\"\n  \n  optimization_priority:\n    1: \"Remove/noindex thin and duplicate pages\"\n    2: \"Consolidate parameter variations with canonicals\"\n    3: \"Implement pagination best practices (rel=next or load-more)\"\n    4: \"Fix redirect chains (max 1 hop)\"\n    5: \"Eliminate orphan pages or link them into site structure\"\n\nCrawl budget matters when: Site has >10K pages OR crawl rate is notably low in Search Console."
      },
      {
        "title": "3.1 Index Status Check",
        "body": "For each important page type, verify:\n\nindexability_check:\n  page_type: \"[homepage / product / blog / category / landing]\"\n  sample_url: \"[URL]\"\n  \n  signals:\n    meta_robots: \"[index,follow / noindex / nofollow / none]\"\n    x_robots_tag: \"[present / absent — check HTTP headers]\"\n    canonical: \"[self / points to other URL / missing]\"\n    http_status: \"[200 / 301 / 302 / 404 / 410 / 5xx]\"\n    in_sitemap: true/false\n    internal_links_to: \"[count of internal links pointing here]\"\n    robots_txt_allowed: true/false\n  \n  verdict: \"[indexable / blocked / conflicting signals]\"\n  fix: \"[action if not indexable]\""
      },
      {
        "title": "3.2 Common Indexing Blockers",
        "body": "BlockerDetectionFixPrioritynoindex meta tagCheck <meta name=\"robots\">Remove tag or move to correct pagesP0X-Robots-Tag: noindex headerCheck HTTP response headersRemove header from server configP0Canonical pointing elsewhereCheck <link rel=\"canonical\">Fix to self-reference or correct targetP0Blocked in robots.txtCross-reference robots.txtUpdate robots.txt rulesP0Not in sitemapCheck sitemap inclusionAdd to sitemapP1No internal links (orphan)Crawl internal link graphAdd contextual internal linksP1Soft 404 (200 with no content)Check page contentReturn proper 404 or add contentP1Duplicate contentCompare page similarityCanonical or consolidateP2Thin content (<200 words, no value)Word count + quality checkExpand or merge with related pageP2"
      },
      {
        "title": "3.3 Redirect Audit",
        "body": "redirect_audit:\n  chains_found: 0  # A→B→C (should be A→C)\n  loops_found: 0   # A→B→A (broken)\n  temporary_redirects: 0  # 302s that should be 301s\n  \n  rules:\n    - \"Max 1 redirect hop (no chains)\"\n    - \"Use 301 for permanent moves, 308 for POST-preserving\"\n    - \"302 only for genuinely temporary redirects\"\n    - \"Update internal links to point to final destination\"\n    - \"Redirect HTTP → HTTPS at server level\"\n    - \"Redirect www ↔ non-www consistently\""
      },
      {
        "title": "4.1 Core Web Vitals Targets",
        "body": "MetricGoodNeeds ImprovementPoorLCP (Largest Contentful Paint)≤2.5s2.5-4.0s>4.0sINP (Interaction to Next Paint)≤200ms200-500ms>500msCLS (Cumulative Layout Shift)≤0.10.1-0.25>0.25"
      },
      {
        "title": "4.2 LCP Fix Playbook",
        "body": "lcp_diagnosis:\n  current_lcp: \"[Xs]\"\n  lcp_element: \"[identify the largest element — usually hero image or heading]\"\n  \n  fix_priority:\n    1:\n      issue: \"Slow server response (TTFB >800ms)\"\n      fixes:\n        - \"Enable server-side caching (Redis, Varnish)\"\n        - \"Use CDN for static assets\"\n        - \"Optimize database queries\"\n        - \"Upgrade hosting if shared\"\n    2:\n      issue: \"Render-blocking resources\"\n      fixes:\n        - \"Defer non-critical CSS: `<link rel='preload' as='style'>`\"\n        - \"Async/defer JavaScript: `<script defer>`\"\n        - \"Inline critical CSS (above-the-fold)\"\n        - \"Remove unused CSS/JS\"\n    3:\n      issue: \"Slow resource load (images, fonts)\"\n      fixes:\n        - \"Preload LCP image: `<link rel='preload' as='image' href='...'>`\"\n        - \"Use WebP/AVIF format (30-50% smaller)\"\n        - \"Responsive images with srcset\"\n        - \"Font-display: swap for web fonts\"\n        - \"Preconnect to CDN: `<link rel='preconnect' href='...'>`\"\n    4:\n      issue: \"Client-side rendering delay\"\n      fixes:\n        - \"Server-side render (SSR) or static generate (SSG) above-fold content\"\n        - \"Avoid lazy-loading the LCP element\"\n        - \"Reduce JavaScript execution before paint\""
      },
      {
        "title": "4.3 INP Fix Playbook",
        "body": "inp_diagnosis:\n  current_inp: \"[Xms]\"\n  \n  fix_priority:\n    1: \"Break long tasks (>50ms) into smaller chunks using `requestIdleCallback` or `setTimeout`\"\n    2: \"Reduce main thread JavaScript — defer non-essential scripts\"\n    3: \"Use `content-visibility: auto` for off-screen content\"\n    4: \"Debounce/throttle event handlers (scroll, resize, input)\"\n    5: \"Move heavy computation to Web Workers\"\n    6: \"Optimize event delegation — avoid attaching listeners to every element\"\n    7: \"Reduce DOM size (target <1,500 elements)\""
      },
      {
        "title": "4.4 CLS Fix Playbook",
        "body": "cls_diagnosis:\n  current_cls: \"[X.XX]\"\n  \n  common_causes:\n    - cause: \"Images without dimensions\"\n      fix: \"Always set width/height attributes OR use aspect-ratio CSS\"\n    - cause: \"Ads/embeds without reserved space\"\n      fix: \"Use min-height on ad containers\"\n    - cause: \"Web fonts causing FOIT/FOUT\"\n      fix: \"`font-display: swap` + `<link rel='preload' as='font'>`\"\n    - cause: \"Dynamically injected content above viewport\"\n      fix: \"Reserve space or inject below the fold\"\n    - cause: \"Late-loading CSS changing layout\"\n      fix: \"Inline critical CSS, load rest async\""
      },
      {
        "title": "4.5 Performance Budget",
        "body": "performance_budget:\n  total_page_weight: \"< 1.5MB (ideal < 1MB)\"\n  html: \"< 100KB\"\n  css: \"< 100KB (ideally < 50KB)\"\n  javascript: \"< 300KB (compressed)\"\n  images: \"< 500KB total above fold\"\n  fonts: \"< 100KB (max 2 families)\"\n  third_party: \"< 200KB total\"\n  \n  requests:\n    total: \"< 50 HTTP requests\"\n    third_party: \"< 10 external domains\"\n  \n  timing:\n    ttfb: \"< 800ms\"\n    fcp: \"< 1.8s\"\n    lcp: \"< 2.5s\"\n    tti: \"< 3.8s\""
      },
      {
        "title": "Phase 5: Mobile Optimization",
        "body": "mobile_audit:\n  viewport_meta: \"[present with correct values / missing / malformed]\"\n  # Correct: <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  \n  checklist:\n    - check: \"Viewport meta tag set correctly\"\n      pass: true/false\n    - check: \"No horizontal scroll on mobile\"\n      pass: true/false\n    - check: \"Touch targets ≥48x48px with ≥8px spacing\"\n      pass: true/false\n    - check: \"Font size ≥16px base (no zoom on iOS input)\"\n      pass: true/false\n    - check: \"No fixed-width elements wider than viewport\"\n      pass: true/false\n    - check: \"Images responsive (max-width: 100%)\"\n      pass: true/false\n    - check: \"No intrusive interstitials / popups\"\n      pass: true/false\n    - check: \"Readable without zooming\"\n      pass: true/false\n    - check: \"Mobile page speed < 3s on 4G\"\n      pass: true/false\n    - check: \"No Flash or unsupported plugins\"\n      pass: true/false\n  \n  mobile_score: \"[X/10]\""
      },
      {
        "title": "Phase 6: HTTPS & Security",
        "body": "security_audit:\n  https:\n    enabled: true/false\n    certificate_valid: true/false\n    certificate_expiry: \"[date]\"\n    mixed_content: \"[none / warnings / errors]\"\n    http_to_https_redirect: \"[301 / 302 / none]\"\n    hsts_header: \"[present with max-age / missing]\"\n  \n  security_headers:\n    - header: \"Strict-Transport-Security\"\n      present: true/false\n      recommended: \"max-age=31536000; includeSubDomains; preload\"\n    - header: \"Content-Security-Policy\"\n      present: true/false\n      recommended: \"[appropriate policy for site]\"\n    - header: \"X-Content-Type-Options\"\n      present: true/false\n      recommended: \"nosniff\"\n    - header: \"X-Frame-Options\"\n      present: true/false\n      recommended: \"SAMEORIGIN\"\n    - header: \"Referrer-Policy\"\n      present: true/false\n      recommended: \"strict-origin-when-cross-origin\"\n    - header: \"Permissions-Policy\"\n      present: true/false\n      recommended: \"camera=(), microphone=(), geolocation=()\"\n  \n  security_score: \"[X/10]\"\n\nHTTPS migration checklist (if not yet on HTTPS):\n\nObtain SSL certificate (Let's Encrypt = free)\nInstall on server / CDN\nUpdate all internal links to HTTPS\n301 redirect all HTTP URLs to HTTPS\nUpdate canonical tags to HTTPS\nUpdate sitemap URLs to HTTPS\nUpdate Google Search Console property\nUpdate robots.txt Sitemap directive\nCheck for mixed content (HTTP resources on HTTPS pages)\nEnable HSTS header after confirming everything works"
      },
      {
        "title": "7.1 Schema Audit",
        "body": "schema_audit:\n  implementation_method: \"[JSON-LD / Microdata / RDFa]\"  # JSON-LD recommended\n  \n  pages_with_schema: \"[X / total pages]\"\n  \n  schemas_found:\n    - type: \"[Organization / LocalBusiness / Product / Article / FAQ / etc.]\"\n      url: \"[sample URL]\"\n      valid: true/false\n      errors: [\"[list of validation errors]\"]\n      warnings: [\"[list of warnings]\"]\n  \n  missing_opportunities:\n    - page_type: \"[product / article / recipe / event / FAQ / how-to / local]\"\n      recommended_schema: \"[schema type]\"\n      rich_result_eligible: \"[yes — which type]\"\n      priority: \"high/medium/low\""
      },
      {
        "title": "7.2 Schema Templates (JSON-LD)",
        "body": "Organization:\n\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"[Company Name]\",\n  \"url\": \"https://example.com\",\n  \"logo\": \"https://example.com/logo.png\",\n  \"sameAs\": [\n    \"https://twitter.com/example\",\n    \"https://linkedin.com/company/example\"\n  ],\n  \"contactPoint\": {\n    \"@type\": \"ContactPoint\",\n    \"telephone\": \"+1-XXX-XXX-XXXX\",\n    \"contactType\": \"customer service\"\n  }\n}\n\nArticle:\n\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"[Title]\",\n  \"author\": {\"@type\": \"Person\", \"name\": \"[Author]\"},\n  \"datePublished\": \"2026-01-15\",\n  \"dateModified\": \"2026-02-18\",\n  \"image\": \"https://example.com/image.jpg\",\n  \"publisher\": {\n    \"@type\": \"Organization\",\n    \"name\": \"[Publisher]\",\n    \"logo\": {\"@type\": \"ImageObject\", \"url\": \"https://example.com/logo.png\"}\n  }\n}\n\nProduct:\n\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"[Product Name]\",\n  \"image\": \"https://example.com/product.jpg\",\n  \"description\": \"[Description]\",\n  \"brand\": {\"@type\": \"Brand\", \"name\": \"[Brand]\"},\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"price\": \"29.99\",\n    \"priceCurrency\": \"USD\",\n    \"availability\": \"https://schema.org/InStock\",\n    \"url\": \"https://example.com/product\"\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"4.5\",\n    \"reviewCount\": \"127\"\n  }\n}\n\nFAQ:\n\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"[Question 1]\",\n      \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"[Answer 1]\"}\n    }\n  ]\n}\n\nRich result eligibility by schema type:\n\nSchemaRich ResultImpactProductPrice, rating stars, availabilityHigh CTR boostFAQExpandable questions in SERPMore SERP real estateHowToStep-by-step in SERPFeatured snippet potentialArticleAuthor, date, imageNews/Discover eligibilityLocalBusinessKnowledge panel, mapsLocal pack rankingEventDate, location, ticket infoEvent carouselRecipeCook time, rating, caloriesRecipe carouselVideoThumbnail, durationVideo carouselBreadcrumbListBreadcrumb trail in SERPBetter navigation displayReviewStar ratingTrust + CTR"
      },
      {
        "title": "Phase 8: URL Structure & Architecture",
        "body": "url_audit:\n  structure_pattern: \"[clean / parameter-heavy / mixed]\"\n  \n  checklist:\n    - rule: \"Lowercase only (no mixed case)\"\n      pass: true/false\n    - rule: \"Hyphens as separators (not underscores)\"\n      pass: true/false\n    - rule: \"No special characters or spaces\"\n      pass: true/false\n    - rule: \"Descriptive and keyword-rich\"\n      pass: true/false\n    - rule: \"Short (< 75 characters ideal)\"\n      pass: true/false\n    - rule: \"Logical hierarchy (/category/subcategory/page)\"\n      pass: true/false\n    - rule: \"No session IDs or tracking parameters in indexed URLs\"\n      pass: true/false\n    - rule: \"Trailing slash consistent (pick one, redirect the other)\"\n      pass: true/false\n    - rule: \"No .html/.php extensions (clean URLs)\"\n      pass: true/false\n  \n  # Bad: /p?id=12345&cat=3&ref=home\n  # Good: /shoes/running/nike-air-max\n  \n  internal_linking:\n    orphan_pages: 0  # Pages with 0 internal links\n    deep_pages: 0    # Pages >4 clicks from homepage\n    broken_links: 0  # Internal 404s\n    \n    fix_priority:\n      1: \"Fix all broken internal links (404s)\"\n      2: \"Link orphan pages from relevant content\"\n      3: \"Flatten deep pages — add to navigation or hub pages\"\n      4: \"Add contextual cross-links between related content\"\n\nSite architecture best practices:\n\nFlat structure: every page reachable within 3 clicks from homepage\nHub & spoke: category pages link to all children; children link back\nBreadcrumbs: implement on every page (with BreadcrumbList schema)\nPagination: use rel=\"next\" / rel=\"prev\" or infinite scroll with progressive enhancement\nFaceted navigation: canonicalize or noindex filter combinations"
      },
      {
        "title": "9.1 Hreflang Implementation",
        "body": "international_seo:\n  approach: \"[subdirectories /en/ / subdomains en. / ccTLDs .co.uk]\"\n  # Recommended: subdirectories (easiest to manage, inherits domain authority)\n  \n  hreflang_audit:\n    implemented: true/false\n    method: \"[HTML link tags / HTTP headers / sitemap]\"\n    issues:\n      - \"Missing return links (A→B exists but B→A missing)\"\n      - \"Wrong language/region codes\"\n      - \"Missing x-default tag\"\n      - \"Self-referencing hreflang missing\"\n\nHreflang template:\n\n<link rel=\"alternate\" hreflang=\"en-us\" href=\"https://example.com/en-us/page\" />\n<link rel=\"alternate\" hreflang=\"en-gb\" href=\"https://example.com/en-gb/page\" />\n<link rel=\"alternate\" hreflang=\"es\" href=\"https://example.com/es/page\" />\n<link rel=\"alternate\" hreflang=\"x-default\" href=\"https://example.com/page\" />\n\nRules:\n\nEvery page must reference ALL language versions including itself\nAlways include x-default (fallback for unmatched languages)\nUse ISO 639-1 for language, ISO 3166-1 Alpha 2 for region\nHreflang must be bidirectional (if A references B, B must reference A)\nCanonical and hreflang should align — canonical should point to same-language version"
      },
      {
        "title": "9.2 International Targeting Checklist",
        "body": "Correct hreflang on all pages (bidirectional)\n x-default specified\n Content genuinely translated (not just auto-translated)\n Local currency, date format, phone numbers\n Geo-targeting set in Search Console (for ccTLDs/subdirectories)\n Local server / CDN node in target country\n Local backlinks from target region\n Language-specific sitemap or sitemap section"
      },
      {
        "title": "Phase 10: Site Migration SEO Checklist",
        "body": "Use when changing domains, restructuring URLs, or redesigning:\n\nmigration_checklist:\n  pre_migration:\n    - \"Crawl current site — full URL inventory\"\n    - \"Export all current rankings and traffic data\"\n    - \"Map every old URL to new URL (1:1 redirect map)\"\n    - \"Backup robots.txt, sitemaps, .htaccess\"\n    - \"Document all existing 301 redirects\"\n    - \"Note top 100 pages by traffic — verify redirects\"\n    - \"Test staging site (is it blocked from indexing?)\"\n    - \"Verify new site has all schema markup\"\n    - \"Check canonical tags on new site\"\n    - \"Prepare new sitemap\"\n  \n  migration_day:\n    - \"Implement all 301 redirects\"\n    - \"Update robots.txt (unblock new site)\"\n    - \"Submit new sitemap to Search Console\"\n    - \"Update Google Search Console property if domain changed\"\n    - \"Verify HTTPS redirect chain is clean\"\n    - \"Test 50 random old URLs — confirm redirects work\"\n    - \"Check for redirect chains or loops\"\n    - \"Monitor server errors / 5xx in real-time\"\n  \n  post_migration:\n    week_1:\n      - \"Monitor Search Console for crawl errors daily\"\n      - \"Check index coverage report\"\n      - \"Verify organic traffic hasn't cratered\"\n      - \"Fix any 404s appearing in crawl reports\"\n    month_1:\n      - \"Compare rankings: pre vs post migration\"\n      - \"Check all structured data still validates\"\n      - \"Verify internal links updated (no redirect-through links)\"\n      - \"Monitor Core Web Vitals on new infrastructure\"\n    month_3:\n      - \"Full ranking comparison\"\n      - \"Traffic recovery assessment (expect 80-100% recovery)\"\n      - \"Clean up any remaining redirect chains\"\n  \n  expected_traffic_impact:\n    best_case: \"2-4 weeks dip, full recovery\"\n    typical: \"1-3 months for full recovery\"\n    worst_case: \"6+ months if redirects missed — audit immediately\""
      },
      {
        "title": "Overall Technical Health Score (0-100)",
        "body": "scoring:\n  crawlability:          # Weight: 20%\n    robots_txt: \"/5\"\n    sitemap: \"/5\"\n    crawl_budget: \"/5\"\n    internal_linking: \"/5\"\n  \n  indexability:           # Weight: 20%\n    meta_robots: \"/5\"\n    canonicals: \"/5\"\n    redirects: \"/5\"\n    duplicate_content: \"/5\"\n  \n  performance:            # Weight: 25%\n    lcp: \"/5\"\n    inp: \"/5\"\n    cls: \"/5\"\n    ttfb: \"/5\"\n    page_weight: \"/5\"\n  \n  mobile:                 # Weight: 10%\n    viewport: \"/5\"\n    touch_targets: \"/5\"\n    responsive: \"/5\"\n    speed: \"/5\"\n  \n  security:               # Weight: 10%\n    https: \"/5\"\n    headers: \"/5\"\n    certificate: \"/5\"\n    mixed_content: \"/5\"\n  \n  structured_data:        # Weight: 10%\n    implementation: \"/5\"\n    validation: \"/5\"\n    coverage: \"/5\"\n    rich_results: \"/5\"\n  \n  url_architecture:       # Weight: 5%\n    structure: \"/5\"\n    depth: \"/5\"\n    broken_links: \"/5\"\n\n  total: \"/100\"\n  grade: \"[A (90+) / B (75-89) / C (60-74) / D (40-59) / F (<40)]\""
      },
      {
        "title": "Priority Fix Matrix",
        "body": "After scoring, generate a prioritized action plan:\n\naction_plan:\n  p0_critical:  # Fix this week — directly blocking ranking\n    - issue: \"[description]\"\n      impact: \"high\"\n      effort: \"[low/medium/high]\"\n      fix: \"[specific steps]\"\n  \n  p1_important:  # Fix this month — significant ranking impact\n    - issue: \"[description]\"\n      impact: \"medium-high\"\n      effort: \"[low/medium/high]\"\n      fix: \"[specific steps]\"\n  \n  p2_optimization:  # Fix this quarter — incremental improvement\n    - issue: \"[description]\"\n      impact: \"medium\"\n      effort: \"[low/medium/high]\"\n      fix: \"[specific steps]\"\n  \n  p3_nice_to_have:  # Backlog — minimal direct ranking impact\n    - issue: \"[description]\"\n      fix: \"[specific steps]\"\n\nPriority rules:\n\nAnything blocking indexing = P0 always\nCore Web Vitals failing = P1 minimum\nSecurity issues = P0 if no HTTPS, P1 for headers\nSchema missing = P2 unless competitor has rich results (then P1)\nURL structure issues = P2 unless causing duplicate content"
      },
      {
        "title": "Weekly Technical SEO Checklist",
        "body": "weekly_check:\n  search_console:\n    - \"Index coverage: any new errors?\"\n    - \"Core Web Vitals: any regressions?\"\n    - \"Manual actions: any penalties?\"\n    - \"Security issues: any warnings?\"\n  \n  site_health:\n    - \"Spot-check 5 random pages load correctly\"\n    - \"Check for new 404 errors\"\n    - \"Verify sitemap is current and accessible\"\n    - \"Monitor HTTPS certificate expiry\"\n  \n  tracking:\n    - \"Organic traffic trend (vs. last week, vs. last year)\"\n    - \"Crawl stats in Search Console\"\n    - \"Any new structured data errors\""
      },
      {
        "title": "Monthly Deep Dive",
        "body": "monthly_review:\n  - \"Full crawl of site — compare page count to last month\"\n  - \"Core Web Vitals lab + field data comparison\"\n  - \"New broken links check\"\n  - \"Redirect chain audit\"\n  - \"Schema markup validation\"\n  - \"Competitor technical comparison (1 competitor)\"\n  - \"Update sitemap if new pages added\"\n  - \"Review Search Console performance for anomalies\""
      },
      {
        "title": "13.1 JavaScript SEO",
        "body": "javascript_seo:\n  rendering: \"[CSR / SSR / SSG / ISR / hybrid]\"\n  \n  checklist:\n    - \"Critical content visible in initial HTML (view-source test)\"\n    - \"Googlebot can render JS — check with URL Inspection tool\"\n    - \"No content behind user interaction (click to load)\"\n    - \"Internal links are `<a href>` tags (not JS click handlers)\"\n    - \"Lazy-loaded content uses Intersection Observer (not scroll events)\"\n    - \"Dynamic rendering for critical pages if needed\"\n    - \"Meta tags in initial HTML (not injected by JS)\"\n    - \"Canonical tags in initial HTML\"\n  \n  framework_specific:\n    nextjs: \"Use SSG/ISR for content pages, SSR for dynamic\"\n    react_spa: \"Consider prerender.io or dynamic rendering\"\n    angular: \"Angular Universal for SSR\"\n    vue: \"Nuxt.js for SSR/SSG\""
      },
      {
        "title": "13.2 Log File Analysis",
        "body": "log_analysis:\n  what_to_look_for:\n    - \"Googlebot crawl frequency and pattern\"\n    - \"Pages crawled vs not crawled\"\n    - \"Crawl of non-canonical or low-value pages (waste)\"\n    - \"Server errors returned to Googlebot\"\n    - \"Response time for bot requests vs users\"\n    - \"Bot crawl of resources (CSS/JS/images)\"\n  \n  healthy_signals:\n    - \"Googlebot visits important pages frequently\"\n    - \"New content crawled within 24-48h\"\n    - \"Low error rate (<1% of requests)\"\n    - \"Response time <500ms for bot requests\"\n  \n  warning_signals:\n    - \"Googlebot stuck on parameter URLs\"\n    - \"High 5xx error rate for bot\"\n    - \"Important pages not crawled in 30+ days\"\n    - \"Crawl rate declining over time\""
      },
      {
        "title": "13.3 Edge SEO (CDN-Level Optimizations)",
        "body": "OptimizationImplementationImpactInject hreflang at edgeCloudflare Workers / Lambda@EdgeFaster international SEOAdd schema markupEdge injection for legacy CMSSchema without code changesRedirect managementCDN rulesFaster redirects, less server loadA/B test SEO changesEdge-based split testingTest title tags, meta descriptionsPre-render for botsDetect UA, serve cached HTMLFix JS rendering issues"
      },
      {
        "title": "Phase 14: Common Technical SEO Mistakes",
        "body": "#MistakeWhy It MattersFix1Blocking staging site from indexing, forgetting to unblock at launchZero pages indexedCheck robots.txt + meta robots at launch2Using 302 instead of 301 for permanent redirectsLink equity not passedSwitch to 3013Multiple versions of homepage indexed (www/non-www, HTTP/HTTPS, trailing slash)Diluted authorityPick one canonical, redirect all others4Orphan pages with no internal linksNever found by crawlersAdd to navigation or contextual links5Sitemap includes noindex pagesConflicting signalsFilter sitemap to indexable pages only6Missing alt text on imagesAccessibility + image SEO lossAdd descriptive alt text to all images7Not monitoring Core Web Vitals after deployPerformance regressionsSet up CrUX monitoring + alerts8Redirect chains (A→B→C→D)Slow + link equity lossFlatten to single hop9Large unoptimized imagesSlow LCP, page weightWebP/AVIF + responsive srcset10No HTTPS or mixed contentTrust signal lost, browser warningsFull HTTPS migration"
      },
      {
        "title": "E-commerce (1000s of product pages)",
        "body": "Faceted navigation: canonical to base category, noindex filter combos\nOut-of-stock pages: keep page, show \"out of stock\" (don't 404)\nPagination: use rel=canonical to collection page or implement load-more"
      },
      {
        "title": "Single Page Applications (SPAs)",
        "body": "Pre-rendering or SSR is mandatory for SEO\nCheck that <a href> tags exist in HTML (not just JS routing)\nTest with JavaScript disabled — is critical content visible?"
      },
      {
        "title": "Large sites (100K+ pages)",
        "body": "Sitemap index with multiple child sitemaps\nCrawl budget optimization is critical\nConsider dynamic XML sitemaps that auto-update\nLog file analysis to understand actual crawl behavior"
      },
      {
        "title": "WordPress specific",
        "body": "Install Yoast/RankMath for technical SEO basics\nCheck theme isn't injecting bad schema\nMinimize plugins (each adds JS/CSS weight)\nUse object caching (Redis) + page caching (WP Super Cache/W3 Total Cache)"
      },
      {
        "title": "After a Google algorithm update",
        "body": "Don't panic — wait 2 weeks for volatility to settle\nCompare affected pages vs unaffected — find the pattern\nCheck Search Console for manual actions\nFocus on content quality and E-E-A-T, not just technical fixes"
      },
      {
        "title": "Natural Language Commands",
        "body": "\"Run a technical SEO audit for [URL]\"\n\"Check Core Web Vitals for [URL]\"\n\"Audit my robots.txt and sitemap\"\n\"Find indexing issues on my site\"\n\"Check structured data / schema markup\"\n\"Generate schema markup for [page type]\"\n\"Pre-migration SEO checklist for [old] → [new]\"\n\"Check security headers for [URL]\"\n\"Find broken links and redirect chains\"\n\"International SEO audit for [URL]\"\n\"Score my site's technical SEO health\"\n\"What's causing my slow page speed?\""
      }
    ],
    "body": "Technical SEO Mastery\n\nComplete technical SEO audit, fix, and monitoring system. From crawlability to Core Web Vitals to international SEO — everything search engines need to find, crawl, index, and rank your site.\n\nWhen to Use\n\"Technical SEO audit for my site\"\n\"Why isn't Google indexing my pages?\"\n\"Fix Core Web Vitals issues\"\n\"Pre-migration SEO checklist\"\n\"My site is slow / rankings dropped\"\n\"Check robots.txt / sitemap / schema markup\"\n\"International SEO / hreflang setup\"\nPhase 1: Quick Health Check (5-Minute Triage)\n\nBefore a full audit, run a rapid assessment. Fetch the site and check:\n\nquick_health:\n  url: \"[domain]\"\n  checks:\n    robots_txt: \"[accessible / blocked / missing]\"\n    sitemap_xml: \"[found / missing / errors]\"\n    https: \"[yes / mixed content / no]\"\n    mobile_viewport: \"[set / missing]\"\n    page_load: \"[fast <2s / moderate 2-4s / slow >4s]\"\n    h1_present: \"[yes / missing / multiple]\"\n    canonical: \"[set / missing / self-referencing]\"\n    structured_data: \"[present / missing / errors]\"\n  \n  severity: \"[healthy / needs work / critical]\"\n  priority_fix: \"[top issue to address first]\"\n\n\nSeverity guide:\n\n🟢 Healthy: 0-1 issues — minor optimizations only\n🟡 Needs work: 2-4 issues — schedule fixes this week\n🔴 Critical: 5+ issues or any blocking issue — fix immediately\nPhase 2: Crawlability Audit\n2.1 Robots.txt Analysis\n\nFetch [domain]/robots.txt and evaluate:\n\nrobots_txt_audit:\n  exists: true/false\n  valid_syntax: true/false\n  issues:\n    - type: \"[blocked_important_page / missing_sitemap / wildcard_block / syntax_error]\"\n      detail: \"[specific line or pattern]\"\n      severity: \"critical/warning/info\"\n      fix: \"[exact fix]\"\n  \n  checks:\n    - \"Sitemap directive present\"\n    - \"No accidental blocking of CSS/JS/images\"\n    - \"No blocking of important page directories\"\n    - \"Correct user-agent targeting (Googlebot, Bingbot, etc.)\"\n    - \"No conflicting rules (allow + disallow same path)\"\n    - \"Crawl-delay only if needed (slows indexing)\"\n\n\nCommon mistakes:\n\nMistake\tImpact\tFix\nDisallow: / blocking everything\tNo pages indexed\tRemove or narrow scope\nBlocking CSS/JS\tPoor rendering = ranking drop\tAllow: /assets/\nNo sitemap reference\tSlower discovery\tAdd Sitemap: directive\nMultiple sitemaps not declared\tPartial crawling\tDeclare all sitemaps\nBlocking search/filter pages poorly\tCrawl waste\tUse Disallow: /*? patterns\n\nRecommended template:\n\nUser-agent: *\nAllow: /\nDisallow: /admin/\nDisallow: /api/\nDisallow: /checkout/\nDisallow: /*?sort=\nDisallow: /*?filter=\n\nSitemap: https://example.com/sitemap.xml\nSitemap: https://example.com/sitemap-images.xml\n\n2.2 XML Sitemap Audit\n\nFetch sitemap(s) and evaluate:\n\nsitemap_audit:\n  url: \"[sitemap URL]\"\n  type: \"[index / single / none]\"\n  url_count: 0\n  issues:\n    - type: \"[missing / too_large / includes_noindex / stale_lastmod / broken_urls]\"\n      severity: \"critical/warning/info\"\n      fix: \"[specific action]\"\n  \n  quality_checks:\n    - \"All URLs return 200 (no 404s, 301s, or 5xx)\"\n    - \"No noindex pages included\"\n    - \"lastmod dates are accurate (not all same date)\"\n    - \"Under 50,000 URLs per sitemap file\"\n    - \"Under 50MB uncompressed per file\"\n    - \"Sitemap index if >50K URLs\"\n    - \"Matches canonical URLs (not alternate versions)\"\n    - \"Images/video sitemaps if applicable\"\n\n\nSitemap best practices:\n\nOne URL per <url> entry — canonical version only\nlastmod should reflect actual content change date\nPriority and changefreq are largely ignored by Google — optional\nCompress with gzip for large sitemaps\nSubmit in Google Search Console AND robots.txt\n2.3 Crawl Budget Optimization\ncrawl_budget_analysis:\n  total_pages: 0\n  indexable_pages: 0\n  crawl_waste_ratio: \"[indexable / total — target >80%]\"\n  \n  waste_sources:\n    - source: \"[faceted navigation / pagination / parameters / duplicate content / thin pages]\"\n      page_count: 0\n      action: \"[noindex / canonical / robots block / parameter handling / consolidate]\"\n  \n  optimization_priority:\n    1: \"Remove/noindex thin and duplicate pages\"\n    2: \"Consolidate parameter variations with canonicals\"\n    3: \"Implement pagination best practices (rel=next or load-more)\"\n    4: \"Fix redirect chains (max 1 hop)\"\n    5: \"Eliminate orphan pages or link them into site structure\"\n\n\nCrawl budget matters when: Site has >10K pages OR crawl rate is notably low in Search Console.\n\nPhase 3: Indexability Audit\n3.1 Index Status Check\n\nFor each important page type, verify:\n\nindexability_check:\n  page_type: \"[homepage / product / blog / category / landing]\"\n  sample_url: \"[URL]\"\n  \n  signals:\n    meta_robots: \"[index,follow / noindex / nofollow / none]\"\n    x_robots_tag: \"[present / absent — check HTTP headers]\"\n    canonical: \"[self / points to other URL / missing]\"\n    http_status: \"[200 / 301 / 302 / 404 / 410 / 5xx]\"\n    in_sitemap: true/false\n    internal_links_to: \"[count of internal links pointing here]\"\n    robots_txt_allowed: true/false\n  \n  verdict: \"[indexable / blocked / conflicting signals]\"\n  fix: \"[action if not indexable]\"\n\n3.2 Common Indexing Blockers\nBlocker\tDetection\tFix\tPriority\nnoindex meta tag\tCheck <meta name=\"robots\">\tRemove tag or move to correct pages\tP0\nX-Robots-Tag: noindex header\tCheck HTTP response headers\tRemove header from server config\tP0\nCanonical pointing elsewhere\tCheck <link rel=\"canonical\">\tFix to self-reference or correct target\tP0\nBlocked in robots.txt\tCross-reference robots.txt\tUpdate robots.txt rules\tP0\nNot in sitemap\tCheck sitemap inclusion\tAdd to sitemap\tP1\nNo internal links (orphan)\tCrawl internal link graph\tAdd contextual internal links\tP1\nSoft 404 (200 with no content)\tCheck page content\tReturn proper 404 or add content\tP1\nDuplicate content\tCompare page similarity\tCanonical or consolidate\tP2\nThin content (<200 words, no value)\tWord count + quality check\tExpand or merge with related page\tP2\n3.3 Redirect Audit\nredirect_audit:\n  chains_found: 0  # A→B→C (should be A→C)\n  loops_found: 0   # A→B→A (broken)\n  temporary_redirects: 0  # 302s that should be 301s\n  \n  rules:\n    - \"Max 1 redirect hop (no chains)\"\n    - \"Use 301 for permanent moves, 308 for POST-preserving\"\n    - \"302 only for genuinely temporary redirects\"\n    - \"Update internal links to point to final destination\"\n    - \"Redirect HTTP → HTTPS at server level\"\n    - \"Redirect www ↔ non-www consistently\"\n\nPhase 4: Core Web Vitals & Performance\n4.1 Core Web Vitals Targets\nMetric\tGood\tNeeds Improvement\tPoor\nLCP (Largest Contentful Paint)\t≤2.5s\t2.5-4.0s\t>4.0s\nINP (Interaction to Next Paint)\t≤200ms\t200-500ms\t>500ms\nCLS (Cumulative Layout Shift)\t≤0.1\t0.1-0.25\t>0.25\n4.2 LCP Fix Playbook\nlcp_diagnosis:\n  current_lcp: \"[Xs]\"\n  lcp_element: \"[identify the largest element — usually hero image or heading]\"\n  \n  fix_priority:\n    1:\n      issue: \"Slow server response (TTFB >800ms)\"\n      fixes:\n        - \"Enable server-side caching (Redis, Varnish)\"\n        - \"Use CDN for static assets\"\n        - \"Optimize database queries\"\n        - \"Upgrade hosting if shared\"\n    2:\n      issue: \"Render-blocking resources\"\n      fixes:\n        - \"Defer non-critical CSS: `<link rel='preload' as='style'>`\"\n        - \"Async/defer JavaScript: `<script defer>`\"\n        - \"Inline critical CSS (above-the-fold)\"\n        - \"Remove unused CSS/JS\"\n    3:\n      issue: \"Slow resource load (images, fonts)\"\n      fixes:\n        - \"Preload LCP image: `<link rel='preload' as='image' href='...'>`\"\n        - \"Use WebP/AVIF format (30-50% smaller)\"\n        - \"Responsive images with srcset\"\n        - \"Font-display: swap for web fonts\"\n        - \"Preconnect to CDN: `<link rel='preconnect' href='...'>`\"\n    4:\n      issue: \"Client-side rendering delay\"\n      fixes:\n        - \"Server-side render (SSR) or static generate (SSG) above-fold content\"\n        - \"Avoid lazy-loading the LCP element\"\n        - \"Reduce JavaScript execution before paint\"\n\n4.3 INP Fix Playbook\ninp_diagnosis:\n  current_inp: \"[Xms]\"\n  \n  fix_priority:\n    1: \"Break long tasks (>50ms) into smaller chunks using `requestIdleCallback` or `setTimeout`\"\n    2: \"Reduce main thread JavaScript — defer non-essential scripts\"\n    3: \"Use `content-visibility: auto` for off-screen content\"\n    4: \"Debounce/throttle event handlers (scroll, resize, input)\"\n    5: \"Move heavy computation to Web Workers\"\n    6: \"Optimize event delegation — avoid attaching listeners to every element\"\n    7: \"Reduce DOM size (target <1,500 elements)\"\n\n4.4 CLS Fix Playbook\ncls_diagnosis:\n  current_cls: \"[X.XX]\"\n  \n  common_causes:\n    - cause: \"Images without dimensions\"\n      fix: \"Always set width/height attributes OR use aspect-ratio CSS\"\n    - cause: \"Ads/embeds without reserved space\"\n      fix: \"Use min-height on ad containers\"\n    - cause: \"Web fonts causing FOIT/FOUT\"\n      fix: \"`font-display: swap` + `<link rel='preload' as='font'>`\"\n    - cause: \"Dynamically injected content above viewport\"\n      fix: \"Reserve space or inject below the fold\"\n    - cause: \"Late-loading CSS changing layout\"\n      fix: \"Inline critical CSS, load rest async\"\n\n4.5 Performance Budget\nperformance_budget:\n  total_page_weight: \"< 1.5MB (ideal < 1MB)\"\n  html: \"< 100KB\"\n  css: \"< 100KB (ideally < 50KB)\"\n  javascript: \"< 300KB (compressed)\"\n  images: \"< 500KB total above fold\"\n  fonts: \"< 100KB (max 2 families)\"\n  third_party: \"< 200KB total\"\n  \n  requests:\n    total: \"< 50 HTTP requests\"\n    third_party: \"< 10 external domains\"\n  \n  timing:\n    ttfb: \"< 800ms\"\n    fcp: \"< 1.8s\"\n    lcp: \"< 2.5s\"\n    tti: \"< 3.8s\"\n\nPhase 5: Mobile Optimization\nmobile_audit:\n  viewport_meta: \"[present with correct values / missing / malformed]\"\n  # Correct: <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  \n  checklist:\n    - check: \"Viewport meta tag set correctly\"\n      pass: true/false\n    - check: \"No horizontal scroll on mobile\"\n      pass: true/false\n    - check: \"Touch targets ≥48x48px with ≥8px spacing\"\n      pass: true/false\n    - check: \"Font size ≥16px base (no zoom on iOS input)\"\n      pass: true/false\n    - check: \"No fixed-width elements wider than viewport\"\n      pass: true/false\n    - check: \"Images responsive (max-width: 100%)\"\n      pass: true/false\n    - check: \"No intrusive interstitials / popups\"\n      pass: true/false\n    - check: \"Readable without zooming\"\n      pass: true/false\n    - check: \"Mobile page speed < 3s on 4G\"\n      pass: true/false\n    - check: \"No Flash or unsupported plugins\"\n      pass: true/false\n  \n  mobile_score: \"[X/10]\"\n\nPhase 6: HTTPS & Security\nsecurity_audit:\n  https:\n    enabled: true/false\n    certificate_valid: true/false\n    certificate_expiry: \"[date]\"\n    mixed_content: \"[none / warnings / errors]\"\n    http_to_https_redirect: \"[301 / 302 / none]\"\n    hsts_header: \"[present with max-age / missing]\"\n  \n  security_headers:\n    - header: \"Strict-Transport-Security\"\n      present: true/false\n      recommended: \"max-age=31536000; includeSubDomains; preload\"\n    - header: \"Content-Security-Policy\"\n      present: true/false\n      recommended: \"[appropriate policy for site]\"\n    - header: \"X-Content-Type-Options\"\n      present: true/false\n      recommended: \"nosniff\"\n    - header: \"X-Frame-Options\"\n      present: true/false\n      recommended: \"SAMEORIGIN\"\n    - header: \"Referrer-Policy\"\n      present: true/false\n      recommended: \"strict-origin-when-cross-origin\"\n    - header: \"Permissions-Policy\"\n      present: true/false\n      recommended: \"camera=(), microphone=(), geolocation=()\"\n  \n  security_score: \"[X/10]\"\n\n\nHTTPS migration checklist (if not yet on HTTPS):\n\nObtain SSL certificate (Let's Encrypt = free)\nInstall on server / CDN\nUpdate all internal links to HTTPS\n301 redirect all HTTP URLs to HTTPS\nUpdate canonical tags to HTTPS\nUpdate sitemap URLs to HTTPS\nUpdate Google Search Console property\nUpdate robots.txt Sitemap directive\nCheck for mixed content (HTTP resources on HTTPS pages)\nEnable HSTS header after confirming everything works\nPhase 7: Structured Data / Schema Markup\n7.1 Schema Audit\nschema_audit:\n  implementation_method: \"[JSON-LD / Microdata / RDFa]\"  # JSON-LD recommended\n  \n  pages_with_schema: \"[X / total pages]\"\n  \n  schemas_found:\n    - type: \"[Organization / LocalBusiness / Product / Article / FAQ / etc.]\"\n      url: \"[sample URL]\"\n      valid: true/false\n      errors: [\"[list of validation errors]\"]\n      warnings: [\"[list of warnings]\"]\n  \n  missing_opportunities:\n    - page_type: \"[product / article / recipe / event / FAQ / how-to / local]\"\n      recommended_schema: \"[schema type]\"\n      rich_result_eligible: \"[yes — which type]\"\n      priority: \"high/medium/low\"\n\n7.2 Schema Templates (JSON-LD)\n\nOrganization:\n\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"[Company Name]\",\n  \"url\": \"https://example.com\",\n  \"logo\": \"https://example.com/logo.png\",\n  \"sameAs\": [\n    \"https://twitter.com/example\",\n    \"https://linkedin.com/company/example\"\n  ],\n  \"contactPoint\": {\n    \"@type\": \"ContactPoint\",\n    \"telephone\": \"+1-XXX-XXX-XXXX\",\n    \"contactType\": \"customer service\"\n  }\n}\n\n\nArticle:\n\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"[Title]\",\n  \"author\": {\"@type\": \"Person\", \"name\": \"[Author]\"},\n  \"datePublished\": \"2026-01-15\",\n  \"dateModified\": \"2026-02-18\",\n  \"image\": \"https://example.com/image.jpg\",\n  \"publisher\": {\n    \"@type\": \"Organization\",\n    \"name\": \"[Publisher]\",\n    \"logo\": {\"@type\": \"ImageObject\", \"url\": \"https://example.com/logo.png\"}\n  }\n}\n\n\nProduct:\n\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"[Product Name]\",\n  \"image\": \"https://example.com/product.jpg\",\n  \"description\": \"[Description]\",\n  \"brand\": {\"@type\": \"Brand\", \"name\": \"[Brand]\"},\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"price\": \"29.99\",\n    \"priceCurrency\": \"USD\",\n    \"availability\": \"https://schema.org/InStock\",\n    \"url\": \"https://example.com/product\"\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"4.5\",\n    \"reviewCount\": \"127\"\n  }\n}\n\n\nFAQ:\n\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"[Question 1]\",\n      \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"[Answer 1]\"}\n    }\n  ]\n}\n\n\nRich result eligibility by schema type:\n\nSchema\tRich Result\tImpact\nProduct\tPrice, rating stars, availability\tHigh CTR boost\nFAQ\tExpandable questions in SERP\tMore SERP real estate\nHowTo\tStep-by-step in SERP\tFeatured snippet potential\nArticle\tAuthor, date, image\tNews/Discover eligibility\nLocalBusiness\tKnowledge panel, maps\tLocal pack ranking\nEvent\tDate, location, ticket info\tEvent carousel\nRecipe\tCook time, rating, calories\tRecipe carousel\nVideo\tThumbnail, duration\tVideo carousel\nBreadcrumbList\tBreadcrumb trail in SERP\tBetter navigation display\nReview\tStar rating\tTrust + CTR\nPhase 8: URL Structure & Architecture\nurl_audit:\n  structure_pattern: \"[clean / parameter-heavy / mixed]\"\n  \n  checklist:\n    - rule: \"Lowercase only (no mixed case)\"\n      pass: true/false\n    - rule: \"Hyphens as separators (not underscores)\"\n      pass: true/false\n    - rule: \"No special characters or spaces\"\n      pass: true/false\n    - rule: \"Descriptive and keyword-rich\"\n      pass: true/false\n    - rule: \"Short (< 75 characters ideal)\"\n      pass: true/false\n    - rule: \"Logical hierarchy (/category/subcategory/page)\"\n      pass: true/false\n    - rule: \"No session IDs or tracking parameters in indexed URLs\"\n      pass: true/false\n    - rule: \"Trailing slash consistent (pick one, redirect the other)\"\n      pass: true/false\n    - rule: \"No .html/.php extensions (clean URLs)\"\n      pass: true/false\n  \n  # Bad: /p?id=12345&cat=3&ref=home\n  # Good: /shoes/running/nike-air-max\n  \n  internal_linking:\n    orphan_pages: 0  # Pages with 0 internal links\n    deep_pages: 0    # Pages >4 clicks from homepage\n    broken_links: 0  # Internal 404s\n    \n    fix_priority:\n      1: \"Fix all broken internal links (404s)\"\n      2: \"Link orphan pages from relevant content\"\n      3: \"Flatten deep pages — add to navigation or hub pages\"\n      4: \"Add contextual cross-links between related content\"\n\n\nSite architecture best practices:\n\nFlat structure: every page reachable within 3 clicks from homepage\nHub & spoke: category pages link to all children; children link back\nBreadcrumbs: implement on every page (with BreadcrumbList schema)\nPagination: use rel=\"next\" / rel=\"prev\" or infinite scroll with progressive enhancement\nFaceted navigation: canonicalize or noindex filter combinations\nPhase 9: International SEO\n9.1 Hreflang Implementation\ninternational_seo:\n  approach: \"[subdirectories /en/ / subdomains en. / ccTLDs .co.uk]\"\n  # Recommended: subdirectories (easiest to manage, inherits domain authority)\n  \n  hreflang_audit:\n    implemented: true/false\n    method: \"[HTML link tags / HTTP headers / sitemap]\"\n    issues:\n      - \"Missing return links (A→B exists but B→A missing)\"\n      - \"Wrong language/region codes\"\n      - \"Missing x-default tag\"\n      - \"Self-referencing hreflang missing\"\n\n\nHreflang template:\n\n<link rel=\"alternate\" hreflang=\"en-us\" href=\"https://example.com/en-us/page\" />\n<link rel=\"alternate\" hreflang=\"en-gb\" href=\"https://example.com/en-gb/page\" />\n<link rel=\"alternate\" hreflang=\"es\" href=\"https://example.com/es/page\" />\n<link rel=\"alternate\" hreflang=\"x-default\" href=\"https://example.com/page\" />\n\n\nRules:\n\nEvery page must reference ALL language versions including itself\nAlways include x-default (fallback for unmatched languages)\nUse ISO 639-1 for language, ISO 3166-1 Alpha 2 for region\nHreflang must be bidirectional (if A references B, B must reference A)\nCanonical and hreflang should align — canonical should point to same-language version\n9.2 International Targeting Checklist\n Correct hreflang on all pages (bidirectional)\n x-default specified\n Content genuinely translated (not just auto-translated)\n Local currency, date format, phone numbers\n Geo-targeting set in Search Console (for ccTLDs/subdirectories)\n Local server / CDN node in target country\n Local backlinks from target region\n Language-specific sitemap or sitemap section\nPhase 10: Site Migration SEO Checklist\n\nUse when changing domains, restructuring URLs, or redesigning:\n\nmigration_checklist:\n  pre_migration:\n    - \"Crawl current site — full URL inventory\"\n    - \"Export all current rankings and traffic data\"\n    - \"Map every old URL to new URL (1:1 redirect map)\"\n    - \"Backup robots.txt, sitemaps, .htaccess\"\n    - \"Document all existing 301 redirects\"\n    - \"Note top 100 pages by traffic — verify redirects\"\n    - \"Test staging site (is it blocked from indexing?)\"\n    - \"Verify new site has all schema markup\"\n    - \"Check canonical tags on new site\"\n    - \"Prepare new sitemap\"\n  \n  migration_day:\n    - \"Implement all 301 redirects\"\n    - \"Update robots.txt (unblock new site)\"\n    - \"Submit new sitemap to Search Console\"\n    - \"Update Google Search Console property if domain changed\"\n    - \"Verify HTTPS redirect chain is clean\"\n    - \"Test 50 random old URLs — confirm redirects work\"\n    - \"Check for redirect chains or loops\"\n    - \"Monitor server errors / 5xx in real-time\"\n  \n  post_migration:\n    week_1:\n      - \"Monitor Search Console for crawl errors daily\"\n      - \"Check index coverage report\"\n      - \"Verify organic traffic hasn't cratered\"\n      - \"Fix any 404s appearing in crawl reports\"\n    month_1:\n      - \"Compare rankings: pre vs post migration\"\n      - \"Check all structured data still validates\"\n      - \"Verify internal links updated (no redirect-through links)\"\n      - \"Monitor Core Web Vitals on new infrastructure\"\n    month_3:\n      - \"Full ranking comparison\"\n      - \"Traffic recovery assessment (expect 80-100% recovery)\"\n      - \"Clean up any remaining redirect chains\"\n  \n  expected_traffic_impact:\n    best_case: \"2-4 weeks dip, full recovery\"\n    typical: \"1-3 months for full recovery\"\n    worst_case: \"6+ months if redirects missed — audit immediately\"\n\nPhase 11: Technical SEO Scoring System\nOverall Technical Health Score (0-100)\nscoring:\n  crawlability:          # Weight: 20%\n    robots_txt: \"/5\"\n    sitemap: \"/5\"\n    crawl_budget: \"/5\"\n    internal_linking: \"/5\"\n  \n  indexability:           # Weight: 20%\n    meta_robots: \"/5\"\n    canonicals: \"/5\"\n    redirects: \"/5\"\n    duplicate_content: \"/5\"\n  \n  performance:            # Weight: 25%\n    lcp: \"/5\"\n    inp: \"/5\"\n    cls: \"/5\"\n    ttfb: \"/5\"\n    page_weight: \"/5\"\n  \n  mobile:                 # Weight: 10%\n    viewport: \"/5\"\n    touch_targets: \"/5\"\n    responsive: \"/5\"\n    speed: \"/5\"\n  \n  security:               # Weight: 10%\n    https: \"/5\"\n    headers: \"/5\"\n    certificate: \"/5\"\n    mixed_content: \"/5\"\n  \n  structured_data:        # Weight: 10%\n    implementation: \"/5\"\n    validation: \"/5\"\n    coverage: \"/5\"\n    rich_results: \"/5\"\n  \n  url_architecture:       # Weight: 5%\n    structure: \"/5\"\n    depth: \"/5\"\n    broken_links: \"/5\"\n\n  total: \"/100\"\n  grade: \"[A (90+) / B (75-89) / C (60-74) / D (40-59) / F (<40)]\"\n\nPriority Fix Matrix\n\nAfter scoring, generate a prioritized action plan:\n\naction_plan:\n  p0_critical:  # Fix this week — directly blocking ranking\n    - issue: \"[description]\"\n      impact: \"high\"\n      effort: \"[low/medium/high]\"\n      fix: \"[specific steps]\"\n  \n  p1_important:  # Fix this month — significant ranking impact\n    - issue: \"[description]\"\n      impact: \"medium-high\"\n      effort: \"[low/medium/high]\"\n      fix: \"[specific steps]\"\n  \n  p2_optimization:  # Fix this quarter — incremental improvement\n    - issue: \"[description]\"\n      impact: \"medium\"\n      effort: \"[low/medium/high]\"\n      fix: \"[specific steps]\"\n  \n  p3_nice_to_have:  # Backlog — minimal direct ranking impact\n    - issue: \"[description]\"\n      fix: \"[specific steps]\"\n\n\nPriority rules:\n\nAnything blocking indexing = P0 always\nCore Web Vitals failing = P1 minimum\nSecurity issues = P0 if no HTTPS, P1 for headers\nSchema missing = P2 unless competitor has rich results (then P1)\nURL structure issues = P2 unless causing duplicate content\nPhase 12: Ongoing Monitoring\nWeekly Technical SEO Checklist\nweekly_check:\n  search_console:\n    - \"Index coverage: any new errors?\"\n    - \"Core Web Vitals: any regressions?\"\n    - \"Manual actions: any penalties?\"\n    - \"Security issues: any warnings?\"\n  \n  site_health:\n    - \"Spot-check 5 random pages load correctly\"\n    - \"Check for new 404 errors\"\n    - \"Verify sitemap is current and accessible\"\n    - \"Monitor HTTPS certificate expiry\"\n  \n  tracking:\n    - \"Organic traffic trend (vs. last week, vs. last year)\"\n    - \"Crawl stats in Search Console\"\n    - \"Any new structured data errors\"\n\nMonthly Deep Dive\nmonthly_review:\n  - \"Full crawl of site — compare page count to last month\"\n  - \"Core Web Vitals lab + field data comparison\"\n  - \"New broken links check\"\n  - \"Redirect chain audit\"\n  - \"Schema markup validation\"\n  - \"Competitor technical comparison (1 competitor)\"\n  - \"Update sitemap if new pages added\"\n  - \"Review Search Console performance for anomalies\"\n\nPhase 13: Advanced Technical SEO\n13.1 JavaScript SEO\njavascript_seo:\n  rendering: \"[CSR / SSR / SSG / ISR / hybrid]\"\n  \n  checklist:\n    - \"Critical content visible in initial HTML (view-source test)\"\n    - \"Googlebot can render JS — check with URL Inspection tool\"\n    - \"No content behind user interaction (click to load)\"\n    - \"Internal links are `<a href>` tags (not JS click handlers)\"\n    - \"Lazy-loaded content uses Intersection Observer (not scroll events)\"\n    - \"Dynamic rendering for critical pages if needed\"\n    - \"Meta tags in initial HTML (not injected by JS)\"\n    - \"Canonical tags in initial HTML\"\n  \n  framework_specific:\n    nextjs: \"Use SSG/ISR for content pages, SSR for dynamic\"\n    react_spa: \"Consider prerender.io or dynamic rendering\"\n    angular: \"Angular Universal for SSR\"\n    vue: \"Nuxt.js for SSR/SSG\"\n\n13.2 Log File Analysis\nlog_analysis:\n  what_to_look_for:\n    - \"Googlebot crawl frequency and pattern\"\n    - \"Pages crawled vs not crawled\"\n    - \"Crawl of non-canonical or low-value pages (waste)\"\n    - \"Server errors returned to Googlebot\"\n    - \"Response time for bot requests vs users\"\n    - \"Bot crawl of resources (CSS/JS/images)\"\n  \n  healthy_signals:\n    - \"Googlebot visits important pages frequently\"\n    - \"New content crawled within 24-48h\"\n    - \"Low error rate (<1% of requests)\"\n    - \"Response time <500ms for bot requests\"\n  \n  warning_signals:\n    - \"Googlebot stuck on parameter URLs\"\n    - \"High 5xx error rate for bot\"\n    - \"Important pages not crawled in 30+ days\"\n    - \"Crawl rate declining over time\"\n\n13.3 Edge SEO (CDN-Level Optimizations)\nOptimization\tImplementation\tImpact\nInject hreflang at edge\tCloudflare Workers / Lambda@Edge\tFaster international SEO\nAdd schema markup\tEdge injection for legacy CMS\tSchema without code changes\nRedirect management\tCDN rules\tFaster redirects, less server load\nA/B test SEO changes\tEdge-based split testing\tTest title tags, meta descriptions\nPre-render for bots\tDetect UA, serve cached HTML\tFix JS rendering issues\nPhase 14: Common Technical SEO Mistakes\n#\tMistake\tWhy It Matters\tFix\n1\tBlocking staging site from indexing, forgetting to unblock at launch\tZero pages indexed\tCheck robots.txt + meta robots at launch\n2\tUsing 302 instead of 301 for permanent redirects\tLink equity not passed\tSwitch to 301\n3\tMultiple versions of homepage indexed (www/non-www, HTTP/HTTPS, trailing slash)\tDiluted authority\tPick one canonical, redirect all others\n4\tOrphan pages with no internal links\tNever found by crawlers\tAdd to navigation or contextual links\n5\tSitemap includes noindex pages\tConflicting signals\tFilter sitemap to indexable pages only\n6\tMissing alt text on images\tAccessibility + image SEO loss\tAdd descriptive alt text to all images\n7\tNot monitoring Core Web Vitals after deploy\tPerformance regressions\tSet up CrUX monitoring + alerts\n8\tRedirect chains (A→B→C→D)\tSlow + link equity loss\tFlatten to single hop\n9\tLarge unoptimized images\tSlow LCP, page weight\tWebP/AVIF + responsive srcset\n10\tNo HTTPS or mixed content\tTrust signal lost, browser warnings\tFull HTTPS migration\nEdge Cases\nE-commerce (1000s of product pages)\nFaceted navigation: canonical to base category, noindex filter combos\nOut-of-stock pages: keep page, show \"out of stock\" (don't 404)\nPagination: use rel=canonical to collection page or implement load-more\nSingle Page Applications (SPAs)\nPre-rendering or SSR is mandatory for SEO\nCheck that <a href> tags exist in HTML (not just JS routing)\nTest with JavaScript disabled — is critical content visible?\nLarge sites (100K+ pages)\nSitemap index with multiple child sitemaps\nCrawl budget optimization is critical\nConsider dynamic XML sitemaps that auto-update\nLog file analysis to understand actual crawl behavior\nWordPress specific\nInstall Yoast/RankMath for technical SEO basics\nCheck theme isn't injecting bad schema\nMinimize plugins (each adds JS/CSS weight)\nUse object caching (Redis) + page caching (WP Super Cache/W3 Total Cache)\nAfter a Google algorithm update\nDon't panic — wait 2 weeks for volatility to settle\nCompare affected pages vs unaffected — find the pattern\nCheck Search Console for manual actions\nFocus on content quality and E-E-A-T, not just technical fixes\nNatural Language Commands\n\"Run a technical SEO audit for [URL]\"\n\"Check Core Web Vitals for [URL]\"\n\"Audit my robots.txt and sitemap\"\n\"Find indexing issues on my site\"\n\"Check structured data / schema markup\"\n\"Generate schema markup for [page type]\"\n\"Pre-migration SEO checklist for [old] → [new]\"\n\"Check security headers for [URL]\"\n\"Find broken links and redirect chains\"\n\"International SEO audit for [URL]\"\n\"Score my site's technical SEO health\"\n\"What's causing my slow page speed?\""
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/1kalin/afrexai-technical-seo",
    "publisherUrl": "https://clawhub.ai/1kalin/afrexai-technical-seo",
    "owner": "1kalin",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/afrexai-technical-seo",
    "downloadUrl": "https://openagent3.xyz/downloads/afrexai-technical-seo",
    "agentUrl": "https://openagent3.xyz/skills/afrexai-technical-seo/agent",
    "manifestUrl": "https://openagent3.xyz/skills/afrexai-technical-seo/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/afrexai-technical-seo/agent.md"
  }
}