Content Strategy
New · Aug 20, 2026Find 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)
-
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
-
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
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
-
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
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
-
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
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
-
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
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
-
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
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
AI Visibility (LLM Listening)
See how the answer engines describe your brand — overall, per engine, and per place you serve — with the evidence behind every number.
Competitors
One curated competitor list per project — grounded in real ranking data, corrected by you, and reused by Keyword Opportunities, AI Visibility and reports.
Keyword Research Add-on
Discover keyword opportunities from GSC data and AI analysis on project SEO surfaces.
Billing & Subscriptions
Manage subscription tier, purchase credits, add-ons, and view billing history.