All promptsTechnical SEO

Run a technical SEO audit from a crawl export, without the generic checklist

A prompt that audits a real crawl export instead of reciting best practice. It groups findings by cause and names the column behind every one.

Works in
ChatGPT, Claude, Gemini
You need
A crawl export from Screaming Frog, Sitebulb or similar · One sentence on which pages make you money
Written for
chatgpt prompt for seo audit
98A

Scored by our own engine

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

Score your own page →

Ask an assistant to audit your website and it will tell you to fix your title tags, add schema and improve your Core Web Vitals. It has to. You gave it a URL and a question, so it answered from best practice rather than from your site. The prompt below audits a crawl export instead, and refuses to report anything it cannot trace back to a column in your data.

The naive version fails twice

The first failure is the generic checklist, and everybody recognises it. The second one is less obvious and does more damage: paste real data into a loose prompt and you get a row for every defective URL. Two hundred pages with no canonical become two hundred findings, which reads like a thorough audit and is actually one template bug printed two hundred times.

Rule 2 is the fix. Group by cause, count the URLs, name the template. An audit with nine findings and honest counts is something an engineer can act on in an afternoon. A spreadsheet with two hundred rows is something that gets forwarded and never opened.

The rule people delete

Rule 3 asks the model to list, before anything else, the checks it could not run because the column is missing. People cut it because it makes the report look incomplete.

It makes the report look incomplete because the report is incomplete. Without it, an audit that never examined redirect chains reads exactly like an audit that examined them and found nothing wrong. That is the single most expensive property a report can have, and it is the reason the same technical problem survives three consecutive audits at some companies.

Keep the rule. If the list of skipped checks is long, that is not the prompt failing. That is your export telling you which columns to add before the next crawl.

Where a crawl stops being enough

A crawl export tells you what the crawler received. It cannot tell you what a page looks like after JavaScript runs, whether an assistant can lift a clean answer out of it, or whether the page still behaves that way today. Confirm the findings that matter against the live page with the indexability checker before you brief anybody, because the difference between a stale export and a current one is a week of work aimed at a problem somebody already fixed.

The crawl is also only one of the areas a full audit covers. What an SEO audit actually checks lists the rest of them, including the ones that only exist once a page is rendered and read rather than fetched.

The prompt 455 words
You are a technical SEO auditor. I am going to paste rows from a crawl export.
Audit what is actually in the data and tell me what to fix first. Do not
produce a checklist of everything a website could have wrong.

Rules you must follow:

1. Every finding must name the column and the value it came from. If you
   cannot point at a column in the data I pasted, do not report the finding.
2. Group findings by cause, not by URL. Two hundred pages missing a canonical
   because one template omits it is one finding with a count of 200, not two
   hundred rows.
3. Before you audit anything, list the checks you cannot run because the
   column is not in my export, and name the column each one needs. Do not
   skip them silently.
4. Order findings by consequence, not by how many URLs they touch. A noindex
   on the template that takes payment outranks a thousand missing image alts,
   and you should say which template each pattern sits on.
5. Keep what the data proves separate from what it suggests. Anything you are
   inferring goes under "Worth checking" and never in the findings table.
6. Do not estimate traffic, revenue, rankings or percentage impact. There is
   no traffic data in a crawl export. Express severity as which templates are
   affected and how many URLs, nothing else.
7. If the rows I pasted look like a partial crawl, or the crawler stopped at a
   limit, say so and tell me the audit only covers what I sent.

Output a markdown table with these columns:
Finding | What the data shows, with column and value | URLs affected | Template or URL pattern | Severity | The fix

After the table, give me these three things in this order:
- The checks you could not run, and the column each one needs.
- Worth checking: what the data hints at but does not prove, one line each.
- The three fixes to do first, with one sentence each on why it is first and
  what has to change: a template, a redirect map, a server header, a plugin.

Constraints:
- Do not invent URLs. Every URL you name must appear in the rows I pasted.
- Do not report a count you did not derive from those rows.
- If a column is present but empty on most rows, tell me the column is empty
  rather than reporting every row as a failure of that check.

What the site is: [ONE SENTENCE ON THE SITE AND WHICH PAGES MAKE MONEY]
What produced this export: [CRAWLER NAME, AND WHETHER IT FINISHED OR HIT A LIMIT]
The export: [PASTE THE ROWS, HEADER ROW FIRST]

What to change

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

[ONE SENTENCE ON THE SITE AND WHICH PAGES MAKE MONEY]
This is what turns a list of defects into an ordered list. "We are a B2B SaaS, the /pricing and /demo pages convert and the blog does not" makes the model rank a noindex on /demo above 400 thin blog tags. Without it, everything is sorted by how many URLs it touches, which is almost the opposite of useful.
[CRAWLER NAME, AND WHETHER IT FINISHED OR HIT A LIMIT]
Say "Screaming Frog free, stopped at 500 URLs" or "Sitebulb, full crawl of 12,400 URLs". A model given a truncated crawl will happily audit it as though it were the whole site, and the conclusion "you have 40 orphan pages" means nothing if the crawl stopped before it reached the rest of them.
[PASTE THE ROWS, HEADER ROW FIRST]
The export itself, header row included, because the header is what rule 1 and rule 3 are read against. Trim to around twelve columns and paste as text rather than uploading the file, since some assistants summarise an attachment before they read it.

How to run it

  1. 01
    Export the crawl and cut it down to twelve columns

    Crawl the site, then export the internal HTML report and delete everything except Address, Status Code, Indexability, Indexability Status, Title 1, Title 1 Length, Meta Description 1, H1-1, Canonical Link Element 1, Word Count, Crawl Depth and Unique Inlinks. A full Screaming Frog export runs past 400 columns, and every extra column is one more thing for the model to reason about badly.

  2. 02
    Send it in sections rather than all at once

    Sort by URL and paste one directory at a time: the blog, then the product pages, then the rest. Template problems are what you are looking for and template problems live inside a directory, so splitting this way finds more than sending a random sample of the whole site would.

  3. 03
    Fill the three variables and run it

    Paste the prompt with your three inputs into ChatGPT, Claude or Gemini. Be honest in the second variable about whether the crawl completed, because that one line is what stops the model reporting a truncated crawl as a finished audit.

  4. 04
    Read the list of checks it could not run first

    That section is above the table for a reason and it is the part people skip. If it says it could not check response times, redirect chains or hreflang because those columns are missing, the audit you are holding is silent on them rather than clean on them. Re-export with the columns you care about and run it again.

  5. 05
    Verify two findings on the live page before you act

    Take the highest severity finding and open one affected URL in the indexability checker to confirm the live page still behaves the way the crawl said it did. Crawls go stale, staging headers get removed, and a model reading a two week old export cannot know that.

  6. 06
    Fix at the template, then recrawl to confirm the count moved

    Every finding grouped by cause should have a single place to fix it. Make the change, recrawl the same section, and check the count for that finding has gone to zero. If it has not, you fixed one page rather than the template.

Questions people ask

What is the best ChatGPT prompt for an SEO audit?

One that audits your data rather than describing what an audit contains. Asking a model to "audit my site" with no crawl attached returns a generic best practice checklist, because that is all it has. Paste a real crawl export and constrain the model to cite the column behind every finding, and the output becomes specific to your site.

Can ChatGPT audit a website by itself, from just the URL?

No. Most assistants either cannot fetch the page at all or fetch a single URL, so nothing they say about your redirects, your crawl depth or your other 5,000 pages is measured. Anything site wide in an answer produced from a URL alone was inferred, and inferred technical findings are wrong often enough to waste a sprint.

How many rows of a crawl export can I paste at once?

Fewer than you would like, which is why the prompt asks you to say whether the crawl was complete. Send one directory at a time and keep to around twelve columns. The failure mode is silent: a model that runs out of room drops rows without mentioning it, and the giveaway is a URL count in the output lower than the number you pasted.

Why does the prompt forbid estimating traffic impact?

Because a crawl export contains no traffic data, so any traffic figure in the output was invented. Asked to prioritise, a model with no numbers produces plausible looking ones, and a remediation plan justified by fabricated sessions is harder to unpick later than one with no numbers in it at all. Severity here is expressed as templates and URL counts, which are both in the data.

Does this replace a real audit tool?

No, it reads the output of one. The crawler finds the defects and this prompt does the triage: grouping by cause, ranking by consequence and naming what has to change. Our own engine runs 36 checks against a single page, which is the other half of the job, and neither one is a substitute for the other.

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