HLS Conversion, AI Görsel Üretimi ve SEO Optimizasyonu - Kullanım Kılavuzu
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:
🎯 Ne Zaman Kullanılır?
⚙️ Ne Yapar?
📁 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 |
🎯 Ne Zaman Kullanılır?
⚙️ Ne Yapar?
🧠 AI İşlemi
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..."
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
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!
🎯 Ne Zaman Kullanılır?
⚙️ Ne Yapar?
🔄 İşlem Sırası
HLS Conversion (Queue: muzibu_hls)
MP3 → HLS dönüşümü, song tablosunda hls_path güncellenir
Job: ConvertSongToHLSTimeout: 300s | Tries: 1
AI Görsel Üretimi (Queue: muzibu_my_playlist)
GPT-4 + Leonardo AI, media tablosuna kayıt
Job: GenerateSongCoverTimeout: 180s | Tries: 1
✅ Sonuç:
SEO nedir? Şarkıların Google ve sosyal medyalarda (Facebook, Twitter, WhatsApp) nasıl görüneceğini belirleyen bilgilerdir.
🌟 Neden Önemli?
✨ Ne Yapar?
HLS veya Görsel üretildiğinde, sistem otomatik olarak:
⏱️ Ne Zaman Tetiklenir?
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
SEO Kontrol
if (!$song->seoSetting) { ... }
seo_settings tablosunda kayıt var mı kontrol edilir
GPT-4 Prompt
"Şarkı: Paradise | Kısa SEO başlık ve açıklama üret"
GPT-4'e şarkı bilgileri gönderilir
SEO Oluştur
$song->getOrCreateSeoSetting()
HasSeo trait ile otomatik oluşturulur
İç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:
📄 Ö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
}
}
📁 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)
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.