tasmir/sitemap

A standalone Laravel package for generating dynamic XML sitemaps.

Maintainers

Package info

github.com/tasmir/sitemap

pkg:composer/tasmir/sitemap

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-03-31 08:04 UTC

This package is auto-updated.

Last update: 2026-03-31 08:07:54 UTC


README

A powerful, universal, and developer-friendly sitemap generator for Laravel. Automatically index your static routes, map your models, and generate sitemaps with professional features like progress bars and auto-indexing for large sites.

Features

  • 🚀 Automated Route Collection: Automatically discovers and indexes your public, static GET routes.
  • ✨ Sitemapable Trait: Give your models the ability to manage their own sitemap metadata.
  • 🏢 Sitemap Indexing: Automatically splits large sitemaps (50k+ URLs) and generates a sitemap.xml index.
  • 📦 Configuration-Driven: Easily map models to routes without writing code.
  • 🎩 Sitemap Facade: Simple programmatic access from anywhere in your app.
  • 🎨 Blade Templates: Fully customizable XML output using Blade views.
  • 📉 Progress Bars: Real-time feedback in the terminal during generation.

Installation

  1. Add the package to your composer.json or install via composer (if published):

    composer require tasmir/sitemap
  2. The service provider will be auto-discovered. If not, add it to config/app.php:

    Tasmir\Sitemap\Providers\SitemapServiceProvider::class,
  3. Publish the configuration:

    php artisan vendor:publish --tag=sitemap-config

Configuration

Edit config/sitemap.php to customize the behavior:

Automated Route Collection

Set auto_collect_static_routes to true to index all static GET routes that don't require parameters and aren't protected by auth.

'auto_collect_static_routes' => true,
'exclude_routes' => ['admin.*', 'login', 'register'],

Sitemapable Models

Add models that use the Tasmir\Sitemap\Traits\Sitemapable trait here:

'sitemapable_models' => [
    \App\Models\Blog::class,
],

Usage

Using the Trait

Add the Sitemapable trait to your model and optionally override getSitemapLoc():

use Tasmir\Sitemap\Traits\Sitemapable;

class Blog extends Model {
    use Sitemapable;

    public function getSitemapLoc(): string {
        return route('blog.show', $this->slug);
    }
}

Using the Facade

You can manually add URLs from anywhere:

use Tasmir\Sitemap\Facades\Sitemap;

Sitemap::addUrl(url('/special-page'), now()->toAtomString(), 'weekly', '0.9');

Commands

Generate your sitemap manually:

php artisan sitemap:generate

The sitemap is generated at public/sitemap.xml.

Automation

The package includes built-in scheduling. You can customize the frequency, time, and timezone in config/sitemap.php:

'schedule_enabled' => true,
'schedule_timezone' => 'Asia/Dhaka',
'schedule_method' => 'dailyAt',
'schedule_time' => '00:01',

Ensure your Laravel scheduler is running in your crontab:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

The MIT License (MIT). Please see License File for more information.