MrcExe adlı üyeden alıntı: mesajı görüntüle
Bunu daha önce bilen varsa yoruma yazabilir mi işe yarıyor mu


5 dk da bir İndexleme İndexnow xf eklentisini beş bin TL olarak görünce biraz ilkelde olsa cron ile çalışan bir proje yapay zekadan yardım alınmıştır

1.1 Proje oluştur

https://console.cloud.google.com/

- Yeni proje oluştur
- Örnek: "indexing-api"

---

1.2 Indexing API aç

https://console.cloud.google.com/api...googleapis.com

- Enable bas

---

1.3 Service Account oluştur

https://console.cloud.google.com/iam...erviceaccounts

- Create Service Account
- İsim: "indexer"
- Oluştur

---

1.4 JSON indir

- Service account → Keys
- Add Key → JSON indir

---

2. Search Console Yetki

https://search.google.com/search-console

SADECE DOMAIN PROPERTY

Doğru:

selectra.org.tr

Yanlış:

Yükleniyor


selectra.org.tr
---

Kullanıcı ekle

JSON içinden:

"client_email": "xenforo-indexer@proje.iam.gserviceaccount.com"

Bunu:

- Kullanıcı ekle
- Yetki: TAM

---

3. PHP Script (Index Gönderme)

Sunucuda dosya oluştur:

/public_html/indexing.php

Kod:

<?php

$url = "https://site.com/konu/ornek";

$data = json_encode([
"url" => $url,
"type" => "URL_UPDATED"
]);

$ch = curl_init("https://indexing.googleapis.com/v3/u...ations:publish");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"Authorization: Bearer " . getAccessToken()
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;


// TOKEN ALMA
function getAccessToken() {

$json = json_decode(file_get_contents(__DIR__ . '/service-account.json'), true);

$header = json_encode([
"alg" => "RS256",
"typ" => "JWT"
]);

$time = time();

$payload = json_encode([
"iss" => $json['client_email'],
"scope" => "https://www.googleapis.com/auth/indexing",
"aud" => "https://oauth2.googleapis.com/token",
"iat" => $time,
"exp" => $time + 3600
]);

$base64UrlEncode = function ($data) {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
};

$base64Header = $base64UrlEncode($header);
$base64Payload = $base64UrlEncode($payload);

$signature = '';
openssl_sign(
$base64Header . "." . $base64Payload,
$signature,
$json['private_key'],
'SHA256'
);

$base64Signature = $base64UrlEncode($signature);

$jwt = $base64Header . "." . $base64Payload . "." . $base64Signature;

$ch = curl_init("https://oauth2.googleapis.com/token");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
"grant_type" => "urn:ietfaramsauth:grant-type:jwt-bearer",
"assertion" => $jwt
]));

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

return $response['access_token'];
}

---

4. JSON Dosyasını Yerleştir

İndirilen JSON:

/public_html/service-account.json

---

5. Cron Kurulumu

Hosting panel → Cron Jobs

Komut:

php /home/kullanici/public_html/indexing.php

---

Zamanlama:

*/5 * * * *

Her 5 dakikada çalışır

---

6. Dinamik URL Gönderme (ÖNEMLİ)

Statik değil, dinamik yap:

$url = file_get_contents("https://site.com/sitemap.xml");

veya

veritabanından çek:

SELECT last_post_url FROM xf_thread

---

7. Başarılı Çıktı

{
"urlNotificationMetadata": {
"url": "https://site.com/konu/ornek"
}
}

---

ÖNEMLİ

- Bu sistem index GARANTİ etmez
- Sadece Google’a bildirir

---

Öneriler

- Yeni konu açılınca tetikle
- Sitemap kullan
- Search Console’dan da gönder

---

SONUÇ

✔ API kuruldu
✔ JSON bağlandı
✔ PHP çalışıyor
✔ Cron otomatik gönderiyor

Sistem hazır

chatgpt'den paylaşırken bazı iconları düzeltseydin? yada yazıları düzenini yapsaydın.