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.
php artisan generate:tenant-blogs komutu düzenli aralıklarla çalışır.
Tenant ayarlarını kontrol eder, aktif draft'ı seçer.
GenerateBlogFromDraftJob dispatch edilir. Queue: blog-ai.
Horizon bu job'u işler, tenant context'i restore eder.
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.
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).
featured_image collection'a eklenir.
SEO metadata (alt_text, title) + custom properties (provider=leonardo, generation_id, prompt) kaydedilir.
LeonardoAIService, tenant ID'ye göre farklı prompt builder kullanır. Her sektör için özelleştirilmiş profesyonel sahne tanımları üretir.
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 |
Her görsel için bu şablonlardan biri rastgele seçilir:
| 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/ |
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)
Leonardo AI başarısız olursa stock photo'ya geri dönecek fallback eklenebilir. Öncelik sırası: Leonardo AI → Pexels → Unsplash → Pixabay
Her görsel üretimi için kredi kullanımı loglanacak. Aylık kullanım raporu ve limit uyarısı eklenebilir.
| 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 |