Çalışan bir sayıcı için bir sunucu rotası ve küçük bir bileşen gerekir. Bu rehber, ilk sürümlerin çoğunun atladığı hata durumlarıyla birlikte her ikisini de oluşturur.
AlfaLinks editoryal ekibi ·
Bu rehberin kapsamı
Node veya Python backend ve herhangi bir front-end framework varsayıyoruz. Aşağıdaki her istek belgelenmiş API'ye ulaşır ve temel URL markanızın kendi alanıdır: alfalinks.net/api.php.
Kullanıma sunduğumuz sırayla beş adım
01
1. Anahtarı oluşturun ve gizli olarak saklayın
/auth/google.php üzerinden Google ile oturum açın, hesap sayfasından sk_ anahtarını kopyalayın ve sunucu ortamınıza yerleştirin. Front-end bunu asla görmez.
02
2. Bir proxy rotası ekleyin
Domaini doğrulayan, API'mizi çağıran ve yalnızca UI'nizin kullandığı alanları döndüren /internal/links?domain=... gibi bir şeyi dışa aktarın. Doğrulama önemlidir çünkü kullanıcılar her şeyi yazabilir.
03
3. Ücretsiz aksiyonla başlayın
overview aksiyonu ücretsizdir, bu nedenle sayacın ilk sürümünde hiç faturalandırma riski yoktur. Bir ekran bunlara ihtiyaç duyduğunda ücretli aksiyonlara geçin.
04
4. Üç durumu render edin
Yükleniyor, veri ve kullanılamaz. Kullanılamaz durumu HTTP 401, HTTP 402 ve bir ağ hatasını kapsar ve asla sıfır göstermemelidir.
05
5. Güncellik etiketini ekleyin
İndeksimiz ayda bir kez güncellenir. 'Link verileri aylık olarak güncellendi' yazan gri bir satır, 'Dün bir link ekledim' diye başlayan destek talebini önler.
Node'da proxy rotası
Tek ekranda okunacak kadar kısa. Önbellek burada düz bir Map'tir; birden fazla işlem çalıştırdığınızda Redis'e geçin.
js
const cache = new Map();
const MONTH = 30 * 24 * 3600 * 1000;
app.get('/internal/links', async (req, res) => {
const domain = String(req.query.domain || '').toLowerCase().trim();
if (!/^[a-z0-9.-]+\.[a-z]{2,}$/.test(domain)) return res.status(400).json({ok:false});
const hit = cache.get(domain);
if (hit && Date.now() - hit.t < MONTH) return res.json(hit.v);
const r = await fetch(`https://alfalinks.net/api.php?action=overview&q=${domain}`);
if (!r.ok) return res.status(502).json({ok:false});
const v = await r.json();
cache.set(domain, {t: Date.now(), v});
res.json(v);
});
Sayıcı çalıştıktan sonra bir DR rozeti ekleme
Sayıcı kolay yarısıdır. Rozet için bir ekstra çağrı gerekir.
Müşteri domainlerinin bir tablosu için, satır başına bir çağrı yerine, 2.000 domain'e kadar içerecek tek bir bulk_dr isteği gönderin. Satır sayısı ne olursa olsun 1 kredi tutar ve yanıt, her domaini 0-100 aralığındaki değere eşler; bu değeri önbelleğe alınmış overview'ın yanına kaydedersiniz.
Domainleri normalleştirilmiş ana makine adıyla eşleştirin. Şemayı, yolu ve öndeki www'yi kaldırın, aksi halde satırlarınızın yarısı eşleşmeyi kaçırır ve boşluk gösterir.
Yeni kullanıcılar nadiren bir kurulum sayfasını okur. Özelliğin çaba değerinde olup olmadığını görmek isterler ve gerçek bir sayı gösteren bir backlink sayacı, herhangi bir formdan daha hızlı bu soruyu yanıtlar. Değeri öne koyun. Yapılandırma ikinci plandadır.
Ücretsiz overview aksiyonu anahtar gerektirmediğinden, ilk ekranınızda kullanıcı hiçbir şey yapılandırmadan önce bile bir sayı gösterebilir.
İlk render için ne gerekir?
Yalnızca bir domain ve ücretsiz bir çağrı. Kendi sitesini onboarding sırasında yazan ve sayıcının aynı sayfa görünümünde belirdiğini gören yeni bir kullanıcı hayal edin. O tek sayı, bir adım listesiyle aynı şeyi yapmaktan çok daha fazlasını başlatır, bu yüzden geri kalan kurulumu onun arkasında tutun.
Kullanıcı, herhangi bir kart, anahtar veya ikinci form istenmeden önce ne alacağını görür. İlk render'da hiçbir şey bir kapı gibi görünmemelidir.
Kurulum istemi nerede olmalıdır?
Sayının hemen ardından, önünde değil. 'Bunu her ay izlemek için bir domain bağlayın' gibi kısa bir satır sayıcının altına sığar. Aynı istem sayının üzerinde durursa, kullanıcılar bunu bir kapı olarak okur ve ayrılır.
Kullanıcıların her kurulum adımını ne kadar tamamladığını izleyin. Küçük bir huni, insanların nerede durduğunu gösterir ve bir ifade değişikliği, genellikle yeni bir özellikten daha fazla etki yaratarak bu sayıyı değiştirir.
Lansman öncesi test
Önce mutlu olmayan yolları test edin. Mutlu yollar kendilerini test eder.
Anahtarı staging ortamında iptal edin ve kartın sıfır yerine 'kullanılamaz' gösterdiğini onaylayın. Ardından bir 402 tetiklemek için test bakiyesini boşaltın ve bir şema ve son ekli bir yol içeren domain gibi hatalı bir girdi yapıştırarak, herhangi bir kredi harcanmadan önce doğrulayıcının onu reddettiğini kanıtlayın.
Kısa bir smoke testi CI'ya aittir. nytimes.com üzerinde çalışan tek bir ücretsiz overview çağrısı, rotanın ve anahtarın hala çalıştığını size söyler.
Hangi domain için kime bakılabilir ve ne maliyetle
Herhangi bir dizeyi kabul eden bir sayıcı, bakiyeniz için açık bir kapıdır. Rota canlıya geçmeden önce kime neyi sorabileceğine karar verin ve cevabı herkesin açmadığı bir wiki sayfasına değil, koda yazın.
Her seferinde üç soru gelir: hangi domainler, hangi limit ve anahtar nerede.
Bir kullanıcının hangi domainleri yazmasına izin verilmelidir?
Yalnızca workspace'ın iddia ettiği domainler ve sunduğunuz genel aramalar. Workspace'ın iki siteye sahip olduğunu varsayalım. Rota bu ikisini kabul edebilir ve başka hiçbir şeyi net bir mesajla reddedebilir, bu da bir kiracının kendi olmayan domainler için kredi harcamasını engeller.
Rota içindeki ana makine adı kontrolü minimumdur. Girdinin bir domain gibi göründüğünü kanıtlar, kullanıcının onu sahip olduğunu değil, bu yüzden iddia listesini kendi veritabanınızda ayrı bir tablo olarak tutun.
Bir kullanıcının bakiyeyi nasıl tüketmesini engellersiniz?
Kendi depolamanıza workspace başına bir kotası koyun ve çağrıları orada sayın. Tarafımızdaki bakiye tek bir ön ödemeli havuzdur, bu nedenle hangi müşterinin ne harcadığını söyleyemez. Arama sayfası notları aynı sorunun genel tarafını kapsar. Bir workspace sınırına ulaştığında, düz bir mesaj döndürün ve önbelleğin zaten sahip olduğu verilerle yanıtlamaya devam etmesine izin verin.
Limiti koltuk başı notları içindeki aritmetiğe göre seçin, bir tahmine göre değil ve plan değiştiğinde bunu gözden geçirin. Kotaya güvenmeden önce rotayı ikinci bir workspace ile test edin.
Tarayıcı anahtarı asla tutmalı mı?
Hayır. Anahtar sunucunuzda yaşar ve tarayıcı rotanıza çağrı yapar. Bu bölünme aynı zamanda bir kotasının mümkün olduğu şeydir, çünkü her ücretli çağrı kontrol ettiğiniz koddan geçer. Bir anahtar bir paket içinde görünürse, aynı gün döndürün ve yapmadığınız çağrılar için bakiye günlüğünü kontrol edin. Bazı ekipler anahtarı ön yüzün derleme zamanında okuduğu bir yapılandırma dosyasında saklar ve bu dosya pakete girer. Anahtarı build adımının görebileceği hiçbir şeyin dışında tutun ve her sürüm öncesi gönderilen dosyaları bir kez kontrol edin.
Ücretsiz aksiyonlar anahtarsız bir genel sayfadan çağrılabilir ve bu, tarayıcının API'ye doğrudan konuşabildiği tek durumdur.
Sayıcının ne söylemesi gerektiği ve ne söylememesi gerektiği
Bildiğinizden daha azını söyleyin. 'Backlinkler' etiketli bir sayıcı 'Neden Ahrefs farklı bir sayı gösteriyor?' sorusunu davet eder ve dürüst cevap, iki tarayıcının web'in iki dilimini görmesidir.
Bunun yerine sayıyı kaynağı ve ayıyla etiketleyin. 'Yönlendiren domainler, AlfaLinks indeksi, Ekim 2026' gibi bir şey daha uzundur, ancak tartışmayı başlamadan önce sonlandırır ve küçük bir kartta iyi görünür.
Gösterim için yuvarlayın. Pazartesi günü 12.481 ve Cuma günü 12.481 gören bir kullanıcı, titreme gören birinden daha fazla güven duyar ve aylık yenilememiz size bu istikrarı ücretsiz verir.
Yanında 0-100 değerini istiyorsanız, önce backlink puanı notlarına bakın. Bu bizim kendi metriğimizdir, bu yüzden isimlendirme önemlidir.
Hata durumları ve UI'nin davranışı
HTTP kodları API'nin döndürdüğü kodlardır; UI sütunu bizim önerimizdir.
Sinyal
Anlam
Kullanıcının gördüğü şey
Ne yaparsınız
HTTP 401
Eksik veya hatalı anahtar
'Link verileri kullanılamaz'
Sayfayı kendiniz test edin: dağıtım hatası
HTTP 402
Kredi bitti
'Link verileri kullanılamaz'
USDT (TRC-20) ile yükleme yapın
ok: false
İstek reddedildi
Satır içi yeniden deneme bağlantısı
Domaini ve aksiyonu günlüğe kaydedin
Zaman aşımı
Ağ sorunu
Eğer varsa önbelleğe alınmış değeri
Bir kez yeniden dene, sonra geri çekil
Destek ve günlüklerde sayıcıyı dürüst tutma
Bir sayıcı gürültülü başarısız olmaktan çok daha sık sessizce başarısız olur. Müşterinin bir sonraki sorusunu yanıtlamak için yeterince günlüğe kaydedin ve kişisel verileri tamamen logdan çıkarın. Kısa satırlar kazanır. Bir destek sorusunu yanıtlayan bir satırdan daha fazla zaman kaydeden herhangi bir uyarı yazmaz.
Bir sayıcı hakkındaki destek tartışmalarının çoğu üç sorudan biridir, bu yüzden logu bu üç soru etrafında planlayın. Bu üç soruyu anahtar döndürme adımlarının yanına çalışma kitabınıza ekleyin.
Her log satırı ne kaydetmelidir?
Aksiyon, domain, durum kodu, önbellek yaşı ve dönen kredi bakiyesi. Bu beş alan çoğu destek sorusunu yanıtlar. Bir kullanıcının sayıcının eski bir sayı gösterdiğini sorduğunu varsayın. Önbellek yaşı ve indeks ayı, sorunun önbellek mi yoksa etiket mi olduğunu söyler.
API anahtarını her satırdan, hata izleri dahil, çıkarın. Logger'da maskalayın, çünkü bir sızan satır tüm hesabı tüketebilir.
Sayıcının her hafta sağlıklı olduğunu nasıl bilirsiniz?
Üç sayıyı izleyin: kullanılamaz durumların oranı, kredi bakiyesi trendi ve önbellek isabet oranı. Kullanılamaz durumların ani bir artışı genellikle bir anahtar veya bakiye sorununa işaret eder. Bakiyedeki yavaş bir düşüş genellikle çok spesifik bir önbellek anahtarına işaret eder.
Her okumanın farklı bir çözümü vardır, bu yüzden tüm üçü için tek bir dashboard kutusu genellikle kimseye yardımcı olmaz. Üç okumayı haftalık notunuzda tek bir satıra koyun, son değer ve haftadan önceki değişimle birlikte. Sayılar yalnız başlarına okunduğunda tahminlere davet açar, kısa bir trend konuşmayı aynı gerçekler üzerinde tutar.