PHPackages                             bale/seo - 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. bale/seo

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

bale/seo
========

Seo tool for CMS

056PHP

Since Apr 15Pushed 1mo agoCompare

[ Source](https://github.com/papa-ree/seo)[ Packagist](https://packagist.org/packages/bale/seo)[ RSS](/packages/bale-seo/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

Bale SEO
========

[](#bale-seo)

[![Latest Version on Packagist](https://camo.githubusercontent.com/bd2580b7d85e8adc8af8648e618a7bdaeab2f2cda3d44978962858c78fb6f10e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f706170612d7265652f73656f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/papa-ree/seo)[![GitHub Tests Action Status](https://camo.githubusercontent.com/d4d900f1b71bb5b4553308d4e781874fd36a8bc9941d19db21a365bf355c4451/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f706170612d7265652f73656f2f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/papa-ree/seo/actions?query=workflow%3Arun-tests+branch%3Amain)[![License](https://camo.githubusercontent.com/934f7031c187b3df39d5f0c6bad3cc8d9456f3c488ab1635683d388b717584f5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f706170612d7265652f73656f3f7374796c653d666c61742d737175617265)](LICENSE.md)

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 &amp; CMS) namun tetap fleksibel untuk aplikasi Laravel lainnya.

Fitur Utama
-----------

[](#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
---------

[](#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:

1. Mempublish file migrasi.
2. Menanyakan apakah Anda ingin mengaktifkan route SEO (sitemap.xml dan robots.txt).
3. Memperbarui file `.env` Anda dengan `SEO_USE_ROUTES`.

Jangan lupa jalankan migrasi:

```
php artisan migrate
```

Konfigurasi
-----------

[](#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
----------

[](#penggunaan)

### 1. Menyiapkan Model

[](#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

[](#2-integrasi-ke-layout)

Gunakan komponen `` di dalam tag `` layout Anda:

```

```

### 3. Mengelola Data SEO

[](#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 &amp; Robots.txt
------------------------

[](#sitemap--robotstxt)

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
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Silakan lihat [CHANGELOG](CHANGELOG.md) untuk informasi terbaru mengenai perubahan.

Lisensi
-------

[](#lisensi)

Lisensi MIT. Silakan lihat [File Lisensi](LICENSE.md) untuk informasi lebih lanjut.

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance59

Moderate activity, may be stable

Popularity12

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/6a4dff95fb8ef6beb3956487f0421a9229b3ded20f76917e49a1e7c2004267e4?d=identicon)[papa-ree](/maintainers/papa-ree)

---

Top Contributors

[![papa-ree](https://avatars.githubusercontent.com/u/79291092?v=4)](https://github.com/papa-ree "papa-ree (5 commits)")

### Embed Badge

![Health badge](/badges/bale-seo/health.svg)

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

###  Alternatives

[jeroen-g/autowire

Autowire and configure using PHP 8 Attributes in Laravel.

2320.0k](/packages/jeroen-g-autowire)

PHPackages © 2026

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