Przepis
Śledź backlinki za pomocą tygodniowej różnicy, którą przeczytasz w minutę
Pobieranie, przechowywanie, porównywanie, publikowanie. Cały przepis to jeden plik Pythona, folder z datowanymi plikami JSON i jedna linia cron.

Przepis, od początku do końca
- 1
Utwórz klucz
Zaloguj się przez Google, utwórz klucz na stronie konta i wyeksportuj go jako
RANKIFT_KEY. Nigdy nie komituj go do repozytorium. - 2
Wybierz akcję
refdomainsdla różnicy na poziomie domeny, czego wymaga większość alertów. Użyjbacklinkstylko wtedy, gdy potrzebujesz adresów URL i kotwic, za te same 2 kredyty. - 3
Przechowuj datowane migawki
Jeden plik na domenę na każde uruchomienie, nazwany z datą. Dysk jest tani, a stare pliki pozwalają odpowiedzieć na pytania, które jeszcze nie zostały zadane.
- 4
Różnica i publikacja
Porównaj dwa najnowsze pliki, wydrukuj to, co zniknęło i to, co się pojawiło, i zakoń cicho, jeśli obie listy są puste.
- 5
Zaplanuj to
Cron w poniedziałek rano. Dodaj powiadomienie o błędzie, bo cichy monitor jest gorszy niż żaden.
diff.py
Sprawdzone względem udokumentowanych parametrów: action, q, per, page i key. Struktura odpowiedzi różni się w zależności od akcji, więc wydrukuj jedną rzeczywistą odpowiedź i ustaw ROWS oraz ID tak, aby pasowały, zanim jej zaufasz.
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])Dlaczego różnica wygrywa z panelem
Wykres pokazuje, że linia się przesunęła. Różnica pokazuje, które domeny się przesunęły, a to jest to, na co możesz zareagować.
Narzędzia takie jak Ahrefs i Semrush pokazują nowe i utracone linki w swoim interfejsie, i do pracy ad hoc jest to w porządku. Problemy zaczynają się przy pięćdziesięciu stronach i jednym analityku, gdy poniedziałkowy rytual otwierania każdego projektu pożera poranek.
Skrypt zamienia ten rytuał w plik. Pozostawia również datowaną archiwum, więc w marcu możesz odpowiedzieć, jak wyglądał profil w październiku, bez błagania dostawcy o eksport.
Linia cron
Uruchamia się w poniedziałek o 07:00 czasu serwera i wysyła dowolne wyjście do Ciebie, dlatego skrypt nic nie drukuje, gdy nic się nie zmieniło.
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-listIle to kosztuje
| Konfiguracja | Wywołań w tygodniu | Kredytów w tygodniu | Rocznie |
|---|---|---|---|
| 1 domena, poniżej 1000 domen odsyłających | 1 | 2 | około $0.01 |
| 1 domena, 4000 domen odsyłających | 4 | 8 | około $0.04 |
| Twoja strona i 5 rywali, po 1 stronie każda | 6 | 12 | około $0.06 |
| 50 stron klientów, po 1 stronie każda | 50 | 100 | około $0.52 |

Pułapki, na które natrafiliśmy, żebyś Ty ich nie trafił
Migawki zmieniają się tylko wtedy, gdy zmienia się indeks. Odświeżamy go około miesięcznie, więc większość tygodniowych uruchomień zwraca identyczną listę i nic nie drukuje. To celowe. Cisza jest oczekiwanym wynikiem.
Głębokie paginowanie jest ograniczone do 50 000 wierszy, a limit pięciu stron w skrypcie trzyma Cię daleko poniżej tego. Ogromne domeny potrzebują innego planu: sortuj z sort i order=desc po polu, które akceptuje akcja, i zatrzymaj się wcześnie, gdy wiersze przestaną być interesujące.
Uruchom pierwsze pobieranie ręcznie i przeczytaj JSON. Sprawdź nazwy pól. Następnie porównaj liczbę wierszy z całkowitą liczbą domen odsyłających z jednej odpowiedzi darmowej akcji overview, jeśli ta odpowiedź ją zawiera.
Obsłuż HTTP 401 i 402 jawnie, ponieważ 401 oznacza zły klucz, a 402 oznacza, że saldo osiągnęło zero. Obie należą do powiadomienia o błędzie. Gdy różnica się pojawi, postępuj zgodnie z instrukcją utraconych linków przez pierwszą godzinę.
Mierzenie kampanii kupionych linków, po jednej migawce na raz
Kupowanie linków bez punktu odniesienia to częsty sposób na uzyskanie liczby, której nie możesz obronić. Zrób migawkę przed uruchomieniem pierwszej publikacji i przechowuj ją obok każdej kolejnej migawki.
Następnie porównuj domeny odsyłające, a nie surowe liczby, ponieważ jeden darczyńca może zawierać wiele linków. Każdy nowy wiersz w różnicy to jedna strona, którą możesz otworzyć i sprawdzić ręcznie.
Kampania, która przez miesiąc wygląda na płaską, nie jest automatycznie porażką. Odświeżanie indeksu jest wolne, więc różnica opóźnia się względem tego, co stało się na żywych stronach, a to opóźnienie jest częścią metody.
Jak zmierzyć, czy kupione backlinki zadziałały?
Zacznij od daty pierwszej publikacji i szukaj wierszy darczyńców, które pojawiły się po niej. Policz tylko te, które pozostały w dwóch kolejnych migawkach. Następnie zestaw tę liczbę z tym, co zapłaciłeś za publikacje, i zanotuj wynik obok dat.
Co powinna zawierać migawka przed zakupem?
Pełną listę domen odsyłających, zapisaną w tym samym formacie pliku co każde kolejne uruchomienie, z datą i domeną w nazwie pliku. Podstawa w innym formacie nie może być różnicowana, a to jest ten jeden błąd, którego nie można naprawić później.

Jak wygląda hałaśliwy tydzień w różnicy
Tydzień z tysiącami nowych wierszy nie zawsze jest kryzysem. Często są to scrapery. Kopiują strony, a kopie tworzą linki, których nikt nie umieścił. Sprawdź darczyńcę, zanim założysz cokolwiek o swojej stronie.
Posortuj nowe wiersze według jakości darczyńcy, zanim je przeczytasz. Większość listy to zwykle szum, a krótki rzut oka na wiodące wiersze mówi Ci, czy wzrost zasługuje na resztę Twojego poranka.
Jeśli wiersze to strony scraperów, zanotuj liczbę i idź dalej. Jeśli to prawdziwe strony z linkami do Twoich stron pieniężnych, postępuj zgodnie z krokami kwalifikacji.
Dlaczego różnica pokazuje zyski ze spamu?
Ponieważ różnica raportuje to, co pojawiło się w indeksie, a nie to, co wybrał człowiek. Spam, który indeks uchwycił, wygląda tak samo jak link editorialny, dopóki nie otworzysz strony darczyńcy i jej nie przeczytasz.
Jak często powinienem przeglądać kandydatów do disavow?
Miesięczny rytm lepiej pasuje do rytmu indeksu niż dzienny. Codzienny przegląd pokazuje głównie tę samą listę ponownie, podczas gdy miesięczny daje każdemu kandydatowi czas na ponowne zindeksowanie, zanim go ocenisz. Strona kwalifikacja linków spamowych zawiera kroki decyzyjne.
Zanim zaufasz pierwszej różnicy
- Pierwsze pobranie zostało przeczytane ręcznie, wiersz po wierszu, przynajmniej dla jednej strony.
- Nazwy pól pasują do stałych na początku skryptu.
- 401 i 402 oba powodują głośny błąd zadania, a nie cichy.
- Folder z migawkami jest zarchiwizowany lub zsynchronizowany gdzieś, skąd możesz go przywrócić.
- Ktoś inny niż autor zobaczył pierwszy alert i zgadza się, że jest warty wiadomości.
Utrzymuj archiwum migawek przydatnym przez rok
Przechowuj każdy datowany plik, w tym te, które wyglądają na niezmienione. Rok tygodniowych migawek zajmuje mało miejsca na dysku i odpowiada na pytania, które jeszcze nie zostały zadane, takie jak kiedy pojawił się darczyńca.
Nazywaj pliki konsekwentnie, z domeną, datą i akcją. Mieszane nazwy sprawiają, że skrypt różnicy wybiera niewłaściwą parę, a niewłaściwa para generuje pewny i błędny alert.
Kompresuj starsze pliki raz na kwartał, jeśli miejsce ma znaczenie. Zachowaj najnowsze dwanaście nie skompresowanych, aby zadanie tygodniowe nigdy nie czekało na archiwum.
Jak znaleźć pierwszą migawkę, w której pojawił się darczyńca?
Posortuj datowane pliki według nazwy, a następnie wyszukaj w każdym z nich domenę darczyńcy, aż do pierwszego trafienia. Krótka pętla robi to w kilku liniach, a wynik jest taki dobry, jak nazewnictwo, które zachowałeś od początku.
Co powinienem usunąć, a co zachować?
Zachowaj każdą migawkę, na podstawie której podjęto decyzję, oraz pierwszą i ostatnią z każdego miesiąca. Usuń resztę dopiero po sprawdzeniu archiwum, ponieważ usunięty plik nie może odpowiedzieć na pytanie później.
Wyślij różnicę tam, gdzie ludzie już czytają
Różnica, która ląduje w nieprzeczytanym folderze, nie ma wartości. Współdzielone jest lepsze niż prywatne. Opublikuj wynik na kanale, który Twój zespół już obserwuje, i zachowaj wiadomość krótką na tyle, aby można było na nią zareagować jednym rzutem oka.
Dobra wiadomość podaje domenę, liczbę utraconych i zdobytych wierszy oraz pierwszy krok. Pomija pełną listę, która należy do załączonego pliku.
Cisza w cichym tygodniu jest częścią projektu. Jeśli nic się nie zmieniło, nikt nie potrzebuje przypomnienia, że nic się nie zmieniło. Tak właśnie powinno być. Kanał pozostaje czytelny dla następnego prawdziwego alertu.
Co powinna zawierać wiadomość?
Trzy rzeczy: nazwa darczyńcy lub rywala, dwie liczby i link do zapisanego pliku. Gdy dołączony jest wynik, dodaj najwyższy Domain Rating wśród nowych wierszy, ponieważ jeden silny darczyńca zmienia priorytet bardziej niż dziesięć słabych.
Kto otrzymuje powiadomienie o błędzie?
Ktoś, kto może naprawić zadanie, a nie tylko ktoś, kto czyta wiadomości. 401 wymaga nowego klucza, a 402 wymaga doładowania ze strony konta. Żaden z tych problemów nie rozwiąże się przez czekanie na kolejny poniedziałek.
Rozszerzanie
Zamień refdomains na backlinks, gdy alert wymaga adresu URL darczyńcy i kotwicy. Pamiętaj o tym samym koszcie dwóch kredytów.
Dodaj bulk_dr do ocenienia każdej nowej domeny, za jeden kredyt na wywołanie do 2000 domen. Następnie Twoja wiadomość może powiedzieć „3 nowe, najlepsze DR 72” zamiast samej listy.
Dla Google Sheets ten sam ciąg zapytania działa w Apps Script z UrlFetchApp. A dla rywali użyj progów z alertów backlinków konkurencji.