How to Automatically Generate Sitemap with Laravel?

First install the package via composer:

$ composer require spatie/laravel-sitemap
  • Configuration

If you would like to change the default options, you could publish the config by using the following command:

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

This will copy the config to config/sitemap.php where you would be able to change it depending on your needs.

  • Usage

To generate a sitemap for your website with all of the found links, you can use the following:

SitemapGenerator::create(\'https://example.com\')->writeToFile(public/sitemap.xml);
  • Automation

To automate the process what you could do is create an artisan command and then add it to your scheduler.

To do that just run the following:

php artisan make:command GenerateSitemap

And then update the content of the app/Console/Commands/GenerateSitemap.php file accordingly. I would usually use something like this:

<?php

namespace App\\Console\\Commands;

use Illuminate\\Console\\Command;
use Spatie\\Sitemap\\SitemapGenerator;

class GenerateSitemap extends Command
{
    /**
     * The console command name.
     *
     * @var string
     */
    protected $signature = \'sitemap:generate\';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = \'Generate the sitemap.\';

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        // modify this to your own needs
        SitemapGenerator::create(config(\'app.url\'))
            ->writeToFile(public_path(\'sitemap.xml\'));
    }
}

Then to generate your sitemap just run:

php artisan sitemap:generate

To schedule this to run on daily basis just add the following to your app/Console/Kernel.php file:

protected function schedule(Schedule $schedule)
{
    ...
    $schedule->command(\'sitemap:generate\')->daily();
    ...
}

That is pretty much it, then your sitemap.xml should be available at example.xml/sitemap.xml.

For more information I would recommend going through the official repo here:

https://github.com/spatie/laravel-sitemap/blob/master/README.md
Scroll to Top