PHPackages                             am2studio/laravel-seo-meta - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. am2studio/laravel-seo-meta

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

am2studio/laravel-seo-meta
==========================

Laravel seo meta

1.0.5(8y ago)36.3k1MITPHPPHP &gt;=5.4.0

Since Feb 22Pushed 7y ago6 watchersCompare

[ Source](https://github.com/AM2studio/Laravel-SeoMeta)[ Packagist](https://packagist.org/packages/am2studio/laravel-seo-meta)[ Docs](https://github.com/AM2studio/Laravel-SeoMeta)[ RSS](/packages/am2studio-laravel-seo-meta/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (1)Versions (7)Used By (0)

Laravel-Seo Meta
================

[](#laravel-seo-meta)

Package for handling seo meta tags in Laravel apps

Install
-------

[](#install)

Via Composer

```
$ composer require am2studio/laravel-seo-meta
```

Usage
-----

[](#usage)

First run migration for this package (src/migration/):

```
Schema::create('seo_metas', function (Blueprint $table) {
	$table->increments('id');
	$table->string('model_type');
	$table->integer('model_id')->unsigned();
	$table->text('key');
	$table->text('value');

	$table->timestamps();
});
```

For each model which that use seo meta add trait "SeoMetaTrait" and implement interface "SeoMetaInterface"

```
use AM2Studio\Laravel\SeoMeta\SeoMetaTrait;
use AM2Studio\Laravel\SeoMeta\SeoMetaInterface;

class User implements  SeoMetaInterface
{
    use SeoMetaTrait;
```

Interface "SeoMetaInterface" have 2 function that model need to implement "seoMetasConfig()" and "seoMetas()"

seoMetasConfig() is configuration for meta data for model

seoMetas() is "hasMany" relation to seoMetas of model

```
public function seoMetasConfig()
{
	return [
		'title'         => ['generator' => 'example.com - '. $this->title],
		'description'   => ['generator' => 'green-rush.com - '. $this->title . ' - ' . $this->short_description,],
		'keywords'      => ['generator' => 'greenrush, product, ' . $this->title . ', ' . $this->short_description,
		'edit'=> false],
		'og:image'      => ['generator' => ["http://i.stack.imgur.com/hEobN.jpg", "http://i.stack.imgur.com/hEobN2.jpg"]],
		'twitter:site'  => [],
	];
}

public function seoMetas()
{
	return $this->hasMany(SeoMeta::class, 'model_id')->where(['model_type' => __CLASS__]);
}
```

Each seo meta that you want model to use must be fefined here. List of possible seo meta tags:

```
title						-> string
description					-> string
keywords           			-> string
canonical      				-> string
article:published_time		-> string
article:section				-> string
og:description				-> string
og:title					-> string
og:url               		-> string
og:type             		-> string
og:locale           		-> string
og:locale:alternate			-> array
og:site_name        		-> string
og:image         			-> array
og:image:url       			-> array
og:image:size       		-> string
twitter:card       			-> string
twitter:title      			-> string
twitter:site				-> string
```

For each seo meta in config you define generator(how seo meta will be generated) and edit (if seo meta can be edited or will be always generated on model save, default - true)

Finaly add "seoMeta" to Model -&gt; fillable

```
protected $fillable = [
	...
	'seoMeta'
];
```

Show form for meta seo deta on model:

```
{!! \AM2Studio\Laravel\SeoMeta\SeoMetaHelper::form($product) !!}
```

Set data in controller:

```
public function __construct()
    {
        parent::__construct();
        SeoMetaHelper::setSeoMeta(['title' => 'Default title __construct .']);
    }

    public function index()
    {
		SeoMetaHelper::setSeoMeta(['description' => 'Default description index .']);
        return $this->view('index');
    }

	public function show($product)
    {
        SeoMetaHelper::setSeoMeta($product->getSeoMeta());

		return $this->view('show', compact('product'));
	}
```

Show meta in view :

```
{{
    \AM2Studio\Laravel\SeoMeta\SeoMetaHelper::render([
        //alternative data if is not set anywhere
        'keywords' => 'example.com -> frontend layout'
    ])
}}
```

Change log
----------

[](#change-log)

Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) and [CONDUCT](CONDUCT.md) for details.

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

32

—

LowBetter than 74% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity23

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 95.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~122 days

Recently: every ~152 days

Total

6

Last Release

3069d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d8a5b6b914a418f8ec0689778e5ffc9781f41f921cf3760c79592d73d847312c?d=identicon)[msamec](/maintainers/msamec)

---

Top Contributors

[![fico7489](https://avatars.githubusercontent.com/u/4559663?v=4)](https://github.com/fico7489 "fico7489 (41 commits)")[![anorgan](https://avatars.githubusercontent.com/u/1270389?v=4)](https://github.com/anorgan "anorgan (2 commits)")

---

Tags

AM2StudioLaravel seo meta

### Embed Badge

![Health badge](/badges/am2studio-laravel-seo-meta/health.svg)

```
[![Health](https://phpackages.com/badges/am2studio-laravel-seo-meta/health.svg)](https://phpackages.com/packages/am2studio-laravel-seo-meta)
```

###  Alternatives

[nickurt/laravel-akismet

Akismet for Laravel 11.x &amp; 12.x

98135.0k2](/packages/nickurt-laravel-akismet)[imanghafoori/laravel-anypass

A minimal yet powerful package to help you in development.

21421.2k](/packages/imanghafoori-laravel-anypass)[binshops/laravel-ticket

A simple ticketing system for Laravel 5.1 – 5.8 and 6.\* - 7.\* - 8.\* - 9.\* - 10.\* -which integrates smoothly with Laravel default users and auth system

261.0k](/packages/binshops-laravel-ticket)[mozhuilungdsuo/livewire-bootstrap-modal

Dynamic Laravel Livewire 3 Bootstrap modals.

104.5k](/packages/mozhuilungdsuo-livewire-bootstrap-modal)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
