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ě:
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.
Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development 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.
Přidat komentář