📚 Dokümantasyon v2 8 Ocak 2025 - SEO Desteği Eklendi

Muzibu Toplu İşlem Sistemi

HLS Conversion, AI Görsel Üretimi ve SEO Optimizasyonu - Kullanım Kılavuzu

📝 Basit Anlatım (Herkes İçin)

Sisteminiz şarkılar için otomatik olarak üç işlem yapabilir:

🎵 HLS Dönüşümü

MP3 şarkıları küçük parçalara böler ve güvenli streaming formatına çevirir. Böylece şarkılar kolay kolay indirilemez, sadece dinlenebilir.

🎨 AI Görsel Üretimi

Şarkı adından otomatik olarak yapay zeka ile profesyonel albüm kapağı görseli oluşturur. Her şarkıya benzersiz, yüksek kaliteli kapak resmi.

🔍 SEO Optimizasyonu

Şarkının Google'da üst sıralarda çıkması için otomatik SEO meta bilgileri oluşturur. Başlık, açıklama, sosyal medya paylaşım bilgileri.

✨ 3 Farklı Kullanım Şekli:

  • 1️⃣ Sadece HLS: Şarkıları streaming formatına çevir (görsel ve SEO yok)
  • 2️⃣ Sadece Görsel: AI ile kapak görseli + SEO oluştur (HLS yok)
  • 3️⃣ Hem HLS Hem Görsel: Üçünü birden yap (tam otomatik + SEO)

🎯 3 İşlem Modu

MOD 1

Sadece HLS Dönüşümü

🎯 Ne Zaman Kullanılır?

  • • Zaten görseli olan şarkılar için
  • • Sadece streaming formatına çevirmek istiyorsanız
  • • AI görsel üretimi istemiyorsanız
  • • Hızlı işlem gerekiyorsa

⚙️ Ne Yapar?

  • • MP3 dosyasını HLS formatına dönüştürür
  • • Küçük parçalara böler (.ts segments)
  • • M3U8 playlist dosyası oluşturur
  • • AES-128 ile şifreler (opsiyonel)

📁 Dosya Konumları

HLS Klasörü:

/var/www/vhosts/muzibu.com/httpdocs/storage/tenant1001/app/public/muzibu/hls/

Şarkı Yapısı:

hls/song-{id}/master.m3u8

💡 Örnek: Song ID: 12345
HLS Path: muzibu/hls/song-12345/master.m3u8

🗄️ Veritabanı Güncellemesi

Tablo: muzibu_songs

Field Açıklama Örnek Değer
hls_path M3U8 playlist dosya yolu muzibu/hls/song-12345/master.m3u8
encryption_key AES-128 encryption key a1b2c3d4e5f6...
is_encrypted Encrypt edildi mi? true
hls_converted_at Conversion zamanı 2025-01-08 23:45:00
MOD 2

Sadece AI Görsel Üretimi

🎯 Ne Zaman Kullanılır?

  • • Zaten HLS'i olan şarkılar için
  • • Sadece kapak görseli eksik şarkılar
  • • HLS dönüşümü istemiyorsanız
  • • Sadece görsel yenilemek istiyorsanız

⚙️ Ne Yapar?

  • • Şarkı başlığını analiz eder (GPT-4)
  • • Otomatik dil tespiti + çeviri
  • • Leonardo AI ile görsel üretir
  • • Media tablosuna kaydeder

🧠 AI İşlemi

1️⃣

GPT-4 Prompt Oluşturma

Şarkı başlığını analiz eder, dil tespit eder, İngilizce'ye çevirir, detaylı fotoğraf prompt'u oluşturur

"Paradise" → "Tropical beach, turquoise water, sunset..."
2️⃣

Leonardo AI Görsel Üretimi

GPT-4'ün prompt'unu kullanarak profesyonel fotoğraf tarzında görsel üretir

Model: Lucid Origin | Boyut: 1472x832px | Stil: GPT-4 seçimi
3️⃣

Görsel İndirme ve Kaydetme

Leonardo AI'dan görseli indirir, Spatie Media Library ile şarkıya bağlar

🗄️ Veritabanı Yapısı

Tablo: media (Spatie Media Library)

Field Açıklama Örnek Değer
model_type Bağlı model (Song) Modules\Muzibu\App\Models\Song
model_id Şarkı ID'si 12345
collection_name Media collection hero (album cover)
file_name Dosya adı song-cover-12345.jpg
disk Storage disk public
custom_properties AI metadata (JSON) { "generation_source": "ai_generated", ... }

📦 custom_properties İçeriği:

{
  "generation_source": "ai_generated",
  "generation_prompt": "Album cover art of tropical beach...",
  "generation_params": {
    "model": "leonardo-lucid-origin",
    "size": "1472x832",
    "style": "cinematic",
    "provider": "leonardo",
    "generation_id": "abc-123-def",
    "detected_language": "English",
    "translated_title": "Paradise",
    "tenant_id": 1001,
    "purpose": "song_cover"
  }
}

💡 Önemli: Görsel dosyası media tablosunda, prompt ve AI bilgileri custom_properties JSON field'inde saklanır. Ayrı bir "media_library_items" tablosu YOK!

MOD 3

Hem HLS Hem AI Görsel (Tam Otomatik)

🎯 Ne Zaman Kullanılır?

  • • Yeni yüklenen şarkılar için
  • • Hem HLS hem görsel eksik olanlar
  • • Tek seferde her şeyi halletmek istiyorsanız
  • • Toplu işlem yapacaksanız

⚙️ Ne Yapar?

  • • MOD 1 + MOD 2 işlemlerinin tamamını yapar
  • • Sıralı çalışır: Önce HLS, sonra Görsel
  • • Her iki veritabanı kaydını günceller
  • • Paralel queue'lerde çalışır

🔄 İşlem Sırası

1

HLS Conversion (Queue: muzibu_hls)

MP3 → HLS dönüşümü, song tablosunda hls_path güncellenir

Job: ConvertSongToHLS
Timeout: 300s | Tries: 1
↓ HLS tamamlandıktan sonra
2

AI Görsel Üretimi (Queue: muzibu_my_playlist)

GPT-4 + Leonardo AI, media tablosuna kayıt

Job: GenerateSongCover
Timeout: 180s | Tries: 1

✅ Sonuç:

  • • Şarkı HLS formatında streaming'e hazır
  • • Şarkı AI görseliyle albüm kapağına sahip
  • • Her iki veritabanı güncel
  • • Kullanıcı deneyimi tam
🔍 SEO

Otomatik SEO Optimizasyonu

📝 Basit Anlatım (Herkes İçin)

SEO nedir? Şarkıların Google ve sosyal medyalarda (Facebook, Twitter, WhatsApp) nasıl görüneceğini belirleyen bilgilerdir.

🌟 Neden Önemli?

  • • Google'da şarkı aratıldığında üst sıralarda çıkar
  • • Facebook/Twitter'da paylaşınca güzel başlık ve açıklama görünür
  • • WhatsApp'ta link gönderilince görsel ve bilgiler otomatik çıkar
  • • Daha fazla dinleyiciye ulaşırsınız

✨ Ne Yapar?

HLS veya Görsel üretildiğinde, sistem otomatik olarak:

  • • Şarkı için SEO ayarları yoksa → Hemen oluşturur
  • • AI ile başlık, açıklama, sosyal medya bilgileri üretir
  • • Google ve sosyal medya paylaşımları optimize eder

🔧 Teknik Detaylar (Geliştiriciler İçin)

⏱️ Ne Zaman Tetiklenir?

  • HLS Job tamamlandığında: ConvertSongToHLS sonrası kontrol edilir
  • AI Görsel Job tamamlandığında: GenerateSongCover sonrası kontrol edilir
  • Her iki durumda: seo_settings tablosunda kayıt yoksa → GPT-4 ile oluşturulur

📋 Hangi SEO Alanları Üretilir?

Alan Açıklama Örnek
title SEO başlık (Google'da görünür) "Paradise - Muzibu | Tropical..."
description SEO açıklama (Google'da görünür) "Discover Paradise, a captivating..."
og_title Facebook/WhatsApp başlık "🎵 Paradise - Müzibu"
og_description Facebook/WhatsApp açıklama "Dinle, paylaş, keşfet..."

🗄️ Veritabanı Yapısı

Tablo: seo_settings

İlişki Tipi: Polymorphic (Her içerik kendi SEO'suna sahip)

Field Tip Açıklama
seoable_type VARCHAR Model class (Song, Album, Page...)
seoable_id BIGINT İçerik ID (song_id, album_id...)
titles JSON Çoklu dil başlık: {"tr": "...", "en": "..."}
descriptions JSON Çoklu dil açıklama
og_titles JSON Facebook/Twitter başlık
og_descriptions JSON Facebook/Twitter açıklama
og_image VARCHAR Sosyal medya görseli URL
canonical_url VARCHAR Ana URL (SEO için)
robots_meta JSON index, follow, noarchive...

🤖 AI ile SEO İçeriği Üretimi

1️⃣

SEO Kontrol

if (!$song->seoSetting) { ... }

seo_settings tablosunda kayıt var mı kontrol edilir

2️⃣

GPT-4 Prompt

"Şarkı: Paradise | Kısa SEO başlık ve açıklama üret"

GPT-4'e şarkı bilgileri gönderilir

3️⃣

SEO Oluştur

$song->getOrCreateSeoSetting()

HasSeo trait ile otomatik oluşturulur

4️⃣

İçerik Doldur

$seoSetting->update(['titles' => ..., 'descriptions' => ...])

GPT-4'ün ürettiği içerikler kaydedilir

🎯 Hangi Modeller SEO Desteğine Sahip?

HasSeo trait'ini kullanan tüm modeller otomatik SEO alır:

  • Song: Şarkılar (muzibu_songs)
  • Album: Albümler (muzibu_albums)
  • Page: Sayfalar (pages)
  • Blog: Blog yazıları (blogs)
  • Product: Ürünler (shop_products)

📄 Örnek SEO Çıktısı

Şarkı: "Paradise"

{
  "seoable_type": "Modules\\Muzibu\\App\\Models\\Song",
  "seoable_id": 7394,
  "titles": {
    "tr": "Paradise - Muzibu | Tropikal Plaj Müziği",
    "en": "Paradise - Muzibu | Tropical Beach Music"
  },
  "descriptions": {
    "tr": "Paradise şarkısını dinle, keşfet ve paylaş. Tropikal ritmler...",
    "en": "Listen, discover and share Paradise song. Tropical rhythms..."
  },
  "og_titles": {
    "tr": "🎵 Paradise - Muzibu'da Dinle",
    "en": "🎵 Listen to Paradise on Muzibu"
  },
  "og_descriptions": {
    "tr": "Tropikal müziğin büyüsüne kapıl. Şimdi dinle!",
    "en": "Feel the magic of tropical music. Listen now!"
  },
  "og_image": "https://cdn.leonardo.ai/users/.../song-7394.jpg",
  "canonical_url": "https://muzibu.com/sarki/paradise",
  "robots_meta": {
    "index": true,
    "follow": true
  }
}

🔧 Teknik Detaylar (Geliştiriciler İçin)

📁 HLS Dosya Yapısı

storage/tenant1001/app/public/muzibu/hls/
└── song-12345/
    ├── master.m3u8          # Ana playlist
    ├── stream.m3u8          # Segment listesi
    ├── segment-000.ts       # Video segment 1
    ├── segment-001.ts       # Video segment 2
    ├── segment-002.ts       # Video segment 3
    └── encryption.key       # AES-128 key (opsiyonel)

🎨 Media Storage Yapısı

storage/tenant1001/app/public/
└── 12345/                   # Model ID (Song ID)
    └── song-cover.jpg       # AI generated cover

Database: media tablosu
├── file_name: "song-cover.jpg"
├── disk: "public"
├── collection_name: "hero"
└── custom_properties: { AI metadata }

⚙️ Laravel Queue Sistemi

Queue İşlem Timeout Tries
muzibu_hls HLS Conversion 300s 1
muzibu_my_playlist AI Cover Generation 180s 1

📦 Job Class'ları

Modules\Muzibu\App\Jobs\ConvertSongToHLS

→ MP3 → HLS conversion, song.hls_path günceller, SEO kontrol eder

Modules\Muzibu\App\Jobs\GenerateSongCover

→ GPT-4 + Leonardo AI, media tablosuna kayıt, SEO kontrol eder

Modules\Muzibu\App\Services\MuzibuLeonardoAIService

→ AI servisi (dil tespiti, çeviri, prompt oluşturma, görsel üretme)

App\Traits\HasSeo

→ SEO trait (getOrCreateSeoSetting, polymorphic relationship)

⚠️ Önemli Notlar

💾

Veritabanı Yapısı

"media_library_items" diye bir tablo YOK! Eski sistemde olabilir ama şu an Spatie Media Library kullanılıyor. Tüm media bilgileri media tablosunda, AI prompt ve generation bilgileri custom_properties JSON field'inde.

🔍

SEO Otomasyonu (YENİ!)

Her HLS ve AI Görsel işleminden sonra otomatik SEO kontrolü yapılır. seo_settings tablosunda kayıt yoksa, GPT-4 ile SEO başlık, açıklama ve Open Graph bilgileri üretilir. Hiçbir müdahale gerekmez!

🔐

HLS Encryption

HLS parçaları AES-128 ile şifrelenebilir. Encryption key encryption_key field'inde saklanır. Şifreleme aktifse is_encrypted = true olur.

🌍

Çok Dilli Destek

AI görsel sistemi otomatik dil tespiti yapar (Türkçe, İngilizce, İtalyanca, İspanyolca, Japonca vb.) ve Leonardo AI için İngilizce'ye çevirir. Dil bilgisi custom_properties.detected_language içinde. SEO içerikleri de çoklu dil desteğiyle JSON formatında saklanır.

⏱️

İşlem Süreleri

HLS conversion: ~2-5 dakika (şarkı uzunluğuna bağlı)
AI görsel üretimi: ~30-60 saniye (GPT-4 + Leonardo AI)
SEO üretimi: ~5-10 saniye (GPT-4 - anlık)

🚫

Kullanıcı Görseli Kontrolü

Eğer şarkıda zaten manuel yüklenmiş görsel varsa (hasMedia('hero')), AI görsel üretimi ATLANIR. Kullanıcının görseli korunur, AI ezmez. Ancak SEO yoksa yine üretilir.