Rankift
RankiftRegistrovat se

Recept

Sledujte zpětné odkazy pomocí týdenního diffu, který si přečtete za minutu

Stáhnout, uložit, porovnat, odeslat. Celý recept je jeden Python soubor, složka s datovanými JSON soubory a cron řádek.

Dřevěný stůl s klíčem spojujícím dvě nádrže s vodou a hodinami

Recept od začátku do konce

  1. 1

    Vytvořte klíč

    Přihlaste se pomocí Google, vytvořte klíč na stránce účtu a exportujte jej jako RANKIFT_KEY. Nikdy ho nekomitujte do repozitáře.

  2. 2

    Vyberte akci

    refdomains pro diff na úrovni domény, což je to, co většina upozornění potřebuje. Použijte backlinks pouze tehdy, když potřebujete URL a anchor text, za stejných 2 kreditů.

  3. 3

    Uložte datované snímky

    Jeden soubor na doménu na běh, pojmenovaný podle data. Disk je levný a staré soubory vám umožní odpovědět na otázky, které ještě nikdo nepoložil.

  4. 4

    Diff a odeslání

    Porovnejte dva nejnovější soubory, vytiskněte, co odešlo a co přišlo, a tichě ukončete, pokud jsou oba seznamy prázdné.

  5. 5

    Naplánujte to

    Cron v pondělí ráno. Přidejte oznámení o selhání, protože tichý monitor je horší než žádný.

diff.py

Otestováno proti zdokumentovaným parametrům: action, q, per, page a key. Tvar odpovědi se liší podle akce, takže vytiskněte jednu skutečnou odpověď a nastavte ROWS a ID tak, aby odpovídaly, než jí budete věřit.

python
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])

Proč diff porazí dashboard

Graf vám řekne, že se čára posunula. Diff vám řekne, které domény se posunuly, což je to, na co můžete reagovat.

Nástroje jako Ahrefs a Semrush zobrazují nové a ztracené odkazy ve svém rozhraní a pro ad hoc práci je to v pořádku. Problém začíná u padesáti webů a jednoho analytika, kdy pondělní rituál otevírání každého projektu sníží ranní čas.

Skript tento rituál změní na soubor. Také zanechá datovaný archiv, takže v březnu můžete odpovědět, jak vypadal profil v říjnu, aniž byste prosili dodavatele o export.

Cron řádek

Spouští se v pondělí v 07:00 serverového času a odesílá jakýkoli výstup e-mailem, proto skript nic netiskne, když se nic nezměnilo.

bash
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-list

Kolik to stojí

1 kredit je $0,0001. Každý hovor je fakturován jednou bez ohledu na počet řádků, až do 1 000 řádků.
NastaveníVolání za týdenKredity za týdenRočně
1 doména, pod 1 000 referenčních domén12asi $0,01
1 doména, 4 000 referenčních domén48asi $0,04
Váš web a 5 rivalů, 1 stránka každý612asi $0,06
50 klientských webů, 1 stránka každý50100asi $0,52
Zahradník stříhající keř v klidné zahradě s hráběmi

Pasti, na které jsme narazili, abyste se jim vyhnuli

Snímky se mění pouze tehdy, když se změní index. Obnovujeme přibližně měsíčně, takže většina týdenních běhů vrátí stejný seznam a vytiskne nic. To je záměrné. Ticho je očekávaný výsledek.

Hluboká paginace je omezena na 50 000 řádků a pětistránkový limit ve skriptu vás drží daleko pod ním. Velké domény potřebují jiný plán: seřaďte s sort a order=desc na poli, které akce podporuje, a zastavte dříve, jakmile řádky přestanou být zajímavé.

Spusťte první tah ručně a přečtěte si JSON. Zkontrolujte názvy polí. Poté porovnejte počet řádků s celkovým počtem referenčních domén z jedné odpovědi bezplatné akce overview, pokud tato odpověď obsahuje jeden.

Explicitně zpracujte HTTP 401 a 402, protože 401 znamená špatný klíč a 402 znamená, že zůstatek dosáhl nuly. Oba patří do vašeho oznámení o selhání. Když diff vyvolá, postupujte podle runbooku ztracených odkazů první hodinu.

Měření kampaně koupených odkazů, jeden snímek po druhém

Koupě odkazů bez základu je běžný způsob, jak skončit s číslem, které nedokážete obhájit. Pořiďte snímek před tím, než bude umístěn první odkaz, a uchovávejte ho vedle každého následujícího snímku.

Pak porovnávejte referenční domény, ne hrubé počty, protože jeden dárce může nést mnoho odkazů. Každý nový řádek v diffu je jeden web, který můžete otevřít a zkontrolovat ručně.

Kampaň, která vypadá plochou po dobu měsíce, není automaticky selháním. Obnovy indexu jsou pomalé, takže diff zaostává za tím, co se stalo na živých stránkách, a toto zpoždění je součástí metody.

Jak změřit, zda fungují koupené zpětné odkazy?

Začněte od data prvního umístění a hledejte řádky dárce, které se objeví po něm. Počítejte pouze ty, které zůstaly v dalších dvou snímcích. Poté porovnejte tento počet s tím, co jste zaplatili za umístění, a zaznamenejte výsledek vedle dat.

Co by měl obsahovat snímek před nákupem?

Plný seznam referenčních domén, uložený ve stejném formátu souboru jako každý další běh, s datem a doménou v názvu souboru. Základ v jiném formátu nelze diffovat, a to je ta jedna chyba, kterou nelze později napravit.

Detektiv třídící listí na zemi s lupou

Jak vypadá hlučný týden v diffu

Týden s tisíci novými řádky není vždy krizí. Často jde o scrapery. Kopírují stránky a kopie vytvářejí odkazy, které nikdo neumožnil. Zkontrolujte dárce, než předpokládáte cokoliv o vašem vlastním webu.

Seřaďte nové řádky podle kvality dárce, než je přečtete. Většina seznamu je obvykle šum, a krátký pohled na horní řádky vám řekne, zda špička stojí za zbytek vašeho rána.

Pokud jsou řádky scraperské stránky, zaznamenejte počet a pokračujte. Pokud jsou to skutečné weby s odkazy na vaše peněžní stránky, postupujte podle kroků triáže.

Proč diff ukazuje zisky ze spamu?

Protože diff hlásí, co se objevilo v indexu, ne to, co si člověk vybral. Spam, který index zachytil, vypadá stejně jako editorální odkaz, dokud neotevřete stránku dárce a nepřečtete ji.

Jak často bych měl kontrolovat kandidáty na disavow?

Měsíční kontrola lépe odpovídá rytmu indexu než denní. Denní kontrola většinou ukazuje stejný seznam znovu, zatímco měsíční dá každému kandidátovi čas na znovu-prohledání, než ho posoudíte. Na stránce triáž spamových odkazů jsou kroky rozhodování.

Než začnete věřit prvnímu diffu

  • První tah byl přečten ručně, řádek po řádku, alespoň pro jednu stránku.
  • Názvy polí odpovídají konstantám na začátku skriptu.
  • 401 a 402 oba selhají hlasitě, ne tiše.
  • Složka se snímky je zálohována nebo synchronizována někde, odkud ji můžete obnovit.
  • Někdo jiný než autor viděl první upozornění a souhlasí, že stojí za zprávu.

Udržujte archiv snímků užitečný po dobu jednoho roku

Uchovávejte každý datovaný soubor, včetně těch, které vypadají nezměněně. Rok týdenních snímků zabere málo místa na disku a odpoví na otázky, které ještě nikdo nepoložil, jako je to, kdy se dárce poprvé objevil.

Pojmenujte soubáty konzistentně, s doménou, datem a akcí. Smíšená jmena způsobí, že skript diff vybere špatnou dvojici, a špatná dvojice produkuje sebevědomé a špatné upozornění.

Komprimujte starší soubory jednou za čtvrtletí, pokud záleží na prostoru. Uchovejte nejnovější dvanáct nekomprimovaných, aby týdenní úloha nikdy nečekala na archiv.

Jak najdu první snímek, kdy se dárce objevil?

Seřaďte datované soubáty podle jména, pak vyhledejte v každém doménu dárce, dokud nenajdete první zásah. Krátká smička to udělá v několika řádcích a výsledek je tak dobrý, jak je pojmenování, které jste udrželi od začátku.

Co mám smazat a co mám uchovat?

Uchovejte každý snímek, na kterém bylo rozhodováno, plus první a poslední z každého měsíce. Smazte zbytek až po kontrole archivu, protože smazaný soubit nemůže později odpovědět na otázku.

Pošlete diff tam, kde lidé již čtou

Diff, který dopadne do nepřečtené složky, nemá žádnou hodnotu. Sdílené je lepší než soukromé. Pošlete výsledek do kanálu, který váš tým již sleduje, a udržujte zpráru krátkou, aby na ni bylo možné reagovat na první pohled.

Dobrá zpráva pojmenuje doménu, počet ztracených a získaných řádků a první krok. Neobsahuje celý seznam, který patří v přiloženém souboru.

Ticho v klidném týdnu je součástí návrhu. Pokud se nic nezměnilo, nikdo nepotřebuje připomínku, že se nic nezměnilo. Tak to nechte. Kanál zůstává čitelný pro další skutečné upozornění.

Co by měla zpráva obsahovat?

Tři věci: jméno dárce nebo rivala, dva počty a odkaz na uložený soubit. Když je připojen skóre, přidejte nejlepší Domain Rating mezi novými řádky, protože jeden silný doména změní prioritu více než deset slabých.

Kdo dostane oznámení o selhání?

Někdo, kdo může úlohu opravit, ne jen někdo, kdo čte zprávy. 401 potřebuje nový klíč a 402 potřebuje doplnění z stránky účtu. Ani jedno není vyřešeno čekáním na další pondělí.

Rozšíření

Vyměňte refdomains za backlinks, když upozornění potřebuje URL dárce a anchor. Mějte na paměti stejnou cenu dvou kreditů.

Přidejte bulk_dr pro hodnocení každé nové domény, za jeden kredit za volání až 2 000 domén. Pak vaše zpráva může říct "3 nové, nejlepší DR 72" místo holého seznamu.

Pro Google Sheets funguje stejný query string v Apps Script s UrlFetchApp. A pro rivaly použijte prahové hodnoty z upozornění na backlinky konkurentů.