Čístím Search Consoli od zbytečných webů

Jako každý SEO konzultantant mám v Google Search Consoli plno webů, ke kterým už nemám přístup, nebo které už dlouho nefungují. Napsal jsem si skript v R, který je odstraní.

Marek Prokop (PROKOP software s.r.o.)https://www.prokopsw.cz/cs
2022-04-10

Příprava

Skriptu stačí tyhle dva balíčky.

A klasická autorizace do Search Console. Kdybych neměl svůj Google e-mail uložený v systémové proměnné, musel bych ho napsat do parametru email přímo.

scr_auth(email = Sys.getenv("MY_GOOGLE_ACCOUNT"))

Funkcí list_websites načtu všechny weby, které v Search Consoli mám, a uložím si je do objektu websites.

websites <- list_websites()

Seznam vypadá nějak takhle, jen jsem konkrétní weby ze své Search Console anonymizoval, abych mohl výstup publikovat. Když vynechám poslední řádek, budou weby normálně vidět.

websites |> 
  slice_sample(n = 10) |> 
  mutate(siteUrl = anonymize_site(siteUrl))

Neautorizované weby

Důležitý je sloupec permissionLevel. Mám v něm tyhle hodnoty:

websites |> 
  count(permissionLevel)

Zbavit se chci webů, ke kterým nemám povolený přístup. Vypíšu si je a raději je pečlivě zkontroluju (samozřejmě až odstraním anonymizaci na posledním řádku).

unverified_websites <- websites |> 
  filter(permissionLevel == "siteUnverifiedUser")

unverified_websites |> 
  mutate(siteUrl = anonymize_site(siteUrl))

Ze Search Console si je pak odstraním takto. Jen před tím přepíšu na prvním řádku FALSE na TRUE. Dal jsem to tam proto, abych si nechtěně nesmazal weby před tím, než si je zkontroluju.

if (FALSE) {
  unverified_websites |> 
    pull(siteUrl) |> 
    walk(delete_website)
}

Když to pustím, křičí to na mě nějaké warningy ohledně JSON. Asi je někde nějaká chybka, ale podle všeho ničemu nevadí a skript dělá to, co má. Každopádně si pak můžu ověřit, jestli už jsou všechny neverifikované weby pryč:

list_websites() |> 
  filter(permissionLevel == "siteUnverifiedUser")

Weby bez dat

Kromě neutorizovaných webů se chci zbavit i těch, které už dlouho nemají žádná data.

Nejdřív si definuju funkci, která načte souhrnné metriky jednoho webu za poslední dva roky. K výsledku přidám do prvního sloupce i URL webu, abych ho poznal, až jich bude v tabulce víc.

get_site_metrics <- function(site) {
  search_analytics(
    siteURL = site, 
    startDate = Sys.Date() - 365 * 2, 
    endDate = Sys.Date()
  ) |> 
    add_column(site = site, .before = 1)
}

Ověřím, zda funkce funguje.

get_site_metrics("http://www.marekp.cz/")

Funguje, takže ji mohu pomocí funkce map_dfr z balíčku purrr aplikovat na celý seznam webů, ke kterým mám autorizovaný přístup. S více weby to nějakou chvíli poběží.

all_site_metrics <- websites |> 
  filter(permissionLevel != "siteUnverifiedUser") |> 
  pull(siteUrl) |> 
  map_dfr(get_site_metrics)

A teď už jen vyfiltruju a zobrazím (opět anonymizovaně) weby, které nemají žádné imprese.

all_site_metrics |> 
  filter(impressions == 0) |> 
  mutate(site = anonymize_site(site))

Pokud je chci ze Search Console odebrat, udělám to podle návodu pro neautorizované weby výše.

A to je všechno :-)

Citation

For attribution, please cite this work as

Prokop (2022, April 10). Jak pracuju: Čístím Search Consoli od zbytečných webů. Retrieved from https://marekprokop.github.io/jak-pracuju/posts/2022-04-09-cistim-search-consoli/

BibTeX citation

@misc{prokop2022čístím,
  author = {Prokop, Marek},
  title = {Jak pracuju: Čístím Search Consoli od zbytečných webů},
  url = {https://marekprokop.github.io/jak-pracuju/posts/2022-04-09-cistim-search-consoli/},
  year = {2022}
}