Jak vytvořit v R graf s počty impresí v SERPu a zaznamenanými Google Core Updaty

Dlouho jsem hledal způsob, jak bych si zobrazil v Google Analytics nebo Search Consoli milníky, kdy došlo k aktualizacím Google Core. Po různých externích nástrojích jsem nakonec sáhl po R Studiu a mám flexibilní graf i bez placených nástrojů třetích stran.

Google Search Console je schopna zobrazit imprese, kliknutí a pozice, jakých dosáhl váš web v Google za posledních 16 měsíců. V R Studiu jsme schopni tato data jednoduše načíst a zobrazit ve formě tabulky či grafu.

Při poledním odpočinku na letošním SEO BootCamp mě napadlo, že toho mohu jednoduše využít k zobrazení vývoje impresí v SERPu včetně obohacení grafu o důležité milníky, kdy probíhaly aktualizace na straně Google, které mohly zamíchat s pozicemi webu ve výsledcích hledání.

Rovnou jsem to využil v přednášce, kterou jsem měl na zmíněném setkání SEO specialistů. A protože jsem zaznamenal pár ohlasů i od svých sledujících na sociálních sítích, rád se o příslušný report podělím se všemi.

Načítáme data ze Search Console do R Studia

Po instalaci jazyka R a nástroje R Studio si doplňte pomocí nabídky Tools > Install packages ještě knihovny tidyverse, lubridate, urltools a searchConsoleR. Nachystejte si nový Quarto dokument a začněte načtením zmíněných knihoven:

{r}
library(tidyverse)
library(lubridate)
library(searchConsoleR)

Pokračujte přihlášením k Search Consoli. Pokud uvedete pouze funkci scr_auth(), budete ve spodní části R Studia v Consoli vyzváni k přihlášení již jednou ověřeným účtem nebo k zobrazení přihlašovacího potvrzení ve výchozím webovém prohlížeči. Jestliže se vám někdy stane, že přihlášení již ověřeným mailem nefunguje, zkuste R Studio restartovat a vyvolejte celé přihlašování znovu.

{r}
scr_auth(email = 'jmeno@domena')

Následující konstrukce vyhledá web, který má v sobě odpovídající řetězec a přiřadí jej do proměnné my_site.

{r}
my_site <- searchConsoleR::list_websites() |>
  filter(str_detect(siteUrl, 'domena.tld')) |> 
  pull('siteUrl')

Zavoláním následujícího si stáhnete počty impresí, kliknutí a průměrných pozic pro zvolený web za poslední rok:

{r}
data <- search_analytics(
  siteURL = my_site,
  startDate = today() - 367,
  endDate = today() - 3,
  dimensions = "date"
)
View(data)

Jiná praktická ukázka. Stáhne 2000 řádků s výše uvedenými čísly pro jednotlivé URL na webu. Dvoutisícovku můžete nahradit minus jedničkou pro stažení všech údajů. 

{r}
data <- search_analytics(
  siteURL = my_site,
  dimensions = c("page"),
  rowLimit = 2000,
  ) |> 
  arrange(page, desc(impressions))
View(data)

Tip: Klasický export v rozhraní Search Console vám vrátí maximálně tisícovku záznamů. O důvod víc, proč používat R.

Pomocí API Search Console volaného přes R snadno zjistíte třeba kolik dotazů každá ze stránek pokrývá:

{r}
data <- search_analytics(
  siteURL = my_site,
  dimensions = c("page", "query")
  ) |> 
  group_by(page) |> 
  summarise(n = n()) |> 
  arrange(desc(n))
View(data)

Zobrazení grafu impresí a doplnění údajů o Google Core Updatech

Kompletní kód je uveden níže. Zde je rychlé vysvětlení. Do proměnné si přiřadíme začátek rozsahu dat, a to 16 měsíců zpětně. Více vám Search Console nevrátí.

Na GitHubu jsem nachystal CSV zahrnující data aktualizací Google Core Updates a jejich pojmenování. Budu se snažit jej pravidelně udržovat. Z online zdroje je tak kód v R načte a zároveň odfiltruje data, která jsou starší než těch 16 měsíců. To je důležité proto, abyste neměli v grafu zaneseny aktualizace starší, než samotná data o impresích.

Následuje získání datové sady z Google Search Console pro zvolený web za posledních 16 měsíců. Rovněž si ještě s pomocí knihovny urltools připravím název webu tak, aby neobsahoval protokol a lomítka.

O vykreslení grafu se stará funkce ggplot(). Doporučuji si prostudovat její dokumentaci. Stačí dát kurzor na název funkce a stisknout klávesu F1. V tomto případě kombinuji hned několik věcí:

  • Nastavení datové sady pro data ze Search Console, nastavení os X a Y
  • Pojmenování os
  • Nastavení názvu grafu
  • Vycentrování nadpisu grafu
  • Škálování osy x po třech měsících
  • Zanesení vertikálních os na základě dat ze staženého CSV
  • Doplnění popisků k těmto osám, jejich zarovnání a otočení o 90 stupňů plus další drobné úpravy
  • Dokreslení grafu na základě dat z GSC
  • Doplnění zprůměrované čáry, aby byl jasnější trend

Výsledek vypadá následovně:

Image
Imprese a Google Core Updates

Jak vidíte, z ukázkového grafu lze celkem snadno odtušit, že počet impresí v SERPu Google u zvoleného webu začal klesat po Link Spam Updatu v prosinci 2022.

Obrázek lze v R Studiu uložit pravým tlačítkem a dále s ním pracovat například v nějaké prezentaci. Zde je kompletní zdrojový kód:

{r}
library(tidyverse)
library(lubridate)
library(urltools)
library(searchConsoleR)

scr_auth()

my_site <- searchConsoleR::list_websites() |>
  filter(str_detect(siteUrl, 'nejakyweb.tld')) |> 
  pull('siteUrl')
  
startDate <- format((Sys.Date() %m-% months(16)),"%Y-%m-%d")

core_updates <- read.csv("https://raw.githubusercontent.com/maxiorel/SEO/main/google-core-updates.csv", sep = ";")
core_updates <- subset(core_updates, date >= startDate)

data <- search_analytics(
  siteURL = my_site,
  startDate = startDate,
  endDate = today() - 3,
  dimensions = "date"
) 

parsed_url <- urltools::url_parse(my_site)
domain <- parsed_url$domain

ggplot(data, aes(x = date, y = impressions)) + 
xlab('Datum') +
ylab('SERP imprese') +
labs(title = paste("Imprese webu", domain, "od", format(min(data$date), "%d. %m. %Y")))+
theme(plot.title = element_text(hjust = 0.5)) +
scale_x_date(breaks = "3 months", date_labels = "%b %Y" ) +
geom_vline(xintercept = as.Date(core_updates$date), linetype = "dashed", color = "lightcoral") +
annotate("text", x=as.Date(core_updates$date)+4, y = max(data$impressions) + 10000, ymin=max(data$impressions)+10000, label=core_updates$name, angle=90, fontface = "bold", size=3, hjust=1 ) +
geom_line() +
geom_smooth()  

Za domácí úkol

Věřím, že minimálně několik z vás R Studio zaujme natolik, abyste si s ním začali hrát. Zkuste můj příklad obohatit o následující:

  • Vyberte ze Search Console více webů a použijte uvedený kód pro vykreslení grafů každého z nich, aniž byste jej rozkopírovali
  • Zkuste si data o Google Updatech zanést do dat z Google Analytics. Jak k nim přistoupit najdete v minulém článku.
Tagy

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Marketing Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Nové diskuze
Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru