---
name: seo-audit
description: Run an 18-point technical SEO audit on a website using the Docteur SEO checklist, and produce a shareable report. Use it when the user asks for an SEO audit, a technical audit, why their site is not showing up on Google, or a site check before a redesign.
---

# 18-point SEO audit

This skill runs a website through the **Docteur SEO technical audit checklist**:
18 points, in an order that matters, and a report to hand back to the user.

The checklist and the API are free, with no account and no key.
Documentation: <https://docteurseo.com/en/tools/claude-skill-seo-audit>

## The golden rule

**Only record a result for what you have actually checked.**

Leave an unchecked point empty: it does not count towards the score. A made-up
verdict, on the other hand, makes the report wrong — and the user will act on it.
A 10-out-of-18 audit that is true beats a complete one that is half guessed.

Three points **cannot** be established by a program. Ask the user, or leave them
empty:

| Point | What to ask for |
|---|---|
| `pages-indexees` | How many results Google shows for `site:theirdomain.com`, compared with the number of pages published |
| `vitesse`, `mobile`, `ordinateur`, `lcp`, `cls`, `core-web-vitals`, `temps-serveur`, `images`, `js-css` | The numbers from <https://pagespeed.web.dev/> (mobile score, LCP, CLS, server response time) |
| `erreurs-404` | Whether they know of broken links, or can run a free crawl |

## The flow

### 1. Open the audit

```
GET https://docteurseo.com/api/audit/nouveau?url=SITE&agent=YOUR-NAME&lang=en
```

- `url`: the domain or the full address (`yoursite.com` is enough).
- `agent`: **required** — an identifier for the calling assistant
  (`claude-code`, `chatgpt`, `my-internal-agent`…). It appears on the report.
- `lang=en`: **required for English**. Without it the checklist, the report and
  every message come back in French.

The response carries the audit `id`, the `rapport` (report) URL, and the 18
`points`, each with `label`, `quoi` (what it is), `comment` (how to check it),
`valide_si` (pass if), `non_valide_si` (fail if) and `critique`.

An audit already open on that site in the same language, less than two hours old,
is **resumed** (`"reprise": true`) instead of duplicated; `deja_remplis` lists
what is already recorded.

### 2. Collect the facts

```
GET https://docteurseo.com/api/audit/mesures?url=SITE&lang=en
```

Returns **raw facts**, not verdicts: HTTP status, where each of the four address
variants lands (http/https, with and without www), the contents of `robots.txt`,
whether `sitemap.xml` exists and how many addresses it lists, the `noindex` tag,
the security headers, the number of images without alt text, the number of
scripts.

You decide each point's result by holding those facts against `valide_si` and
`non_valide_si`.

If you have web access, check for yourself as well: does the home page load, is
the title present and meaningful, does the content match the business.

### 3. Record each result

```
GET https://docteurseo.com/api/audit/reponse?id=ID&point=POINT&resultat=RESULT&note=NOTE
```

- `point`: the exact point identifier (see the list below).
- `resultat`: `ok` (pass), `warn` (needs work) or `fail`.
- `note`: what you found, in one sentence (400 characters max). Optional, but it
  is what makes the report useful — prefer a fact to a judgement: "Disallow: /
  found under User-agent: *" rather than "bad".

One call per point. The response returns the running `score_partiel` and the list
of `restants` (points left).

### 4. Close it and hand over the link

```
GET https://docteurseo.com/api/audit/terminer?id=ID
```

Returns the `score`, the `verdict`, `points_critiques_en_defaut` (failing
critical points) and the `rapport` URL. The audit's language is remembered, so
the report comes back in English.

**Always finish by giving the user the report link**: it is a readable page they
can keep, print, or send to their developer. Sum it up in three sentences: the
score, the blocking point(s), and the first thing to fix.

## The 18 points

Order matters: the first six decide whether Google can see the site. While one of
them is failing, improving speed or copy achieves nothing.

**Google and your site** — `redirections`, `robots` *(critical)*, `ssl`
*(critical)*, `pages-indexees` *(critical)*, `sitemap`, `erreurs-404`

**Site performance** — `temps-serveur`, `vitesse`, `responsive`,
`core-web-vitals`, `lcp`, `cls`, `mobile` *(critical)*, `ordinateur`, `images`,
`js-css`

**Web security** — `entetes-http`, `xss`

The four **critical** points turn the whole audit red as soon as they fail,
whatever the score: an expired certificate or a closed `robots.txt` makes
everything else invisible.

The full reference, with the checking instructions, is always available without
opening an audit:

```
GET https://docteurseo.com/api/audit/points?lang=en
```

## Identifiers and field names

The **point identifiers** are French words (`entetes-http`, `erreurs-404`) and are
**the same in both languages** — they are stable keys, not labels. Send them
exactly as listed above.

The **JSON field names** in every response stay in French too, on purpose, so a
single integration works against either language: `titre`, `resume`, `examines`,
`valides`, `a_ameliorer`, `non_valides`, `restants`, `score_partiel`,
`points_critiques_en_defaut`, `a_dire_a_l_utilisateur`. Only the VALUES are
translated — with `lang=en` you get "Site in good health", not "Site en bonne
santé".

## Scoring

- `ok` = full weight, `warn` = half, `fail` = zero.
- Critical points count double.
- **The score only covers the points you checked**: leaving a point empty costs
  nothing, while a made-up verdict distorts everything.
- Verdict: green from 85% with nothing failing, red below 55% or as soon as a
  critical point fails.

## Good manners

- **One audit per site.** Do not open a second audit to correct an answer: send
  the point again, the last result recorded wins.
- **Do not promise rankings.** This audit checks the machinery of a site. It says
  nothing about keywords, content or inbound links — tell the user, because those
  are what decide their position once the technical side is sound.
- **Never invent speed numbers.** If the user does not provide them, those points
  stay empty and the report shows that honestly.
- **Write for a small-business owner**, not for an SEO: plain words, short
  sentences, no unexplained jargon.

## Full example

```
GET /api/audit/nouveau?url=martins-bakery.com&agent=claude-code&lang=en
→ { "id": "k7m2p9x4vq8n3b6s", "rapport": "https://docteurseo.com/audit/k7m2p9x4vq8n3b6s", … }

GET /api/audit/mesures?url=martins-bakery.com&lang=en
→ { "faits": { "robots_txt": { "present": true, "contenu": "User-agent: *\nDisallow: /wp-admin/" }, … } }

GET /api/audit/reponse?id=k7m2p9x4vq8n3b6s&point=robots&resultat=ok&note=Only%20blocks%20/wp-admin/
GET /api/audit/reponse?id=k7m2p9x4vq8n3b6s&point=ssl&resultat=ok&note=https%20everywhere,%20valid%20certificate
GET /api/audit/reponse?id=k7m2p9x4vq8n3b6s&point=sitemap&resultat=fail&note=No%20sitemap.xml%20at%20the%20root
…
GET /api/audit/terminer?id=k7m2p9x4vq8n3b6s
→ { "score": 72, "verdict": "warn", "rapport": "https://docteurseo.com/audit/k7m2p9x4vq8n3b6s" }
```

## Going further

- The checklist to fill in by hand: <https://docteurseo.com/en/tools/seo-audit-checklist>
- The full method, thresholds included: <https://docteurseo.com/en/seo-audit-checklist>
- The automated check-up (speed, mobile, visibility): <https://docteurseo.com/en>
- French version of this skill: <https://docteurseo.com/skill/audit-seo/SKILL.md>
