Contatore backlink per una dashboard SaaS, passo dopo passo
Un contatore funzionante richiede una route server e un piccolo componente. Questa guida costruisce entrambi, includendo gli stati di errore che le prime versioni dimenticano spesso.
Team editoriale AlfaLinks ·
Ambito di questa guida
Presupponiamo un backend Node o Python e qualsiasi framework front-end. Ogni richiesta sottostante colpisce l'API documentata e l'URL di base è il tuo brand: alfalinks.net/api.php.
Cinque passaggi, nell'ordine in cui li implementeremmo
01
1. Crea la chiave e memorizzala come segreto
Accedi con Google su /auth/google.php, copia la chiave sk_ dalla pagina dell'account e inseriscila nell'ambiente del tuo server. Il front-end non la vedrà mai.
02
2. Aggiungi una route proxy
Esponi qualcosa come /internal/links?domain=... che convalida il dominio, chiama la nostra API e restituisce solo i campi che la tua UI utilizza. La convalida è importante perché gli utenti digitano qualsiasi cosa.
03
3. Inizia con l'azione gratuita
L'azione overview non ha costi, quindi la prima versione del contatore non ha alcun rischio di fatturazione. Passa alle azioni a pagamento solo quando una schermata ne ha bisogno.
04
4. Renderizza tre stati
Caricamento, dati e non disponibile. Non disponibile copre HTTP 401, HTTP 402 e un errore di rete, e non dovrebbe mai mostrare uno zero.
05
5. Aggiungi l'etichetta di aggiornamento
Il nostro indice si aggiorna circa mensilmente. Una riga grigia che recita 'dati link aggiornati mensilmente' previene il ticket di assistenza che inizia con 'Ho aggiunto un link ieri'.
La route proxy, in Node
Abbastanza breve da leggere in uno schermo. La cache è una semplice Map qui; sostituiscila con Redis una volta che esegui più di un processo.
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);
});
Aggiungere un badge DR una volta che il contatore funziona
Il contatore è la metà facile. Il badge richiede una chiamata extra.
Per una tabella di domini dei clienti, invia una singola richiesta bulk_dr con fino a 2.000 domini invece di una chiamata per riga. Costa 1 credito indipendentemente dal numero di righe, e la risposta mappa ogni dominio alla sua figura 0-100, che memorizzi accanto alla panoramica memorizzata nella cache.
Corrispondi i domini sul nome di host normalizzato. Rimuovi lo schema, il percorso e un www iniziale, o metà delle tue righe non troverà la corrispondenza e mostrerà spazi vuoti.
Mostra un valore prima, poi chiedi la configurazione
I nuovi utenti raramente leggono una pagina di configurazione. Vogliono vedere se la funzione vale la pena dello sforzo, e un contatore backlink che mostra una cifra reale risponde più velocemente di qualsiasi modulo. Metti il valore prima. La configurazione viene dopo.
Poiché l'azione panoramica gratuita non richiede una chiave, la tua prima schermata può mostrare una cifra prima che l'utente abbia configurato qualsiasi cosa.
Di cosa ha bisogno il primo rendering?
Solo un dominio e una chiamata gratuita. Immagina un nuovo utente che digita il proprio sito nel processo di onboarding e vede apparire il contatore nella stessa visualizzazione della pagina. Quella singola cifra fa più per avviare la configurazione di quanto faccia un elenco di passaggi, quindi tieni il resto della configurazione dietro di essa.
L'utente vede cosa otterrà prima che qualcuno chieda una carta, una chiave o un secondo modulo. Nulla nel primo rendering dovrebbe sembrare un cancello.
Dove dovrebbe trovarsi il prompt di configurazione?
Proprio dopo la cifra, non prima. Una breve riga come 'Connetti un dominio per monitorare questo ogni mese' si adatta sotto il contatore. Se lo stesso prompt si trova sopra la cifra, gli utenti lo leggono come un cancello e se ne vanno.
Traccia quali utenti completano ogni passaggio di configurazione. Un piccolo imbuto mostra dove le persone si fermano, e un cambiamento nella formulazione spesso sposta quel numero più di quanto farebbe una nuova funzione.
Test prima del lancio
Testa prima i percorsi non felici. I percorsi felici si testano da soli.
Revoca la chiave in staging e conferma che la scheda mostri 'non disponibile' invece di zero. Quindi svuota un saldo di test per attivare un 402, e incolla un input malformato come un dominio con uno schema e un percorso finale, per dimostrare che il validatore lo rifiuta prima che venga speso qualsiasi credito.
Un breve test di fumo appartiene alla CI. Una chiamata overview gratuita su nytimes.com, eseguita ogni notte, ti dice se la route e la chiave funzionano ancora.
Chi può cercare quale dominio e a quale costo
Un contatore che accetta qualsiasi stringa è una porta aperta verso il tuo saldo. Decidi chi può chiedere cosa prima che la route vada in produzione, e scrivi la risposta nel codice piuttosto che in una pagina wiki che nessuno apre.
Tre domande si presentano ogni volta: quali domini, quale limite e dove si trova la chiave.
Quali domini dovrebbe essere consentito digitare a un utente?
Solo quelli a cui il workspace ha una pretesa, più eventuali lookup pubbliche che hai scelto di offrire. Diciamo che un workspace possiede due siti. La route può accettare quei due e rifiutare qualsiasi altro con un messaggio chiaro, il che impedisce a un tenant di spendere crediti su domini che non sono suoi.
Il controllo del nome di host nella route è il minimo. Dimostra che l'input sembra un dominio, non che l'utente lo possiede, quindi tieni l'elenco delle pretese nel tuo database come una tabella separata.
Come fai a impedire a un utente di svuotare il saldo?
Metti un quota per workspace nel tuo store e conta le chiamate lì. Il saldo dal nostro lato è un unico pool prepagato, quindi non può dirti quale cliente ha speso cosa. Le note sulla pagina di ricerca coprono il lato pubblico dello stesso problema. Quando un workspace raggiunge il suo limite, restituisce un messaggio semplice e lascia che la cache continui a rispondere con ciò che già contiene.
Scegli il cap dall'aritmetica nelle note per posto, non da un'ipotesi, e rivedilo quando un piano cambia. Testa la route con un secondo workspace prima di fidarti del quota.
Il browser dovrebbe mai detenere la chiave?
No. La chiave vive sul tuo server e il browser chiama la tua route. Questa divisione è anche ciò che rende possibile un quota, poiché ogni chiamata fatturata passa attraverso il codice che controlli. Se una chiave appare mai in un bundle inviato, ruotala lo stesso giorno e controlla il registro dei saldi per le chiamate che non hai effettuato. Alcuni team memorizzano la chiave in un file di configurazione che il front-end legge al momento della build, e quel file finisce nel bundle. Tieni la chiave fuori da tutto ciò che il passaggio di build può vedere, e controlla i file inviati una volta prima di ogni rilascio.
Le azioni gratuite possono essere chiamate da una pagina pubblica senza una chiave, ed è l'unico caso in cui il browser può parlare direttamente con l'API.
Cosa dovrebbe dire il contatore, e cosa non dovrebbe
Dì meno di quanto sai. Un contatore etichettato 'backlink' invita alla domanda 'perché Ahrefs mostra un numero diverso?', e la risposta onesta è che due crawler vedono due fette del web.
Etichetta la cifra con la sua fonte e il mese invece. Qualcosa come 'Domini che linkano, indice AlfaLinks, ottobre 2026' è più lungo, ma termina l'argomento prima che inizi e si legge bene in una piccola scheda.
Arrotonda per la visualizzazione. Un utente che vede 12.481 lunedì e 12.481 venerdì si fida dello strumento più di uno che vede fluttuazioni, e il nostro aggiornamento mensile ti dà quella stabilità gratuitamente.
Se vuoi la figura 0-100 accanto ad essa, leggi prima le note su un punteggio backlink. È la nostra metrica, quindi la denominazione è importante.
Stati di errore e cosa fa l'UI
I codici HTTP sono quelli restituiti dall'API; la colonna UI è il nostro suggerimento.
Segnale
Significato
Cosa vede l'utente
Cosa fai
HTTP 401
Chiave mancante o errata
'Dati link non disponibili'
Pagina te stesso: bug di distribuzione
HTTP 402
Credito esaurito
'Dati link non disponibili'
Ricarica con USDT (TRC-20)
ok: false
Richiesta rifiutata
Link di retry inline
Registra il dominio e l'azione
Timeout
Problemi di rete
Valore memorizzato nella cache se ne hai uno
Riprova una volta, poi riduci la frequenza
Mantenere il contatore onesto in assistenza e log
Un contatore fallisce in silenzio molto più spesso di quanto fallisca rumorosamente. Registra abbastanza per rispondere alla domanda che un cliente farà dopo, e tieni i dati personali fuori dal log completamente. Le righe brevi vincono. Una riga che risponde a una domanda di assistenza salva più tempo di qualsiasi alert che potresti scrivere.
La maggior parte dei thread di assistenza su un contatore è una di tre domande, quindi pianifica il log intorno a loro. Tieni quelle tre domande nel tuo runbook, accanto ai passaggi per la rotazione di una chiave.
Cosa dovrebbe registrare ogni riga di log?
L'azione, il dominio, il codice di stato, l'età della cache e il saldo dei crediti restituiti. Questi cinque campi rispondono alla maggior parte delle domande di assistenza. Diciamo che un utente chiede perché il loro contatore mostra una cifra vecchia. L'età della cache e il mese dell'indice ti dicono se il problema è la cache o l'etichetta.
Lascia la chiave API fuori da ogni riga, incluse le tracce di errore. Mascherala nel logger, perché una riga trapelata può svuotare l'intero account.
Come fai a sapere che il contatore è sano ogni settimana?
Monitora tre numeri: la quota di stati non disponibili, il trend del saldo dei crediti e il tasso di hit della cache. Un improvviso aumento degli stati non disponibili di solito indica un problema con la chiave o il saldo. Un lento calo del saldo indica di solito una chiave di cache troppo specifica.
Ogni lettura ha una correzione diversa, ed è per questo che un singolo tile dashboard per tutti e tre raramente aiuta qualcuno. Metti le tre letture su una riga nella tua nota settimanale, con l'ultimo valore e la variazione rispetto alla settimana precedente. I numeri letti isolatamente invitano alle supposizioni, mentre un breve trend mantiene la conversazione sugli stessi fatti.