Rezept
Verfolgen Sie Backlinks mit einem wöchentlichen Diff, den Sie in einer Minute lesen können
Abrufen, speichern, vergleichen, posten. Das gesamte Rezept besteht aus einer Python-Datei, einem Ordner mit datierten JSON-Dateien und einer Cron-Zeile.

Das Rezept, von Anfang bis Ende
- 1
Erstellen Sie den Schlüssel
Melden Sie sich bei Google an, erstellen Sie einen Schlüssel auf der Kontoseite und exportieren Sie ihn als
RANKIFT_KEY. Übergeben Sie ihn niemals an das Repository. - 2
Wählen Sie die Aktion
refdomainsfür den Domänen-Diff, was die meisten Benachrichtigungen benötigen. Verwenden Siebacklinksnur, wenn Sie URLs und Anchor-Texte benötigen, ebenfalls für 2 Credits. - 3
Speichern Sie datierte Snapshots
Eine Datei pro Domäne pro Lauf, benannt mit dem Datum. Festplattenspeicher ist günstig, und alte Dateien ermöglichen es Ihnen, Fragen zu beantworten, die noch niemand gestellt hat.
- 4
Diff und Post
Vergleichen Sie die zwei neuesten Dateien, drucken Sie aus, was weggefallen ist und was neu hinzugekommen ist, und beenden Sie den Vorgang leise, wenn beide Listen leer sind.
- 5
Planen Sie es
Cron am Montagmorgen. Fügen Sie eine Fehlerbenachrichtigung hinzu, denn ein stummer Monitor ist schlimmer als keiner.
diff.py
Geprüft gegen die dokumentierten Parameter: action, q, per, page und key. Die Antwortstruktur unterscheidet sich je nach Aktion, also drucken Sie eine echte Antwort aus und legen Sie ROWS und ID fest, bevor Sie ihr vertrauen.
import json, os, sys, glob, urllib.parse, urllib.request
KEY, SITE = os.environ['RANKIFT_KEY'], 'https://rankift.com/api.php'
ROWS, ID = 'rows', 'domain' # adjust after inspecting one response
def pull(domain):
out, page = [], 1
while True:
qs = urllib.parse.urlencode({'action': 'refdomains', 'q': domain,
'per': 1000, 'page': page, 'key': KEY})
with urllib.request.urlopen(f'{SITE}?{qs}') as r:
batch = json.load(r)[ROWS]
out += batch
if len(batch) < 1000 or page >= 5: # five pages = 5,000 rows
return out
page += 1
domain, date = sys.argv[1], sys.argv[2]
json.dump(pull(domain), open(f'snap/{domain}-{date}.json', 'w'))
files = sorted(glob.glob(f'snap/{domain}-*.json'))
if len(files) > 1:
old = {r[ID] for r in json.load(open(files[-2]))}
new = {r[ID] for r in json.load(open(files[-1]))}
lost, gained = sorted(old - new), sorted(new - old)
if lost or gained:
print(f'{domain}: -{len(lost)} +{len(gained)}')
print('lost:', lost[:25])Warum ein Diff ein Dashboard schlägt
Ein Diagramm zeigt Ihnen, dass sich die Linie bewegt hat. Ein Diff sagt Ihnen, welche Domänen sich bewegt haben, was das ist, worauf Sie reagieren können.
Tools wie Ahrefs und Semrush zeigen neue und verlorene Links in ihrer eigenen Oberfläche an, und für Ad-hoc-Arbeiten ist das in Ordnung. Die Probleme beginnen bei fünfzig Domains und einem Analysten, wenn das Montag-Ritual, jedes Projekt zu öffnen, den Vormittag frisst.
Ein Skript verwandelt dieses Ritual in eine Datei. Es hinterlässt auch ein datiertes Archiv, sodass Sie im März beantworten können, wie das Profil im Oktober aussah, ohne einen Anbieter um einen Export zu bitten.
Die Cron-Zeile
Läuft montags um 07:00 Uhr Serverzeit und sendet jede Ausgabe per E-Mail an Sie, weshalb das Skript nichts ausgibt, wenn sich nichts geändert hat.
0 7 * * 1 cd /srv/linkwatch && for d in example.com rival-one.com rival-two.com; do python3 diff.py $d $(date +%F); done | mail -s 'link diff' your-team-listWas es kostet
| Einrichtung | Aufrufe pro Woche | Credits pro Woche | Pro Jahr |
|---|---|---|---|
| 1 Domäne, unter 1.000 verweisende Domänen | 1 | 2 | ca. $0.01 |
| 1 Domäne, 4.000 verweisende Domänen | 4 | 8 | ca. $0.04 |
| Ihre Seite und 5 Konkurrenten, je 1 Seite | 6 | 12 | ca. $0.06 |
| 50 Kundenseiten, je 1 Seite | 50 | 100 | ca. $0.52 |

Fallstricke, auf die wir gestoßen sind, damit Sie sie vermeiden
Snapshots ändern sich nur, wenn sich der Index ändert. Wir aktualisieren etwa monatlich, daher geben die meisten wöchentlichen Läufe eine identische Liste zurück und drucken nichts. Das ist beabsichtigt. Stille ist das erwartete Ergebnis.
Deep Pagination ist auf 50.000 Zeilen begrenzt, und die Fünf-Seiten-Beschränkung im Skript hält Sie weit darunter. Große Domains benötigen einen anderen Plan: Sortieren Sie mit sort und order=desc nach einem Feld, das die Aktion akzeptiert, und stoppen Sie frühzeitig, sobald die Zeilen nicht mehr interessant sind.
Führen Sie den ersten Abruf manuell durch und lesen Sie das JSON. Überprüfen Sie die Feldnamen. Vergleichen Sie dann die Zeilenanzahl mit der Gesamtzahl der verweisenden Domänen aus einer Antwort der kostenlosen overview-Aktion, falls diese eine enthält.
Behandeln Sie HTTP 401 und 402 explizit, da 401 einen falschen Schlüssel bedeutet und 402 bedeutet, dass das Guthaben null erreicht hat. Beide gehören in Ihre Fehlerbenachrichtigung. Wenn ein Diff ausgelöst wird, folgen Sie dem Lost Links Runbook für die erste Stunde.
Eine gekaufte Linkkampagne messen, Snapshot für Snapshot
Links ohne eine Basislinie zu kaufen, ist eine häufige Ursache dafür, dass man am Ende mit einer Zahl landet, die man nicht verteidigen kann. Nehmen Sie den Snapshot vor, bevor die erste Platzierung live geht, und halten Sie ihn neben jedem folgenden Snapshot.
Vergleichen Sie dann verweisende Domänen, keine rohen Zählwerte, da ein Geber viele Links tragen kann. Jede neue Zeile im Diff ist eine Seite, die Sie öffnen und manuell überprüfen können.
Eine Kampagne, die einen Monat lang flach aussieht, ist nicht automatisch ein Misserfolg. Index-Aktualisierungen sind langsam, daher hinkt der Diff dem Geschehen auf den Live-Seiten hinterher, und diese Verzögerung ist Teil der Methode.
Wie messe ich, ob gekaufte Backlinks funktioniert haben?
Beginnen Sie mit dem Datum der ersten Platzierung und suchen Sie nach den Geber-Zeilen, die danach erscheinen. Zählen Sie nur diejenigen, die in den nächsten zwei Snapshots vorhanden blieben. Setzen Sie diese Anzahl dann ins Verhältnis zu dem, was Sie für die Platzierungen bezahlt haben, und notieren Sie das Ergebnis neben den Daten.
Was sollte der Snapshot vor einem Kauf enthalten?
Die vollständige Liste der verweisenden Domänen, gespeichert im selben Dateiformat wie jeder spätere Lauf, mit dem Datum und der Domäne im Dateinamen. Eine Basislinie in einem anderen Format kann nicht diffen, und das ist der eine Fehler, den man später nicht korrigieren kann.

Wie eine laute Woche im Diff aussieht
Eine Woche mit Tausenden neuer Zeilen ist nicht immer eine Krise. Oft sind es Scraper. Sie kopieren Seiten, und Kopien erstellen Links, die niemand platziert hat. Überprüfen Sie den Geber zuerst, bevor Sie irgendetwas über Ihre eigene Seite annehmen.
Sortieren Sie die neuen Zeilen nach der Qualität des Gebers, bevor Sie sie lesen. Der Großteil der Liste ist normalerweise Rauschen, und ein kurzer Blick auf die obersten Zeilen zeigt Ihnen, ob der Anstieg den Rest Ihres Vormittags wert ist.
Wenn es sich um Scraper-Seiten handelt, notieren Sie die Anzahl und fahren Sie fort. Wenn es sich um echte Seiten mit Links zu Ihren Money Pages handelt, folgen Sie den Triage-Schritten.
Warum zeigt der Diff Gewinne durch Spam?
Weil der Diff meldet, was im Index erschienen ist, nicht was ein Mensch ausgewählt hat. Spam, den der Index aufgenommen hat, sieht genauso aus wie ein redaktioneller Link, bis Sie die Geberseite öffnen und sie lesen.
Wie oft sollte ich Disavow-Kandidaten überprüfen?
Monatlich passt besser zum Index-Rhythmus als täglich. Eine tägliche Überprüfung zeigt meist wieder dieselbe Liste, während eine monatliche jedem Kandidaten Zeit gibt, neu gecrawlt zu werden, bevor Sie ihn beurteilen. Die Seite Spam Links Triage enthält die Entscheidungsschritte.
Bevor Sie dem ersten Diff vertrauen
- Der erste Abruf wurde manuell, Zeile für Zeile, für mindestens eine Seite gelesen.
- Feldnamen stimmen mit den Konstanten am Anfang des Skripts überein.
- Ein 401 und ein 402 schlagen den Job laut aus, nicht leise.
- Der Snapshot-Ordner wird irgendwo gesichert oder synchronisiert, von wo Sie ihn wiederherstellen können.
- Jemand anderes als der Autor hat die erste Benachrichtigung gesehen und stimmt zu, dass sie eine Nachricht wert ist.
Halten Sie das Snapshot-Archiv ein Jahr lang nützlich
Behalten Sie jede datierte Datei, auch die, die unverändert aussieht. Ein Jahr wöchentlicher Snapshots nimmt wenig Speicherplatz in Anspruch und beantwortet Fragen, die noch niemand gestellt hat, wie zum Beispiel, wann ein Geber erstmals erschienen ist.
Benennen Sie Dateien konsistent, mit der Domäne, dem Datum und der Aktion. Gemischte Namen lassen das Diff-Skript das falsche Paar auswählen, und ein falsches Paar erzeugt eine selbstbewusste und falsche Benachrichtigung.
Komprimieren Sie ältere Dateien einmal pro Quartal, wenn Speicherplatz wichtig ist. Halten Sie die neuesten zwölf Dateien unkomprimiert, damit der wöchentliche Job nie auf ein Archiv warten muss.
Wie finde ich den ersten Snapshot, in dem ein Geber erschienen ist?
Sortieren Sie die datierten Dateien nach Namen und suchen Sie in jeder Datei nach der Geber-Domäne, bis der erste Treffer erscheint. Eine kurze Schleife erledigt dies in wenigen Zeilen, und das Ergebnis ist nur so gut wie die Benennung, die Sie von Anfang an beibehalten haben.
Was sollte ich löschen und was sollte ich behalten?
Behalten Sie jeden Snapshot, auf den eine Entscheidung basiert, sowie den ersten und letzten eines jeden Monats. Löschen Sie den Rest erst, nachdem das Archiv überprüft wurde, denn eine gelöschte Datei kann später keine Frage mehr beantworten.
Senden Sie den Diff dorthin, wo Leute bereits lesen
Ein Diff, der in einem ungelesenen Ordner landet, hat keinen Wert. Geteilt ist besser als privat. Posten Sie das Ergebnis in den Kanal, den Ihr Team bereits beobachtet, und halten Sie die Nachricht kurz genug, um sie auf einen Blick bearbeiten zu können.
Eine gute Nachricht nennt die Domäne, die Anzahl der verlorenen und gewonnenen Zeilen und den ersten Schritt. Sie lässt die vollständige Liste weg, die in der angehängten Datei gehört.
Stille in einer ruhigen Woche ist Teil des Designs. Wenn sich nichts geändert hat, braucht niemand eine Erinnerung, dass sich nichts geändert hat. Halten Sie es so. Der Kanal bleibt für die nächste echte Benachrichtigung lesbar.
Was sollte die Nachricht enthalten?
Drei Dinge: Der Name des Gebers oder Rivalen, die beiden Zählwerte und ein Link zur gespeicherten Datei. Wenn ein Score angehängt ist, fügen Sie die höchste Domain Rating unter den neuen Zeilen hinzu, denn eine starke Domäne ändert die Priorität mehr als zehn schwache.
Wer erhält die Fehlermeldung?
Jemand, der den Job beheben kann, nicht nur jemand, der die Nachrichten liest. Ein 401 benötigt einen neuen Schlüssel, und ein 402 benötigt einen Nachschub von der Kontoseite. Beides wird nicht gelöst, indem man auf den nächsten Montag wartet.
Erweiterung
Tauschen Sie refdomains gegen backlinks, wenn die Benachrichtigung die Geber-URL und den Anchor-Text benötigt. Behalten Sie die gleichen Zwei-Credit-Kosten im Auge.
Fügen Sie bulk_dr hinzu, um jede neue Domäne zu bewerten, mit einem Credit pro Aufruf von bis zu 2.000 Domains. Dann kann Ihre Nachricht "3 neu, beste DR 72" sagen, anstatt einer bloßen Liste.
Für Google Sheets funktioniert dieselbe Abfragezeichenfolge in Apps Script mit UrlFetchApp. Und für Rivalen verwenden Sie die Schwellenwerte aus Competitor Backlink Alerts.