Tabel de severitate

Verificator de backlink-uri rele: diferențierea instantaneelor în SQLite

Niciun script nu poate declara un link toxic pentru tine. Poate să îți spună care domenii de referință sunt noi, care au dispărut și care par suficient de ciudate pentru a fi citite manual.

Seif de piatră cu tablete de lut și un caliper de alamă care măsoară puncte de date

Tabel de severitate pentru domeniile de referință noi

Reguli practice proprii pentru triaj, nu o definiție Google
NivelSemnalAcțiune
IgnorareDomeniu nou, DR peste 30, anchor text este marca ta sau un URL golLoghează și continuă
Verifică50 sau mai multe domenii noi într-o săptămână de la un TLD pe care nu l-ai țintitDeschide zece dintre ele
Verifică atentExact același anchor text pe 20 sau mai multe domenii noiVerifică norul de anchor text, găsește sursa
AcționeazăRețea cu aspect plătit sau pagini compromise care indică către tineDocumentează; ia în considerare un fișier disavow doar dacă ai și o acțiune manuală
AșteaptăUn domeniu a dispărut în această lunăReverifică după următoarea actualizare lunară

De ce diferențiere în loc de scanare unică

Un singur instantaneu îți spune ce există. O diferențiere îți spune ce s-a schimbat, iar acolo apar problemele.

Google a spus de ani de zile, încă de la lansarea Penguin 4.0 în septembrie 2016 și din nou în actualizarea spam-ului de link-uri din decembrie 2022, că ignoră majoritatea link-urilor spam în loc să le pedepsească. SpamBrain face această treabă. Așa că un val de gunoi este mai degrabă zgomot decât o amenințare, iar diferențierea te salvează în principal de la a reacționa la zgomot.

Păstrează propria istorie. Suitele își suprascriu pe ale lor.

Construiește tabelul de istorie în patru pași

Diferențierea funcționează doar dacă fiecare execuție ajunge în același tabel, în aceeași formă. Acești pași mențin această stare.

01

Creează tabelul o dată

Rulează o instrucțiune create-if-not-exists cu coloanele de care ai nevoie: ziua, domeniul și scorul. Ține-l în script, astfel încât o mașină nouă să reconstruiească același tabel fără pași manuali.

02

Inserează un rând pe domeniu pe zi

Folosește o inserție parametrizată și comită o dată pe execuție. Un singur commit evită ca un crash să lase jumătate de zi în fișier.

03

Protejează-te împotriva unei a doua execuții

Șterge rândurile zilei înainte de inserare, sau adaugă o cheie unică pe zi și domeniu. O re-execuție în aceeași zi va înlocui rândurile în loc să le dubleze.

04

Compară cu ziua precedentă din fișier

Alege cea mai veche dată anterioară cu un filtru max(day), nu data de ieri. Compararea rămâne corectă când o săptămână a fost omisă.

diff.py

Două tabele ar fi mai curate. Unul este suficient pentru o configurație hobby: un rând pe domeniu pe dată de instantaneu.

python
import json, sqlite3, sys, datetime
db = sqlite3.connect('links.db')
db.execute('create table if not exists snap(day text, dom text, dr int)')
rows = json.load(open(sys.argv[1]))
day = datetime.date.today().isoformat()
db.executemany('insert into snap values (?,?,?)',
               [(day, r.get('domain'), r.get('dr')) for r in rows])
db.commit()
prev = db.execute('select max(day) from snap where day < ?', (day,)).fetchone()[0]
if prev:
    new = db.execute('select dom from snap where day=? except select dom from snap where day=?', (day, prev)).fetchall()
    gone = db.execute('select dom from snap where day=? except select dom from snap where day=?', (prev, day)).fetchall()
    print(len(new), 'new,', len(gone), 'gone')

Depanarea diferențierii

SimptomCauză probabilăRemediu
Sute de 'disparate' peste noapteActualizarea indexului a schimbat eșantionulCompară lunar, nu zilnic
Fiecare domeniu pare nouTabelul era gol sau formatul day s-a schimbatVerifică select distinct day
Coloana DR este toate NULLN câmpului rând diferă de drAfișează un rând brut și ajustează
Duplicări după o re-execuțieAcea zi a fost inserată de două oriȘterge acea zi mai întâi, sau adaugă o cheie unică
Numărător sub totalPaginare s-a oprit devremeCorectează bucla din Ghidul de execuție Actions
Grădinar care observă ferigi cu o lupă pentru a compara modelele de creștere

Alegerea pragurilor din propria istorie

Un prag copiat dintr-un articol de blog este o presupunere despre site-ul cuiva. Un verificator de backlink-uri rele este util doar în măsura limitelor sale, iar propria ta istorie îți spune cum arată normal pentru domeniul tău.

Începe prin a loga câteva luni fără a acționa asupra nimicului. Lasă-l să se stabilizeze. Apoi notează oscilarea săptămânală tipică. Doar după aceea stabilești limitele în tabelul de severitate.

Începe cu o linie de bază

Înregistrează numărul de noi și dispariții pentru fiecare execuție fără a reacționa la ele. Câteva luni de logare liniștită îți oferă o rază care aparține domeniului tău și nimănui altcuiva.

Odată ce linia de bază există, o singură săptămână proastă iese în evidență față de ea, și poți explica diferența fără a ghici. Acesta este întregul punct al liniei de bază.

Alege un singur alarmă pe semnal

Fiecare semnal din tabel primește un prag, un responsabil și o acțiune. Un semnal cu trei alarme este un semnal pe care nimeni nu îl citește, iar alarmele ajung ignorate împreună.

Scrie alarma lângă semnalul său în cod, astfel încât tabelul de pe această pagină și scriptul să nu difere niciodată.

Revizuiește limitele trimestrial

Site-ul tău crește, și normalul său crește la fel. Reverifică limitele la fiecare trei luni și scrie motivul lângă orice modificare, astfel încât istoria să se explice singură mai târziu.

Păzitor de far care scanează orizontul cu telescopul și ancora pe masa de lucru

Citirea tabelului de severitate în practică

Tabelul este un ajutor de triaj, nu o judecată. Fiecare rând îți spune unde să te uiți, iar coloana de acțiune te împiedică să apeși pe un fișier disavow în panică.

Lucrează de sus. Majoritatea săptămânilor se termină la Ignorare sau Verificare. Un rând de Verificare începe câteva minute de citire, iar un rând de Verificare atentă începe o revizuire mai lungă a anchor textelor. Nu omite rândurile pentru că a fost o săptămână aglomerată. Un rând omis este săptămâna în care valul trece neobservat.

Eșantionează înainte de a decide

Deschide zece dintre domeniile marcate și citește paginile. Un val care se dovedește a fi un singur scraper de directoare este o problemă diferită de un val de bloguri neînrudite, și doar paginile le disting.

Înregistrează ce ai decis

Păstrează o linie pe decizie: domeniul, nivelul, ce ai verificat și ce ai făcut. Următoarea persoană care citește jurnalul, inclusiv viitorul tău, primește raționamentul fără o ședință.

Un sumar lunar al acestor linii ia puțin timp și face un prim draft bun pentru o revizuire.

Ce nu poate spune acest lucru

Nu poate dovedi că un link te afectează. Nimeni în afara Google nu poate, iar raportul de acțiuni manuale din Search Console este singurul loc unde este menționată o penalizare.

De asemenea, nu poate vedea link-uri mai noi decât ultima actualizare. Pentru dovezi mai proaspete, întreabă persoanele care administrează site-ul care face link-ul, sau citește jurnalele serverului pentru refereri. Notarea noastră despre timing intră în mai multe detalii.

Dacă vrei partea de anchor text, anchor_cloud costă 2 credite și grupează textul în funcție de frecvență, ceea ce este cel mai rapid mod de a identifica un aglomerat de match-uri exacte.

Link-uri care apar între actualizări

Orice mai nou decât ultima actualizare lipsește din ambele părți ale diferențierii. Un link care apare și dispare în interiorul unei ferestre de actualizare nu apare deloc, motiv pentru care comparația ar trebui să ruleze lunar.

Anchor texturi care ți se par greșite

O diferențiere vede domeniul, nu propoziția din jurul link-ului. Două anchor texturi identice pe două pagini diferite pot însemna lucruri foarte diferite, așa că păstrează verificarea anchor textului ca un pas manual separat.

Opțiuni de stocare pentru o configurație hobby

SQLite este cea mai simplă bază de date care răspunde totuși unei întrebări de diferențiere cu un singur query. Trăiește într-un singur fișier, astfel încât se potrivește în repo sau într-un folder de backup fără un server.

Fișierele JSON datate funcționează și ele. Este mai lent de interogat, dar mai ușor de deschis într-un editor de text când ceva pare greșit. În ambele cazuri, copiază stocarea într-un al doilea loc înainte de orice curățare și păstrează copia pentru un trimestru întreg înainte de a șterge orice.

Când un singur fișier este suficient

Un tabel cu o coloană de zi acoperă un singur site timp de ani. Fișierul rămâne mic, iar interogările de pe această pagină nu necesită ajustări.

Când să treci la un server

Odată ce mai multe persoane scriu în aceeași istorie, un fișier pe o singură mașină devine gâtul de sticlă. În acel punct, o bază de date gestionată este alegerea onestă, iar schema rămâne aceeași.

Până atunci, un fișier în repo este cel mai simplu lucru care supraviețuiește unei schimbări de laptop.

Conectarea diferențierii la o job săptămânal

Rulează diff.py chiar după pasul de instantaneu. Afișează numărătoarea și ieși cu un cod non-zero când new depășește o limită pe care ai ales-o, de exemplu 200 într-o săptămână pentru un site mic. Jobul devine roșu, iar GitHub te trimite un email. Simplu.

Alege limita din propria ta istorie. După două luni știi dacă 15 domenii noi pe săptămână este normal sau un spike, și orice număr fix copiat dintr-un articol de blog este o presupunere.

Săptămânile liniștite sunt norma.

Întrebări despre link-uri rele, răspunsite clar

Există un verificator de backlink-uri rele fiabil?
Niciun instrument nu poate eticheta un link ca fiind dăunător cu certitudine, deoarece doar Google știe cum tratează fiecare unul. Un script poate scoate la iveală modele care merită citite: inundații bruște, anchor texturi exacte repetate, TLD-uri ciudate. Tu iei decizia după deschiderea paginilor.
Ar trebui să disavuez ceea ce marchează diferențierea?
Rareori. Google a spus că ignoră în mare măsură link-urile spam, iar un fișier disavow este destinat cazurilor precum o acțiune manuală sau o dezordine de link-uri plătite pe care ai creat-o tu. Documentează mai întâi și verifică Search Console înainte de a trimite ceva.
De câte ori ar trebui să îl rulez?
Instantaneu săptămânal, revizuire lunară. Indexul se reactualizează aproximativ o dată pe lună, așa că o diferențiere zilnică compară în mare parte un tabel cu el însuși. O revizuire lunară se potrivește cu datele și menține zgomodul jos.
Ce coloane ar trebui să păstreze tabelul?
Păstrează ziua, domeniul, DR și o coloană de sursă. Adaugă anchor textul doar dacă extragi și anchor texturi. Mai multe coloane par complete, dar fiecare câmp suplimentar este unul care poate deriva între execuții.
Pot diferenția două suite una față de cealaltă?
Poți compara numărătoarea lor pentru același site, dar cele două rezultate nu se vor potrivi. Rulează diferențierea în interiorul unei singure surse și compară direcția schimbării între surse, aceeași regulă care se aplică peste tot pe acest site.
Ce se întâmplă dacă un domeniu pleacă și apoi se întoarce luna viitoare?
Apare ca disparut și apoi ca nou, ceea ce este zgomot. Numără revenirile separat sau compară trei luni odată, astfel încât un domeniu care dispare pentru o actualizare să nu declanșeze o revizuire.