|

Jak szybko sprawdzić, jakie frazy “wypadły” z Google Search Console

Google Search Console w UI trzyma dane maks. ~16 miesięcy i często nie pozwala wygodnie porównywać okresów tak, jak chcesz. Jeśli masz eksport GSC do BigQuery, możesz analizować historię dłużej i robić porównania “tydzień do tygodnia” bez stresu.

Ten snippet odpowiada na proste pytanie: jakie zapytania (queries) były obecne w poprzednim tygodniu, ale nie pojawiły się w tygodniu bieżącym. Dodatkowo pokazuje kliki i wyświetlenia dla tych “utraconych” fraz w poprzednim tygodniu — dzięki temu od razu widzisz, które straty są istotne.

Co dokładnie robi ta logika

  • bierze dane z tabeli searchdata_url_impression,
  • wyciąga unikalne frazy z poprzedniego tygodnia,
  • odejmuje (EXCEPT DISTINCT) unikalne frazy z bieżącego tygodnia,
  • filtruje tylko te utracone frazy,
  • sumuje clicksimpressions dla poprzedniego tygodnia,
  • sortuje po impressions (żeby na górze były “większe” tematy).

Kiedy to ma sens biznesowo

  • gdy widzisz spadki widoczności i chcesz szybko znaleźć “co zniknęło”,
  • gdy podejrzewasz zmiany w SERP (np. AI Overviews), sezonowość lub update,
  • gdy chcesz odsiać szum: utrata long taila bywa neutralna, ale utrata fraz z dużymi impressions często boli.

Na przykładzie porównania fraz tydzień do zeszłego tygodnia:

## See which queries you lost compared to last week

SELECT
  last_week.query,
  SUM(last_week.clicks) AS total_clicks_last_week,
  SUM(last_week.impressions) AS total_impressions_last_week
FROM
  `project_name.dataset_name.searchdata_url_impression` AS last_week
WHERE
  DATE_TRUNC(last_week.data_date, WEEK) = DATE_SUB(DATE_TRUNC(CURRENT_DATE(), WEEK), INTERVAL 1 WEEK)
  AND last_week.query IN (
    SELECT
      DISTINCT prev_week.query
    FROM
      `project_name.dataset_name.searchdata_url_impression` AS prev_week
    WHERE
      DATE_TRUNC(prev_week.data_date, WEEK) = DATE_SUB(DATE_TRUNC(CURRENT_DATE(), WEEK), INTERVAL 1 WEEK)
    EXCEPT DISTINCT
    SELECT
      DISTINCT curr_week.query
    FROM
      `project_name.dataset_name.searchdata_url_impression` AS curr_week
    WHERE
      DATE_TRUNC(curr_week.data_date, WEEK) = DATE_TRUNC(CURRENT_DATE(), WEEK)
  )
GROUP BY
  last_week.query
ORDER BY
  total_impressions_last_week DESC;

Jak to ulepszyć (praktycznie, bez przekombinowania)

1) Zmień okres porównania na bardziej “stabilny”

Porównanie tydzień do tygodnia jest szybkie, ale bywa szumne. Często lepiej:

  • ostatnie 7 dni vs poprzednie 7 dni (rolling),
  • albo ten tydzień vs ten sam tydzień rok temu (sezonowość).

2) Dodaj próg, żeby odsiać long tail

Jeśli chcesz skupić się na realnym wpływie:

  • filtruj po total_impressions_last_week >= X
  • albo total_clicks_last_week >= Y

3) Rozszerz wynik o URL / stronę docelową

Jeśli analizujesz przyczynę spadków, zwykle chcesz wiedzieć:

  • na jakich stronach te frazy działały,
  • czy problem dotyczy konkretnej sekcji serwisu.

Wtedy dorzucasz do SELECT np. url i grupujesz po (query, url).

4) Pamiętaj o definicji “utraconej frazy”

To jest “utrata” w sensie: fraza nie wystąpiła w danych w danym tygodniu (0 impressions).
To nie musi oznaczać kary czy problemu technicznego — czasem to normalna fluktuacja.

Podobne wpisy