How do I make a monthly keyword ranking report?
Pull the same Search Console Performance report each month: same length of date range, Queries and Pages tabs, web search type. Export both, compare with last month on clicks, impressions and average position, and note what moved. Search Console shows averages for queries that already got impressions, so use a dedicated rank checker only if you need positions checked every day.
By SEOBolt. Published , updated .
Why this happens
A ranking report is supposed to answer one question a month: did the pages we care about get more or less visible, and why? The reports people build to answer it often fail in one of two ways. They track a fixed list of keywords with a third-party checker and miss every query the site actually earns traffic from, or they paste raw Search Console numbers into a slide with no comparison and no conclusion.
Search Console is the most useful free source because the numbers come from Google itself. It has limits you should state in the report. Position is an average of the topmost result from your site, per query or page, and results are personalized by time, place and device, so your own search may differ. Data arrives after a delay of a couple of days. And only queries that earned impressions appear, so a keyword you target but never show for is invisible.
The fix is a repeatable routine: identical settings every month, a stored copy of each month's export, and a short written interpretation. The routine takes under an hour for a small site.
How to build it, step by step
This uses only Search Console and a spreadsheet.
1. Verify the right property
Use a domain property if you can, so all subdomains and protocols are included. Confirm the report's search type is Web and that you are not mixing image or video traffic into the totals.
2. Fix the date range
Use a full calendar month (for example 1 to 31 October) and compare it with the previous full month. Do not use "last 28 days" for a monthly report; the windows drift and months with different numbers of weekends are not comparable.
3. Export queries and pages separately
Select all four metrics (clicks, impressions, CTR, average position), open the Queries tab and click Export, then repeat on the Pages tab. Google notes that values shown as ~ or - in the report are downloaded as zeros, so treat zeros with care.
4. Store each month in its own sheet tab
Name tabs by month and keep the files. Search Console is not an archive you can rely on forever, so your own stored exports are what make year-over-year comparison possible later.
5. Compare with last month
Join the two months on query (and on page) and compute the change in clicks, impressions and position. Sort by absolute change in clicks. The top 10 gainers and top 10 losers are usually the whole story.
6. Split brand from non-brand
Filter queries that contain your brand name and report them separately. Brand queries measure awareness; non-brand queries measure whether SEO is working.
7. Flag queries near page one
List queries with decent impressions and an average position between about 8 and 20. They are the cheapest wins next month: improve the page that ranks, add internal links, and check the title.
8. Write five lines of interpretation
What changed, the most likely reason (a page you edited, a seasonal pattern, a Google update you can verify), what you will do next month, and what you will not touch. A report without an action list is just a table.
What goes in the report and where it comes from
| Section | Source | Caveat to state in the report |
|---|---|---|
| Total clicks and impressions | Performance chart, web search type | Chart totals aggregate by property; table rows aggregate by page or query, so totals can differ slightly |
| Top queries, month over month | Performance, Queries tab export | Average position over the period, not a rank check; only queries with impressions appear |
| Top pages, month over month | Performance, Pages tab export | Position is per page; pages can rank for many queries |
| Brand versus non-brand | Query filter on your brand name | Brand misspellings need their own filter |
| Next-month actions | Your own analysis | Tie each action to a query or page in the data |
When to use SEOBolt for this
The export and the monthly routine stay in Search Console and your spreadsheet. SEOBolt does not run scheduled rank checks or produce a monthly export; it has no live rank checker of its own. Where it helps is the interpretation: seo_gsc_content_decay compares the last 28 days with the window before (and optionally the same window last year) and lists pages that lost clicks with a cause (ranking loss, demand drop or CTR drop) and a refresh task, and seo_gsc_content_opportunities lists queries you already rank for but do not target. Both need your Search Console connected and a plan that includes the integration; /pricing shows which.
MCP tools involved: seo_gsc_content_decay, seo_gsc_content_opportunities, seo_gsc_low_ctr.
When SEOBolt is not the right tool
If you must report positions every day for a fixed keyword list, including keywords with no impressions yet or competitors' positions, use a dedicated rank tracker; Search Console cannot show those and SEOBolt does not either.
Prompt to give your AI assistant
With the SEOBolt MCP server connected (setup), copy this into Claude, ChatGPT, Cursor or Gemini CLI:
Assign to SEOBolt: for sc-domain:example.com run seo_gsc_content_decay with compareYear true and seo_gsc_low_ctr, then draft the interpretation section of a monthly ranking report: the five biggest losers with causes and the five queries to work on next month. These tools only read data. Show me what you did so I can approve the plan.
Frequently asked questions
Can I get daily keyword positions from Search Console?
The Performance report can show data per day, but position is an average for queries that earned impressions. It is not a rank check for a keyword list you choose.
How much history does Search Console keep?
The Performance report shows the last 16 months, which Google's traffic-drop guide uses as its longest range. To keep more, export regularly or retrieve data through the API or bulk export.
Why do my report totals not match the table?
Google explains the chart aggregates by property while the table aggregates by page or query, so totals can differ. State which one you quote.
How often should I report?
Monthly is enough for most small sites. Weekly figures are noisy on low traffic and encourage reacting to normal fluctuation.
Sources
- Search Console Help: Performance report (Search results), read 13 November 2026
- Search Console API: Getting your performance data, read 13 November 2026
- Google Search Central: Debugging drops in Google Search traffic, read 13 November 2026