# Build a content brief with Claude, and make it checkable

A brief is the promise an article has to keep: who it answers, what the pages already ranking left out, which sections carry the answer and what evidence backs them. claude-seo builds one from today's SERP in a hundred seconds. seodraft stores it before the body exists, which is what lets the rules read the finished draft against it.

Claude SEO: do SEO inside Claude Code · Module 3 · 7 of 13 · 18 min

> This course is independent. It has no affiliation with Anthropic or with AgriciDaniel, who writes claude-seo, and nobody on their side reviewed it. Run with claude-seo v2.4.1 on 2026-10-03.

URL: https://seodraft.app/learn/claude-seo/content-brief-with-claude
Learn: https://seodraft.app/learn/claude-seo.md

## What you will be able to do

- List what a brief has to contain before a draft is worth starting.
- Read a generated brief and separate its measurements from its estimates.
- Store the brief so the rules can check the finished article against it.

A brief is the promise an article has to keep, written while you can still change it. It names who the page answers, what the pages ranking today cover and leave out, which sections carry the answer, and what evidence each claim leans on. On 2026-10-03 we ran claude-seo's brief command over one term and our own site: 100 seconds, 14 turns, five competing pages read and scored, six gaps, an outline with a word budget and a set of meta tags. This lesson walks that output, then shows what seodraft adds to it by storing the plan before the body exists, which is what turns a brief from a document into a check. Along the way the brief gets audited with its own standard, and it loses a point.

## What a brief has to contain before anybody writes

Eight things make a brief worth having, and an article is worth starting when all eight exist. Anything else on a brief template is decoration.

- The search intent and the page type it implies.
- The reader, in a sentence that says what they already know.
- What the ranking pages cover and what they leave out.
- The angle only you can take.
- The H2 outline, with the sentence each section opens with.
- The evidence behind each claim.
- The internal links in and out.
- The meta title and description.

The one most often skipped is the opening sentence per H2, and it is the one that does the most work. A heading is a promise and the first sentence under it is the payment; deciding that sentence while you are still reading the SERP is how a section stays on topic three hours later. It is also what makes the plan checkable by a machine, which the second half of this lesson depends on.

## Reading the brief our run returned

The brief opened with intent, and that decision shapes everything after it. Ours read the term as mixed, mostly informational with a commercial edge, and detected the page type as a blog post sitting as a spoke under a pillar. It described the reader as somebody who already uses an AI coding assistant and wants to hand over SEO work, at an intermediate level: they know what a language model is and have no idea how to govern an agent.

Then came the competitor table: five pages, each with its main H2 sections, an estimated length, a score out of 40 and its main gap. Their lengths were estimated at roughly 3,300, 4,200, 4,000, 4,300 and 3,000 words, averaging about 3,750, and their scores ran from 33/40 down to 22/40. The brief also flagged its own rule-break: the SERP for this term is almost entirely SEO tool vendors, which its exclusion rule says to filter out, and it kept them because they are real competitors for this site. A brief that tells you where it bent its own rule is worth more than one that reads as clean.

## The gaps are the part that earns the article

Six gaps came back, and they are the only section of a brief that can justify writing at all. Three were topic gaps: no competing page explained how to stop an agent before it publishes something invented, none mentioned that an autonomous writer can produce a second article for a keyword the site already covers, and none separated the cost of the agent subscription from the cost of search data and the tool. Two were depth gaps, on how the agent actually connects to a tool and on where an agent fails. One was a quality gap, which this lesson comes back to.

A gap list is a claim you can check, so check it. Open two of the five pages, search them for the thing the brief says is absent, and read what you find. Writing a section the SERP already covers well is how a 3,200-word draft becomes an afternoon that changed nothing, and the brief's own reading is the cheapest place for that error to live.

## An outline is a word budget with headings attached

The outline arrived as an H1, a slug, a target length of about 3,200 words and eight H2s with a word budget each: 250 words for the definition, 450 for what the thing can do, 450 for where it fails, 500 for the guardrails, 500 for the walkthrough, 300 for cost, 300 for the comparison and 300 for the FAQ, plus a 150-word intro and a 100-word conclusion. Two sections were marked as featured-snippet targets, one with a 40-to-50-word definition box and one as numbered steps.

The target sits under the competitor average on purpose, with the reasoning written next to it: the page wins on evidence depth rather than on length. That is the right shape for a budget. Per-section numbers stop an introduction from eating a section's worth of the budget, and a total that is lower than the competition is a decision somebody can argue with, which beats a round number nobody chose.

## People Also Ask is coverage, and an outline is an argument

Questions harvested from a SERP tell you what a reader arrives with, and that is all they tell you. Pasting them in order as H2s produces a page with no argument running through it, repeats the phrasing of a widget that changes week to week, and reads as assembled rather than written. The brief's own outline never does this: its eight H2s run definition, capability, failure, guardrails, walkthrough, cost, comparison, FAQ, which is an argument with a shape.

Cover the harvested questions inside the sections your angle already needs, and drop the ones the angle does not reach. Only the FAQ block takes questions close to verbatim, and ours capped it at four. seodraft's research tool returns People Also Ask, related queries and cited domains for exactly this use, and its own instructions say the same thing: those questions are coverage, and the ones outside your angle get dropped.

## seodraft saves the plan before the body

In seodraft the brief is a field on the draft, written with `upsert_post` before the body: intent, template, angle, at least three pieces of first-hand evidence, the H2 outline with each section's opening sentence, and the image slots the body will reference. It is a separate object from the paid SERP research, which reaches the agent as `serpBrief` and describes the competition instead of the plan.

Saving it first is what makes the rules possible. `run_gate` reads the finished article against the stored plan and names what failed: `brief-missing` when no plan was ever written, `evidence-unaccepted` when the plan leans on a piece the human has not approved, `evidence-unused` when a piece the plan named never reaches the text, `answer-first` on an H2 that opens with anything other than its answer. A plan written after the draft would agree with the draft by construction, and none of those four checks could exist.

## The evidence bank decides what the article may claim

Three accepted pieces of first-hand evidence are the floor, and the bank is where they live: a measured number, a named case, a mistake made, a credential. What the human said and the agent only transcribed arrives accepted; anything the agent inferred, measured or fetched waits as pending until a human accepts it. An article whose brief leans on a pending piece is blocked, which is how a figure nobody has vouched for stops being load-bearing.

Our brief asked for exactly this in its E-E-A-T section: at least three first-hand pieces, dated sources for external claims, a visible last-updated date, a disclosure when the article compares the author's own product, and real screenshots. It also added a line worth copying into your own standard: if the numbers do not exist yet, measure them before writing, and invent nothing.

## A brief that flags unsourced numbers can carry its own

The quality gap our brief recorded was that competitors publish time-saving figures with no source, that one ranking carries no date or methodology, and that none of the five shows a case with data. The same document presents five competitor lengths labelled "Est. Words" and five scores out of 40 from a rubric it applied itself. Those are readings, printed in the same table shape as a measurement, and the table does not say so.

Read that as a worked example rather than a failure. Every generated brief mixes three kinds of figure: what was counted, what the model estimated, and what it read off a page. Ask which is which before the brief leaves your screen, as lesson 5 asked of volume estimates, and write the provenance beside each number. Ours survives the question in good shape, because the label "Est." is right there; the scores are the part that would have fooled somebody in a hurry.

## What to carry into the draft

Settle three things before anybody writes: which H2 answers which question with which opening sentence, which three pieces of evidence are already accepted, and where every number in the brief came from. Store that as the draft's brief, so the rules check the article against the plan instead of against taste, and so a second person can read the plan and tell whether the article kept it.

Our run also left two findings on the desk that belong to the next stage: a cannibalization risk between the planned article and a post this site already published, and a fact about the product that two pages state differently. Both are a draft's problem now. That is where the course goes next, into writing with evidence that can be traced, and the feature page at [features/content-brief](/features/content-brief) shows what the stored plan looks like once it is in place.

## Steps

### Step 1 · Build the brief from today's SERP (claude-seo)

Run this inside Claude Code for one term you decided to own in lesson 6. The site argument matters: the command reads your sitemap first, so the internal links it proposes point at pages you have. Give it a term with one clear owner, because a brief for a term two of your pages share produces an article that fights one of them.

```
/seo content-brief <your keyword> https://your-site.com
```

What you should see: Intent and page type, a scored competitor table, content gaps, an outline with a word budget, meta tags, E-E-A-T requirements and internal links. Ours took 100 seconds over 14 turns and read the intent as mixed, mostly informational with a commercial edge.

### Step 2 · Audit the brief's own numbers (claude-seo)

Paste this as a prompt before you hand the brief to anybody. A brief mixes figures with different provenance on one page: word counts the model estimated by reading, scores it assigned with its own rubric, and figures it read off a competitor. The three look identical in a table and age very differently.

```
For every number in this brief, say whether it was counted, estimated or taken from a source, and name the source.
```

What you should see: A short list where most of the word counts are estimates. Ours labelled its competitor lengths "Est. Words" and scored each page out of 40 with its own rubric, which is the model's reading rather than a measurement.

### Step 3 · Add the paid SERP research (seodraft)

`research_topic` builds a citability brief for one question: People Also Ask, related queries, cited domains and an AI Overview check. It costs about USD 0.004 when the topic already carries measured metrics, or about USD 0.116 when it has to be measured first, and a brief built in the last 14 days comes back from storage for free. The SERP is always requested with the AI Overview load, so `aiOverviewRequested: true` beside `aiOverview: false` records that Google serves none for that query.

```
Run research_topic for this term and show me the People Also Ask questions, the cited domains and the AI Overview result.
```

What you should see: Questions and cited domains, stored on the topic. Our own run never got here: the seodraft MCP server answered 502 at the start of that session, so the brief in our evidence has a hand-searched SERP and no stored research behind it.

### Step 4 · Store the plan before the body (seodraft)

`upsert_post` writes the editorial plan as part of the draft, and the order is the point: intent and template read off the SERP, the angle the SERP does not cover, at least three pieces of first-hand evidence, the H2 outline with the sentence each section opens with, and the image slots the body will reference. This is a different object from the paid SERP research, which reaches the agent as `serpBrief`.

```
Save this as the brief with upsert_post: intent, template, angle, three evidence items, the H2 outline with its opening sentences, and the image slots.
```

What you should see: A draft that carries its plan. A draft with no brief, with fewer than three evidence items, or with evidence the article never uses is blocked by the rules, so the plan is a gate rather than a document.

### Step 5 · Check the article against its own brief (seodraft)

`run_gate` returns two layers in one list of findings. The package rules measure shape: lengths, headings, internal links, placeholders and cannibalization. The editorial rules measure the standard: a 3-to-14-sentence intro, every H2 opening with its answer, no filler from a bilingual blacklist, and the brief read against the finished text.

```
Run run_gate on this draft and show me every finding by rule.
```

What you should see: Rules named one by one. `brief-missing` fires when the plan was never written, `evidence-unaccepted` when the plan leans on a piece the human has not approved, `evidence-unused` when a piece never reaches the article, and `answer-first` on an H2 that opens with anything other than its answer.

## Checklist

- [ ] My brief names the intent and the page type it implies.
- [ ] I listed what the pages already ranking left out.
- [ ] Every H2 in my outline carries the sentence it opens with.
- [ ] I have three pieces of first-hand evidence, accepted in the bank.
- [ ] Every number in my brief says whether it was counted, estimated or sourced.

## Checkpoint

### Your research returns eleven People Also Ask questions. How many become H2s?

As many as your angle needs, which is usually two or three, and none of them verbatim. People Also Ask is a coverage list: it tells you which questions a reader arrives with, so the article can answer them where they come up. An outline built by pasting those questions in order has no argument running through it, repeats the phrasing of a widget that changes weekly, and reads as a page assembled by a machine. Cover them inside the sections your angle already needs, and drop the ones your angle does not reach.

### Why does seodraft insist the brief is saved before the body?

Because a plan written afterwards describes the article you produced, and the rules would have nothing to compare. With the plan stored first, the gate can check whether each H2 answers what it promised, whether the evidence the plan named reaches the finished text, and whether a piece the human never accepted is holding up a claim. That is where `brief-missing`, `evidence-unused` and `evidence-unaccepted` come from. The order also changes the writing: an outline whose sections carry their opening sentence is a decision you made while reading the SERP.

## What this lesson said

- A brief names the intent, the page type, the competitors, the gaps, the outline with its opening sentences, the evidence and the internal links.
- Our run returned all of that in 100 seconds: mixed intent, five competing pages averaging around 3,750 words, six gaps and a target of about 3,200 words.
- The brief argues for winning on evidence depth instead of length, and the gaps it found were control, cannibalization and what an agent actually costs.
- Most figures in a generated brief are the model's own estimates. Ours flagged a competitor for unsourced statistics while printing its own word counts as "Est.".
- seodraft stores the plan as the post's brief before the body, and the rules read the finished article against it: `brief-missing`, `evidence-unaccepted`, `evidence-unused`, `answer-first`.

## Questions

### What belongs in a content brief?

Eight things, and an article is worth starting when all eight exist: the search intent and the page type it implies, who the reader is, what the pages already ranking cover and leave out, the angle only you can take, the H2 outline with the sentence each section opens with, the evidence each claim leans on, the internal links in and out, and the meta title and description. Everything else on a brief template is decoration. Our run returned all eight for one term in 100 seconds.

### Does a longer article beat a shorter one?

Length is a consequence of coverage, and our own brief argued exactly that. It measured five competing pages at an estimated average of about 3,750 words and set its target at roughly 3,200, on the reasoning that the page wins on evidence depth. Word count is useful as a budget per section, so nobody writes an introduction the length of a section, and useless as a goal. Write the sections the brief asked for, then cut what the angle does not need.

### Can I use the brief claude-seo generated as my stored brief?

Use it as the research and write the stored plan yourself from it. The two objects answer different questions: the generated document describes the SERP and the competition, and the stored brief is the promise the rules will hold your draft to, which needs an angle, at least three accepted pieces of evidence and an opening sentence per H2. seodraft keeps them in separate fields for that reason. The /features/content-brief page shows the stored shape.

Next lesson: [E-E-A-T and your own evidence](https://seodraft.app/learn/claude-seo/eeat-evidence)
