bale / seo
Seo tool for CMS
Requires
- php: ^8.1
- illuminate/contracts: ^11.0||^12.0
Requires (Dev)
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.8
- orchestra/testbench: ^10.0.0||^9.0.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-arch: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
This package is auto-updated.
Last update: 2026-04-15 03:41:20 UTC
README
Bale SEO adalah package Laravel untuk mengelola metadata SEO, Open Graph, Twitter Cards, dan sitemap secara dinamis. Package ini dirancang untuk bekerja dengan ekosistem Bale (Emperan & CMS) namun tetap fleksibel untuk aplikasi Laravel lainnya.
Fitur Utama
- Polymorphic Meta: Hubungkan metadata SEO ke model apa pun (Post, Page, dsb).
- Automatic Fallbacks: Secara otomatis menghasilkan deskripsi dari konten jika tidak diatur manual.
- Dynamic Sitemap: Mendukung sitemap index dan sub-sitemap untuk Post dan Page.
- Dynamic Robots.txt: Menghasilkan file robots.txt yang dapat dikonfigurasi.
- Structured Data: Mendukung JSON-LD untuk SEO yang lebih baik.
- Blade Component: Komponen siap pakai untuk integrasi head HTML yang mudah.
Instalasi
Anda dapat menginstal package ini via composer:
composer require bale/seo
Setelah instalasi, jalankan perintah instalasi untuk mempublish migrasi dan melakukan konfigurasi awal:
php artisan seo:install
Perintah ini akan:
- Mempublish file migrasi.
- Menanyakan apakah Anda ingin mengaktifkan route SEO (sitemap.xml dan robots.txt).
- Memperbarui file
.envAnda denganSEO_USE_ROUTES.
Jangan lupa jalankan migrasi:
php artisan migrate
Konfigurasi
Anda dapat mempublish file konfigurasi dengan:
php artisan vendor:publish --tag="seo-config"
Isi dari file config/seo.php:
return [ 'site_name' => env('SEO_SITE_NAME', config('app.name', 'Bale')), 'use_routes' => env('SEO_USE_ROUTES', false), 'defaults' => [ 'title' => env('SEO_DEFAULT_TITLE', config('app.name', 'Bale')), 'description' => env('SEO_DEFAULT_DESCRIPTION', ''), 'image' => env('SEO_DEFAULT_IMAGE', '/img/og-image.jpg'), 'keywords' => env('SEO_DEFAULT_KEYWORDS', ''), ], 'sitemap' => [ 'models' => [ 'post' => \Bale\Emperan\Models\Post::class, 'page' => \Bale\Emperan\Models\Page::class, ], ], ];
Penggunaan
1. Menyiapkan Model
Tambahkan trait HasSeoMeta ke model yang ingin Anda beri dukungan SEO:
namespace App\Models; use Bale\Seo\Traits\HasSeoMeta; use Illuminate\Database\Eloquent\Model; class Post extends Model { use HasSeoMeta; // Opsional: tentukan sumber fallback untuk deskripsi public function getExcerpt($limit = 160) { return Str::limit(strip_tags($this->content), $limit); } }
2. Integrasi ke Layout
Gunakan komponen <x-seo::seo-meta /> di dalam tag <head> layout Anda:
<head> <!-- Meta tags lainnya --> <x-seo::seo-meta :model="$post" /> <!-- Atau dengan default values --> <x-seo::seo-meta :defaults="['title' => 'Custom Title']" /> </head>
3. Mengelola Data SEO
Anda dapat membuat atau memperbarui data SEO untuk sebuah model dengan mudah:
$post->updateSeoMeta([ 'title' => 'Judul SEO Keren', 'description' => 'Deskripsi yang menarik untuk Google.', 'og_title' => 'Judul untuk Facebook', 'no_index' => true, // Opsional ]);
Sitemap & Robots.txt
Jika use_routes diaktifkan di konfigurasi, package akan menyediakan route berikut:
/sitemap.xml: Index sitemap./sitemap-posts.xml: Sitemap khusus post./sitemap-pages.xml: Sitemap khusus page./robots.txt: File robots.txt dinamis.
Anda dapat menentukan model mana yang masuk ke sitemap melalui config/seo.php.
Testing
composer test
Changelog
Silakan lihat CHANGELOG untuk informasi terbaru mengenai perubahan.
Lisensi
Lisensi MIT. Silakan lihat File Lisensi untuk informasi lebih lanjut.