Naar de inhoud springen
CranSEO
CranSEOAanmelden

Koppel backlinks met Zoekconsole-exporten, stap voor stap

Zoekconsole toont wie naar je linkt, maar niet hoe sterk die sites zijn. Één API-call per export vult die leegte. Elk getal hieronder is een verzonnen voorbeeld.

CranSEO-onderzoeksteam ·

Een stenen brug die twee kliffen verbindt met verschillende boomdichtheden en zware kettingen

De opzet, en waarom een join helpt

Zoekconsole toont linkende sites. Het rangschikt ze niet.

Exporteer de top-linkende sites als CSV; het bestand geeft je een kolom met domeinen zonder gewicht. Die leegte lost de join op, omdat een ruwe export een lijst is in plaats van een onderbouwd argument.

Onze bulk_dr-functie scoort de hele kolom in één call, dus de join is een enkele left_join() op het domein. Zoekconsole toont slechts een steekproef van de links die het kent, dus behandel de export als een bodem, niet als totaal.

De join in vijf stappen

01

Exporteren

Download de tabel met linkende sites uit het Links-rapport in Zoekconsole. Lees het bestand met readr::read_csv().

02

Opschonen

Kleine letters, www verwijderen, duplicaten verwijderen. Niet-overeenkomende sleutels zijn de gebruikelijke reden waarom een join stil NA retourneert.

03

Scoren

Stuur de unieke domeinen in chunks van 2.000 naar bulk_dr. Één call kost 1 credit.

04

Koppelen

left_join(links, scores, by = "domain"). Controleer het aantal rijen voor en na de join.

05

Markeren

Verdeel de DR-banden uit onze drempeltabel en lijst de rijen op waarvoor de export geen score heeft.

Hypothetisch resultaat, 8 rijen van een verzonnen export

Alleen voorbeelddata. Domeinen en getallen zijn verzonnen om de structuur van de join te tonen.
domein (verzonnen)Links in exportDR (verzonnen)Band
example-news.test1471Sterk
example-blog.test334Gevestigd
example-shop.test218Klein
example-forum.test409Dun
example-uni.test162Sterk
example-dir.test274Dun
example-local.test522Klein
example-wiki.test183Zeer groot
Een antieke weegschaal die een enkele goudklompje balanceert tegen vele kleine kiezelstenen

Wat het voorbeeld je vertelt, en wat het niet doet

Lees de forumrij nauwkeurig, want veertig links bij DR 9 is volume zonder gewicht.

In dit verzonnen geval wegen twee rijen met elk één link zwaarder dan 67 links van dunne sites; dit is het patroon dat je in je eigen data moet zoeken. Het weerspiegelt hoe DR werkt, geen belofte over rankings.

Lees geen causaliteit hierin. Google heeft gezegd dat links één signaal zijn onder vele, en sinds de core update van maart 2024 is het beeld alleen maar drukker geworden.

Vragen over de join

Waarom komen sommige rijen zonder score terug?

Meestal verschilt de sleutel: een trailing slash, een www-voorvoegsel of andere hoofdletters. Maak de strings eerst schoon. Als het nog steeds misgaat, is het domein mogelijk afwezig in de maandelijkse index die we hebben gecrawld.

Kan ik intersect gebruiken?

Ja, voor een andere vraag. intersect neemt 2 tot 10 domeinen en retourneert sites die naar meerdere van hen linken, wat geschikt is voor competitor gap analysis in plaats van het scoren van je eigen export.

Hveel credits kost de join?

Voor 5.000 unieke domeinen kosten drie bulk_dr-calls 3 credits, ongeveer $0,0003. Het ophalen is verwaarloosbaar ten opzichte van de tijd die je besteedt aan het opschonen van de export.

Stapel meerdere exporten in één tabel

Voordat je backlinks koppelt aan Zoekconsole-exporten, stapel de bestanden. De meeste echte taken bevatten meerdere exporten, één per klant of één per kwartaal, en de join is schoner als er één tabel is om van te joinen.

Controleer of de bestanden echt overeenkomen

Meerdere CSV-bestanden van verschillende personen combineren alleen schoon als ze dezelfde kolomnamen, kolomvolgorde, datumnotaties en codering delen. Stel dat je één export per klant ontvangt. Vergelijk voordat je ze bindt de koptekst van elk bestand en stop wanneer er een verschil is.

Een snelle check is een lijst met kolomnamen per bestand en één stopconditie in het script. Dat kost een paar regels en voorkomt een stille misalignement.

Scheidingstekens en decimale tekens

Exporten van verschillende machines komen soms aan met een puntkomma als scheidingsteken of met een ander decimaal teken. Controleer het scheidingsteken van elk bestand voordat je ervan uitgaat dat het een door komma's gescheiden bestand is, en stel een expliciete locale in wanneer het decimale teken verschilt.

Een bestand dat in één kolom wordt geparsed, is de goedkoopste fout om te vangen. Print het aantal kolommen van elk bestand en stop wanneer het één is.

Schrijf de parsingkeuzes als expliciete argumenten in het script, niet als standaardwaarden, zodat de volgende persoon ze kan zien zonder de data te openen.

Eén lange tabel met een source-kolom

Stapel de bestanden in één lange tabel met een kolom die het bronbestand en de exportdatum registreert. Die tabel vervangt de set bladen die mensen handmatig bijhouden.

Samenvattingen worden dan één group_by()-call in plaats van een blad per klant. Houd de ruwe bestanden onaangetast, zodat de stapeling opnieuw kan worden uitgevoerd vanaf het begin.

Opzoeken over bladen heen zijn joins

Een verzoek zoals 'verplaats kolom 2 samen met kolom 1' is een join in vermomming. Kies de sleutel, hier het domein, en laat left_join() de tweede kolom overdragen. De spreadsheet-versie breekt zodra een rij verplaatst wordt, terwijl een keyed join dat niet doet.

Als de tweede tabel een andere sleutelnotatie gebruikt, los dan de sleutel op vóór de join, niet erna. Een mismatch is meestal een hoofdletter- of voorvoegselprobleem.

Wat een join niet kan oplossen

Een join zet twee tabellen naast elkaar op een sleutel. Het kan twee bronnen niet laten overeenstemmen, en het kan een domein dat nooit geëxporteerd is, ook niet redden. Waar twee exporten het oneens zijn over een telling, toont de join de meningsverschil in plaats van het op te lossen.

Houd dat verschil zichtbaar in het rapport, met beide bronnamen ernaast, zodat een lezer kan zien van welke export een getal afkomstig is.

Een join kan je ook niet vertellen waarom twee bronnen het oneens zijn. Daarvoor moet je naar de ruwe rijen kijken, wat nog een reden is waarom de export onaangetast blijft.

Houd de bronnamen in de tabel

Een source-kolom is goedkope verzekering. Als een cijfer over zes maanden vreemd lijkt, is de eerste vraag van welke export het afkomstig is, en de kolom beantwoordt dat zonder zoeken in oude mappen.

Stel een klant vraagt waarom één domein twee keer wordt getoond. De source-kolom toont dat het afkomstig is uit de lente-export en de zomer-export, een feit dat je in één zin kunt uitleggen.

Stapelen en joinen in vier passes

01

Lees elk bestand

Lees elke export met readr::read_csv() en houd de bestandsnaam als kolom. Ga er niet van uit dat de kolomtypen van het eerste bestand gelden voor de rest.

02

Bind de rijen

Gebruik bind_rows() zodra de kopteksten overeenkomen. Tel de rijen per bron en vergelijk ze met wat je verwachtte van elk bestand.

03

Samenvatten één keer

Groepeer op de sleutel en vat samen in één stap, bijvoorbeeld linkende sites per klant, zodat elke berekening op één plek staat.

04

Koppel de scores

Koppel de bulk_dr-scores op het opgeschoonde domein, na het stapelen, en controleer het aantal rijen voor en na de join.

Een mastersleutel en een verroest slot op een houten bankje met een loep

Opschoonregels die de join redden

Sleutels breken eerst, en ze breken stil.

Maak elk domein klein, verwijder een leidend www, verwijder trailing dots en slashes, en vouw duplicaten samen vóór de call, omdat één dwaalende hoofdletter een goede match verandert in een NA die je misschien niet opmerkt tot een klant vraagt.

Houd de ruwe export onaangetast in zijn eigen bestand, schrijf de opgeschoonde tabel ernaast, en registreer de exportdatum in de bestandsnaam. De maandelijkse runbook legt uit waarom gedateerde bestanden belangrijk zijn, en de bulk scoring pagina heeft de request code om te hergebruiken.

Tot slot, wanneer de export 1.200 unieke domeinen heeft en de gescoorde tabel 1.150, vind die 50 voordat je iets plott; de glossary lijst op wat de action retourneert, en de decision tree vertelt je wanneer een andere bron het betere antwoord is.

Een tweede export zonder de join opnieuw te bouwen

Het toevoegen van een tweede periode is waar veel joins stil fout gaan. De oplossing is om de snapshot te bepalen voordat je de scores aanraakt.

Zie de snapshot als onderdeel van de sleutel. Twee rijen met hetzelfde domein en verschillende snapshot-data zijn verschillende feiten, zelfs wanneer de getallen op elkaar lijken.

Twee exporten uit verschillende maanden zijn nog geen trend totdat de snapshot-vraag is opgelost. Los het eerst op, teken dan de lijn.

Score beide perioden in één pass

Stel je hebt deze kwartaal-export en die van het vorige kwartaal. Stapel beide met hun data, score dan de unieke domeinen over de twee bestanden in één pass, zodat beide kwartalen één snapshot delen.

Ze apart scoren, op verschillende tijdstippen, zou twee indexstaten mengen in één vergelijking. Noteer de snapshot-datum op de grafiek, zodat een lezer kan zien dat beide getallen uit één pass komen.

Domeinen die in beide voorkomen

Een domein dat in beide exporten aanwezig is, moet één keer in de scoretabel voorkomen en twee keer in de gestapelde tabel. Dat houdt de score eerlijk en de linktelling per kwartaal ook.

Maak de scoretabel één rij per domein voordat je hem join, zodat de join rijen niet kan vermenigvuldigen. Controleer dat het aantal rijen gelijk is aan het aantal unieke domeinen.

Houd scoring en joinen in aparte stappen

Houd de scoringstap in zijn eigen script en de join in een andere. Wanneer een score verandert, weet je welke stap je opnieuw moet uitvoeren, en hoeft de join niet handmatig opnieuw te worden gedaan.

Een klein bestand dat de snapshot-datum en de exportnamen registreert, maakt het later makkelijk om de twee stappen aan elkaar te koppelen.

Voordat je iets join

  • Elk bestand heeft dezelfde koptekst, of het script stopt
  • Sleutels zijn lowercase en stripped van www in beide tabellen
  • De bestandsnaam draagt de exportdatum
  • Rijtellingen worden voor en na elke join geschreven
  • De ruwe exporten blijven onaangetast in hun eigen map