34ml/laravel-seo

This package will help you to manage your website SEO easily.
6,790 1
Install
composer require 34ml/laravel-seo
Latest Version:v2.0
PHP:^8.3
Laravel:10 – 13
License:MIT
Last Updated:Jul 21, 2026
Links: GitHub  ·  Packagist
Maintainer: admin34ML

Laravel SEO

This package will help you to manage your website SEO easily.

Installation

You can install the package via composer:

composer require 34ml/laravel-seo

You can publish and run the migrations with:

php artisan vendor:publish --tag="seo-migrations"
php artisan migrate

You can publish the config file with:

php artisan vendor:publish --tag="seo-config"

This is the contents of the published config file:

return [
/*
    |--------------------------------------------------------------------------
    | SEO status
    |--------------------------------------------------------------------------
    |
    | Set SEO status, if its set to false then all pages will have
    | the 'noindex, nofollow' follow type and also removed the meta tags except the title tag.
    |
    */

    'seo_status' => env('SEO_STATUS', true),

    /*
    |--------------------------------------------------------------------------
    | Sitemap status
    |--------------------------------------------------------------------------
    |
    | Should there be a sitemap available
    |
    */
    'sitemap_status' => env('SITEMAP_STATUS', false),

    /*
    |--------------------------------------------------------------------------
    | SEO title formatter
    |--------------------------------------------------------------------------
    |
    | If you want a specific default format for your SEO titles, then you can
    | specify it here. Example could be ':text - Test site', then all pages would have
    | the ' - Test site' appended to the actual SEO title.
    |
    */
    'title_formatter' => ':text',

    /*
    |--------------------------------------------------------------------------
    | Follow type options
    |--------------------------------------------------------------------------
    |
    | Here is all the possible follow types shown in the admin panel
    | which is an array with key -> value.
    |
    */

    'follow_type_options' => [
        'index, follow' => 'Index and follow',
        'noindex, follow' => 'No index and follow',
        'index, nofollow' => 'Index and no follow',
        'noindex, nofollow' => 'No index and no follow',
    ],

    /*
    |--------------------------------------------------------------------------
    | Default follow type
    |--------------------------------------------------------------------------
    |
    | Set the default follow type.
    |
    */
    'default_follow_type' => env('SEO_DEFAULT_FOLLOW_TYPE', 'index, follow'),

    /*
      * SEO default title
      */
    'default_seo_title' => config('app.name'),

    /*
      * SEO default description
      */
    'default_seo_description' => null,

    /*
      * SEO default keywords
     * ex : keyword1, keyword2, keyword3
      */
    'default_seo_keywords' => null,

    /*
     *
     */
    /*
    |--------------------------------------------------------------------------
    | Sitemap models
    |--------------------------------------------------------------------------
    |
    | Insert all the laravel models which should be in the sitemap
    |
    */

    'sitemap_models' => [],

    /*
    |--------------------------------------------------------------------------
    | Sitemap url
    |--------------------------------------------------------------------------
    |
    | Set the path of the sitemap
    |
    */

    'sitemap_path' => '/sitemap',
    /*
    |--------------------------------------------------------------------------
    | Available Locales
    |--------------------------------------------------------------------------
    |
    | Set the available locales in your project and fallback locale
    |
    */

    'available_locales' => ['en'],
    'fallback_locale' => 'en',
];

Usage

Find the model you want to have the SEO fields on, example could be App\Models\Page, then add the SeoTrait trait:

use _34ML\SEO\Traits\SeoTrait;

class Page extends Model
{
    use SeoTrait;
    ...
}

When you want the eloquent model to be shown in the sitemap then you need to add the SeoSiteMapTrait trait to it:

use _34ML\SEO\Traits\SeoTrait;
use _34ML\SEO\Traits\SeoSiteMapTrait;

class Page extends Model
{
    use SeoTrait, SeoSiteMapTrait;
    ...

    /**
     * Get the Page url by item
     *
     * @return string
     */
    public function getSitemapItemUrl()
    {
        return url($this->slug);
    }

    /**
     * Query all the Page items which should be
     * part of the sitemap (crawlable for google).
     *
     * @return Builder
     */
    public static function getSitemapItems()
    {
        return static::all();
    }
}

Then go to the top of your layout blade as the default is resources/views/welcome.blade.php:

...
<head>
    @include('laravel-seo::seo')
    ...
</head>

Changelog

Please see CHANGELOG for more information on what has changed recently.

Credits

License

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

Related Packages

ralphjsmit/laravel-seo

A package to handle the SEO in any Laravel application, big or small.

842,991 868
34ml/filament-translatable-field

A laravel filament field that handle translation

3,672 18
34ml/filament-seo

SEO package for Filament Admin Panel

1,537 9
esign/laravel-seo

Manage SEO tags within your Laravel application

28,858 4
r94ever/laravel-keyword-analytics

Analyze keywords in the content and make diagnostics to improve the seo score of...

6,024 2

Version History

Version Released PHP Laravel License
v2.0 ^8.3 ^10.0 | ^11.0 | ^12.0 | ^13.0 MIT
v1.6 ^8.3 ^10.0 | ^11.0|^12.0 MIT
v1.5 >=8.1 ^10.0 | ^11.0 MIT
v1.4 >=8.1 ^10.0 MIT
v1.3 >=8.1 ^10.0 MIT