Search competitive gap matrix worksheet

One query, three to five ranking pages, ten to twenty rows. Mark Covered, Thin, Skipped, or Wrong, then sort every row into a decision.

One sheet per query. Search in a private window, write down the date and your location, and use only pages that match the same intent.

Read each page fully before you mark it. Headings alone hide thin sections.

No row leaves the sheet without a bucket. A matrix with no decision column is a spreadsheet, not a plan.

flowchart LR
    Q["One query"] --> P["3 to 5 pages"]
    P --> R["Rows and marks"]
    R --> B["Bucket"]
    B --> D["Decision"]

Setup

  • Primary query (exact phrase)
  • Intent in one sentence: “This query is hiring a page to ___.”
  • Date searched and location or device used
  • Our target URL (existing page to update, or proposed new slug)
  • Pages compared (3 to 5 URLs from the first page that match the intent)

Marks (use the same four every time)

MarkMeaningTypical decision
CoveredAnswered clearly and correctlyTable stakes if most pages have it
ThinA line or two, no method, example, or proofCandidate differentiator
SkippedNot on the pageCheck why. If all skip it, it may be our gain
WrongOutdated or contradicted by a primary sourceCorrection, with a source link

The grid (copy rows as needed)

Rows are things a reader would act on or be annoyed to find missing: topics, formats, evidence, decision help, freshness.

Row (what the reader needs)Page APage BPage COur pageBucket

Buckets and rules

BucketRuleWhere it goes
Table stakesMost rivals cover it. Readers would miss itShort section on the target page
DifferentiatorRivals are thin or silent. We can prove somethingCenter of the page, with a first-party block
CorrectionA claim conflicts with a primary sourceCited paragraph. Name the source, not the rival
Skip on purposeOff-intent or another URL’s jobNowhere. Write the reason
New URL candidateOwn intent, own next step, no sibling owns itOnly after the sibling test

Decisions

  • Each differentiator names its first-party block (screenshot, test, process, failure, client fact)
  • Each correction has a primary-source link
  • Each skipped row has a one-line reason
  • Sibling test done for any new URL candidate (search our own site first)
  • If the page exists: Search Console queries checked for rows with impressions and weak clicks
  • Brief updated with the final list before drafting

Related guides