Install
1
Install the plugin$
npx claudepluginhub melodic-software/claude-code-plugins --plugin content-management-systemWant just this skill?
Add to a custom plugin, then install with one command.
Description
Generate sitemap and URL routing strategy. Creates XML sitemaps, URL patterns, and redirect rules.
Tool Access
This skill is limited to using the following tools:
ReadGlobGrepTaskSkillAskUserQuestion
Skill Content
Plan Sitemap Command
Generate a comprehensive sitemap and URL routing strategy for the CMS.
Usage
/cms:plan-sitemap --output xml
/cms:plan-sitemap --output tree --include-redirects
/cms:plan-sitemap --output yaml --priority-rules
Output Formats
- xml: Standard XML sitemap (sitemap.xml)
- json: JSON sitemap for APIs
- tree: Visual ASCII tree structure
- yaml: Structured configuration
Workflow
Step 1: Parse Arguments
Extract output format and options from command.
Step 2: Analyze Site Structure
Read existing content types and page definitions:
- Content types with routes
- Page hierarchies
- Taxonomy structures
- Dynamic route patterns
Step 3: Invoke Skills
Invoke relevant skills:
url-routing-patterns- URL conventionspage-structure-design- Page hierarchynavigation-architecture- Navigation structure
Step 4: Generate URL Strategy
URL Pattern Rules:
url_patterns:
# Static pages
static:
home: /
about: /about
contact: /contact
privacy: /privacy-policy
terms: /terms-of-service
# Content types
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} # Catch-all for CMS pages
example: /about/team/leadership
# Taxonomies
taxonomies:
tags:
pattern: /tags/{slug}
example: /tags/technology
categories:
pattern: /categories/{slug}
example: /categories/news
# Localization
localization:
enabled: true
pattern: /{locale}/{path}
default_locale: en
supported: [en, es, fr, de]
# API routes (excluded from sitemap)
api:
pattern: /api/{version}/{resource}
exclude_from_sitemap: true
Step 5: Generate Sitemap
XML Sitemap:
<?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">
<!-- Homepage -->
<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>
<!-- Blog posts -->
<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>Getting Started Guide</image:title>
</image:image>
</url>
<!-- Products -->
<url>
<loc>https://example.com/products/electronics/wireless-headphones</loc>
<lastmod>2025-01-14</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
</urlset>
Sitemap Index (for large sites):
<?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>
Tree Output:
SITEMAP STRUCTURE
=================
/ (Home)
├── /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
Legend:
[S] Static page
[D] Dynamic content type
[T] Taxonomy listing
Step 6: Generate Redirect Rules
Redirect Configuration:
redirects:
# Permanent redirects (301)
permanent:
- from: /old-about
to: /about
- from: /blog/{slug}
to: /blog/2024/01/{slug}
note: Legacy URL pattern
- from: /products/{id:int}
to: /products/legacy/{id}
note: Numeric ID to slug migration
# Temporary redirects (302)
temporary:
- from: /sale
to: /products?filter=sale
expires: 2025-02-28
# Regex patterns
patterns:
- from: ^/category/(.*)$
to: /categories/$1
type: 301
# Trailing slash normalization
trailing_slash:
enforce: false # No trailing slash
redirect_type: 301
# Case normalization
case_sensitivity:
lowercase: true
redirect_type: 301
Step 7: Generate Priority Rules
SEO Priority Configuration:
priority_rules:
# By content type
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
# By depth
depth:
- level: 1
priority: 0.9
- level: 2
priority: 0.7
- level: 3
priority: 0.5
- level: 4+
priority: 0.3
# Change frequency
changefreq:
homepage: daily
product_listing: daily
product_detail: weekly
blog_post: monthly
static_page: yearly
Implementation
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; }
}
Related Skills
url-routing-patterns- URL conventionspage-structure-design- Page hierarchynavigation-architecture- Site structure
Stats
Stars40
Forks6
Last CommitMar 17, 2026
Actions