Nástroj pro vyhledávání zpětných odkazů v Pythonu: seznam potenciálních partnerů ve čtyřiceti řádcích
Najděte domény, které odkazují na vaše konkurenty, ale ne na vás, ohodnoťte je v jednom volání a seřaďte CSV. Níže uvedený příklad ukazuje postup s fiktivními čísly.
Redakce Linkzoid ·
Logika před kódem
Práci vykonají tři volání. intersect bere dvě až deset domén a vrací ty, které odkazují na několik z nich. refdomains na vašem vlastním webu dá množinu, kterou chcete odečíst. bulk_dr následně ohodnotí, co zbylo.
Náklady na jedno spuštění jsou zanedbatelné a aritmetika se vyplatí provést jednou. Dvě kredity za intersect, dvě za váš vlastní seznam, jedna za ohodnocení až 2 000 domén. Pět kreditů je $0.0005.
Záleží na pořadí. Odečtěte před ohodnocením.
Lidé často nejprve ohodnotí všechno a až poté filtrují. To je naopak. Ohodnocení stojí málo, ale při CSV s padesáti tisíci řádky zabere hodně času. Nejprve seznam zkraťte překryvem, požádejte o DR u přeživších a uchovávejte vše v běžném slovníku, aby druhý běh mohl využít výsledek z včerejška.
prospects.py
Domény v RIVALS jsou zástupné hodnoty. Názvy polí se čtou pomocí .get, takže před důvěrou sloupci zkontrolujte jeden surový řádek z vlastního běhu.
python
import csv, json, os, urllib.request as u, urllib.parse as p
KEY = os.environ['LZ_KEY']
ME = 'mysite.example'
RIVALS = ['rival-a.example', 'rival-b.example', 'rival-c.example']
def get(**kw):
q = p.urlencode(kw)
with u.urlopen(f'https://linkzoid.pro/api.php?{q}&key={KEY}', timeout=30) as r:
d = json.load(r)
if not d['ok']:
raise SystemExit(d)
return d
gap = get(action='intersect', q=','.join(RIVALS), per=1000)['rows']
mine = {r.get('domain') for r in get(action='refdomains', q=ME, per=1000)['rows']}
fresh = [r.get('domain') for r in gap if r.get('domain') not in mine]
scores = get(action='bulk_dr', domains=','.join(fresh[:2000]))['rows']
with open('prospects.csv', 'w', newline='') as f:
wr = csv.writer(f)
for row in scores:
wr.writerow([row.get('domain'), row.get('dr')])
print(len(fresh), 'candidates')
Provedený příklad, fiktivní čísla
Smyšlený běh pro malý blog v úzké nise; váš se bude lišit
Krok
Výstup řádků
Kredity
intersect 3 konkurentů
640 domén
2
Mínus vaše vlastní odkazující domény
Zbylo 410
2
bulk_dr na 410
410 ohodnoceno
1
Udržet DR 20 a více
přibližně 120
0
Ruční kontrola prvních 30
30 otevřených stránek
0
Z CSV do outreachu, aniž byste někoho spamovali
01
Seřadit podle překryvu
Domény, které odkazují na dva nebo tři z vašich konkurentů, jsou ty, které mají důvod tematicky odkazovat na vás. Dejte je na začátek.
02
Otevřít třicet ručně
Podívejte se na stránku, která odkazuje na konkurenta. Je to seznam zdrojů, recenze, zpravodajský článek? Pouze některé z těchto stránek přijímají nové položky.
03
Napište jednu větu důvodu
Řekněte, co vaše stránka přidává, co stránka konkurenta nemá. Pokud to nedokážete říct větou, přeskočte daný web.
04
Zaznamenejte, co jste odeslali
Přidejte sloupce pro datum, kontakt a výsledek do stejného CSV a commitněte ho. Příští čtvrtletí si poděkujete.
Chyby a opravy
Skripty pro vyhledávání potenciálních partnerů selhávají na stejných několika místech
Chyba
Proč to škodí
Oprava
Řazení pouze podle DR
Velké adresáře a scrapery se dostanou nahoru
Seřadit nejprve podle počtu překryvů, DR až jako druhé
Odeslání všeho nad určitou hranicí
Působí to jako spam, stojí to dobré jméno
Otevřít ručně prvních 30
Ruční URL-encoding
Čárky a lomítka rozbíjejí dotaz
Použít urllib.parse.urlencode
Odeslání 3 000 domén v jednom volání
Překročení limitu 2 000
Rozdělit seznam na části, jeden kredit za část
Důvěra DR jako kvalitě
Je to logaritmický počet odkazujících domén
Považujte ho za klíč pro řazení, nikoliv za verdikt
Výběr konkurentů, kteří sdílejí vaše čtenáře
Konkurenti rozhodují o tom, co intersect vrátí. Nástroj pro vyhledávání zpětných odkazů je tak dobrý, jak dobrý je seznam, který mu podáte. Tři přímí konkurenti se stejným čtenářem dávají čistý překryv, zatímco obří vydavatel, který cílí na všechno, vám dodá tisíce odkazů, které o vaší stránce nevypovídají nic.
Představte si, že provozujete malý blog o opravě kol. Vašimi konkurenty mohou být dva blogy o opravách a jeden obchod se silnou sekcí s návody. To je dobrá sada. Přidejte národní vydavatelství a seznam se zaplní stránkami, které by nikdy neodkazovaly na blog o kolech.
Dvě až deset domén je okno, které endpoint akceptuje, takže vyberte sadu uvnitř tohoto rozmezí. Udržujte seznam dostatečně krátký, abyste si mohli pamatovat každého konkurenta. Krátké seznamy je snazší obhájit.
Proč velká centra znečišťují sadu
Adresáře a agregátory odkazují téměř na všechno. Vyskytují se v každém intersectu a zavalí pár domén, které odkazují z opravdového zájmu. Přečtěte si vrchol seřazeného seznamu, než mu budete věřit.
Jednoduchý soubor vyloučení většinu z toho napraví. Udržujte domény, které nikdy nechcete, v jednom textovém souboru, jednu na řádek. Načtěte je do množiny a vyřaďte shody před voláním scoringu, aby kredity šly pouze na kandidáty, za které se vyplatí číst.
Oddělení konkurentů a vlastního webu
Vaše vlastní doména by nikdy neměla být konkurentem. Zní to zjevně, ale seznam zkopírovaný ze starého projektu ho často přinese s sebou, a pak intersect hlásí vaše vlastní odkazy zpět vám.
Dejte konkurenty do konfiguračního slovníku na začátku skriptu s komentářem, proč je každý tam. Příští měsíc si budete pamatovat důvod a cizí čtenář repozitáře také.
Čtení surových řádků před filtrováním
Kód čte každé pole pomocí .get, což zabrání pádu běhu při chybějícím klíči. Také skryje špatný klíč. Vytiskněte jeden řádek z intersectu před psaním jakéhokoli filtru a podívejte se na názvy polí a typ každé hodnoty.
Skóre, které přijde jako text, se třídí jako text, takže 9 skončí za 80. Převeďte ho na číslo jednou, hned po volání, a zbytek skriptu může zůstat jednoduchý.
Normalizujte domény před porovnáním
Stejný web se může objevit s prefixem www. v jednom seznamu a bez něj v druhém. Vše převedte na malá písmena a odstraňte prefix před porovnáním množin. Jinak se váš vlastní web může jevit jako nový kandidát.
Koncová lomítka a přilepené mezery z vloženého seznamu způsobují stejný problém. Jednořádková čistící funkce stojí méně než jedno plýtvání voláním scoringu.
Uchovávejte datumovou kopii každého běhu
Zapište každý běh do datovaného souboru a předchozí si ponechte. Pak můžete rozlišit nové kandidáty od těch, které jste již viděli, a sledovat, kdy konkurent začal odkazovat na něco nového.
Datované soubory jsou také nejlepším způsobem, jak ladit podivný výsledek. Otevřete dva soubory vedle sebe a změna je obvykle zřejmá.
Ohodnoťte pouze to, co přežije
Hromadné volání bere až 2 000 domén za jeden kredit. Předávejte mu přeživší po odečtení, ne celý intersect. Ve smyšleném běhu výše stálo 640 řádků a 410 řádků stejné k ohodnocení v jednom volání, ale menší seznam je mnohem snazší číst.
Otázky před spuštěním vyhledávače
Většina otázek, které lidé k této části práce přinášejí, se točí kolem nákladů, řazení a toho, co se stane při selhání volání.
Stojí seznam potenciálních partnerů hodně?
Ne moc. Postup používá intersect, refdomains a bulk_dr, takže pět kreditů za běh ve velikosti uvedené, což je $0.0005. Opakování běhu příští měsíc stojí stejně. Vaše vlastní čas strávený čtením stránek je skutečná cena.
Proč neuspořádat intersect podle DR a na tom skončit?
DR počítá odkazující domény na logaritmické škále. Velké adresáře se dostanou nahoru bez ohledu na jejich relevanci, takže řaďte nejprve podle překryvu a použijte DR jako rozlučovací klíč, ne jako hlavní.
Mohu poslat outreach na vše v CSV?
Můžete, ale je to špatné využití seznamu. Otevřete stránku, která odkazuje na konkurenta, rozhodněte se, zda nová položka pasuje, a až poté pište. CSV je krátký seznam, ne seznam pro mailing.
S kolika konkurenty bych měl začít?
Tři je dobrý začátek, uvnitř rozmezí dvou až deseti, které intersect akceptuje. Přidejte více pouze tehdy, když první běh vrátí příliš málo řádků k hodnocení.
Co když moje vlastní doména ještě nemá žádné odkazující domény?
Pak odečtení nic neodebere a každý řádek intersectu se stane kandidátem. To je správně, ale seznam bude dlouhý. Zkraťte ho překryvem a přečtěte si ručně prvních třicet.
Potřebuje skript placený klíč?
Ano. Volání intersect, refdomains a bulk_dr jsou ceněna podle kreditu. Bezplatná akce overview klíč nepotřebuje a registrační kredit $100 pokryje mnoho běhů této velikosti.
Před první zprávou
Otevřete kandidátskou stránku a potvrďte, že odkazuje na konkurenta, ne jen na seznam odkazů.
Zkontrolujte, zda stránka pasuje vašemu čtenáři, nejen vašemu klíčovému slovu.
Odstraňte jakoukoli doménu, kterou jste již kontaktovali, a vedle ní zapište datum.
Napište jednu větu o tom, co vaše stránka přidává, nebo kandidáta vyřaďte.
Posílejte v malých dávkách, aby se daly odpovědi skutečně přečíst.
Spuštění vyhledávače v rozvrhu
Seznamy potenciálních partnerů stárnou pomaleji, než si většina lidí myslí. Měsíčně stačí. Nové odkazy od konkurentů se objeví při měsíčním obnovení, takže běh každé několik týdnů zachytí většinu z nich. Týdenní běhy většinou reprodukují soubor z minulého týdne, proto může stejný nástroj pro vyhledávání zpětných odkazů běžet bez dozoru bez velkého hluku.
Rozumný rytmus je měsíční scoring a rychlý pohled na horní řádky po každém běhu. Udržujte krok odečtení ve stejné úloze, aby seznam nikdy neobsahoval to, co již máte.
Udržte klíč mimo soubor
Skript čte klíč z prostředí, takže nikdy nesedí v repozitáři. Nastavte LZ_KEY jako tajný údaj ve vašem plánovači nebo ho exportujte ze souboru, který zůstane mimo git.
Řádek crontab může volat stejný skript s proměnnou nastavenou před ním. Zkontrolujte, zda má soubor držící klíč na serveru přísná oprávnění.
Selžte před zápisem CSV
401 nebo 402 by mělo běh zastavit, stejně jako ok flag, který čte false. Kód vyvolá chybu před otevřením souboru, takže selhaný běh nikdy nepřepíše včerejší CSV částečným.
Zaznamenejte výdaje s každým během
Každá odpověď nese _credits, takže vytiskněte zůstatek na konci úlohy. Po několika měsících vám tento řádek řekne, zda plánování stojí to, co jste plánovali, a zda smyčka nezačala znovu načítat stránky.
Pojďte s SQLite diff, pokud chcete historii v databázi místo složky souborů.
Slovo o tom, co DR může a nemůže říci
DR zde je round(100 times log(ref_domains + 1) over log(20,000,000)). Roste s počtem odkazujících domén a ničím jiným. Mějte to na paměti. Web může být na 55 a přesto být pro vás k ničemu.
Použijte ho k řazení, pak čtěte. Podívejte se, co web publikuje, zda odkazuje na stovky nesouvisejících obchodů a zda se na něm něco nedávno změnilo. Tyto kontroly trvají minutu na web a žádný skript je nenahradí.
Jakmile je seznam čistý, udržujte ho jako datovaný soubor a spusťte znovu za měsíc. Runbook Actions ukazuje, jak ho naplánovat, a porovnání n8n pokrývá cestu bez kódu, pokud váš outreach person preferuje.
Poznámky k rychlosti a velikosti
Každé volání vrací až 1 000 řádků a je fakturováno jednou, takže procházení 5 000 řádků intersectu stojí 10 kreditů, neboli $0.001. Hluboké stránkování končí u 50 000 řádků. Použijte sort a order=desc na serveru místo řazení velkého seznamu v Pythonu afterwards.