Counter backlink untuk dashboard SaaS, langkah demi langkah
Counter yang berfungsi memerlukan satu rute server dan satu komponen kecil. Panduan ini membangun keduanya, termasuk status kegagalan yang sering dilupakan pada versi pertama.
Tim editorial AlfaLinks ·
Lingkup panduan ini
Kami mengasumsikan backend Node atau Python dan kerangka kerja front-end apa pun. Setiap permintaan di bawah ini mengenai API yang didokumentasikan, dan URL dasar adalah milik merek Anda sendiri: alfalinks.net/api.php.
Lima langkah, sesuai urutan yang akan kami terapkan
01
1. Buat kunci dan simpan sebagai rahasia
Masuk dengan Google di /auth/google.php, salin kunci sk_ dari halaman akun, dan masukkan ke lingkungan server Anda. Front-end tidak pernah melihatnya.
02
2. Tambahkan satu rute proxy
Paparkan sesuatu seperti /internal/links?domain=... yang memvalidasi domain, memanggil API kami, dan hanya mengembalikan bidang yang digunakan UI Anda. Validasi penting karena pengguna memasukkan apa saja.
03
3. Mulai dengan tindakan gratis
Tindakan overview tidak memakan biaya, sehingga versi pertama counter tidak memiliki risiko penagihan sama sekali. Beralih ke tindakan berbayar ketika layar membutuhkannya.
04
4. Render tiga status
Memuat, data, dan tidak tersedia. Tidak tersedia mencakup HTTP 401, HTTP 402, dan kegagalan jaringan, dan status ini tidak boleh menampilkan angka nol.
05
5. Tambahkan label kesegaran
Indeks kami diperbarui sekitar sebulan sekali. Garis abu-abu bertuliskan 'data tautan diperbarui secara bulanan' mencegah tiket dukungan yang berbunyi 'Saya menambahkan tautan kemarin'.
Rute proxy, dalam Node
Cukup pendek untuk dibaca dalam satu layar. Cache di sini adalah Map biasa; ganti dengan Redis jika Anda menjalankan lebih dari satu proses.
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);
});
Menambahkan lencana DR setelah counter berfungsi
Counter adalah setengah yang mudah. Lencana memerlukan satu panggilan tambahan.
Untuk tabel domain pelanggan, kirimkan satu permintaan bulk_dr dengan hingga 2.000 domain, bukan satu panggilan per baris. Biayanya 1 kredit berapa pun jumlah barisnya, dan responsnya memetakan setiap domain ke angka 0-100, yang Anda simpan di samping ringkasan yang di-cache.
Cocokkan domain pada hostname yang dinormalisasi. Hapus skema, jalur, dan www di awal, atau setengah dari baris Anda akan melewatkan pencarian dan menampilkan kosong.
Tampilkan nilai terlebih dahulu, lalu minta pengaturan
Pengguna baru jarang membaca halaman pengaturan. Mereka ingin melihat apakah fitur ini layak usaha, dan counter backlink yang menampilkan angka nyata menjawab itu lebih cepat daripada formulir apa pun. Letakkan nilai di depan. Konfigurasi datang kedua.
Karena tindakan ringkasan gratis tidak memerlukan kunci, layar pertama Anda dapat menampilkan angka sebelum pengguna melakukan konfigurasi apa pun.
Apa yang diperlukan untuk render pertama?
Hanya satu domain dan satu panggilan gratis. Bayangkan pengguna baru yang memasukkan situs mereka sendiri ke dalam onboarding dan melihat counter muncul dalam tampilan halaman yang sama. Angka tunggal ini lebih efektif untuk memulai pengaturan daripada daftar langkah, jadi sisakan sisa pengaturan di belakangnya.
Pengguna melihat apa yang akan mereka dapatkan sebelum siapa pun meminta kartu, kunci, atau formulir kedua. Tidak ada pada render pertama yang terlihat seperti gerbang.
Di mana seharusnya prompt pengaturan berada?
Tepat setelah angka, bukan sebelum angka. Baris pendek seperti 'Hubungkan domain untuk melacak ini setiap bulan' cocok di bawah counter. Jika prompt yang sama berada di atas angka, pengguna membacanya sebagai gerbang dan pergi.
Lacak pengguna mana yang menyelesaikan setiap langkah pengaturan. Corong kecil menunjukkan di mana orang berhenti, dan perubahan kata-kata sering menggerakkan angka tersebut lebih dari fitur baru.
Pengujian sebelum peluncuran
Uji jalur yang tidak bahagia terlebih dahulu. Jalur yang bahagia menguji dirinya sendiri.
Cabut kunci di lingkungan staging dan konfirmasi kartu menampilkan 'tidak tersedia' bukan nol. Kemudian kuras saldo uji untuk memicu 402, dan tempelkan input yang tidak valid seperti domain dengan skema dan jalur akhir, untuk membuktikan validator menolaknya sebelum kredit dibelanjakan.
Tes asap singkat cocok di CI. Satu panggilan overview gratis di nytimes.com, dijalankan setiap malam, memberi tahu Anda bahwa rute dan kunci masih berfungsi.
Siapa yang boleh melihat domain mana, dan dengan biaya berapa
Counter yang menerima string apa saja adalah pintu terbuka ke saldo Anda. Putuskan siapa yang bisa meminta apa sebelum rute diluncurkan, dan tulis jawabannya ke dalam kode, bukan ke halaman wiki yang tidak pernah dibuka siapa pun.
Tiga pertanyaan muncul setiap kali: domain mana, batas apa, dan di mana kunci berada.
Domain mana yang boleh diketik oleh pengguna?
Hanya yang dimiliki oleh workspace, plus pencarian publik apa pun yang Anda pilih untuk ditawarkan. Katakanlah workspace memiliki dua situs. Rute dapat menerima dua itu dan menolak yang lain dengan pesan yang jelas, yang menjaga agar satu penyewa tidak menghabiskan kredit untuk domain yang bukan milik mereka.
Pengecekan hostname dalam rute adalah minimum. Ini membuktikan input terlihat seperti domain, bukan bahwa pengguna memilikinya, jadi simpan daftar klaim di database Anda sendiri sebagai tabel terpisah.
Bagaimana Anda menghentikan satu pengguna menguras saldo?
Letakkan kuota per workspace di penyimpanan Anda sendiri dan hitung panggilan di sana. Saldo di sisi kami adalah satu pool pra-bayar, sehingga tidak dapat memberi tahu Anda pelanggan mana yang menghabiskan apa. Catatan halaman pencarian mencakup sisi publik dari masalah yang sama. Ketika workspace mencapai batasnya, kembalikan pesan sederhana dan biarkan cache terus menjawab dengan apa yang sudah dimilikinya.
Pilih batas dari aritmatika di catatan per-kursi, bukan dari tebakan, dan tinjau ulang ketika paket berubah. Uji rute dengan workspace kedua sebelum Anda mempercayai kuota.
Apakah browser pernah memegang kunci?
Tidak. Kunci berada di server Anda, dan browser memanggil rute Anda. Pemisahan ini juga yang membuat kuota mungkin, karena setiap panggilan yang ditagih melewati kode yang Anda kendalikan. Jika kunci pernah muncul dalam bundle yang dikirim, putar hari itu juga dan periksa log saldo untuk panggilan yang tidak Anda buat. Beberapa tim menyimpan kunci dalam file konfigurasi yang dibaca front-end saat build, dan file itu berakhir di dalam bundle. Jauhkan kunci dari apa pun yang dapat dilihat langkah build, dan periksa file yang dikirim sekali sebelum setiap rilis.
Tindakan gratis dapat dipanggil dari halaman publik tanpa kunci, dan itu adalah satu-satunya kasus di mana browser dapat berbicara langsung dengan API.
Apa yang harus dikatakan oleh counter, dan apa yang tidak boleh
Katakan lebih sedikit dari yang Anda ketahui. Counter yang diberi label 'backlink' mengundang pertanyaan 'mengapa Ahrefs menampilkan angka yang berbeda?', dan jawaban yang jujur adalah bahwa dua crawler melihat dua bagian web.
Beri label angka dengan sumber dan bulan sebagai gantinya. Sesuatu seperti 'Domain pengacu, indeks AlfaLinks, Oktober 2026' lebih panjang, tetapi itu mengakhiri argumen sebelum dimulai dan terbaca baik di kartu kecil.
Bulatkan untuk tampilan. Pengguna yang melihat 12.481 pada hari Senin dan 12.481 pada hari Jumat mempercayai alat lebih daripada yang melihat fluktuasi, dan pembaruan bulanan kami memberi Anda stabilitas itu secara gratis.
Jika Anda ingin angka 0-100 di sebelahnya, baca catatan tentang skor backlink terlebih dahulu. Ini adalah metrik kami sendiri, sehingga penamaan penting.
Status kegagalan dan apa yang dilakukan UI
Kode HTTP adalah yang dikembalikan API; kolom UI adalah saran kami.
Sinyal
Arti
Yang dilihat pengguna
Yang Anda lakukan
HTTP 401
Kunci hilang atau buruk
'Data tautan tidak tersedia'
Halaman sendiri: bug penyebaran
HTTP 402
Kredit habis
'Data tautan tidak tersedia'
Isi ulang dengan USDT (TRC-20)
ok: false
Permintaan ditolak
Tautan coba ulang inline
Log domain dan tindakan
Waktu tunggu
Masalah jaringan
Nilai cache jika Anda memilikinya
Coba lagi sekali, lalu kurangi frekuensi
Menjaga counter tetap jujur dalam dukungan dan log
Counter gagal dengan tenang jauh lebih sering daripada gagal dengan keras. Log cukup untuk menjawab pertanyaan berikutnya yang diajukan pelanggan, dan jauhkan data pribadi dari log sepenuhnya. Baris pendek menang. Baris yang menjawab pertanyaan dukungan menghemat lebih banyak waktu daripada peringatan apa pun yang bisa Anda tulis.
Sebagian besar thread dukungan tentang counter adalah salah satu dari tiga pertanyaan, jadi rencanakan log di sekitar mereka. Simpan tiga pertanyaan itu di buku panduan Anda, di samping langkah-langkah untuk memutar kunci.
Apa yang harus dicatat oleh setiap baris log?
Tindakan, domain, kode status, usia cache, dan saldo kredit yang kembali. Lima bidang tersebut menjawab sebagian besar pertanyaan dukungan. Katakanlah pengguna bertanya mengapa counter mereka menampilkan angka lama. Usia cache dan bulan indeks memberi tahu Anda apakah masalahnya adalah cache atau label.
Tinggalkan kunci API dari setiap baris, termasuk jejak error. Masking di logger, karena satu baris yang bocor dapat menguras seluruh akun.
Bagaimana Anda tahu counter sehat setiap minggu?
Pantau tiga angka: bagian status tidak tersedia, tren saldo kredit, dan tingkat hit cache. Lonjakan tiba-tiba dalam status tidak tersedia biasanya mengarah pada masalah kunci atau saldo. Penurunan lambat dalam saldo biasanya mengarah pada kunci cache yang terlalu spesifik.
Setiap pembacaan memiliki perbaikan berbeda, itulah mengapa satu tile dashboard untuk semuanya jarang membantu siapa pun. Letakkan tiga pembacaan dalam satu baris di catatan mingguan Anda, dengan nilai terakhir dan perubahan sejak minggu sebelumnya. Angka yang dibaca secara terisolasi mengundang tebakan, sementara tren singkat menjaga percakapan pada fakta yang sama.