bale / seo
Seo tool for CMS
Requires
- php: ^8.1
- illuminate/contracts: ^11.0||^12.0||^13.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-07-06 08:44:26 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 (Umpak & 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\Umpak\Models\Post::class,
'page' => \Bale\Umpak\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.