Skip to content
Content
Skill

/cf-aeo-check

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

From plugin
contentforge
2822 skills13 agents9 commands
Install
$ npx -y skills add indranilbanerjee/contentforge --skill cf-aeo-check --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/cf-aeo-check

Context preview

The summary Claude sees to decide when to auto-load this skill.

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

SKILL.md

cf-aeo-check.SKILL.md
name: cf-aeo-check
description: "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

Step 2: SERP + AI Overview probe (per query, 1-3 minutes total)

For each query, via web search: 1. **AI Overview present?** yes / no / unclear (record verbatim which sources are visibly cited when the search surface exposes them) 2. **Own-domain citation:** is the published piece (or its domain) among the cited/visible sources? `cited` / `visible-not-cited` / `absent` 3. **Competitor presence:** which Phase-1/Phase-2-era competitors (or new domains) hold the citations 4. **Organic position band** for the published URL where observable: top-3 / top-10 / beyond / not-found — a band, not a fake precise rank

Step 3: On-page extractability audit (30-60 seconds)

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`):

{
  "url": "...", "requirement_id": "REQ-001", "checked_at": "YYYY-MM-DD",
  "queries": [{"q": "...",
Read more
Ships withcontentforge

🌐 Read this in: English · हिन्दी · 中文 · 日本語 · 한국어 · Español · Português · العربية · اردو · தமிழ் · বাংলা · Русский You need to ship 30 articles this quarter that sound human, cite real sources, link into your funnel, and survive an editor who checks.

Get the whole plugin

Other skills on contentforge.