🎨 Leonardo AI Görsel Üretim Sistemi v2

📅 Tarih: 2025-11-20 | 🎯 Tenant: ixtif.com (Tenant 2) | 👤 Konu: Görsel üretim sistemi kapsamlı analizi

📊 Güncel Durum

65
Toplam Blog
5
Görseli Var
60
Görseli Yok
Sistem Hazır
✅ Sistem Tamamlandı

Leonardo AI entegrasyonu tamamlandı. blog:generate-images artisan komutu hazır. 60 görselsiz blog için görsel üretimi yapılabilir. Komut rate limiting, hata yönetimi ve progress bar içeriyor.

🔄 Görsel Üretim Akışı

Yeni Blog Üretimi (Otomatik)

1
Cron Tetikleme
php artisan generate:tenant-blogs komutu düzenli aralıklarla çalışır. Tenant ayarlarını kontrol eder, aktif draft'ı seçer.
2
Job Queue Gönderimi
GenerateBlogFromDraftJob dispatch edilir. Queue: blog-ai. Horizon bu job'u işler, tenant context'i restore eder.
3
BlogAIContentWriter
generateBlogFromDraft() metodu çağrılır. AI ile blog içeriği üretilir. Body, FAQ (5 adet), HowTo (3 adım) üretilir ve doğrulanır.
4
Leonardo AI Görsel Üretimi
LeonardoAIService::generateForBlog() çağrılır. Blog başlığından sektörel prompt oluşturulur. Leonardo Phoenix modeli ile 1024x768 görsel üretilir. Polling ile sonuç beklenir (~30-60 saniye).
5
Media Kayıt
Görsel indirilir, Spatie MediaLibrary ile featured_image collection'a eklenir. SEO metadata (alt_text, title) + custom properties (provider=leonardo, generation_id, prompt) kaydedilir.

Mevcut Bloglar İçin (Manuel Komut)

# İlk 10 görselsiz blogu işle
php artisan blog:generate-images --tenant-id=2

# 20 blog işle
php artisan blog:generate-images --tenant-id=2 --limit=20

# Tümünü işle (60 blog)
php artisan blog:generate-images --tenant-id=2 --limit=60

# Test modu (API çağrısı yapmaz)
php artisan blog:generate-images --tenant-id=2 --dry-run

🎯 Prompt Üretim Mekanizması

Tenant-Aware Prompt Sistemi

LeonardoAIService, tenant ID'ye göre farklı prompt builder kullanır. Her sektör için özelleştirilmiş profesyonel sahne tanımları üretir.

🎯 Tenant Bazlı Prompt Seçimi
  • Tenant 2 (ixtif.com): buildIndustrialPrompt() → Forklift/Transpalet sahneleri
  • Tenant 1001 (muzibu.com): buildMusicPrompt() → Müzik stüdyosu sahneleri
  • Diğer Tenant'lar: buildGenericPrompt() → Genel profesyonel görseller

Ekipman Tespiti (detectEquipment)

Blog başlığından anahtar kelimeler tespit edilir ve ilgili ekipman tipi belirlenir:

Anahtar Kelime (Regex) Tespit Edilen Ekipman (Random)
/forklift|istif\s*makine/ui electric forklift, counterbalance forklift, reach truck forklift, industrial forklift
/transpalet|palet\s*jak/ui electric pallet jack, manual pallet truck, powered pallet jack, warehouse pallet truck
/istif|stacker/ui warehouse stacker machine
/depo|lojistik|warehouse/ui warehouse material handling equipment
(varsayılan) industrial warehouse equipment

4 Farklı Sahne Şablonu

Her görsel için bu şablonlardan biri rastgele seçilir:

Sahne 1: Modern Depo
Professional photograph of modern warehouse interior with {equipment} in action, natural lighting through skylights...
Sahne 2: Lojistik Merkezi
High-quality commercial photo of {equipment} operating in busy logistics center, professional lighting...
Sahne 3: Dağıtım Tesisi
Corporate style photograph of {equipment} in state-of-the-art distribution facility, clean concrete floors...
Sahne 4: Operasyon Görüntüsü
Editorial quality image of warehouse operations featuring {equipment}, workers coordinating shipments...

Prompt Yapısı

// buildIndustrialPrompt metodu
$equipment = $this->detectEquipment($title);

$scenes = [
  "Professional photograph of modern warehouse...",
  "High-quality commercial photo...",
  "Corporate style photograph...",
  "Editorial quality image...",
];

return $scenes[array_rand($scenes)] . ", photorealistic, high resolution, professional commercial photography, no text, no watermarks";

Negative Prompt (Olumsuz Öğeler)

"blurry, low quality, distorted, watermark, text overlay, logo, signature, amateur, poorly lit"

📝 Gerçek Prompt Örnekleri

Blog: "En İyi Transpalet Modelleri"
Professional photograph of a modern warehouse interior with electric pallet jack in action, natural lighting through skylights, workers in safety gear, clean organized environment, industrial architecture, photorealistic, high resolution, professional commercial photography, no text, no watermarks
Blog: "Forklift Bakım Rehberi"
High-quality commercial photo of counterbalance forklift operating in a busy logistics center, professional lighting, safety markings visible, realistic industrial setting, photorealistic, high resolution, professional commercial photography, no text, no watermarks
Blog: "İstif Makinesi Karşılaştırma"
Corporate style photograph of warehouse stacker machine in a state-of-the-art distribution facility, clean concrete floors, LED lighting, organized pallet racks in background, photorealistic, high resolution, professional commercial photography, no text, no watermarks
Blog: "Kiralık Transpalet Fiyatları"
Editorial quality image of warehouse operations featuring powered pallet jack, workers coordinating shipments, professional documentary style photography, photorealistic, high resolution, professional commercial photography, no text, no watermarks

⚙️ Teknik Detaylar

Parametre Değer Açıklama
Model Leonardo Phoenix ID: de7d3faf-762f-48e0-b3b7-9d0ac3a3fcf3
Çözünürlük 1024x768 Blog featured image için ideal boyut
Görsel Sayısı 1 Her istekte tek görsel
Timeout 30s API, 60s download Polling max 30 deneme × 3s bekleme
Rate Limit 5s delay Görseller arası varsayılan bekleme
Collection featured_image Spatie MediaLibrary collection adı
Disk tenant storage/tenant{id}/app/public/

Media Metadata (Custom Properties)

$media->setCustomProperty('provider', 'leonardo');
$media->setCustomProperty('generation_id', $result['generation_id']);
$media->setCustomProperty('prompt', $result['prompt']);
$media->setCustomProperty('alt_text', ['tr' => $title]);
$media->setCustomProperty('seo_optimized', true);
$media->setCustomProperty('og_image', true);

💰 Maliyet Analizi

$9
Aylık Plan
3500
Kredi/Ay
~7
Kredi/Görsel
~500
Max Görsel/Ay
📊 Hesaplama
  • 60 eski blog için: 60 × 7 = 420 kredi → Tek seferde yapılabilir
  • Aylık yeni blog: ~90-150 görsel/ay → 630-1050 kredi → Rahat yeterli
  • Toplam aylık: ~1500 kredi kullanım → %43 kapasite

🎯 Yapılacaklar

1. 60 Görselsiz Blog İçin Görsel Üret Yüksek Öncelik

Mevcut 60 görselsiz blog için Leonardo AI ile görsel üretimi yapılacak. Komut: php artisan blog:generate-images --tenant-id=2 --limit=60

Tahmini süre: 60 × (30s üretim + 5s delay) = ~35 dakika

Tahmini maliyet: 420 kredi (aylık 3500'ün %12'si)

2. Fallback Mekanizma Orta Öncelik

Leonardo AI başarısız olursa stock photo'ya geri dönecek fallback eklenebilir. Öncelik sırası: Leonardo AI → Pexels → Unsplash → Pixabay

3. Kredi Takip Sistemi Düşük Öncelik

Her görsel üretimi için kredi kullanımı loglanacak. Aylık kullanım raporu ve limit uyarısı eklenebilir.

📁 Dosya Konumları

Dosya Konum
LeonardoAIService app/Services/Media/LeonardoAIService.php
GenerateBlogImages Command app/Console/Commands/GenerateBlogImages.php
BlogAIContentWriter Modules/Blog/app/Services/BlogAIContentWriter.php
API Config config/services.php → services.leonardo.api_key