All promptsAnalysis and reporting

Diagnose why a page is not ranking, and make the model admit what it cannot see

A ChatGPT prompt that lists every cause it cannot rule out from what you pasted before naming one, so you get a diagnosis instead of a confident guess.

Works in
ChatGPT, Claude, Gemini
You need
The full text of one page, headings included · The one query it is meant to rank for · Search Console rows for that URL, if you have them · The titles and URLs currently ranking, if you looked
Written for
chatgpt prompt for seo analysis
98A

Scored by our own engine

This page, run through the audit we sell. Measured 4 August 2026.

Score your own page →

Most SEO analysis prompts return a cause. That is the problem with them. Ask a model why a page is not ranking and it will produce a fluent, ordered, plausible explanation built out of the parts of your site it has never seen, because producing an answer is what it does. The prompt below makes the model publish its blind spots first, as a list, before it is allowed to name a single cause.

The failure mode is confidence, not ignorance

A model handed a page and a query does not know that it does not know. It has read thousands of SEO articles in which thin content, weak backlinks and poor intent match are the three causes, so it returns those three, ranked, with fixes attached. The output is indistinguishable in tone from a real diagnosis. Somebody then spends a fortnight rewriting a page that carried a noindex.

Making the limits an output rather than a caveat changes what you receive. Section A is the model saying, in your own case, which questions your inputs cannot answer and where you would go to answer them. That list is often the most useful thing on the screen, and it is the part no other prompt produces.

What page text can settle, and what it never will

Paste the full text of a page and the model can genuinely judge four things. Whether the structure holds. Whether the promise in the heading is kept below it. Whether the answer arrives before the third paragraph. Whether this is the type of page the query wants at all. Those are real readings of real evidence.

It cannot see one link pointing at your domain. It cannot see a manual action. It cannot see that the query has been quietly reassigned to a different kind of result over the last year. No input you can paste contains your off page position, which is why rule 1 forbids the model from estimating it rather than politely discouraging it. Left open, that is the gap plausible numbers rush into.

The distinction the Search Console rows buy you

Impressions without clicks and no impressions at all are the same complaint and opposite problems. The first means the page ranks somewhere a person can see it and the title loses the click, which is fixed in two lines of copy. The second means the page is not eligible for the query at all, and rewriting the copy does nothing.

Every diagnosis downstream depends on which of those two you are in, and only the export tells you. If you paste nothing else, paste that.

Before you act on any finding, settle the one cause that overrides all of them: run the URL through the indexability checker and confirm the page is allowed to be indexed. Then work back through the analysis prompts for whatever the output pointed you at next.

The prompt 574 words
You are a technical SEO analyst. I am going to give you one page and one query
it is meant to rank for. Your job is to diagnose why it does not rank, and to
be honest about the limits of the evidence I gave you.

You cannot see a live search results page. You cannot see my analytics. You
cannot see my backlinks, my domain's history, my competitors' links, or
anything Google knows and has not told me. Work only from what is below.

Do these two things in this order.

STEP ONE, before any diagnosis. List every cause of poor ranking that you
cannot rule in or out from what I gave you. For each one, name the single
thing I would have to check to settle it, and where I would check it. This
section goes first in your reply and it is not optional. If it is short, my
inputs were good. If it is long, say so plainly.

STEP TWO. Diagnose only what the evidence supports. Every finding must quote
or point at the specific text or data row I pasted. If you cannot point at
something I gave you, the finding belongs in step one instead.

Rules you must follow:

1. Do not estimate or assert domain authority, backlink counts, competitor
   link profiles, search volume, keyword difficulty or traffic. You have none
   of those and they cannot be inferred from page text. If a diagnosis depends
   on one, put it in step one and stop.
2. If I gave you Search Console rows, separate two very different situations
   and tell me which one I am in. Impressions with almost no clicks is a title
   and snippet problem, not a ranking problem. No impressions at all is an
   eligibility problem: indexing, targeting, or a page that does not match the
   query's intent. Say which, and say what it rules out.
3. If I gave you no Search Console data, say what you are therefore unable to
   distinguish, rather than reasoning as though the page has no impressions.
4. Judge intent match against the ranking results I pasted, if I pasted any.
   If I did not, say that intent match is unverified rather than assuming it.
5. Mark every finding as either observed, meaning you can quote my input for
   it, or inferred, meaning it is a reasonable reading that could be wrong.
   Never present an inference as an observation.
6. If two pieces of evidence contradict each other, say so and do not resolve
   it by picking the one that makes a tidier story.

Output in this order:

A. "What I cannot diagnose from this" as a list. Each line: the cause, why it
   is out of reach, and the one check that would settle it.
B. A markdown table of findings with these columns:
   Finding | What in my input shows it | Observed or inferred | Fix | Effort (hours, days, weeks)
C. The single check I should run next, and what each possible result of that
   check would rule out.

My business: [ONE SENTENCE ON WHAT YOU SELL AND TO WHOM]
The query this page is meant to rank for: [THE ONE QUERY]
Search Console rows for this URL: [PASTE QUERIES, IMPRESSIONS, CLICKS AND AVERAGE POSITION, OR WRITE "none"]
What currently ranks for that query: [PASTE THE TOP TITLES AND URLS YOU SEE, OR WRITE "none"]
The page: [PASTE THE FULL PAGE TEXT INCLUDING EVERY HEADING]

What to change

Everything in square brackets is yours to replace. Nothing else needs editing.

[ONE SENTENCE ON WHAT YOU SELL AND TO WHOM]
Sets what "matching intent" means for this page. "We sell payroll software to UK accountancy practices" tells the model that a query answered by a consumer explainer is a mismatch even when the words line up. Without it, the model grades the page against a generic reader who does not exist.
[THE ONE QUERY]
One query, not a list. A page failing on one query has one diagnosis; a page failing on nine usually has a targeting problem that a per query analysis hides. If you genuinely do not know which query the page targets, that is the finding and you can stop here.
[PASTE QUERIES, IMPRESSIONS, CLICKS AND AVERAGE POSITION, OR WRITE "none"]
The most valuable input on this list and the one people skip. Export the URL filtered view from Search Console and keep four columns. This is what separates "nobody sees it" from "everybody sees it and nobody clicks", which have nothing in common and no shared fix.
[PASTE THE TOP TITLES AND URLS YOU SEE, OR WRITE "none"]
Copy the first eight results for the query, titles and URLs only. It takes a minute and it is the only way the model can judge whether your page is the wrong type of page. If eight comparison tables rank and you wrote a product page, that is the answer and nothing on the page needed fixing.
[PASTE THE FULL PAGE TEXT INCLUDING EVERY HEADING]
Paste the visible text with the headings intact rather than giving the model a URL. Most assistants either cannot fetch the page or fetch a rendered version that differs from what a crawler gets, and the headings are what the analysis of structure and intent actually runs on.

How to run it

  1. 01
    Pick one page and one query

    Choose a single URL and the single query you believe it should win. This prompt gets vaguer with every extra query you add, because the causes stop being separable. Run it again for the next page rather than batching them.

  2. 02
    Paste the text, not the URL

    Copy the visible page text with every heading in place. Handing the model a link is the most common mistake here: some models cannot fetch it, some fetch a cached copy, and a fetched page arrives without the structure the analysis depends on. Pasting also guarantees you are analysing what you think you are.

  3. 03
    Export the Search Console rows for that URL

    In Search Console, filter by page, set the range to the last three months, and export queries with impressions, clicks and average position. This single input decides whether the answer is about ranking at all. Without it the model is guessing which half of the funnel is broken, and it will guess fluently.

  4. 04
    Copy the current top results by hand

    Search the query yourself and paste the first eight titles and URLs. No model can see a live SERP, so this is the only honest way it gets to judge whether your page is even the right type. Use a private window so your own history does not reshape the list.

  5. 05
    Read section A before section B

    The refusal list comes first for a reason. It tells you how much of the diagnosis is out of reach with the inputs you supplied, and a long list usually means you should go and get the Search Console export before acting on anything below it.

  6. 06
    Settle indexability before you rewrite anything

    A page carrying a noindex, or blocked in robots.txt, ranks for nothing regardless of how good the content is, and no amount of page text will reveal it to the model. Run the free indexability check on the URL first. It is the one cause that makes every other finding irrelevant.

Questions people ask

What is the best ChatGPT prompt for SEO analysis?

One that constrains the model to the evidence you actually gave it. A language model cannot see a live search results page, your analytics or your backlink profile, so a prompt that simply asks why a page is not ranking gets a confident answer assembled from nothing. Requiring the model to list what it cannot determine, before it names any cause, is what turns the output into analysis.

Can ChatGPT tell me why my page is not ranking?

It can rule things in and out from the page text, the query and your Search Console data, and it cannot see anything else. Off page causes, which include links, brand strength and how the domain has been treated historically, are outside what any pasted input contains. A model that names one of those as your cause is guessing.

Why does the prompt ask for Search Console data?

Because impressions with no clicks and no impressions at all are completely different problems. The first is a title and snippet failure on a page that is already ranking somewhere visible. The second means the page is not eligible, not indexed, or not matched to the query. Without that data the model cannot tell which one you have.

Should I give the model the URL instead of pasting the text?

Paste the text. Some assistants cannot fetch a page at all, some return a cached version, and a fetched page often arrives stripped of the heading structure the analysis runs on. Pasting also forces you to look at what is actually on the page, which occasionally ends the investigation on its own.

What causes can this prompt never diagnose?

Anything off page or historical: your backlink profile against your competitors, a manual action, an algorithmic adjustment applied to the domain, or the effect of brand searches you do not receive. It also cannot see a live results page unless you paste one in. Those belong in the refusal list at the top of the output, not in the findings.

A new prompt, most days One working prompt for a real SEO or AI visibility job, what to change in it, and a worked example. No sequences, no offers dressed as newsletters.

Unsubscribe in one click. We never pass your address on.

Run your first audit
in about a minute

Free account, no card. Paste your URL and get a real, scored report of your AI and search visibility.

Measuring rankings in