Creating XML Sitemaps in Laravel Using Spatie Sitemap: A Step-by-Step Guide

To create a sitemap for your Laravel app using the Spatie Sitemap package, follow these steps:

1. Install the Spatie Sitemap package

Install the Spatie Sitemap package using Composer:

composer require spatie/laravel-sitemap

2. Configure the package (optional)

If necessary, publish the configuration file to customize settings:

php artisan vendor:publish --provider="Spatie\Sitemap\SitemapServiceProvider" --tag=config

3. Create a Sitemap class

Create a class that generates your sitemap entries. For example, let's create a `PostSitemap` class:

// app/Sitemap/PostSitemap.php

namespace App\Sitemap;

use Spatie\Sitemap\Sitemap;

use Spatie\Sitemap\Tags\Url;

class PostSitemap


    public function generate()


        $sitemap = Sitemap::create();

        // Fetch posts and add them to the sitemap

        $posts = \App\Models\Post::all();

        foreach ($posts as $post) {


                Url::create(route('', $post))






        return $sitemap;



4. Generate the Sitemap route

Create a route to generate the sitemap XML. In your `routes/web.php` file:

use App\Sitemap\PostSitemap;

Route::get('/sitemap.xml', function () {

    $postSitemap = new PostSitemap();

    return $postSitemap->generate()->render();


5. Use the Sitemap

Access your sitemap by visiting `/sitemap.xml` in your browser.

6. Automate Sitemap updates (optional)

To automate sitemap updates, you can create a command and schedule it to run periodically. For example:

// app/Console/Commands/GenerateSitemap.php

namespace App\Console\Commands;

use Illuminate\Console\Command;

use App\Sitemap\PostSitemap;

use Spatie\Sitemap\SitemapGenerator;

class GenerateSitemap extends Command


    protected $signature = 'sitemap:generate';

    protected $description = 'Generate sitemap for the application';

    public function handle()



            ->hasCrawled(function (SitemapGenerator $generator) {

                $postSitemap = new PostSitemap();





        $this->info('Sitemap generated successfully.');



Then, schedule this command in the `app/Console/Kernel.php` file:

protected function schedule(Schedule $schedule)




These steps should guide you through creating a sitemap using the Spatie Sitemap package in your Laravel application. Adjust the code according to your specific application requirements and models.