Post-publication AI-visibility check — re-probes target queries via web search, records whether the published piece is cited in Google AI Overviews, audits on-page extractability (definition block, dates, schema, structures) via web fetch, and appends every check to per-brand history so deltas are tracked over time. Triggers on "/contentforge:cf-aeo-check", "is our article cited in AI Overviews", "did we earn AI citations", "check AEO for this URL", "why is a competitor cited instead of us". Measures Google-observable signals only (no ChatGPT/Perplexity probing unless an AEO-tracking connector is present, and then labeled); closes the loop /contentforge:cf-brief opens and routes absent verdicts to /contentforge:content-refresh with evidence. Reports and records — it does not edit or republish the page.
Post-publication AI-visibility check — re-probes target queries via web search, records whether the published piece is cited in Google AI Overviews, audits on-page extractability (definition block, dates, schema, structures) via web fetch, and appends every check to per-brand history so deltas are tracked over time. Triggers on "/contentforge:cf-aeo-check", "is our article cited in AI Overviews", "did we earn AI citations", "check AEO for this URL", "why is a competitor cited instead of us". Measures Google-observable signals only (no ChatGPT/Perplexity probing unless an AEO-tracking connector is present, and then labeled); closes the loop /contentforge:cf-brief opens and routes absent verdicts to /contentforge:content-refresh with evidence. Reports and records — it does not edit or republish the page.
argument-hint
[published URL or REQ-ID]
effort
medium
AEO Citation Check — Post-Publication
Close the loop that /contentforge:cf-brief opens. The brief checks AI Overview presence and citation patterns before production; this skill verifies — after publication — whether the piece actually earned citations, tracks the trend across re-checks, and routes losses to /contentforge:content-refresh with specific evidence.
Honest scope — read before promising anything
What this skill measures directly: Google SERP state for the target queries via web search (AI Overview present? which domains are cited/visible? does the piece rank?), and on-page extractability of the published URL via web fetch (definition block intact, dates visible, schema present, metrics tables surviving the CMS).
What it cannot measure directly: citations inside ChatGPT, Perplexity, Gemini or Copilot answers — there is no public API for "was I cited," and probing chat UIs is not reproducible. Cross-engine measurement needs a third-party tracker (Profound, Otterly, Conductor AgentStack, HubSpot AEO — same list the Phase 6 optimizer names). If such a connector is available in the tool list, use it and label the data's source; if not, say plainly that engine coverage is Google-observable-only. Never present an estimate as a measurement.
When to Use
Use /contentforge:cf-aeo-check when:
A piece published 2+ weeks ago and you want to know if AI engines are citing it (earlier checks mostly measure indexing lag, not merit)
You're deciding which content to refresh and want citation evidence, not hunches
A competitor appears in AI Overviews for your target query and you want the delta documented
You want a standing citation scoreboard per brand across re-checks
Not for: pre-production research (that's /contentforge:cf-brief), rank tracking as a discipline (this is a citation check, not a rank tracker), or measuring engines it cannot observe (see Honest scope).
Required Inputs
Minimum required (one of):
Published URL — the live page to check
Requirement ID (e.g., REQ-001) — resolved via the brand's tracking backend to the published URL recorded at completion; fails with a clear message if no URL was recorded
Optional:
Brand — brand profile (auto-detected from the tracking record when using REQ-ID)
Queries — comma-separated override of the queries to probe. Default: primary keyword + top 3 question keywords, recovered from the run's phase-6-seo.md (preferred) or the brief; if neither exists, derive 3-5 natural queries from the page's H1/H2s and say so. Also fold in any FAQ-disposition questions from the Phase 7 review report — the questions the reviewer found readers silently asking are the closest thing to real query data the pipeline produces, and they are exactly what answer engines get asked
--compare — show deltas vs the previous check (default when history exists)
How to Use
/contentforge:cf-aeo-check https://acme.com/blog/ai-in-healthcare-2026
/contentforge:cf-aeo-check REQ-001 --brand=AcmeMed
/contentforge:cf-aeo-check REQ-001 --queries="ai diagnostics accuracy,is AI better than radiologists"
What Happens
Step 1: Resolve target + queries (10-20 seconds)
Resolve REQ-ID → published URL via the tracking backend (local / google_sheets / airtable)
Assemble the query set (see Required Inputs); record which source the queries came from — scorecard honesty rule: derived queries are labeled derived, never passed off as the brief's targets
Web-fetch the published URL and verify the machine-liftable elements survived the CMS:
Definition sentence within the first 150 words — intact?
Publication + last-updated dates visible?
Structured elements (tables, numbered steps, Q&A headers) from the phase-6 structure manifest — still present in the rendered page?
Article/Person schema in the page source — present? (CMSes routinely strip JSON-LD; this is the #1 silent AEO regression)
Author byline with credentials — rendered?
Step 4: Record + delta (10 seconds)
Append the check to ~/.claude-marketing/{brand-slug}/aeo/checks.json (same storage-resolution rules as every other artifact — $CLAUDE_MARKETING_HOME → $CLAUDE_PLUGIN_DATA → ~/.claude-marketing):
If history exists, compute deltas per query (gained / lost / unchanged citation status) and flag any extractability regression since the last check.
Step 5: Report + routing
Render the AEO Check Report: per-query table, extractability checklist, deltas, and one recommended action:
cited and holding → re-check in 6-12 weeks, no action
visible-not-cited → extractability fixes first (they're free): restore stripped schema, tighten the definition block — then re-check in 2-4 weeks
absent while competitors are cited → route to /contentforge:content-refresh with the specific gap evidence (which domains are cited and what they have that the piece lacks)
Extractability regression (schema stripped, structures flattened by the CMS) → fix at the CMS level; note that /contentforge:cf-publish post-publish verification would have caught this at publish time
Cadence recommendation: check at ~2, ~6 and ~12 weeks post-publication, then quarterly. Record every check — the trend is the product.
Output Example
SYNTHETIC EXAMPLE — fabricated for illustration; never reuse these domains or results.
AEO CITATION CHECK — acme.com/blog/ai-in-healthcare-2026
Checked: 2026-07-30 | Previous: 2026-07-02 | Engine coverage: google-only
| Query | AIO | Own citation | Δ vs last | Cited domains |
|--------------------------------------|-----|---------------------|------------|----------------------|
| ai diagnostics precision medicine | yes | cited | ▲ gained | acme.com, nih.gov |
| how accurate is AI diagnosis | yes | visible-not-cited | = unchanged| examplehealth.com |
| ai diagnostic tools for hospitals | no | — (top-10 organic) | = unchanged| — |
Extractability: definition ✓ | dates ✓ | structures 5/5 ✓ | schema ✗ (JSON-LD stripped by CMS) | byline ✓
Action: schema was present at publish and is now missing — restore Article+Person
JSON-LD in the CMS template, then re-check query 2 in ~3 weeks.
Limitations
Google-observable signals only, unless an AEO-tracking connector is present (then per-connector coverage, labeled)
AI Overview composition varies by location/session — single probes are evidence, not ground truth; the multi-check trend is the reliable signal
A citation today is not a citation tomorrow; that is why checks append to history instead of overwriting
Related Skills
/contentforge:cf-brief — the pre-production half of this loop (AI Overview presence + citation-worthiness plan)