Arkadaşlar selam bir bot yazdım. Bu bot ile flarum sitelerinize farklı kullanıcılar ile belirlediğiniz soruları otomatik olarak sordurabiliyorsunuz. Botu satmıyorum ama 50 TL karşılığında sitenize belirlediğiniz bir etiket altında 10 farklı kullanıcıdan 30 farklı özgün orjinal soru sordurabilirim.
Tek yapmanız gereken 10 tane kullanıcı açıp şifrelerini aynı yapmanız.
Konuyu belirlemeniz.
Flarum Sitelerinize Otomatik Soru Sordurun
AcilPara api ile mi çalışıyor yoksa pyhton mu
Python ile programladım hocam.
- Düzenlendi
AcilPara php + api ile gemini kullanarak ayda 20-30k konu rahat açılabiliyor spam yemeden, o yöntemi tavsiye ederim. Birde tek api isteği ile hem konu açılıp hemde yorum yapılabiliyor
huseyinfiliz hocam bu konuda bi rehber var mı ?
- Düzenlendi
BEYBABA https://discuss.flarum.org/d/24880-flarum-api-client-php bunu kullanararak flarum’da yapılabilecek çoğu şeyi api ile yapabilir hale geliyorsunuz.
Direkt AI ile tartışma açma üzerine değil ama bu rehber sayesinde RSS’den aldığınız verilerle tartışma oluşturabiliyorsunuz.
https://discuss.flarum.org/d/24017-create-posts-from-rss-feeds
Bu rehberi takip ettikten sonra RSS üzerinden veri almak yerine gemini ( https://aistudio.google.com/app/apikey ) adresinden api oluşturup, yapay zekadan gelen veri ile tartışma oluşturmak mümkün oluyor.
Ardından php dosyanıza her http isteği (cron ile url isteği) gönderdiğinizde yeni bir tartışma oluşturabileceksiniz.
çok teşekkürler
BEYBABA Açıkçası bu kodları bu hale getirene kadar 1-2 ay uğraştım ve paylaşma konusunda kararsızdım. Yukarıda verdiğim linkleri inceleyin ve sonra aşağıda benim yazdığım kodlara uyarlayın. Zor olacağını düşünmüyorum. Sorun yaşadığınız yerde bana ulaşın. Bu tartışmayı kullanmak yerine lütfen yeni bir tartışma ile açın veya direkt bana özelden (telegram, mail) yazın.
<?php
$header = array(
"Authorization: Token <<BURAYA KENDI FORUMUNA AİT TOKENİ GİR>> ",
"Content-Type: application/json"
);
// Create DB connection
$servername = "localhost";
$login = "VERİTABANI KULLANICI ADI";
$dbpw = "VERİTABANI ŞİFRESİ";
$dbname = "VERİTABANI ADI";
$conn = new mysqli($servername, $login, $dbpw, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
else
{
echo "Connected to database\n";
}
?>
<?php
include("details-txt.php");
require 'vendor/autoload.php';
// Hata ayıklama için daha fazla bilgi göster
error_reporting(E_ALL);
ini_set('display_errors', 1);
// API URL'sini tanımlayın
$apiUrl = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=<<BURAYA KENDİ APİ KEYİNİ GİR>>';
// TXT dosyasının yolunu belirtin
$filePath = 'keywords-gemini.txt';
// Dosyayı satır satır okuyun ve hata kontrolü ekleyin
if (!file_exists($filePath) || !is_readable($filePath)) {
die("Dosya bulunamadı veya okunamıyor: " . $filePath);
}
$keywords = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
// Veritabanından son eklenen kaydın başlığını alalım
$lastTitleStmt = $conn->prepare('SELECT title FROM ai_queue ORDER BY id DESC LIMIT 1');
if (!$lastTitleStmt) {
die("Veritabanı hazırlama hatası: " . $conn->error);
}
$lastTitleStmt->execute();
$lastTitleStmt->bind_result($lastTitle);
$lastTitleStmt->fetch();
$lastTitleStmt->close();
echo "Veritabanındaki son başlık: $lastTitle\n";
// Son eklenen başlığı keywords dosyasında bul ve sonraki satırı kullan
$keywordIndex = array_search($lastTitle, $keywords);
if ($keywordIndex !== false && isset($keywords[$keywordIndex + 1])) {
$keyword = $keywords[$keywordIndex + 1];
echo "Sonraki anahtar kelime: $keyword\n";
} else {
// Eğer veritabanındaki son başlık txt dosyasında yoksa veya sonraki kelime bulunamıyorsa ilk kelimeyi kullan
$keyword = $keywords[0];
echo "İlk anahtar kelime: $keyword\n";
}
// Önce veritabanında anahtar kelimenin olup olmadığını kontrol et
$selectStmt = $conn->prepare('SELECT title FROM ai_queue WHERE title = ?');
$selectStmt->bind_param('s', $keyword);
$selectStmt->execute();
$selectStmt->store_result();
if ($selectStmt->num_rows === 0) {
// Eğer anahtar kelime veritabanında yoksa Gemini API'ye istek gönder
$prompt = "Aşağıdaki keyword ile Türkçe FORUMİSMİ forumunda konu açacaksın. Yazım hataları ve kısaltmalar kullanabilirsin, noktalama işaretlerini pek kullanma. SEO odaklı olmaya, keywordü kullanmaya dikkat et. Yapay zeka olduğunu belli etme, doğal bir dil kullan. Markdown, tablo, HTML gibi formatlama kullanma. Yalnızca düz metin kullan. Lütfen sadece şu formatta bir yanıt ver;\n\n"
. "Konu: [Başlık metni (75 karakterden kısa olmalı)]\n"
. "Soru: [Yanıt metni]\n\n"
. "Keyword: $keyword";
// JSON formatında istek gövdesi
$requestData = [
"contents" => [
[
"parts" => [
["text" => $prompt]
]
]
]
];
// cURL isteği
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestData));
$response = curl_exec($ch);
// Hata kontrolü
if (curl_errno($ch)) {
echo "cURL Hatası: " . curl_error($ch) . "\n";
return;
}
$httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// Gelen cevabı ekrana yazdır
echo "Gemini API Yanıtı:\n$response\n\n";
if ($httpStatus !== 200) {
echo "API Hatası: HTTP Durum Kodu $httpStatus\n";
return;
}
// Cevabı ayrıştır ve işle
$responseData = json_decode($response, true);
if (isset($responseData['candidates'][0]['content']['parts'][0]['text'])) {
$geminiResponse = $responseData['candidates'][0]['content']['parts'][0]['text'];
// Başlık ve yanıtı ayrıştır
if (preg_match('/^Konu: (.+)\nSoru: (.+)$/s', $geminiResponse, $matches)) {
$title = trim($matches[1]);
$body = trim($matches[2]);
// Flarum API'sini kullanarak foruma yeni konu ekleyin
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://forum.siteismi.com/api/discussions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array(
'data' => array(
'type' => "discussions",
'attributes' => array(
'title' => "$title", // Konunun başlığı olarak satırdan alınan başlık kullanılıyor
'content' => "$body" // Konunun içeriği olarak satırdan alınan içerik kullanılıyor
),
'relationships' => array(
'tags' => array(
'data' => array(
array(
'type' => 'tags',
'id' => "2" // Bu konuya belirli bir tag (kategori) atamak için sabit bir tag ID'si kullanılıyor
)
)
)
)))));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode != 201) {
echo "HTTP Error Code: " . $httpCode . "\n";
echo "API Response: " . $result . "\n";
die("Forum API request failed.\n");
}
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch) . "\n";
}
curl_close($ch);
echo "Forumda yeni konu oluşturuldu: $title\n";
// Başarılıysa veritabanına yeni kayıt ekle
$insertStmt = $conn->prepare('INSERT INTO ai_queue (title, seen) VALUES (?, 1)');
$insertStmt->bind_param("s", $keyword);
$insertStmt->execute();
$insertStmt->close();
echo "Yeni anahtar kelime veritabanına eklendi: " . $keyword . "\n";
} else {
echo "Gemini API'den gelen cevap beklenen formatta değil.\n";
}
} else {
echo "Gemini API'den geçerli bir içerik alınamadı.\n";
}
} else {
echo "Başlık zaten var, atlanıyor: " . $keyword . "\n";
}
$selectStmt->close();
?>
txt dosyası alt alta bu şekilde olacak.
keyword 1
keyword 2
keyword 3
BEYBABA Resmi forumda detaylı rehber paylaştım.
https://discuss.flarum.org/d/37200-auto-start-a-discussion-using-ai-gemini-chatgpt-more
huseyinfiliz çok teşekkürler hocam bakacağım