PHPackages                             tunasahincomtr/metakit - 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. tunasahincomtr/metakit

ActiveLibrary

tunasahincomtr/metakit
======================

SEO meta management package for Laravel

05PHP

Since Dec 27Pushed 4mo agoCompare

[ Source](https://github.com/tunasahincomtr/meta-kit)[ Packagist](https://packagist.org/packages/tunasahincomtr/metakit)[ RSS](/packages/tunasahincomtr-metakit/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

MetaKit
=======

[](#metakit)

Laravel için URL bazlı SEO meta tag yönetim paketi. Her sayfa için özel meta bilgileri tanımlayın, cache desteği ile hızlı çalışın.

Özellikler
----------

[](#özellikler)

- 🎯 URL bazlı meta yönetimi (domain, path, query parametreleri)
- 🚀 Otomatik cache sistemi
- 🎨 Blade direktifleri ile kolay kullanım
- 📱 Open Graph ve Twitter Card desteği
- 📊 JSON-LD schema desteği
- 🔄 RESTful API ile yönetim
- 🛡️ Duplicate meta tag koruması
- 🗺️ Otomatik sitemap oluşturma
- 🎨 Bootstrap uyumlu admin arayüzü

Kurulum
-------

[](#kurulum)

### 1. Repository'yi Composer'a Ekleyin

[](#1-repositoryyi-composera-ekleyin)

`composer.json` dosyanıza GitHub repository'yi ekleyin:

```
{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/tunasahincomtr/meta-kit"
        }
    ]
}
```

### 2. Paketi Yükleyin

[](#2-paketi-yükleyin)

```
composer require tunasahincomtr/metakit:dev-main
```

**Alternatif:** Eğer paketi projeniz içinde local olarak kullanmak isterseniz:

```
{
    "repositories": [
        {
            "type": "path",
            "url": "modules/packages/tunasahincomtr/metakit",
            "options": {
                "symlink": true
            }
        }
    ]
}
```

Sonra `composer require tunasahincomtr/metakit:"*"` komutunu çalıştırın.

### 3. Config ve Migration

[](#3-config-ve-migration)

Config dosyasını yayınlayın:

```
php artisan vendor:publish --tag=metakit-config
```

Migration'ları çalıştırın:

```
php artisan migrate
```

Hepsi bu kadar! Paket Laravel'in auto-discovery özelliği sayesinde otomatik olarak yüklenir.

Hızlı Başlangıç
---------------

[](#hızlı-başlangıç)

### Blade Template'inde Kullanım

[](#blade-templateinde-kullanım)

```

    @metakit
    @metakitJsonLd

```

`@metakit` direktifi şunları otomatik oluşturur:

- `` tagı
- Meta description, keywords, robots
- Canonical URL
- Open Graph tagları
- Twitter Card tagları

### Controller'da Programatik Kullanım

[](#controllerda-programatik-kullanım)

```
use function TunaSahincomtr\MetaKit\metakit;

public function show(Product $product)
{
    metakit()
        ->setTitle($product->name . ' - Ürün Detayı')
        ->setDescription($product->description)
        ->setOgImage($product->image_url);

    return view('products.show', compact('product'));
}
```

Admin Arayüzü
-------------

[](#admin-arayüzü)

MetaKit, Bootstrap 5 uyumlu bir admin arayüzü ile gelir. Sadece bir Blade direktifi ile kullanabilirsiniz:

```
@metakitform
```

Bu direktif ile şunları yapabilirsiniz:

- ✅ Sayfa ekleme, düzenleme, silme
- ✅ Liste görünümü ile pagination
- ✅ Arama ve filtreleme
- ✅ SEO skoru görüntüleme
- ✅ İstatistikler ve raporlar
- ✅ JSON-LD schema yönetimi

### Renk Özelleştirme

[](#renk-özelleştirme)

Admin arayüzünün renklerini CSS variable ile özelleştirebilirsiniz:

```
.metakit-form-wrapper {
    --metakit-primary: #198754; /* Buton arka plan rengi */
    --metakit-primary-text: #ffffff; /* Buton metin rengi */
}
```

API Kullanımı
-------------

[](#api-kullanımı)

MetaKit RESTful API ile çalışır. API endpoint'leri:

**Public Endpoints (Token gerekmez):**

- `GET /api/metakit/pages` - Sayfa listesi
- `GET /api/metakit/pages/{id}` - Tek sayfa
- `GET /api/metakit/stats/dashboard` - İstatistikler

**Protected Endpoints (Token gerekli):**

- `POST /api/metakit/pages` - Yeni sayfa
- `PUT /api/metakit/pages/{id}` - Sayfa güncelle
- `DELETE /api/metakit/pages/{id}` - Sayfa sil
- `POST /api/metakit/pages/import/csv` - CSV import
- `GET /api/metakit/pages/export/csv` - CSV export

API token oluşturmak için:

```
$user = User::first();
$token = $user->createToken('api-token')->plainTextToken;
```

Blade Direktifleri
------------------

[](#blade-direktifleri)

### Tüm Meta Tagları

[](#tüm-meta-tagları)

```
@metakit
```

### Sadece Title

[](#sadece-title)

```
@metakitTitle
```

### Belirli Meta Değeri

[](#belirli-meta-değeri)

```

```

### JSON-LD Schema

[](#json-ld-schema)

```
@metakitJsonLd
```

JSON-LD Schema Yönetimi
-----------------------

[](#json-ld-schema-yönetimi)

MetaKit ile sayfanıza birden fazla JSON-LD schema ekleyebilirsiniz:

```
metakit()->addJsonLd([
    '@context' => 'https://schema.org',
    '@type' => 'Article',
    'headline' => 'Makale Başlığı',
    'author' => [
        '@type' => 'Person',
        'name' => 'Yazar Adı'
    ]
]);

// Veya Product schema
metakit()->addJsonLd([
    '@context' => 'https://schema.org',
    '@type' => 'Product',
    'name' => 'Ürün Adı',
    'price' => '99.99',
    'currency' => 'TRY'
]);
```

Admin arayüzünde hazır template'ler ile kolayca schema ekleyebilirsiniz:

- Article, BlogPosting
- Product
- FAQPage
- BreadcrumbList
- Organization, WebSite
- LocalBusiness, Person
- Ve daha fazlası...

Sitemap
-------

[](#sitemap)

MetaKit otomatik olarak sitemap.xml oluşturur. Aktif sayfalarınız otomatik olarak sitemap'e eklenir:

```
GET /sitemap.xml

```

Config'de özelleştirebilirsiniz:

```
// config/metakit.php
'sitemap' => [
    'enabled' => true,
    'route' => '/sitemap.xml',
    'include_images' => true,
    'only_active' => true,
],
```

Cache Yönetimi
--------------

[](#cache-yönetimi)

MetaKit otomatik cache kullanır. Sayfa oluşturulduğunda, güncellendiğinde veya silindiğinde ilgili cache otomatik temizlenir.

Manuel cache temizleme:

```
metakit()->purgeCache('example.com', '/products', $queryHash);
```

Query Hash
----------

[](#query-hash)

URL'deki query parametreleri için farklı meta tanımlamak istediğinizde query hash kullanılır. Sadece `config/metakit.php` içindeki `query_whitelist` listesindeki parametreler hash hesaplamasına dahil edilir.

**Örnek:**

- URL: `https://example.com/products?city=istanbul&type=apartment&page=2`
- Whitelist: `['city', 'type']`
- Query Hash: `city=istanbul&type=apartment` parametrelerinden oluşturulur
- `page` parametresi hash'e dahil edilmez

Konfigürasyon
-------------

[](#konfigürasyon)

`config/metakit.php` dosyasında aşağıdaki ayarları yapabilirsiniz:

```
'api_prefix' => 'api/metakit',
'cache_ttl_minutes' => 360,
'query_whitelist' => ['city', 'type', 'price_min'],
'default' => [
    'site_name' => env('APP_NAME', 'Laravel'),
    'title_suffix' => ' - ' . env('APP_NAME', 'Laravel'),
    'default_image' => '/images/og-default.jpg',
],
'sitemap' => [
    'enabled' => true,
    'route' => '/sitemap.xml',
],
'form' => [
    'auth_required' => false, // Admin arayüzü için auth kontrolü
],
```

Örnekler
--------

[](#örnekler)

### Basit Kullanım

[](#basit-kullanım)

```

    @metakit

```

### Dinamik Override

[](#dinamik-override)

```
// Controller'da
metakit()
    ->setTitle('Özel Başlık')
    ->setDescription('Özel Açıklama')
    ->setCanonical('https://example.com/canonical')
    ->setOgImage('https://example.com/image.jpg');
```

### API ile Toplu İşlemler

[](#api-ile-toplu-i̇şlemler)

```
// JavaScript
fetch('/api/metakit/pages', {
    method: 'POST',
    headers: {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json',
    },
    body: JSON.stringify({
        domain: window.location.hostname,
        path: window.location.pathname,
        title: 'Sayfa Başlığı',
        description: 'Sayfa Açıklaması',
        status: 'active',
    }),
});
```

Gereksinimler
-------------

[](#gereksinimler)

- PHP &gt;= 8.1
- Laravel &gt;= 10.0
- Laravel Sanctum (API için)

Lisans
------

[](#lisans)

MIT

Destek
------

[](#destek)

Sorularınız için:

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance51

Moderate activity, may be stable

Popularity4

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity12

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/d2ad8472dfeb96d5b84ad3f7fabe5d14e2b1dd9f32b0f00ef46a00308dbf2cd8?d=identicon)[tunasahincomtr](/maintainers/tunasahincomtr)

---

Top Contributors

[![tunasahincomtr](https://avatars.githubusercontent.com/u/247994722?v=4)](https://github.com/tunasahincomtr "tunasahincomtr (4 commits)")

### Embed Badge

![Health badge](/badges/tunasahincomtr-metakit/health.svg)

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

PHPackages © 2026

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