Say you run a small site about sourdough baking and you open Google Search Console. The Performance report says “how long to proof sourdough” earned 3,900 impressions in the last 90 days at an average position of 13.4, and 0.4% of those people clicked. Page two. You have a page for it, Google likes it well enough to show it 3,900 times, and almost nobody sees it.
That query is a striking distance keyword, a search you already rank for just off the top results, close enough that an edit can move it rather than a new page. Most sites have dozens. They sit in Search Console sorted by clicks, which is the one sort that hides them, because they have impressions and no clicks yet.
Finding the list is easy once your Search Console is connected to an agent. The mistake is treating it as one list. Half of it is on page one already, and those are click problems. The other half is on page two, and those are ranking problems. This guide is the workflow we use with the tool we build, ContextBolt SEO, which reads your Search Console and the live results page from inside Claude. Every step names what it costs.
- A striking distance keyword is a query you rank for between about position 5 and 20, with real impressions. The list is in your Search Console. It is not sorted to show you.
- Claude cannot see your rankings on its own. Connect your Search Console through MCP and it reads the real rows. ContextBolt SEO is a full SEO toolkit that runs inside the agent, returns your striking-distance queries for free, and pulls the live top ten for one credit.
- Split the list before you touch anything. Positions 5 to 10 are on page one, so the fix is the title and the snippet. Positions 11 to 20 are on page two, so the fix is content and links.
- Six steps. Pull the list, find the page behind each query, split and size, read the page above you, make the matching fix, verify it moved.
- A ten-query pass costs under 25 credits. The Search Console calls are free, and the 7-day free trial includes 100 credits.
What a striking distance keyword is, and why the list is two lists
The idea is old and the logic is sound. A page at position 14 has already done the hard part. Google has crawled it, indexed it, understood what it is about and decided it belongs in the top 20 for a query with real demand. Getting that page to position 8 is a smaller job than getting a new page from nowhere to position 8, and the impressions tell you the demand is there before you spend an hour on it.
What changed is where the line between page one and page two sits, and that it exists at all. Google ran continuous scroll on mobile from 2021 and on desktop from late 2022, which blurred the page break. In June 2024 it went back to ten results and a Next button on desktop, with mobile following. Page two is a real place again, and almost nobody goes there.
The click numbers make the point. Backlinko’s study of 4 million search results puts the first organic result at a 27.6% click-through rate, ten times the tenth result, and finds that 0.63% of searchers click anything on page two. So a query at position 7 and a query at position 14 are not neighbors on one list. They are in different rooms.
Positions 5 to 10, the click job: You are on page one. People see your result and pick another one. The fix is what they see, which is the title, the description and whether the first screen of your page answers the question. Sometimes it is not fixable from your side at all, because a feature sits above the results and takes the click, which is its own problem and we measured it on our own site.
Positions 11 to 20, the ranking job: You are on page two. Nobody sees your result, so the title does not matter yet. The fix is the page itself, the section it is missing, the internal links pointing at it, and the on-page problems that stop Google rating it above the page at 10. Then the title matters.
Here is the opinion this guide is built on. Half of every striking-distance list is not in striking distance. It is already there, on page one, losing the click. The standard advice for the whole list is “tweak the title”, and that is the right fix for the first half and close to useless for the second. Split first.
Why Claude cannot find them on its own
Ask Claude “what are my striking distance keywords” with nothing connected and it will ask for a screenshot, or read your sitemap and guess which pages might rank for what. It has no ranking data, no Search Console access and no idea what Google showed for any query last week. The guess will sound confident.
The fix is MCP, the open standard Anthropic introduced in late 2024 for connecting an agent to live data. Connect Claude to your Search Console through an MCP server and it stops guessing. It calls a tool, reads the real rows, and does the part it is good at, which is grouping a hundred queries, noticing which ones share a page, sizing the gain and drafting the edit.
That split holds for the rest of the guide. The tools fetch. Claude sorts, sizes and drafts. You decide what ships. The one-time setup is in connecting Search Console to an AI agent, and none of the Search Console steps below cost a credit once it is done.
Step 1: pull the list from your Search Console
In ContextBolt SEO the tool is search_console_quick_wins. It reads your connected property, keeps the queries with an average position between about 5 and 20, drops anything under a minimum impression count, and returns the top 15 by impressions. It costs no credits. The default window is 28 days. Ask for 90, because a query that sat at 12 for one week in a 28-day window may just be Google testing it, and three months smooths that out.
Copy this prompt
From my Search Console, find my striking distance queries over the
last 90 days: average position between 5 and 20, at least 50
impressions. Sort by impressions. Keep the full table in the
conversation. Drop my brand name and anything containing it.
The brand drop matters. Your brand name will rank at position 1 for its own query and at odd positions for every misspelling, and none of that is a striking-distance win. What is left on the sourdough site looks like this.
how long to proof sourdough pos 13.4 3,900 impr 0.4% CTR
dutch oven sourdough pos 17.9 5,200 impr 0.2% CTR
sourdough starter smells like acetone pos 6.8 2,400 impr 1.1% CTR
sourdough hydration calculator pos 11.2 1,600 impr 0.9% CTR
why is my sourdough gummy pos 8.1 1,900 impr 1.8% CTR
Fifteen rows is what the call returns and on most sites it is enough, because the point of the list is to act on it, not to admire it. If you run a site with thousands of pages and want the long tail, narrow the population rather than lengthening the list. Ask for the performance table through search_console_performance filtered to queries containing one topic at a time, “sourdough starter”, then “dutch oven”, up to 100 rows each, and have Claude apply the same position filter. That table comes back in Google’s order, which is by clicks, so let Claude re-sort it. Same data, same cost, one list per topic.
Step 2: find the page behind each query
The list is queries. A striking-distance fix happens on a page, so the next step attaches one URL to each row. For each query, run the performance tool broken down by page with a query filter. The filter is a “contains” match, so “proof sourdough” also catches “how long to proof sourdough overnight”, which is what you want.
Copy this prompt
For each query on the list, pull my Search Console data over 90 days
broken down by PAGE, filtered to queries containing that query.
Attach the URL earning most of the impressions to each query.
If two of my URLs each hold 15% or more of a query's impressions,
mark it SPLIT and set it aside. Show me the table: query, URL,
position, impressions, CTR.
Two things come out of this step. The first is the table you actually work from, one URL per query. The second is the SPLIT rows, and those leave this guide. A query where two of your own pages each earn a real share of the impressions is cannibalization, and pushing either page harder makes it worse. The keyword cannibalization guide uses the same per-page call to settle which URL should win, and you come back here once it has.
Step 3: split the list, then size it
Now the split. Anything at position 10 or better goes in the click bucket. Anything at 11 or worse goes in the ranking bucket. Then size each row by what you would gain, not by its impressions, because a 5,200-impression query at position 18 and a 1,900-impression query at position 8 are not worth the same effort.
For the sizing you need a click-through rate to aim at, and the honest source is your own site rather than a study. Search Console has it. Pull your top 100 queries, group them by position, and average the CTR in each group. That is your curve, on your queries, with your titles, and it already reflects whatever features tend to sit on your results pages.
Copy this prompt
Pull my top 100 queries over 90 days. Group them into
position buckets (1-3, 4-6, 7-10, 11-20) and give me the average CTR
for each bucket. That is my site's own click curve.
Then, for each striking distance query, estimate the clicks I would
gain by moving it to the top of the next bucket up. Tag rows at
position 10 or better CLICK and rows at 11 or worse RANK.
Rank the whole list by clicks gained.
On the sourdough site the curve comes back at roughly 18% for positions 1 to 3, 6% for 4 to 6, 2.5% for 7 to 10, and 0.5% for 11 to 20, which is the shape Backlinko’s numbers predict. The sized list looks like this.
| Query | Position | Bucket | Clicks now (90d) | Clicks at target position |
|---|---|---|---|---|
| dutch oven sourdough | 17.9 | RANK | 10 | ~130 (pos 7) |
| sourdough starter smells like acetone | 6.8 | CLICK | 26 | ~144 (pos 4) |
| how long to proof sourdough | 13.4 | RANK | 16 | ~98 (pos 7) |
| why is my sourdough gummy | 8.1 | CLICK | 34 | ~114 (pos 4) |
| sourdough hydration calculator | 11.2 | RANK | 14 | ~40 (pos 7) |
Read the two CLICK rows. The acetone query is at 6.8 with a 1.1% CTR, on a page where the site’s own curve says position 4 to 6 earns 6%. It is on page one and losing five clicks in six. No amount of ranking work fixes that, and one afternoon on the title and the first paragraph might. That is why the split comes before the sizing, and why the sizing is by clicks gained rather than impressions. By impressions the acetone query is third on the list. By gain it is within two clicks of the top, because a page-one click fix is worth more per impression than a page-two climb, and the proofing query, second by impressions, drops to third.
Keep about ten rows. The rest is a list for next quarter.
Step 4: read the page above you
Search Console tells you where you are. It does not tell you what is above you, or whether the slot you want is even winnable. For that you read the live results page, and this is the step that costs credits, so it runs on the shortlist rather than the full list.
Two tools, one credit each. serp_overview returns the top organic results for a query, with position, domain, title and URL. keyword_difficulty returns a difficulty score and, more usefully, the average referring domains of the pages already in the top ten, which is the real bar to clear. The full method for reading a results page is in SERP analysis with Claude, and the case for reading referring domains over the score is in keyword difficulty without Ahrefs. Here you want three things.
Copy this prompt
For each of my ten shortlisted queries, show me the live top 10 and
the keyword difficulty. For each one tell me:
1. What holds positions 1 to 3: a guide, a recipe, a forum thread, a
video, a product page. Does my page match that shape?
2. Whether anything sits above the organic results that would take the
click: an AI Overview, a featured snippet, a video block.
3. The average referring domains of the top 10, and how that compares
to my site. Flag any query where the gap is more than double.
Mark each query PUSH, RESHAPE or SKIP with one sentence of reasoning.
The three answers sort the shortlist for you.
Shape decides whether the page you have can win. If “dutch oven sourdough” is held at 1 to 3 by recipe cards with times and temperatures in the title, and your page is a 2,000-word essay on the history of Dutch ovens, that is a RESHAPE. Google is telling you what a page for that query looks like, and no title rewrite changes the shape.
Features decide whether a CLICK row is fixable. If the acetone query has an AI Overview answering it above the first result, your 1.1% may be the ceiling however good the title gets, and the honest move is to skip it. Google’s own definition of position explains why the number alone cannot tell you. An AI Overview occupies one position and every link inside it shares that number, so a page that is first organic under one reads as position 2, which looks like a rival page and is not one. Ads occupy no position at all, so a page reading position 1 can still sit under three of them. The number says a slot moved. The live page says what took it.
Authority decides whether a RANK row is worth the push this quarter. If the top ten averages 40 referring domains and your site has 12, the missing section and the internal links will help and probably will not be enough, and that query becomes a backlink job rather than an on-page one. If the top ten averages 8, push.
On the sourdough site, “how long to proof sourdough” comes back PUSH, held by guides that match the page, top ten averaging 11 referring domains, no feature on top. “Dutch oven sourdough” comes back RESHAPE. The acetone query comes back PUSH with a caveat, a People Also Ask block but no AI Overview, so the title still has a job to do.
Step 5: make the fix that matches the bucket
This is where the split pays off, because the two buckets get different work.
The click job, positions 5 to 10
Three edits, in order of how often they are the whole fix.
The title: Google writes its own title link when it thinks yours is a poor fit, and its title link documentation lists the page’s own title element first among the sources it reads. Make the title say the query’s words in the query’s order, then add the one thing the other nine results do not say. “Sourdough Starter Smells Like Acetone? It Is Hungry, Not Dead” beats “Troubleshooting Your Starter” for a searcher who typed the word acetone.
The description: Google’s snippet documentation says snippets are primarily created from the page content itself, with your meta description used when it describes the page better. So the paragraph that answers the question directly is the one that tends to end up in the snippet. Put it in the first screen, and write the description to match it.
The first screen: If the searcher clicks and the answer is 900 words down, they go back, and the next click goes elsewhere. Answer in the first paragraph, then explain.
Copy this prompt
For each CLICK query, read the page and the nine titles around it in
the live top 10. Draft a new title under 60 characters that uses the
query's words in order and adds one specific thing the others do not.
Draft a 150-character description that answers the query directly.
Show me the current first paragraph and a rewrite that answers the
query in the first two sentences. Do not change anything else.
The ranking job, positions 11 to 20
The title comes last here, because nobody on page two is reading it. Three edits, and they stack.
The missing section: Read the three pages above you and find what they cover that yours does not. For “how long to proof sourdough” it is usually a table of times by temperature and a section on the poke test, because every page in the top three has both. Add it as a real section with a heading, not a paragraph bolted on the end.
Internal links from your strongest pages: Your site’s best pages pass authority to whatever they link to, and most sites have never pointed them at the page that needs it. Pull your top 20 pages by clicks, find the ones where a link to the proofing page reads naturally, and add it with the query in the anchor. This is the cheapest ranking work on the list and it is free.
The on-page problems: A page at 14 sometimes has a reason. page_audit reads one URL for one credit and returns the issues worst first, title length, heading structure, thin sections, canonical, speed. The on-page audit guide covers what each finding means. Fix the top three and leave the rest.
Copy this prompt
For each RANK query: compare my page to the three pages above it in
the live top 10 and name the sections they have that mine does not.
Then pull my top 20 pages by clicks over 90 days and list the ones
where an internal link to my page would read naturally, with the
anchor text to use. Then audit my page and show me the top three
issues. Draft the missing section. Do not publish anything.
The last line is the rule for both buckets. Claude drafts. You read it, cut what is wrong, and ship it yourself. An agent with edit access to your site can prepare all of this, and the review is still yours, because the difference between a PUSH and a RESHAPE was a judgment call in Step 4 and the edits inherit it.
| Bucket | The problem | The fix | Sourdough example |
|---|---|---|---|
| CLICK, position 5 to 10 | Seen, not chosen | Title, description, first screen | Acetone page gets a title that says acetone |
| RANK, position 11 to 20 | Not seen | Missing section, internal links, page audit | Proofing page gets a time-by-temperature table and six links |
| RESHAPE, either position | Wrong kind of page | Rebuild to match the top three, or a new page | Dutch oven essay becomes a recipe with times |
| SKIP | Feature takes the click, or authority gap too wide | Leave it, note the reason | A query with an AI Overview on top |
Step 6: verify it moved
An edit Google has not recrawled has not happened yet. After the changes, check each edited URL with inspect_url, which reads its index status, last crawl date and the canonical Google has chosen, at no credit cost. You want a crawl date after your edit. If it has not been recrawled in two weeks, request indexing in Search Console and move on.
Then wait, and this is the part people skip. Search Console data lags two to three days, and a ranking change takes weeks to settle, so re-run the Step 1 pull after four to six weeks and compare.
Copy this prompt
Inspect these URLs I edited last month and tell me the last crawl
date for each. Then re-run my striking distance list over the last
28 days and compare it to the 90-day list we started from. For each
query I worked on: has the CTR moved, has the position moved, and
has it crossed from page two to page one?
The two buckets succeed differently, which is the last reason the split matters. A CLICK fix shows up as CTR rising at roughly the same position, the acetone query going from 1.1% to 4% at 6.5. A RANK fix shows up as the position crossing 10, the proofing query going from 13.4 to 8, and the CTR jumps on its own the day it crosses, because the page break is where the readers are. If a RANK query moved from 14 to 12 and stopped, the section helped and the ceiling was authority, and it goes on the backlink list with the reason written down.
The whole thing as one prompt
Once you have walked it by hand, the six steps collapse into one instruction. This is the version worth saving and running every quarter.
Copy this prompt
Run a striking distance check on my site from Search Console.
1. Pull my queries at average position 5 to 20 over 90 days with at
least 50 impressions, sorted by impressions. Drop my brand name.
2. For each query, break the data down by page and attach the URL.
Set aside any query where two of my URLs each hold 15% or more.
3. Build my site's own click curve from my top 100 queries by
position bucket. Tag each query CLICK (position 10 or better) or
RANK (11 or worse) and rank the list by clicks gained.
4. For the top 10, pull the live top 10 and the difficulty. Mark each
PUSH, RESHAPE or SKIP: shape match, features on top, referring
domain gap.
5. For each PUSH: CLICK rows get a title, description and first
paragraph draft. RANK rows get the missing section, internal link
suggestions from my top pages, and a page audit.
Tell me the credits this will cost before you start. Only steps 4 and
5 cost credits.
The last two lines are a habit worth keeping. The agent quotes the cost, you say go, and the Search Console half of the job stays free however long the list gets.
What it costs, in credits
Every tool above is a ContextBolt SEO tool with a fixed price, so the bill adds up before you start. The example is a pass that shortlists ten queries and pushes six of them.
| Step | Tool | Calls | Credits |
|---|---|---|---|
| Striking distance list | search_console_quick_wins | 1 | 0 |
| Page behind each query | search_console_performance | One per query, 15 | 0 |
| Your own click curve | search_console_performance | 1 | 0 |
| Live top 10 | serp_overview | One per shortlisted query, 10 | 10 |
| Difficulty and referring domains | keyword_difficulty | One per shortlisted query, 10 | 10 |
| Page audit | page_audit | One per RANK page pushed, 3 | 3 |
| Verify | inspect_url | One per edited URL, 6 | 0 |
| Total | 23 |
Twenty-three credits out of 1,000 a month on the $35 plan, and the 7-day free trial comes with 100, so the first pass and three more are covered before any money moves. The reason it is that cheap is structural. The list, the pages behind it and your own click curve are all in your Search Console, which is yours and costs nothing to read, and the paid steps are the live reads on the ten queries that turned out to matter. A tool that finds striking-distance keywords by estimating your rankings from a keyword index is paying for a worse version of a number Google gives you for free.
Running it with ContextBolt SEO
ContextBolt SEO is a hosted SEO MCP server. Start a 7-day free trial, paste one URL into Claude, Cursor, Codex or ChatGPT, connect your Google Search Console property once, and ask in plain language. Nothing to install and no data vendor account to fund. The Search Console and URL inspection tools above are the free half of the toolkit, sitting alongside keyword research, difficulty, live SERPs, site audits, backlinks and AI visibility checks. You do not pick a tool, you ask.
Every lookup saves automatically to your SEO Board, a live dashboard where the SERP reads and difficulty checks from this pass sit with the date they were pulled, and your connected Search Console data gets a daily snapshot. So the verify step next month starts from what you found, not from a fresh conversation, and the position you pushed from is on record. The shortlist itself is the conversation’s output, so paste it into wherever you track site work.
On the numbers, the honest framing is the one we hold everywhere. Your Search Console rows are Google’s own data about your site and they are exact. The live top ten is what Google returned at the moment of the call and can differ by location and device. The difficulty score and the referring-domain average are estimates from a large keyword index, decision-useful and directionally right, and the referring-domain line is the one to trust. The judgment calls, which bucket, which fix, PUSH or SKIP, are yours, and that is what you are reading the data for.
Where the check stops
Three limits, stated plainly.
Position is an average, and averages hide things. A query showing position 9 can be a page that sits at 4 on desktop and 14 on mobile, or at 3 in one country and 20 in another. Before you decide a CLICK row is a title problem, break it down by device and country. The performance tool does both for free, and a query that is a click job on one device and a ranking job on the other is not unusual.
A feature on top is not legible in the data. An AI Overview takes one position, so it shows up as your page sliding from 1 to 2, which reads like a rival outranking you and is not one, and ads take no position at all, so nothing in the number says three of them sit above your position 1. That is why Step 4 reads the live page rather than trusting the number. A CLICK row that will not move after a good title rewrite has usually met one, and the click-loss guide is where that goes.
Never automate the edit. The check can and should run on a schedule, the way the SEO automation guide sets it up, and a monthly list of new striking-distance queries in your inbox is worth having. The edit is a decision a person makes after reading the page above them, because a RESHAPE done as a title tweak wastes the quarter and a PUSH done as a rebuild throws away a page that was nearly there.
What you are left with is a short list, usually ten queries, each with its page, its bucket, what sits above it, and a drafted fix with the reason it should work. That is a week of the highest-return SEO work on your site laid out from one conversation, on pages Google already likes. ContextBolt SEO starts with a 7-day free trial, so the first pass costs nothing.