River
Y CombinatorBacked by Y Combinator
FREE TEMPLATE

SEO Content Brief Template

Four documents and three sheets that tell a writer what page one is missing, plus the register that kills a topic when nothing is missing.

Free download  ·  No account needed

Brief Format

One brief, one piece, one page

Brief ID  ·  Target query  ·  Writer  ·  Reviewer  ·  Due

First half: what already exists

  1. The commission. Query, intent, reader, word target, dates, and the coverage decision between a new page, a refresh and a merge.
  2. What the reader is trying to do. What happened immediately before they typed the query, and what they need to do after reading.
  3. What currently ranks, and what it collectively establishes. Every competing result, then the consensus paragraph. This is the exclusion list.
  4. What our own site already says. Every URL of yours touching the query, with performance. Two of your own in one result set means merge.

Second half: what only this piece carries

5. The additive angle  ·  this section is a gate

Name the material, not the intention. The dataset you hold, the practitioner on the record, the primary source everybody else summarises, the real column names, the distinction the whole set collapses.

Empty here, the brief is not assigned. The topic is recorded as killed at brief stage with the reason, and that is a good outcome.

  1. Sources the writer must use. Named individually, with who holds each one.
  2. Structure. H2s in order, with the additive-angle section marked for the reviewer.
  3. Publication metadata. Byline, author page, title, description, slug, and the internal links in both directions.
  4. What this piece is not. The adjacent topics to leave alone, and where each is covered instead.

Hollowell has two blog posts about technician no-shows. One is 1,100 words at position 14, the other is 900 words at position 18, and they rank for the same query. Between them they earned 230 clicks in ninety days against 41,000 impressions. Both were briefed the same way: read the nine articles ranking for the term, list what they cover, cover all of it. Both writers did exactly that. Both briefs were complete.

A brief derived from the results already ranking is a specification to write the next version of them. Google's guidance on helpful content asks whether a piece avoids simply copying or rewriting those sources and instead provides substantial additional value, and whether it provides substantial value compared to other pages in search results. A coverage checklist built from those pages answers no to both before a word exists. The writer cannot fix it; the brief already decided.

So the current results go into the brief as the exclusion list. Section 3 records what the whole set already establishes, and the writer is told not to re-establish any of it. Section 5 names the material only this piece will carry, and a brief with an empty section 5 is not assigned. It installs into the marketing workspace, beside the Search Console keyword map and the rest of the template library. Send River a query, or take the files blank.

The section that stops a commission, and the sheet that proves it should

Section 5 filled strong and weak on the same topic, the Brief Register, and Performance by Brief.

Section 5: the additive angle

The same topic, briefed twice, two years apart. Fictional company: Hollowell, field-service scheduling software.

HW-006, briefed 26 months ago  ·  now position 14

“A more comprehensive and better structured guide to reducing no-shows, with our own product examples.”

Three intentions and no material. Every ranking result is also comprehensive, also structured, and also has product examples. Nothing here could not be written by any of the nine competitors that afternoon.

HW-014, briefed this cycle  ·  merge of two URLs

The three types of no-show, and the fact that the dispatch system cannot tell them apart.

  1. The taxonomy. Customer not present, technician outside the window, appointment never confirmed. Each with the signature that identifies it in a work-order export: an on-site timestamp with no completion, a completion outside the promised window, a status that never left scheduled.
  2. Why the split is invisible. Most systems record one disposition field and all three land in it as the same value. The piece shows the real columns and the query that separates them.
  3. Interview material. Forty minutes with a named operations lead who ran the split across 11,000 work orders and found the largest category was the third, which reversed the intervention they were about to fund.
  4. The mapping. All nine consensus interventions against the type each addresses, which makes visible that six of the nine address only the first.

Four pieces of named material. Checkable, useful on the first read, and not available to any competitor without doing the same work.

Brief Register

One row per topic. Four possible states, and one of them is a topic that never gets written.

IDTarget queryCoverageAdditive angleStrengthStatus
HW-014how to reduce technician no showsmerge 2 URLsThree no-show types; 11,000-row export; named interviewstrongassigned
HW-015field service scheduling softwarerefreshWhat the four systems actually export, from trial accounts we holdstrongassigned
HW-016technician utilisation rate formulanew pageThree vendor formulas for one metric, on one identical datasetstrongdraft in
HW-017field service management best practicesnew pageNothing found. No data, no interview, no distinction the set lacksnonekilled at brief stage
HW-018how to price a service callnew pageOur own anonymised pricing across 340 accountsstrongblocked on legal
HW-020dispatch vs scheduling softwarenew pageA distinction real in procurement, sourced from six of our RFPsmoderateassigned
HW-011appointment reminders that workmerge 2 URLsSuperseded: folded into HW-014 rather than refreshedn/aretired, redirected

HW-017 is the row the register exists for. High volume, obvious topic, and every result already covers the same ground. Declining it cost one paragraph. The previous attempt at it sits at position 31.

Blocked is not killed. A blocker carries the person who can clear it and what clearing it takes. A blocker with no owner becomes a kill at the next batch.

Queue order is angle strength, not search volume. An angle decays when somebody else publishes it; volume does not.

Performance by Brief

Published pieces read back against the briefs that produced them. The angle-free briefs stay in as the control.

IDAngle typeLandedPos.Clicks 90dCTRBylineReading
HW-009Own telemetryyes31,4207.6%namedWorked, and earns links
HW-013Own aggregate datayes76402.2%namedWorked; round 2 was our fault
HW-004Own aggregate datayes98802.1%no author pageHalf a signal, one page to fix
HW-012Named interviewsyes42100.9%namedRanks, nobody clicks: title problem
HW-006term coverage onlyno141900.6%noneThe control. Merged away.
HW-002term coverage onlyno31200.1%noneWhy HW-017 was killed
HW-016Comparative methodyestoo recent to judge, reread at 90 days

HW-012 is the cheapest fix in the set. Position 4 with a click-through rate a fifth of its neighbours is a title and description problem sitting on a piece that already works. No rewrite, no new commission.

The sheet grades briefs, not writers. HW-013 took two rounds because section 5 named an interview that fell through, so the Assignment Tracker records the cause as the brief. The writer flagged it on day three, which is the behaviour worth keeping.

A field that predicts nothing across the whole set gets removed from the format. Every field costs the person filling it in.

What's in the pack

01

Brief Format

Nine sections split into what already exists and what only this piece carries, with section 5 written as a gate rather than a field.

02

Worked Brief

One brief filled end to end, including the weak section 5 that produced a position-14 page shown next to the strong one that replaced it.

03

Brief Register

One row per topic with its coverage decision, its angle and its state, including the topics correctly declined before anybody was paid.

04

Assignment Tracker

Who has what, when it is due, and the cause of every extra round recorded as either the writer or the brief.

05

Performance by Brief

Published pieces read back against their briefs, with the angle-free ones kept in as the control group that makes the comparison mean something.

06

Writer Guidance

Sendable with a first brief, and pairs with a voice guide so a freelancer's first draft matches the house voice.

07

Review Standard

Six checks in an order that stops you line editing a draft that has no reason to be published, each finding tied to a brief section.

08

Publication metadata at brief time

Byline, author page and dates filled before assignment, using the properties Google's Article documentation recommends.

How to use it

  1. 1

    Open in River, or take it blank

    Open the pack in River and give it a query, or download the Word documents and CSV sheets and fill them in yourself.

  2. 2

    Let it read both sides

    The results currently ranking, and what your own domain already says about the same query. Sections 3 and 4 come back filled, and they decide what section 5 can be.

  3. 3

    Take the coverage decision

    New page, refresh, or merge. Two of your own URLs in one result set means neither wins, and that finding usually arrives before you asked for it.

  4. 4

    Assign it, or decline it

    A named angle with secured sources gets a writer and a date. An empty section 5 gets a register row and a reason, and nobody writes it.

Frequently asked questions

Is this template free?

Yes, and there is no account, no card and no email gate on the download. The optional half is Edit with AI: River reads the live results for your query, reads your own domain, and hands back sections 3, 4 and 5 filled. Other packs are in the template library.

How is this different from a brief out of an SEO tool?

Those tools derive their requirements from the pages already ranking, so a term list describes the competition rather than the piece. It is a useful late check for something obviously absent. It cannot tell you what to add, because every input came from what already exists.

What counts as an additive angle?

Named material. Data you hold and nobody else does. A practitioner on the record. A primary source everyone else cites through each other. The real column names in a real export. A distinction the whole result set collapses. One worked example carried end to end. A recording you already made holds most of these, and an article from a transcript indexes them.

What if a topic genuinely has nothing to add?

It gets a register row marked killed at brief stage, with what was checked and the finding that would change the answer. That is the register working. A topic declined costs one paragraph, and the alternative is paying for a piece that lands on page three. Where the topic already exists and is decaying, the content refresh pack decides whether a rewrite recovers it.

Do I have to fill all nine sections?

Yes, and it takes less time than it sounds because River fills the reading-heavy ones. An empty section is a decision nobody has made rather than a section that does not apply. The one that stops everything is section 5, and it stops the commission on purpose.

Will this work for writers who are not in-house?

It was built for them. Writer Guidance exists to be sent with a first brief, and it explains why the ranking results are an exclusion list rather than a checklist. Freelancers return generic drafts when nobody has told them which section is the deliverable. When the draft comes back, check it against this brief rather than a generic rubric.

What does Edit with AI actually do?

It signs you up, installs this pack as a private workspace, and starts on your first query. Send a keyword export, a calendar, an old brief or a single line somebody senior asked for, and the first brief comes back filled. For a whole cluster at once, the pillar and cluster build pack plans how the briefs link to each other first.

Find out what page one is actually missing

Take the Word documents and CSV sheets blank, or open this exact pack in River and give it one query and your domain.

Edit with AI