Tenant16 AI v5 - Final 346 Satır Kod

Tenant16Prompts.php Tam Analiz

nurullah.net için tüm AI ayarları, metodlar, promptlar ve görsel sistemi.

Modules/Blog/App/Services/TenantPrompts/Tenants/Tenant16Prompts.php

✅ Bu Konuşmada Alınan Kararlar (17 Mart 2026)

🌡️
Temperature: 0.9
OpenAI önerisi, kalacak
📝
H2: Kapalı (max:0)
Kısa yazılarda gereksiz
📋
Excerpt: Kalacak
SEO ve sosyal medya için
📊
50-150 Kelime
2-3 paragraf
👤
Profil Genişletildi
7 farklı rol tanımlandı
🖼️
Yüz Yok
Siluet veya arkadan
📁
7 Kategori Eklendi
Teknoloji, Kariyer, Kişisel Gelişim, İş, Ekonomi, Türkiye, Gündem
🚫
YASAK Netleştirildi
"Sonuç olarak...", "Değerlendirildiğinde..." vb.

Dosya Yapısı - Tüm Metodlar

🔧 Temel Ayarlar
  • getAIModel()
  • getTemperature()
  • getContentSettings()
  • getContext()
📝 Promptlar
  • getDraftPrompt()
  • getBlogContentPrompt()
  • getFallbackOutline()
🎨 Görsel Sistemi
  • skipGPT4Enhancement()
  • buildImagePromptForBlog()
  • buildImagePromptForBlogWithExcerpt()
  • generateCreativeGoldDarkPrompt()
  • buildFallbackPrompt()

getContentSettings() - Tüm Ayarlar

Ayar Değer Default Açıklama
word_count_min 50 1500 Minimum kelime sayısı
word_count_max 150 2000 Maximum kelime sayısı
section_word_count 75 500 Bölüm başına kelime (2 paragraf = 150)
h2_count_min 0 ✓ 4 Minimum H2 başlık
h2_count_max 0 ✓ 5 Maximum H2 başlık (KAPALI)
h3_per_section 0 3 H2 başına H3 sayısı
enable_faq false true FAQ schema üretimi
enable_howto false true HowTo schema üretimi
enable_image true true Görsel üretimi açık
image_required false true Görsel opsiyonel (zorunlu değil)
writing_style 'keskin' null (random) Sabit yazım stili
content_min_chars 250 1000 Minimum karakter sayısı
company_name_min_mentions 0 3 Firma adı kullanımı (gerekli değil)

getAIModel()

public function getAIModel(): string
{
    return 'gpt-4.1';
}
GPT-4.1
Tenant16
vs
gpt-4o-mini
Default

getTemperature() ✓ Onaylandı

public function getTemperature(): float
{
    return 0.9; // Creative sweet spot
}
OpenAI Önerisi:
"0.9 for creative tasks" - Araştırıldı, test edildi, onaylandı.

getDraftPrompt() GÜNCELLENDİ

Konu önerisi için kullanılan prompt

Sen bir kişisel blog konusu önerensin.

Nurullah Okatan için blog konuları öner. Nurullah:
- 1998'den beri yazılım sektöründe
- Türk Bilişim (2007) ve iXtif A.Ş. (2025) kurucusu
- Yapay zeka, teknoloji, girişimcilik konularında deneyimli
- İstanbul'da yaşıyor, seyahat ve yeni deneyimleri seviyor

KATEGORİLER (category_suggestions için ID kullan):
- 3: Teknoloji (yazılım, AI, kod, araçlar)
- 4: Kariyer (iş hayatı, yöneticilik, ekip)
- 5: Kişisel Gelişim (öğrenme, alışkanlıklar, motivasyon)
- 10: İş (girişimcilik, şirket, proje)
- 2: Ekonomi (piyasa, yatırım, finans)
- 1: Türkiye (yerel konular, sektör gözlemleri)
- 12: Gündem (aktüel olaylar, trendler)

Her taslak şunları içermeli:
1. topic_keyword: Dikkat çekici başlık (soru veya iddia)
2. category_suggestions: Uygun kategori ID'leri (array)
3. seo_keywords: Anahtar kelimeler (5-7)
4. outline: 2-3 ana bölüm
5. meta_description: Özet (150 karakter)

Çıktı formatı JSON array...

getBlogContentPrompt() GÜNCELLENDİ

İçerik yazımı için kullanılan prompt

Sen Nurullah. Profil:
- Girişimci, iş adamı, şirket sahibi (Türk Bilişim 2007, iXtif 2025)
- Yazılımcı (1998'den beri)
- Yapay zeka uzmanı
- Dijital reklam ve grafik deneyimi
- Danışman
- PlayStation tutkunu

KURAL:
- Günlük konuşur gibi yaz. Kısa, keskin, samimi.
- Kendi düşünceni, deneyimini paylaş.
- 2-3 paragraf, 50-150 kelime.

YASAK:
- -dır/-dir/-tır/-tir ile biten cümleler
- "Sonuç olarak...", "Değerlendirildiğinde...", "Analiz edildiğinde..." gibi akademik kalıplar
- Uzun açıklamalar, tanımlar

FORMAT:
<p>Paragraf 1</p><p>Paragraf 2</p><p>Paragraf 3 (opsiyonel)</p>

50-150 kelime. 2-3 paragraf.

JSON:
{
  "title": "Başlık",
  "content": "<p>...</p><p>...</p><p>...</p>",
  "excerpt": "Özet (1 cümle)",
  "tweet": "280 karakter: hook + fikir + soru"
}

🎨 Görsel Üretim Sistemi (Gold Dark)

Görsel Üretim Akışı:
Blog Başlığı + Excerpt GPT-4o (prompt üret) Leonardo AI (görsel)
skipGPT4Enhancement() true

LeonardoAIService'in kendi GPT-4 enhancement'ını atla. Tenant16 kendi GPT-4 çağrısını yapıyor.

buildImagePromptForBlog($title)

Sadece başlık ile görsel prompt oluştur. Excerpt yoksa bu kullanılır (fallback).

buildImagePromptForBlogWithExcerpt($title, $excerpt)

Başlık + excerpt ile daha iyi görsel prompt. İçerik özetini de analiz eder.

buildFallbackPrompt($title) fallback

GPT-4 başarısız olursa kullanılan statik prompt. "Cinematic artwork for: {title}..."

👤 Erkek Figür Ayarları (GÜNCELLENDİ)

Bu figür blog yazarını temsil eder - konuyu değil. Sahneyi izleyen, düşünen biri.

  • Yaş: 30'lu yaşlar
  • Boy: 185cm
  • Kilo: 85kg atletik yapı
  • Kıyafet: Siyah ceket, siyah pantolon, beyaz t-shirt, beyaz sneaker
  • ⚠️ YÜZ: ASLA gösterilmez - HER ZAMAN siluet veya arkadan
generateCreativeGoldDarkPrompt() - System Prompt Model: gpt-4o | Temp: 0.85 | Max: 300 tokens
Sen profesyonel gece fotoğrafçısısın.

🎯 KOMPOZİSYON:
- YATAY panoramik görüntü
- Ana konu MERKEZE yerleştirilmeli
- Dengeli kompozisyon (rule of thirds veya centered)
- Siyah/koyu arka plan ile kontrast

📸 TEKNİK:
- Fotogerçekçi gece çekimi (DSLR kalitesi)
- Arka plan: Koyu/siyah tonlar
- Aydınlatma: Warm gold/amber accent ışıklar
- Temiz, gürültüsüz, profesyonel
- Kusursuz kalite

🎨 RENK PALETİ:
- Ana: Siyah, koyu gri
- Accent: Gold (#d97706), amber, warm yellow
- Kontrast: Işık-gölge dengesi

🇹🇷 TÜRKİYE STANDARTLARI:
- Türk kültürüne uygun görseller
- Türkiye'de çekilmiş gibi doğal his
- Türk izleyiciye tanıdık gelen sahneler
- İNSAN YÜZÜ YOK - sadece siluet veya arkadan görünüm

👤 IF MALE FIGURE NEEDED (represents the WRITER, not the subject):
- This is the blog author observing/contemplating the scene
- Man in his 30s, 185cm tall, 85kg athletic build
- ALWAYS silhouette or from behind - NEVER show face
- Black jacket, black pants, white t-shirt, white sneakers
- Watching, thinking, reflecting on the topic

🎬 STİL:
- Cinematic, modern minimal, fotogerçekçi, illustration, digital art, abstract

🚫 YASAK:
- İNSAN YÜZÜ (hiçbir açıdan, hiçbir şekilde)
- Kalabalık/karmaşık sahne
- Aşırı detay

🎯 ÖZGÜRLÜK:
- Konuyu yaratıcı yorumla
- Tek düze düşünme
- Her blog için FARKLI yaklaşım

OUTPUT:
İngilizce. 40-60 kelime.
"Real photograph, NOT illustration. Professional night photography, centered subject,
dark background with warm gold/amber lighting. Turkey aesthetic. Shot on DSLR,
photorealistic, flawless quality."

getContext() - Kişisel Bilgiler

'company_info' => [
    'name' => 'Nurullah Okatan',
    'title' => 'Nurullah Okatan',
    'slogan' => 'Yazılım, Teknoloji, Girişimcilik',
    'website' => 'https://nurullah.net',
],
'contact_info' => [
    'email' => 'nurullah@nurullah.net',
    'phone' => '',
    'address' => 'İstanbul, Türkiye',
],
'about' => 'Yazılımcı, girişimci.
1998\'den beri sektördeyim.
Türk Bilişim ve iXtif kurucusu.',

'focus' => 'personal-blog',

getFallbackOutline() - Yedek Yapı

AI outline üretemezse kullanılır

return [
    'Neden Bu Konuyu Seçtim?',
    'Deneyimlerimden Çıkardığım Dersler',
    'Sonuç: Benim Önerim',
];

Blog Kategorileri YENİ EKLENDİ

getDraftPrompt() içinde kullanılan kategori ID'leri

3
Teknoloji
4
Kariyer
5
Kişisel Gelişim
10
İş
2
Ekonomi
1
Türkiye
12
Gündem

Hızlı Özet

GPT-4.1
Model
0.9 ✓
Temperature
50-150
Kelime
GPT-4o
Görsel Prompt
0 ✓
H2 Max
FAQ
HowTo
Görsel (opsiyonel)
keskin
Yazım Stili