nixie / seo
A comprehensive Laravel SEO package for managing meta tags, Open Graph, Twitter Cards, and structured data
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/nixie/seo
Requires
- php: ^8.0|^8.1|^8.2
- illuminate/database: ^8.0|^9.0|^10.0|^11.0|^12.0
- illuminate/routing: ^8.0|^9.0|^10.0|^11.0|^12.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0|^12.0
- illuminate/view: ^8.0|^9.0|^10.0|^11.0|^12.0
- laravel/framework: ^9.0|^10.0|^11.0|^12.0
README
Paket SEO lengkap untuk Laravel — kelola Meta Tags, Open Graph, Twitter Cards, dan Structured Data dengan mudah dan otomatis.
📌 Fitur
- Meta Title, Description, Keywords
- Canonical URL
- Open Graph (Facebook, LinkedIn)
- Twitter Cards
- Polymorphic relationship → bisa dipasang di model apapun
- Auto Meta Injection di Blade
- Artisan commands (coming soon)
🚀 Instalasi
composer require nixie-seo/seo
Publikasikan aset
php artisan vendor:publish --provider="Nixie\Seo\SeoServiceProvider" --tag=seo-migrations php artisan vendor:publish --provider="Nixie\Seo\SeoServiceProvider" --tag=seo-views php artisan migrate
⚙️ Konfigurasi
Tambahkan relasi morphOne
di model yang ingin memiliki metadata SEO.
use Nixie\Seo\Models\SeoMeta; class Post extends Model { public function seoMeta() { return $this->morphOne(SeoMeta::class, 'seoable'); } }
📝 Penggunaan di Controller
Menyimpan SEO Meta saat membuat model
use Nixie\Seo\Models\SeoMeta; public function store(Request $request) { $post = Post::create($request->all()); $post->seoMeta()->create([ 'meta_title' => $request->meta_title, 'meta_description' => $request->meta_description, 'meta_keywords' => $request->meta_keywords, 'canonical_url' => $request->canonical_url, ]); }
Update SEO Meta
$post->seoMeta()->updateOrCreate( ['seoable_id' => $post->id, 'seoable_type' => Post::class], [ 'meta_title' => $request->meta_title, 'meta_description' => $request->meta_description, 'meta_keywords' => $request->meta_keywords, ] );
🧩 Blade Form (opsional)
Gunakan partial form yang disediakan paket:
@include('seo::form', ['seo' => $model->seoMeta])
Form ini menampilkan input:
- Meta Title
- Meta Description
- Meta Keywords
- Canonical URL
🌐 Auto Meta Injection di Layout
Di layout utama (layouts/app.blade.php
):
{!! seo()->for($model) !!}
Hasilnya otomatis generate semua meta tag, termasuk Open Graph & Twitter Card:
<title>Judul Post</title> <meta name="description" content="Deskripsi Post..."> <meta property="og:title" content="Judul Post"> <meta property="og:description" content="Deskripsi Post..."> <meta name="twitter:card" content="summary_large_image"> <link rel="canonical" href="https://example.com/post/slug">
📂 Contoh Penggunaan Lengkap
Controller
$post = Post::find(1); // Update SEO $post->seoMeta()->updateOrCreate([], [ 'meta_title' => 'Judul SEO', 'meta_description' => 'Deskripsi SEO', 'meta_keywords' => 'seo, laravel, package', 'canonical_url' => url()->current(), ]);
Blade
<html> <head> {!! seo()->for($post) !!} </head> <body> <h1>{{ $post->title }}</h1> </body> </html>
🧰 Perintah Artisan (Coming Soon)
php artisan seo:generate
→ generate meta otomatis untuk semua modelphp artisan seo:clean
→ hapus meta yang tidak terpakai
🔧 Konfigurasi Tambahan
Buat file config/seo.php
(jika ingin override default):
return [ 'default_title' => env('APP_NAME', 'Laravel'), 'default_description' => 'Deskripsi default website', 'default_keywords' => 'laravel, seo, package', 'default_image' => '/images/default-og.png', ];
📄 Lisensi
Lisensi MIT
Dikembangkan oleh Nixie Team
📧 support@nixie.dev