Üst

Eklenti İstek Yapay Zeka İle Seo Odaklı Başlık Yaratma

Kullanıcı adını bilmediği yada bulamadığı bu eklentiyi istemektedir.

tamirmasasi

XenWp Lisanslı
XenWp Kullanıcı
Puan 3
Çözümler 0
Katılım
3 Eyl 2025
Mesajlar
4
Tepkime puanı
3
tamirmasasi
1774271051443.webp

Merhaba arkadaşlar,
Bende yapay zeka ile bu modu kendim oluşturdum! (GEMİNİ) şimdi size adım adım nasıl yapıldığını yazacağım.


  1. Arka Plan (PHP): Sitenin sunucusunda çalışacak, senin içeriğini alıp yapay zekaya (OpenAI) gönderecek ve cevabı alacak küçük bir dosya oluşturacağız.
  2. Ön Yüz (JS): Konu açma sayfasına bir buton ekleyeceğiz.
  3. Bağlantı: Butona basınca JS, PHP dosyanı tetikleyecek; başlık otomatik dolacak.

Bu işin "beyni" için bir API lazım. Genelde en yaygın ve ucuz olanı OpenAI (ChatGPT) API'sidir.

  • Bu bağlantı ziyaretçiler için gizlenmiştir. Görmek için lütfen giriş yapın veya üye olun.
    adresinden bir API Key alıp kenara not et. (Eğer başka bir ücretsiz servis kullanmak istersen onu da entegre edebiliriz).

XenForo ana dizininde (index.php'nin olduğu yer) seo_baslik.php adında bir dosya oluştur ve içine şu kodu yapıştır (API anahtarını ilgili yere yaz):

Kod:
<?php
// Hataları ekrana basması için (Sadece test için açıyoruz)
error_reporting(E_ALL);
ini_set('display_errors', 1);

$apiKey = 'BURAYA_OPENAI_API_KEY_YAZ'; // Kendi anahtarını buraya koyduğuna emin ol

// Gelen metni al
$content = $_POST['content'] ?? '';

if (empty($content) || strlen($content) < 10) {
    echo "Hata: İçerik çok kısa!";
    exit;
}

$data = [
    'model' => 'gpt-3.5-turbo',
    'messages' => [
        ['role' => 'system', 'content' => 'Sen bir SEO uzmanısın. Sadece Türkçe başlık üret.'],
        ['role' => 'user', 'content' => 'Bu metne SEO uyumlu, merak uyandıran bir başlık yaz: ' . $content]
    ],
    'max_tokens' => 100
];

$ch = curl_init('https://api.openai.com/v1/chat/completions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $apiKey
]);

$response = curl_exec($ch);

if(curl_errno($ch)) {
    echo 'Curl Hatası: ' . curl_error($ch);
    exit;
}

$result = json_decode($response, true);
curl_close($ch);

if (isset($result['choices'][0]['message']['content'])) {
    echo trim($result['choices'][0]['message']['content'], '" ');
} else {
    // Eğer hata gelirse hatanın ne olduğunu görelim
    echo "API Hatası: " . ($result['error']['message'] ?? 'Bilinmeyen hata');
}

forum_post_thread şablonunu bulunu
Aşağıdaki kodu bulun,

Kod:
Kod:<xf:prefixinputrow
    label="{{ phrase('title') }}"
    ...
    finalhtml="{$titleFinalHtml}" />

altına bu kodu ekle
Kod:
Kod:<xf:formrow rowtype="fullWidth noLabel mergePrev">
    <div style="margin: 10px 0;">
        <xf:button type="button" class="button--icon button--icon--refresh" id="js-ai-title-btn">
            AI ile SEO Başlığı Üret
        </xf:button>
    </div>
</xf:formrow>

Az önce verdiğim JavaScript kodunu da bu şablonun (forum_post_thread) en altına (tüm kodların bittiği yere) yapıştırmayı unutma ki buton tıklandığında ne yapacağını bilsin.

Kod:
Kod<script>
document.addEventListener('DOMContentLoaded', function() {
    const aiBtn = document.querySelector('#js-ai-title-btn');
    if (aiBtn) {
        aiBtn.addEventListener('click', function() {
            // XenForo 2.3 için hem Froala hem de düz textarea kontrolü
            let content = '';
            const froalaEditor = document.querySelector('.fr-view');
          
            if (froalaEditor) {
                content = froalaEditor.innerText;
            } else {
                content = document.querySelector('textarea[name="message"]').value;
            }
          
            const titleInput = document.querySelector('.input--title');
          
            if (content.trim().length < 30) {
                alert('Kanka biraz daha uzun yaz (en az 30 karakter), AI konuyu anlayabilsin.');
                return;
            }

            const originalText = aiBtn.innerHTML;
            aiBtn.innerText = 'Düşünüyorum...';
            aiBtn.disabled = true;

            // İsteği gönderiyoruz
            const formData = new URLSearchParams();
            formData.append('content', content);

            fetch('seo_baslik.php', {
                method: 'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body: formData.toString()
            })
            .then(response => response.text())
            .then(data => {
                // Gelen veriyi temizleyip başlığa yazıyoruz
                if(data.trim() !== "") {
                    titleInput.value = data.trim();
                }
                aiBtn.innerHTML = originalText;
                aiBtn.disabled = false;
            })
            .catch(error => {
                alert('Bir bağlantı hatası oldu kanka!');
                aiBtn.innerHTML = originalText;
                aiBtn.disabled = false;
            });
        });
    }
});
</script>

XenForo'da seo_baslik.php şeklinde bir istek attığında, sistem bunu forumun içinde bir konuymuş gibi aramaya çalışır. Bunu engellemek için isteği tam adres (root) üzerinden göndermeliyiz.

forum_post_thread şablonundaki JavaScript kodunda şu satırı bul:fetch('seo_baslik.php', {

Ve şu şekilde değiştir (Başına bir / ekle):fetch('/seo_baslik.php', {


XenForo'nun ana dizinindeki .htaccess dosyası, güvenlik nedeniyle dışarıdan direkt .php dosyalarına erişimi engelleyebilir.

  1. FTP veya cPanel üzerinden forumun ana dizinine gir.
  2. .htaccess dosyasını aç.
  3. İçinde RewriteEngine On satırını bul ve hemen altına şu satırı ekle:RewriteRule ^seo_baslik\.php$ - [L]
Bu satır sunucuya şunu der: "Eğer birisi seo_baslik.php dosyasına erişmek isterse, XenForo kurallarını boşver ve dosyayı direkt çalıştır."


Bunları yaptıktan sonra tarayıcının adres çubuğuna şunu yaz:
Bu bağlantı ziyaretçiler için gizlenmiştir. Görmek için lütfen giriş yapın veya üye olun.


  • Eğer "Hata: İçerik çok kısa!" yazısını görürsen: Tebrikler kanka, kapı açıldı! Artık butonun çalışacak.
  • Eğer hala sitenin hata sayfasını (senin yukarıda attığın kodları) görüyorsan: Dosya isminde bir harf hatası olabilir veya dosya doğru klasörde (public_html'in en üstünde) değildir.
Kanka, özellikle o .htaccess düzenlemesi ve fetch kodundaki / işareti bu işin anahtarı. Bunları yapınca başlığın şak diye dolacağını göreceksin.
 
Son düzenleme:
kendi sitemde kurdum çalışıyor. Xenforo versiyonum 2.3.10'dur!
 

! Lütfen dikkat !

Forumumuzda kaliteli ve etkileşimli bir ortam sağlamak adına, lütfen konu dışı ve gereksiz cevaplar vermekten kaçının. Forum kurallarına aykırı davranışlar yasaktır. Hep birlikte daha verimli ve düzenli bir platform oluşturmak için kurallara uyalım.

Bu Konuyu Görüntüleyen Kullanıcılar (Toplam: 0, Üyeler: 0, Misafirler: 0)

Geri