Skip to main content
OnPageIQ Documentation

Content Strategy

New · Aug 20, 2026

Find what competitors publish, which buyer questions nobody owns, and what to change when an AI answer cites someone else.

What changed

This Week now carries a rewrite checklist: the pages an engine actually cited are fetched and compared against yours, and a majority feature yours lacks becomes one line of work on the page it applies to. Items close themselves when the page changes, finished work stays visible behind Show completed, and a page that has changed shows the date with plain counts either side — no percentage and no causal claim. A period that produced no checklist now names which of eight reasons applies instead of rendering an empty box. Research is no longer a placeholder: a teardown reads each confirmed competitor's sitemap, titles the whole inventory, reads a capped subset in full, and counts what they write about — with the credit cost shown before the button is pressed and the coverage stated on every panel. On as of 7 Sep 2026.

User goal

Come back once a week, see what moved and what to do about it, without reading a report.

Tier
Stripe add-on only — content_strategy_addon is deliberately absent from every tier features map in config/onpageiq.php
Nav label
Content Strategy
Route
/projects/{project}/content-strategy
Gates
content-strategy-addon content-strategy-addon

Prerequisites

  • content-strategy-addon active for the org (Stripe add-on; no tier grants it)
  • A finished site architecture crawl — workspace creation is gated on it, and Setup explains that rather than dead-ending

QA focus

  • Entitlement is per-org and enforced server-side; an unentitled org gets the upgrade page, not the tabs
  • Workspace creation stays blocked until a crawl has finished, and says so with the action that fixes it
  • A quiet week renders as a quiet week — not an empty page
  • Weekly work runs on its own queue lane (config content-strategy-addon.queue) so it never head-of-line blocks interactive AI Visibility runs
  • A period whose checklist has not been built says so — it must NOT render the "Nothing outstanding" success card, which is a claim about a measurement nobody took
  • Checklist items are keyed on (page, feature): one page cited for three questions is one item listing three questions, never three items
  • Every item carries how much of the evidence was readable; advice resting on two pages out of nine has to say so
  • The change line shows a date and two plain counts — never a percentage, a lift, or a verb joining them
  • No "after" count until at least two periods have been measured since the change; "too soon" and "the engines named nobody since" are different sentences
  • Page addresses are scheme-checked before being put in an href; a non-http(s) entity renders as text
  • Page re-reads run through ScheduledProjectWork, so archived and soft-deleted projects stop being fetched, and recurring work re-checks entitlement

Overview

Content Strategy is a weekly habit rather than a report: what competitors published, which buyer questions nobody owns yet, and what to change when an AI answer cites someone else.

The three tabs, and why they are separate

  • This Week — the landing tab and the reason to return. Action first, movement second, detail last, readable in about thirty seconds.
  • Research — the occasional tab: competitor teardowns, topic opportunities, content clusters. Kept apart because research changes monthly and would otherwise bury the weekly signal.
  • Setup — the once tab: create the workspace, then confirm competitors, approve the prompt set, and choose engines and cadence.

What the weekly loop actually measures

Each period every approved question is asked of the chosen engines, and the answer's reported source list is recorded — not URLs scraped from the prose. That distinction is the product: an engine that cites [1]/[2] and returns its sources separately would otherwise look like it cited nobody.

Citation is a rate over repeated observations, never a yes/no, and it is kept per (question, engine) — engines cite different sources, so a merged verdict would describe none of them.

Three outcomes that must never be confused:

  • Cited — your page is among the sources the engine named.
  • Not cited — the engine named its sources and yours was not among them. A real, actionable finding.
  • Not measured — the engine named nobody, or the run could not complete. A gap, never a zero.

Why it is Stripe-only

The add-on carries recurring per-org provider spend and the real weekly cost is still being measured. Adding a tier entry later is easy; withdrawing one is not.

Common issues & false alarms

  • Content Strategy tabs missing → the org does not hold the add-on; the upgrade page is the expected surface
  • Cannot create the workspace → no finished site architecture crawl yet; Setup links to the crawl that unblocks it
  • This Week looks empty → either a genuinely quiet week (it says so) or no run has completed for this project yet
  • Every question reads "Not measured" → the engines returned no source list, so nothing was eligible; this is a gap, not a score of zero
  • A competitor you confirmed reappears in the list → it was confirmed before the snapshot rebuilt; reload after confirming
  • "No checklist for this period yet" → the run finished but its checklist build has not; it normally follows within minutes, and a failed build says so on the next run instead
  • A checklist item you already did is still open → the auto-close pass runs when the page is next re-read, not the moment you publish; Mark done closes it immediately
  • A page shows a change date but no "after" count → fewer than two periods have been measured since, or the engines have named no sources since; the screen says which
  • A page address renders as plain text instead of a link → it is not http(s), so it is deliberately not made clickable

Interactive guide

Step of

All steps (reference)

  1. Step 1. Set up the workspace

    Open Setup and create the workspace. Creation is gated on a finished site architecture crawl — if one has not run, Setup says so and links to it rather than failing silently.

    What to do: Project → Content Strategy → Setup → Create workspace

    Where: content-strategy.setup

    Expected (pass)

    • Setup explains the crawl prerequisite when it is unmet
    • Workspace creation succeeds once a crawl has finished
  2. Step 2. Confirm who you actually compete with

    Setup offers candidates with the evidence behind each and you tick the ones that are right. Nothing is added without that tick. People reliably name the brand they measure themselves against rather than whoever is winning their buyers' questions, so a free-text box is the escape hatch here, not the front door.

    What to do: Project → Content Strategy → Setup → Competitors

    Where: content-strategy.setup

    Confirm who you actually compete with

    Expected (pass)

    • Each candidate names its evidence, and the three sources stay distinguishable: Local Rankings and Search results are observed, business profile is labelled "inferred, not observed"
    • "Cited for your questions" lists domains the engines actually cited when answering YOUR questions — the only source derived from what you are measured on
    • A confirmed rival stops being offered once the list rebuilds
    • Nothing to confirm reads as "nothing to confirm right now", never an empty box

    Negative cases (must fail safely)

    • A rival with no website can still be tracked by name, and the list says keyword comparison cannot include them
  3. Step 3. Read This Week

    This Week is the recurring visit: what changed, and what needs acting on. A quiet week is a legitimate outcome and is stated plainly.

    What to do: Project → Content Strategy

    Where: content-strategy.this-week

    Read This Week

    Expected (pass)

    • Actions first, then movement, then detail
    • A quiet week reads as quiet rather than broken
    • Each question shows a verdict per engine — cited, not cited, or not measured — never a merged score across engines
    • "Not measured" appears when the engine named no sources; it is a gap, not a zero

    Negative cases (must fail safely)

    • A failed or skipped run leaves a gap for that period rather than recording a zero citation rate
  4. Step 4. Work the rewrite checklist

    When an engine cites someone else, the pages it named are fetched and compared against yours. Where most of them carry something yours does not — a comparison table, an FAQ section, a named author, a materially longer treatment — that becomes one line of work, grouped by the page it applies to rather than by the question. Each line carries the count it came from and how much of the evidence could actually be read. Mark done, Snooze, or Not for us; finished work stays reachable behind Show completed, and items close themselves once the page carries what was asked for.

    What to do: Project → Content Strategy → What to change

    Where: content-strategy.this-week

    Work the rewrite checklist

    Expected (pass)

    • One page cited for several questions is ONE item that lists those questions, not one per question
    • Every item states its count ("4 of 5 cited pages have a comparison table; yours does not") and its coverage ("3 of 5 analysed directly, 2 characterised from the answer")
    • A page that has changed shows the date with plain counts either side — no percentage, and no verb joining them
    • Show completed (N) keeps finished work on the page; the number matches what the control reveals
    • A question that produced no checklist names its reason rather than leaving an empty box

    Negative cases (must fail safely)

    • A period whose checklist has not been built says exactly that — it must not claim you were cited
    • A viewer without manage permission sees the items but cannot mark them done
    • A page address that is not http(s) renders as text, never as a link
  5. Step 5. Run a teardown when you have time

    Research is the monthly-cadence tab, deliberately kept out of the weekly view. A teardown reads each confirmed competitor's sitemap, lists what they publish, reads the titles across the whole inventory, and reads a capped subset in full. It then counts what they write about. The price is shown on the button before you press it — this is the most expensive single thing the feature does, and it is charged on the click.

    What to do: Project → Content Strategy → Research → Run a teardown

    Where: content-strategy.research

    Run a teardown when you have time

    Expected (pass)

    • The credit cost and the competitor count appear beside the button, before it is pressed
    • Each topic states BOTH numbers separately — how many rivals cover it, and across how many pages
    • A coverage line says how many pages were listed, how many had titles, and how many were read in full
    • A competitor that could not be read carries the reason on its row, never a bare zero
    • A partial run is shown, not hidden — some rivals are always unreadable and the rest is still usable

    Negative cases (must fail safely)

    • No confirmed competitors → the button is replaced by a link to Setup, not offered at a price for work that cannot run
    • A run already in flight → the page says so instead of offering a second
    • A viewer without manage permission → no button, and the action refuses if called directly
  6. Step 6. Pick what to write next

    The teardown ends with two lists, and they are deliberately not one. Catch up is "your rivals cover this and you do not". Nobody is serving these is "there is demand and no vendor is answering it". They rest on different evidence — competitor pages on one side, search demand and unanswered questions on the other — so merging them would rank "four rivals beat you here" against "nobody serves this" as the same size of thing. Every line shows the counts it came from, and below them one short sentence of interpretation in a quieter style: it reads the counts and says what they mean for someone deciding what to write. It never supplies a count of its own, and it is not on the ranking path.

    What to do: Project → Content Strategy → Research → What to write next

    Where: content-strategy.research

    Pick what to write next

    Expected (pass)

    • Two separate columns — catch-up and whitespace evidence are never mixed into one ranked list
    • Every row carries its counts ("2 of your competitors cover this, across 19 of their pages"), and no row carries a score
    • The summary line states the cap when one applied ("2 more met the bar but fell outside the top 2") rather than stopping silently
    • The AI sentence sits below the counts, visually quieter, and states no number of its own
    • A column that could not be measured says so in words — it never prints a zero

    Negative cases (must fail safely)

    • No Google connection or no prompt set → the whitespace column says it has not been measured, NOT "nobody is serving anything"
    • A teardown that predates this feature → the section is absent rather than showing empty lists
    • The model unavailable or switched off → the counts still render, just without the sentences

Related guides