网站地图与路由策略生成Skill plan-sitemap

这个技能用于生成CMS的网站地图和URL路由策略,包括XML和JSON格式的网站地图、URL模式设计、重定向规则以及SEO优先级配置。关键词:网站地图、URL路由、CMS、SEO、XML、JSON、YAML、内容管理系统、搜索引擎优化。

架构设计 0 次安装 0 次浏览 更新于 3/11/2026

name: plan-sitemap description: 生成网站地图和URL路由策略。创建XML网站地图、URL模式和重定向规则。 argument-hint: [–output xml|json|tree|yaml] [–include-redirects] [–priority-rules] allowed-tools: Read, Glob, Grep, Task, Skill, AskUserQuestion

计划网站地图命令

为CMS生成一个全面的网站地图和URL路由策略。

使用

/cms:plan-sitemap --output xml
/cms:plan-sitemap --output tree --include-redirects
/cms:plan-sitemap --output yaml --priority-rules

输出格式

  • xml: 标准XML网站地图 (sitemap.xml)
  • json: 用于API的JSON网站地图
  • tree: 可视化ASCII树结构
  • yaml: 结构化配置

工作流程

步骤1:解析参数

从命令中提取输出格式和选项。

步骤2:分析网站结构

读取现有内容类型和页面定义:

  • 带路由的内容类型
  • 页面层次结构
  • 分类结构
  • 动态路由模式

步骤3:调用技能

调用相关技能:

  • url-routing-patterns - URL约定
  • page-structure-design - 页面层次
  • navigation-architecture - 导航结构

步骤4:生成URL策略

URL模式规则:

url_patterns:
  # 静态页面
  static:
    home: /
    about: /about
    contact: /contact
    privacy: /privacy-policy
    terms: /terms-of-service

  # 内容类型
  content_types:
    Article:
      pattern: /blog/{year}/{month}/{slug}
      example: /blog/2025/01/getting-started

    Product:
      pattern: /products/{category}/{slug}
      example: /products/electronics/wireless-headphones

    Category:
      pattern: /products/{slug}
      example: /products/electronics

    Author:
      pattern: /authors/{slug}
      example: /authors/jane-smith

    Page:
      pattern: /{*slug}  # CMS页面的通配符
      example: /about/team/leadership

  # 分类
  taxonomies:
    tags:
      pattern: /tags/{slug}
      example: /tags/technology

    categories:
      pattern: /categories/{slug}
      example: /categories/news

  # 本地化
  localization:
    enabled: true
    pattern: /{locale}/{path}
    default_locale: en
    supported: [en, es, fr, de]

  # API路由(从网站地图中排除)
  api:
    pattern: /api/{version}/{resource}
    exclude_from_sitemap: true

步骤5:生成网站地图

XML网站地图:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">

  <!-- 首页 -->
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2025-01-15</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/" />
    <xhtml:link rel="alternate" hreflang="es" href="https://example.com/es/" />
  </url>

  <!-- 博客文章 -->
  <url>
    <loc>https://example.com/blog/2025/01/getting-started</loc>
    <lastmod>2025-01-15</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://cdn.example.com/images/getting-started.jpg</image:loc>
      <image:title>入门指南</image:title>
    </image:image>
  </url>

  <!-- 产品 -->
  <url>
    <loc>https://example.com/products/electronics/wireless-headphones</loc>
    <lastmod>2025-01-14</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>

</urlset>

网站地图索引(用于大型网站):

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/sitemaps/pages.xml</loc>
    <lastmod>2025-01-15</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemaps/products.xml</loc>
    <lastmod>2025-01-14</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemaps/blog.xml</loc>
    <lastmod>2025-01-15</lastmod>
  </sitemap>
</sitemapindex>

树形输出:

网站地图结构
=================

/ (首页)
├── /about
│   ├── /about/team
│   ├── /about/careers
│   └── /about/press
├── /products
│   ├── /products/electronics
│   │   ├── /products/electronics/headphones
│   │   └── /products/electronics/speakers
│   └── /products/clothing
├── /blog
│   ├── /blog/2025/01/...
│   └── /blog/2024/12/...
├── /contact
├── /privacy-policy
└── /terms-of-service

图例:
  [S] 静态页面
  [D] 动态内容类型
  [T] 分类列表

步骤6:生成重定向规则

重定向配置:

redirects:
  # 永久重定向 (301)
  permanent:
    - from: /old-about
      to: /about

    - from: /blog/{slug}
      to: /blog/2024/01/{slug}
      note: 旧URL模式

    - from: /products/{id:int}
      to: /products/legacy/{id}
      note: 数字ID到slug迁移

  # 临时重定向 (302)
  temporary:
    - from: /sale
      to: /products?filter=sale
      expires: 2025-02-28

  # 正则表达式模式
  patterns:
    - from: ^/category/(.*)$
      to: /categories/$1
      type: 301

  # 尾部斜杠标准化
  trailing_slash:
    enforce: false  # 无尾部斜杠
    redirect_type: 301

  # 大小写标准化
  case_sensitivity:
    lowercase: true
    redirect_type: 301

步骤7:生成优先级规则

SEO优先级配置:

priority_rules:
  # 按内容类型
  content_types:
    Page:
      default: 0.8
      homepage: 1.0

    Product:
      default: 0.9
      featured: 1.0
      out_of_stock: 0.3

    Article:
      default: 0.7
      featured: 0.9
      age_decay:
        after_days: 90
        minimum: 0.4

  # 按深度
  depth:
    - level: 1
      priority: 0.9
    - level: 2
      priority: 0.7
    - level: 3
      priority: 0.5
    - level: 4+
      priority: 0.3

  # 变更频率
  changefreq:
    homepage: daily
    product_listing: daily
    product_detail: weekly
    blog_post: monthly
    static_page: yearly

实现

public interface ISitemapGenerator
{
    Task<string> GenerateXmlAsync(SitemapOptions options);
    Task<SitemapIndex> GenerateIndexAsync();
    Task<IEnumerable<SitemapUrl>> GetUrlsAsync(ContentType type);
}

public class SitemapUrl
{
    public string Loc { get; set; }
    public DateTime LastMod { get; set; }
    public ChangeFrequency ChangeFreq { get; set; }
    public decimal Priority { get; set; }
    public List<AlternateLink> Alternates { get; set; }
    public List<ImageInfo> Images { get; set; }
}

相关技能

  • url-routing-patterns - URL约定
  • page-structure-design - 页面层次
  • navigation-architecture - 网站结构