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- 网站结构