seo-optimizer

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

SEO Optimizer

SEO优化器

Overview

概述

Optimize websites for search engine visibility through technical SEO, on-page optimization, structured data implementation, and Core Web Vitals performance tuning. This skill covers crawlability, indexability, meta tag strategy, Schema.org markup, sitemap generation, canonical URL management, internationalization (hreflang), and performance optimization for Google's ranking signals.
Apply this skill whenever a site needs better organic search performance, whether for a single page audit or a full-site overhaul.
通过技术SEO、页面内优化、结构化数据落地、Core Web Vitals性能调优,提升网站的搜索引擎可见性。本技能覆盖可爬取性、可索引性、元标签策略、Schema.org标记、站点地图生成、规范URL管理、国际化(hreflang)以及针对谷歌排名信号的性能优化。
无论是单页审计还是整站改造,只要站点需要提升自然搜索表现,都可以应用本技能。

Multi-Phase Process

多阶段流程

Phase 1: Technical Audit

阶段1:技术审计

  1. Crawl the site (Screaming Frog, Sitebulb, or custom script)
  2. Check robots.txt and XML sitemap validity
  3. Identify crawl errors, redirect chains, and broken links
  4. Verify canonical URLs and duplicate content handling
  5. Assess mobile-friendliness and responsive design
  6. Check HTTPS implementation and mixed content
  7. Evaluate page load performance (Core Web Vitals)
STOP — Do NOT proceed to Phase 2 until audit findings are documented and prioritized.
  1. 爬取站点(Screaming Frog、Sitebulb或自定义脚本)
  2. 检查robots.txt和XML站点地图有效性
  3. 识别爬取错误、重定向链和坏链
  4. 验证规范URL和重复内容处理逻辑
  5. 评估移动端友好性和响应式设计适配
  6. 检查HTTPS实现和混合内容问题
  7. 评估页面加载性能(Core Web Vitals)
停止 —— 审计发现已完成记录和优先级排序前,请勿进入阶段2。

Phase 2: On-Page Optimization

阶段2:页面内优化

  1. Audit title tags (unique, 50-60 chars, keyword placement)
  2. Review meta descriptions (unique, 150-160 chars, compelling CTAs)
  3. Analyze heading hierarchy (single H1, logical H2-H6 structure)
  4. Optimize image alt text and file names
  5. Review internal linking structure and anchor text
  6. Check URL structure (short, descriptive, hyphenated)
  7. Validate Open Graph and Twitter Card tags
STOP — Do NOT proceed to Phase 3 until on-page changes are implemented and verified.
  1. 审计标题标签(唯一、50-60字符、关键词布局合理)
  2. 审查元描述(唯一、150-160字符、有吸引力的行动号召)
  3. 分析标题层级(单个H1、逻辑清晰的H2-H6结构)
  4. 优化图片alt文本和文件名
  5. 审查内链结构和锚文本
  6. 检查URL结构(简短、描述性、使用连字符分隔)
  7. 验证Open Graph和Twitter Card标签
停止 —— 页面内修改落地并验证通过前,请勿进入阶段3。

Phase 3: Structured Data Implementation

阶段3:结构化数据落地

  1. Identify applicable Schema.org types for content
  2. Implement JSON-LD structured data
  3. Validate with Google Rich Results Test
  4. Test for rich snippet eligibility
  5. Monitor Search Console for structured data errors
STOP — Do NOT proceed to Phase 4 until structured data passes validation.
  1. 识别内容适配的Schema.org类型
  2. 实现JSON-LD结构化数据
  3. 用谷歌富结果测试工具验证
  4. 测试富片段适配资格
  5. 监控Search Console的结构化数据错误
停止 —— 结构化数据验证通过前,请勿进入阶段4。

Phase 4: Monitoring and Iteration

阶段4:监控与迭代

  1. Set up Google Search Console monitoring
  2. Track Core Web Vitals over time
  3. Monitor indexation status and coverage
  4. Review search performance (clicks, impressions, CTR, position)
  5. Set up alerts for crawl errors and ranking drops
  1. 配置谷歌Search Console监控
  2. 长期跟踪Core Web Vitals变化
  3. 监控索引状态和覆盖范围
  4. 复盘搜索表现(点击量、曝光量、CTR、排名)
  5. 配置爬取错误和排名下跌告警

Audit Priority Decision Table

审计优先级决策表

FindingSeverityFix PriorityImpact
No HTTPS / mixed contentCriticalImmediateRanking penalty, trust signals
Missing canonical URLsCriticalImmediateDuplicate content dilution
Broken redirect chains (3+ hops)HighThis sprintCrawl budget waste, link equity loss
Missing or duplicate title tagsHighThis sprintCTR drop, ranking confusion
No structured dataMediumNext sprintMissing rich snippets
Missing alt text on imagesMediumNext sprintAccessibility and image search loss
Suboptimal Core Web VitalsMediumNext sprintRanking signal, user experience
Missing hreflang tags (multi-language)LowBacklogGeo-targeting issues
Non-descriptive URL slugsLowBacklogMinor ranking and CTR effect
发现问题严重程度修复优先级影响
无HTTPS / 混合内容严重立即修复排名惩罚、信任信号受损
缺失规范URL严重立即修复重复内容权重稀释
重定向链过长(3跳及以上)本迭代爬取预算浪费、链接权重流失
标题标签缺失或重复本迭代CTR下跌、排名识别混乱
无结构化数据下迭代错失富片段展示机会
图片缺失alt文本下迭代可访问性受损、图片搜索流量流失
Core Web Vitals未达最优下迭代排名信号受损、用户体验下降
缺失hreflang标签(多语言站点)待办队列地域定向问题
URL slug无描述性待办队列对排名和CTR影响较小

Meta Tag Reference

元标签参考

Essential Meta Tags

核心元标签

html
<head>
  <!-- Primary -->
  <title>Primary Keyword - Secondary Keyword | Brand Name</title>
  <meta name="description" content="Compelling 150-160 char description with target keyword and clear value proposition.">
  <link rel="canonical" href="https://example.com/page">

  <!-- Robots -->
  <meta name="robots" content="index, follow">
  <!-- or noindex, nofollow for pages that shouldn't be indexed -->

  <!-- Viewport (mobile) -->
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <!-- Open Graph -->
  <meta property="og:type" content="website">
  <meta property="og:title" content="Page Title for Social Sharing">
  <meta property="og:description" content="Description optimized for social sharing.">
  <meta property="og:image" content="https://example.com/og-image.jpg">
  <meta property="og:url" content="https://example.com/page">
  <meta property="og:site_name" content="Brand Name">

  <!-- Twitter Card -->
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:title" content="Page Title">
  <meta name="twitter:description" content="Twitter-optimized description.">
  <meta name="twitter:image" content="https://example.com/twitter-image.jpg">

  <!-- Internationalization -->
  <link rel="alternate" hreflang="en" href="https://example.com/en/page">
  <link rel="alternate" hreflang="de" href="https://example.com/de/page">
  <link rel="alternate" hreflang="x-default" href="https://example.com/page">
</head>
html
<head>
  <!-- Primary -->
  <title>Primary Keyword - Secondary Keyword | Brand Name</title>
  <meta name="description" content="Compelling 150-160 char description with target keyword and clear value proposition.">
  <link rel="canonical" href="https://example.com/page">

  <!-- Robots -->
  <meta name="robots" content="index, follow">
  <!-- or noindex, nofollow for pages that shouldn't be indexed -->

  <!-- Viewport (mobile) -->
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <!-- Open Graph -->
  <meta property="og:type" content="website">
  <meta property="og:title" content="Page Title for Social Sharing">
  <meta property="og:description" content="Description optimized for social sharing.">
  <meta property="og:image" content="https://example.com/og-image.jpg">
  <meta property="og:url" content="https://example.com/page">
  <meta property="og:site_name" content="Brand Name">

  <!-- Twitter Card -->
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:title" content="Page Title">
  <meta name="twitter:description" content="Twitter-optimized description.">
  <meta name="twitter:image" content="https://example.com/twitter-image.jpg">

  <!-- Internationalization -->
  <link rel="alternate" hreflang="en" href="https://example.com/en/page">
  <link rel="alternate" hreflang="de" href="https://example.com/de/page">
  <link rel="alternate" hreflang="x-default" href="https://example.com/page">
</head>

Meta Tag Optimization Matrix

元标签优化矩阵

ElementMax LengthPriority KeywordsCommon Mistakes
Title tag50-60 charsFront-load primary keywordToo long, keyword stuffing, duplicate
Meta description150-160 charsInclude CTA and keywordMissing, duplicate, no CTA
H1N/A (single per page)Primary keyword variationMultiple H1s, missing H1
URL slug3-5 wordsTarget keywordToo long, parameters, underscores
Image alt125 charsDescriptive, keyword if naturalEmpty, "image of...", keyword stuffing
OG title60-90 charsEngaging, shareableSame as title tag (missed opportunity)
元素最大长度优先级关键词常见错误
标题标签50-60字符前置核心关键词过长、关键词堆砌、重复
元描述150-160字符包含CTA和关键词缺失、重复、无CTA
H1无限制(每页仅一个)核心关键词变体多个H1、缺失H1
URL slug3-5个词目标关键词过长、带参数、使用下划线分隔
图片alt文本125字符描述性、自然融入关键词为空、使用「图片的...」、关键词堆砌
OG标题60-90字符有吸引力、适合分享和页面标题完全一致(浪费曝光机会)

Structured Data (JSON-LD)

结构化数据(JSON-LD)

Article

文章

html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How to Optimize Core Web Vitals",
  "author": {
    "@type": "Person",
    "name": "Jane Smith",
    "url": "https://example.com/authors/jane-smith"
  },
  "datePublished": "2026-03-01",
  "dateModified": "2026-03-15",
  "image": "https://example.com/images/article-hero.jpg",
  "publisher": {
    "@type": "Organization",
    "name": "Example Blog",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  },
  "description": "A comprehensive guide to improving LCP, FID, and CLS scores."
}
</script>
html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How to Optimize Core Web Vitals",
  "author": {
    "@type": "Person",
    "name": "Jane Smith",
    "url": "https://example.com/authors/jane-smith"
  },
  "datePublished": "2026-03-01",
  "dateModified": "2026-03-15",
  "image": "https://example.com/images/article-hero.jpg",
  "publisher": {
    "@type": "Organization",
    "name": "Example Blog",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  },
  "description": "A comprehensive guide to improving LCP, FID, and CLS scores."
}
</script>

Product

产品

html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Widget Pro",
  "description": "Professional-grade widget for enterprise use.",
  "image": "https://example.com/widget-pro.jpg",
  "brand": { "@type": "Brand", "name": "WidgetCo" },
  "offers": {
    "@type": "Offer",
    "price": "49.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://example.com/widget-pro"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "312"
  }
}
</script>
html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Widget Pro",
  "description": "Professional-grade widget for enterprise use.",
  "image": "https://example.com/widget-pro.jpg",
  "brand": { "@type": "Brand", "name": "WidgetCo" },
  "offers": {
    "@type": "Offer",
    "price": "49.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://example.com/widget-pro"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "312"
  }
}
</script>

FAQ Page

FAQ页面

html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is Core Web Vitals?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Core Web Vitals are a set of metrics that measure real-world user experience for loading, interactivity, and visual stability."
      }
    }
  ]
}
</script>
html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is Core Web Vitals?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Core Web Vitals are a set of metrics that measure real-world user experience for loading, interactivity, and visual stability."
      }
    }
  ]
}
</script>

Schema Type Decision Guide

Schema类型选择指南

Content TypeSchema TypeRich Result
Blog postArticleArticle snippet
Product pageProductPrice, rating, availability
FAQ sectionFAQPageExpandable Q&A
How-to guideHowToStep-by-step snippet
RecipeRecipeImage, time, rating
EventEventDate, location, price
Local businessLocalBusinessMap pack, hours
SoftwareSoftwareApplicationRating, price
BreadcrumbsBreadcrumbListBreadcrumb trail
VideoVideoObjectThumbnail, duration
内容类型Schema类型富结果类型
博客文章Article文章片段
产品页面Product价格、评分、库存状态
FAQ模块FAQPage可展开问答
操作指南HowTo分步片段
食谱Recipe图片、耗时、评分
活动Event日期、地点、价格
本地商家LocalBusiness地图卡片、营业时间
软件SoftwareApplication评分、价格
面包屑BreadcrumbList面包屑导航
视频VideoObject缩略图、时长

Core Web Vitals

Core Web Vitals

Metrics and Thresholds

指标与阈值

MetricGoodNeeds ImprovementPoorMeasures
LCP (Largest Contentful Paint)<= 2.5s<= 4.0s> 4.0sLoading performance
INP (Interaction to Next Paint)<= 200ms<= 500ms> 500msInteractivity
CLS (Cumulative Layout Shift)<= 0.1<= 0.25> 0.25Visual stability
指标优秀待改进较差衡量维度
LCP(最大内容绘制)<= 2.5s<= 4.0s> 4.0s加载性能
INP(交互到下一次绘制)<= 200ms<= 500ms> 500ms交互性
CLS(累积布局偏移)<= 0.1<= 0.25> 0.25视觉稳定性

LCP Optimization

LCP优化

html
<!-- Preload hero image -->
<link rel="preload" as="image" href="/hero.webp" fetchpriority="high">

<!-- Use modern image formats -->
<picture>
  <source srcset="/hero.avif" type="image/avif">
  <source srcset="/hero.webp" type="image/webp">
  <img src="/hero.jpg" alt="Hero description" width="1200" height="600"
       fetchpriority="high" decoding="async">
</picture>
html
<!-- Preload hero image -->
<link rel="preload" as="image" href="/hero.webp" fetchpriority="high">

<!-- Use modern image formats -->
<picture>
  <source srcset="/hero.avif" type="image/avif">
  <source srcset="/hero.webp" type="image/webp">
  <img src="/hero.jpg" alt="Hero description" width="1200" height="600"
       fetchpriority="high" decoding="async">
</picture>

CLS Prevention

CLS预防

css
/* Always set dimensions on images and video */
img, video {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
}

/* Reserve space for dynamic content */
.ad-slot {
  min-height: 250px;
}

/* Avoid inserting content above existing content */
.notification-bar {
  position: fixed; /* doesn't shift layout */
}
css
/* Always set dimensions on images and video */
img, video {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
}

/* Reserve space for dynamic content */
.ad-slot {
  min-height: 250px;
}

/* Avoid inserting content above existing content */
.notification-bar {
  position: fixed; /* doesn't shift layout */
}

INP Optimization

INP优化

javascript
// Break long tasks with yield
async function processLargeDataset(data) {
  for (let i = 0; i < data.length; i++) {
    processItem(data[i]);
    if (i % 100 === 0) {
      await new Promise(resolve => setTimeout(resolve, 0)); // yield to main thread
    }
  }
}

// Use requestIdleCallback for non-critical work
requestIdleCallback(() => {
  loadAnalytics();
  initNonCriticalFeatures();
});
javascript
// Break long tasks with yield
async function processLargeDataset(data) {
  for (let i = 0; i < data.length; i++) {
    processItem(data[i]);
    if (i % 100 === 0) {
      await new Promise(resolve => setTimeout(resolve, 0)); // yield to main thread
    }
  }
}

// Use requestIdleCallback for non-critical work
requestIdleCallback(() => {
  loadAnalytics();
  initNonCriticalFeatures();
});

XML Sitemap

XML站点地图

Generation Pattern

生成规范

xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-03-15</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://example.com/products</loc>
    <lastmod>2026-03-14</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>
xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-03-15</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://example.com/products</loc>
    <lastmod>2026-03-14</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>

Sitemap Best Practices

站点地图最佳实践

  • Maximum 50,000 URLs per sitemap file
  • Use sitemap index for larger sites
  • Include only canonical, indexable URLs
  • Update
    lastmod
    only when content genuinely changes
  • Submit via Google Search Console and robots.txt
  • 每个站点地图文件最多包含50000个URL
  • 大型站点使用站点地图索引文件
  • 仅包含规范的可索引URL
  • 仅当内容真正更新时才修改
    lastmod
  • 通过谷歌Search Console和robots.txt提交

robots.txt Template

robots.txt模板

User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/
Disallow: /search?
Disallow: /*?sort=
Disallow: /*?filter=

Sitemap: https://example.com/sitemap.xml
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/
Disallow: /search?
Disallow: /*?sort=
Disallow: /*?filter=

Sitemap: https://example.com/sitemap.xml

Next.js / React SEO Patterns

Next.js / React SEO 最佳实践

Next.js Metadata API (App Router)

Next.js Metadata API(App Router)

typescript
import type { Metadata } from 'next';

export const metadata: Metadata = {
  title: {
    template: '%s | Brand Name',
    default: 'Brand Name - Tagline',
  },
  description: 'Site-wide default description.',
  openGraph: {
    type: 'website',
    locale: 'en_US',
    url: 'https://example.com',
    siteName: 'Brand Name',
  },
  twitter: {
    card: 'summary_large_image',
  },
  robots: {
    index: true,
    follow: true,
  },
  alternates: {
    canonical: 'https://example.com',
  },
};
typescript
import type { Metadata } from 'next';

export const metadata: Metadata = {
  title: {
    template: '%s | Brand Name',
    default: 'Brand Name - Tagline',
  },
  description: 'Site-wide default description.',
  openGraph: {
    type: 'website',
    locale: 'en_US',
    url: 'https://example.com',
    siteName: 'Brand Name',
  },
  twitter: {
    card: 'summary_large_image',
  },
  robots: {
    index: true,
    follow: true,
  },
  alternates: {
    canonical: 'https://example.com',
  },
};

Dynamic Metadata per Page

页面级动态Metadata

typescript
export async function generateMetadata({ params }): Promise<Metadata> {
  const product = await getProduct(params.slug);

  return {
    title: product.name,
    description: product.description.slice(0, 160),
    openGraph: {
      title: product.name,
      description: product.description.slice(0, 200),
      images: [{ url: product.image, width: 1200, height: 630 }],
    },
  };
}
typescript
export async function generateMetadata({ params }): Promise<Metadata> {
  const product = await getProduct(params.slug);

  return {
    title: product.name,
    description: product.description.slice(0, 160),
    openGraph: {
      title: product.name,
      description: product.description.slice(0, 200),
      images: [{ url: product.image, width: 1200, height: 630 }],
    },
  };
}

Anti-Patterns / Common Mistakes

反模式/常见错误

Anti-PatternWhy It FailsWhat To Do Instead
Keyword stuffing in titles/contentTriggers spam filters, reduces CTRUse primary keyword once naturally, add variations
Same title/description across pagesDuplicate content signals, wasted opportunityUnique, page-specific meta for every indexable URL
Blocking CSS/JS in robots.txtGooglebot cannot render pagesAllow all rendering resources
Structured data mismatching page contentGoogle penalties, rich snippet removalSchema must reflect visible content exactly
Redirect chains > 2 hopsCrawl budget waste, link equity lossRedirect directly to final destination
JS-only navigation without SSR linksCrawler cannot discover pagesServer-render navigation links
Ignoring Core Web VitalsRanking signal degradationProfile and optimize LCP, INP, CLS
Missing canonical URLsDuplicate content penaltiesSet canonical on every indexable page
Over-optimized anchor textUnnatural link patterns trigger penaltiesUse descriptive, varied anchor text
Hiding content with CSS for SEOCloaking violationAll SEO content must be visible to users
反模式失效原因替代方案
标题/内容中堆砌关键词触发垃圾内容过滤器、降低CTR自然使用一次核心关键词,加入变体
所有页面使用相同的标题/描述触发重复内容信号、浪费曝光机会每个可索引URL配置唯一的页面专属元信息
在robots.txt中屏蔽CSS/JSGooglebot无法渲染页面放行所有渲染所需资源
结构化数据和页面内容不匹配谷歌惩罚、移除富片段资格Schema必须完全匹配可见内容
重定向链超过2跳爬取预算浪费、链接权重流失直接重定向到最终目标地址
仅JS实现导航无SSR链接爬虫无法发现页面服务端渲染导航链接
忽略Core Web Vitals排名信号下降profiling并优化LCP、INP、CLS
缺失规范URL重复内容惩罚每个可索引页面都设置规范URL
锚文本过度优化非自然链接模式触发惩罚使用描述性、多样化的锚文本
为SEO用CSS隐藏内容违反伪装规则所有SEO相关内容必须对用户可见

Anti-Rationalization Guards

合理性校验规则

  • Do NOT skip the technical audit because "the site looks fine" -- crawl it.
  • Do NOT add structured data without validating it passes the Rich Results Test.
  • Do NOT assume meta tags are correct without checking every page type.
  • Do NOT deploy SEO changes without before/after measurement.
  • Do NOT optimize for search engines at the expense of user experience.
  • 不要因为「站点看起来没问题」就跳过技术审计——一定要爬取站点。
  • 结构化数据添加前必须通过富结果测试工具验证,否则不要上线。
  • 不要默认元标签是正确的,要检查每种页面类型的配置。
  • SEO改动上线前后必须做数据对比,不要无测量就上线。
  • 不要为了优化搜索引擎而牺牲用户体验。

Integration Points

关联技能

SkillHow It Connects
content-creator
SEO informs keyword targeting and headline strategy for marketing content
content-research-writer
Research-backed content needs SEO-optimized structure and meta tags
senior-frontend
Core Web Vitals optimization requires frontend performance tuning
performance-optimization
Page speed directly affects LCP and INP scores
deployment
SEO changes need proper cache invalidation and redirect configuration
tech-docs-generator
Documentation sites need sitemap, canonical, and structured data setup
技能关联方式
content-creator
SEO为营销内容提供关键词定位和标题策略指导
content-research-writer
研究驱动的内容需要适配SEO的结构和元标签优化
senior-frontend
Core Web Vitals优化需要前端性能调优能力
performance-optimization
页面速度直接影响LCP和INP得分
deployment
SEO改动需要正确的缓存失效和重定向配置
tech-docs-generator
文档站点需要配置站点地图、规范URL和结构化数据

Skill Type

技能类型

FLEXIBLE — Adapt the optimization strategy to the site's technology stack, content type, and competitive landscape. Technical SEO fundamentals and structured data best practices are strongly recommended; specific implementation patterns vary by framework.
灵活适配——根据站点的技术栈、内容类型和竞争环境调整优化策略。技术SEO基础原理和结构化数据最佳实践为强推荐要求,具体实现模式根据框架不同会有差异。