AlfaLinks
AlfaLinksRegistrieren

Einrichtungshandbuch

Backlink-Counter für ein SaaS-Dashboard, Schritt für Schritt

Ein funktionierender Counter benötigt eine Server-Route und eine kleine Komponente. Dieses Handbuch erstellt beide, inklusive der Fehlerzustände, die die meisten ersten Versionen vergessen.

Craftsman assembling five mechanical gears on a wooden workshop bench representing dashboard steps
Umfang dieses Handbuchs

Wir gehen von einem Node- oder Python-Backend und einem beliebigen Frontend-Framework aus. Jede Anfrage unten trifft die dokumentierte API, und die Basis-URL ist die eigene Ihrer Marke: alfalinks.net/api.php.

Fünf Schritte, in der Reihenfolge, in der wir sie ausliefern würden

01

1. Erstellen Sie den Schlüssel und speichern Sie ihn als Geheimnis

Melden Sie sich bei /auth/google.php mit Google an, kopieren Sie den sk_-Schlüssel von der Kontoseite und legen Sie ihn in Ihrer Server-Umgebung ab. Das Frontend sieht ihn niemals.

02

2. Fügen Sie eine Proxy-Route hinzu

Exponieren Sie etwas wie /internal/links?domain=..., das die Domain validiert, unsere API aufruft und nur die Felder zurückgibt, die Ihre UI verwendet. Validierung ist wichtig, weil Benutzer alles Mögliche eingeben.

03

3. Beginnen Sie mit der kostenlosen Aktion

Die overview-Aktion kostet nichts, daher hat die erste Version des Counters überhaupt kein Abrechnungsrisiko. Wechseln Sie zu kostenpflichtigen Aktionen, wenn ein Bildschirm sie benötigt.

04

4. Rendern Sie drei Zustände

Laden, Daten und nicht verfügbar. Nicht verfügbar umfasst HTTP 401, HTTP 402 und einen Netzwerkfehler, und es sollte niemals eine Null anzeigen.

05

5. Fügen Sie das Frische-Label hinzu

Unser Index aktualisiert sich grob monatlich. Eine graue Zeile mit dem Text 'Linkdaten werden monatlich aktualisiert' verhindert den Support-Ticket, der mit 'Ich habe gestern einen Link hinzugefügt' beginnt.

Die Proxy-Route, in Node

Kurz genug, um in einem Bildschirm lesbar zu sein. Der Cache ist hier eine einfache Map; tauschen Sie ihn gegen Redis aus, sobald Sie mehr als einen Prozess ausführen.

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);
});
Gardener using a wide net to catch a flock of birds representing bulk domain requests

Hinzufügen eines DR-Badges, sobald der Counter funktioniert

Der Counter ist die einfache Hälfte. Das Badge benötigt einen zusätzlichen Aufruf.

Für eine Tabelle von Kundendomains senden Sie eine einzelne bulk_dr-Anfrage mit bis zu 2.000 Domains, anstatt einen Aufruf pro Zeile. Es kostet 1 Credit unabhängig von der Zeilenanzahl, und die Antwort ordnet jeder Domain ihre 0-100-Ziffer zu, die Sie neben dem zwischengespeicherten Überblick speichern.

Abgleichen von Domains über den normalisierten Hostnamen. Entfernen Sie das Schema, den Pfad und ein führendes www, sonst verfehlen Sie die Hälfte Ihrer Zeilen bei der Suche und zeigen Leerzeichen an.

Lesen Sie die Notizen zur Bewertung für die Beschriftungsformulierung und das Cache-Rezept für TTLs bei diesen Aufrufen.

Zuerst einen Wert anzeigen, dann nach der Einrichtung fragen

Neue Benutzer lesen selten eine Einrichtungsseite. Sie möchten sehen, ob sich die Funktion lohnt, und ein Backlink-Counter, der eine echte Zahl anzeigt, beantwortet das schneller als jedes Formular. Stellen Sie den Wert an den Anfang. Die Konfiguration kommt an zweiter Stelle.

Da die kostenlose Übersicht-Aktion keinen Schlüssel benötigt, kann Ihr erster Bildschirm eine Zahl anzeigen, bevor der Benutzer überhaupt etwas konfiguriert hat.

Was benötigt das erste Rendern?

Nur eine Domain und einen kostenlosen Aufruf. Stellen Sie sich einen neuen Benutzer vor, der seine eigene Website im Onboarding eingibt und den Counter innerhalb derselben Seitenansicht erscheinen sieht. Diese einzelne Zahl bewirkt mehr für den Start der Einrichtung als eine Liste von Schritten, also halten Sie den Rest der Einrichtung dahinter.

Der Benutzer sieht, was er bekommen wird, bevor jemand nach einer Karte, einem Schlüssel oder einem zweiten Formular fragt. Nichts im ersten Render sollte wie eine Hürde aussehen.

Wo sollte der Einrichtungsaufforderung stehen?

Direkt nach der Zahl, nicht davor. Eine kurze Zeile wie 'Verbinden Sie eine Domain, um dies monatlich zu verfolgen' passt unter den Counter. Wenn dieselbe Aufforderung über der Zahl steht, lesen Benutzer sie als Hürde und gehen weg.

Verfolgen Sie, welche Benutzer jeden Einrichtungsschritt abschließen. Ein kleiner Trichter zeigt, wo Menschen aufhören, und eine Änderung der Formulierung bewegt diese Zahl oft mehr als ein neues Feature.

Tests vor dem Launch

Testen Sie zuerst die unglücklichen Pfade. Glückliche Pfade testen sich selbst.

Heben Sie den Schlüssel in der Testumgebung auf und bestätigen Sie, dass die Karte 'nicht verfügbar' anzeigt, statt Null. Entleeren Sie dann einen Testguthaben, um einen 402 auszulösen, und fügen Sie eine fehlerhafte Eingabe wie eine Domain mit Schema und nachgestelltem Pfad ein, um zu beweisen, dass der Validator sie ablehnt, bevor ein Credit verbraucht wird.

Ein kurzer Rauchtest gehört in CI. Ein kostenloser overview-Aufruf auf nytimes.com, der nächtlich ausgeführt wird, sagt Ihnen, ob die Route und der Schlüssel noch funktionieren.

Three iron keys hanging on a heavy oak door representing access rules and domain limits

Wer darf welche Domain nachschlagen, und zu welchen Kosten

Ein Counter, der jede Zeichenkette akzeptiert, ist eine offene Tür zu Ihrem Guthaben. Entscheiden Sie, wer was anfragen darf, bevor die Route live geht, und schreiben Sie die Antwort in den Code und nicht in eine Wiki-Seite, die niemand öffnet.

Drei Fragen tauchen jedes Mal auf: welche Domains, welches Limit und wo der Schlüssel lebt.

Welche Domains sollte ein Benutzer eingeben dürfen?

Nur die, für die das Workspace einen Anspruch hat, plus alle öffentlichen Nachschlageoptionen, die Sie angeboten haben. Nehmen wir an, ein Workspace besitzt zwei Websites. Die Route kann diese beiden akzeptieren und alles andere mit einer klaren Nachricht ablehnen, was verhindert, dass ein Tenant Credits für Domains verbraucht, die ihm nicht gehören.

Der Hostname-Check in der Route ist das Minimum. Er beweist, dass die Eingabe wie eine Domain aussieht, nicht dass der Benutzer sie besitzt, also halten Sie die Anspruchsliste in Ihrer eigenen Datenbank als separate Tabelle.

Wie verhindern Sie, dass ein Benutzer das Guthaben leert?

Legen Sie ein Limit pro Workspace in Ihrem eigenen Speicher fest und zählen Sie die Aufrufe dort. Das Guthaben auf unserer Seite ist ein einziger Prepaid-Pool, daher kann es Ihnen nicht sagen, welcher Kunde was ausgegeben hat. Die Notizen zur Suchseite behandeln die öffentliche Seite desselben Problems. Wenn ein Workspace sein Limit erreicht, geben Sie eine einfache Nachricht zurück und lassen Sie den Cache weiterhin mit dem beantworten, was er bereits hält.

Wählen Sie das Limit aus der Arithmetik in den Notizen pro Sitzplatz, nicht aus einer Schätzung, und überdenken Sie es, wenn sich ein Plan ändert. Testen Sie die Route mit einem zweiten Workspace, bevor Sie dem Limit vertrauen.

Sollte der Browser den Schlüssel jemals halten?

Nein. Der Schlüssel lebt auf Ihrem Server, und der Browser ruft Ihre Route auf. Diese Trennung ist auch das, was ein Limit ermöglicht, da jeder abgerechnete Aufruf durch Code geht, den Sie kontrollieren. Wenn ein Schlüssel jemals in einem ausgelieferten Bundle erscheint, rotieren Sie ihn am selben Tag und prüfen Sie den Guthaben-Log auf Aufrufe, die Sie nicht gemacht haben. Einige Teams speichern den Schlüssel in einer Konfigurationsdatei, die das Frontend zur Build-Zeit liest, und diese Datei landet im Bundle. Halten Sie den Schlüssel aus allem heraus, was der Build-Schritt sehen kann, und prüfen Sie die ausgelieferten Dateien einmal vor jedem Release.

Die kostenlosen Aktionen können von einer öffentlichen Seite ohne Schlüssel aufgerufen werden, und das ist der einzige Fall, in dem der Browser direkt mit der API sprechen darf.

Was der Counter sagen sollte, und was nicht

Sagen Sie weniger, als Sie wissen. Ein Counter mit der Bezeichnung 'Backlinks' lädt zur Frage ein 'Warum zeigt Ahrefs eine andere Zahl?', und die ehrliche Antwort ist, dass zwei Crawler zwei Scheiben des Webs sehen.

Beschriften Sie die Zahl stattdessen mit ihrer Quelle und dem Monat. Etwas wie 'Verweisende Domains, AlfaLinks-Index, Oktober 2026' ist länger, beendet aber die Diskussion, bevor sie beginnt, und liest sich in einer kleinen Karte gut.

Runden Sie für die Anzeige. Ein Benutzer, der am Montag 12.481 und am Freitag 12.481 sieht, vertraut dem Tool mehr als einer, der Jitter sieht, und unser monatlicher Refresh gibt Ihnen diese Stabilität kostenlos.

Wenn Sie die 0-100-Zahl daneben haben möchten, lesen Sie zuerst die Notizen zu einer Backlink-Bewertung. Es ist unsere eigene Metrik, daher ist die Benennung wichtig.

Fehlerzustände und was die UI tut

HTTP-Codes sind die, die die API zurückgibt; die UI-Spalte ist unser Vorschlag.
SignalBedeutungWas der Benutzer siehtWas Sie tun
HTTP 401Fehlender oder falscher Schlüssel'Linkdaten nicht verfügbar'Seite selbst bereitstellen: Bug
HTTP 402Credit aufgebraucht'Linkdaten nicht verfügbar'Aufladen mit USDT (TRC-20)
ok: falseAnfrage abgelehntInline-WiederholungslinkProtokollieren Sie die Domain und die Aktion
TimeoutNetzwerkproblemeZwischengespeicherter Wert, falls vorhandenEinmal wiederholen, dann zurückfahren

Den Counter in Support und Logs ehrlich halten

Ein Counter fällt viel häufiger leise aus als laut. Protokollieren Sie genug, um die nächste Frage eines Kunden zu beantworten, und halten Sie Personendaten vollständig aus dem Log. Kurze Zeilen gewinnen. Eine Zeile, die eine Support-Frage beantwortet, spart mehr Zeit als jeder Alert, den Sie schreiben könnten.

Die meisten Support-Threads über einen Counter sind eine von drei Fragen, also planen Sie das Log um sie herum. Halten Sie diese drei Fragen in Ihrem Runbook neben den Schritten zum Rotieren eines Schlüssels.

Was sollte jede Log-Zeile aufzeichnen?

Die Aktion, die Domain, der Statuscode, das Cache-Alter und das Guthaben, das zurückkam. Diese fünf Felder beantworten die meisten Support-Fragen. Nehmen wir an, ein Benutzer fragt, warum sein Counter eine alte Zahl anzeigt. Das Cache-Alter und der Indexmonat sagen Ihnen, ob das Problem der Cache oder das Label ist.

Lassen Sie den API-Schlüssel in jeder Zeile weg, einschließlich Fehler-Trace. Maskieren Sie ihn im Logger, denn eine geleakte Zeile kann das gesamte Konto leeren.

Wie wissen Sie, dass der Counter jede Woche gesund ist?

Beobachten Sie drei Zahlen: den Anteil der nicht verfügbaren Zustände, den Guthaben-Trend und die Cache-Trefferquote. Ein plötzlicher Anstieg der nicht verfügbaren Zustände deutet normalerweise auf ein Schlüssel- oder Guthabenproblem hin. Ein langsamer Rückgang des Guthabens deutet normalerweise auf einen zu spezifischen Cache-Schlüssel hin.

Jede Ablesung hat eine andere Korrektur, weshalb ein einzelner Dashboard-Kachel für alle drei selten jemandem hilft. Legen Sie die drei Ablesungen in einer Zeile in Ihrer wöchentlichen Notiz ab, mit dem letzten Wert und der Änderung seit der vorherigen Woche. Zahlen in Isolation laden zu Vermutungen ein, während ein kurzer Trend die Konversation auf denselben Fakten hält.