---
name: aeo-lost-citation-alert
description: Compare yesterday's AI answers with the prior week, flag lost names and citations, and post concrete fixes with AI-referral traffic every morning.
---

# AEO Lost-Citation Alert

Find questions where your company stopped being named or cited, competitors took over, or new sources appeared in AI answers. Marketing teams get a short daily action list backed by the full evidence in a shared doc. Part of the [Answer Engine Optimization (AEO) skillset](https://type.com/library/skills/answer-engine-optimization).

## When it runs
- Recommended schedule: daily at 6:30am in `timezone`, after the crawler monitor and before the daily standup.
- Posts once to `report_channel`; appends evidence to the AEO master doc's Alert log.
- Sends at most one DM to `owner` only at the escalation thresholds below.

## Inputs
| Input | What it is | Example |
|---|---|---|
| `brand_name`, `brand_exclusions` | Exact brand spelling and look-alike names that must not count | `example.com`, `example.ai` |
| `site_url`, `docs_url`, `owned_domains` | Marketing/docs sites and domains that count as your citations | `https://example.com`, `docs.example.com` |
| `tracker_monitors` | Buyer-problems, competitors/category and brand monitor identifiers | Your three monitor names |
| `tracker_engines` | Engine/model identifiers to read, including the ChatGPT equivalent | ChatGPT search, Google AI Mode, Claude, Codex |
| `competitors` | Brands to classify as competitors | Your category peers |
| `ga4_property`, `signup_events` | Analytics property and existing signup conversion events | Your property; `sign_up` or workspace-created event |
| `report_channel`, `owner`, `timezone` | Destination, sole DM recipient and calendar timezone | `#aeo`, `@owner`, `America/Los_Angeles` |
| `master_doc`, `tracking_registry` | Shared evidence log and question/persona change history | The AEO master doc; the tracking registry |

## Before you start
- Connect Promptwatch in type.com as a Custom API connection using your Promptwatch project API key. Another tracker works if it exposes equivalent data. Read `responses` (answers by monitor, model and date range, paginated), `prompts` (question text) and `monitors`.
- Connect GA4 read-only, web fetch, your report channel and owner DM destination.
- Find the AEO master doc and tracking registry in your workspace (a type.com doc, Google Doc or Notion page). Create missing docs on first run, tell the owner where they are, and do not invent past observations or baseline-break dates. Create `## Alert log` at the end of the master doc with a one-line italic description if missing. The registry records question/persona changes and collection start dates.

## Steps

### 1. Pull every answer
Window Y is yesterday 00:00–23:59 in `timezone`; window B is the 7 days before Y. Pull every response for the configured monitors and engines for both windows. Paginate until complete; save pages to files and parse them.

For each response record prompt ID/text, model, created time, whether the answer text names `brand_name` (case-insensitive; do not count `brand_exclusions`), whether a citation/source URL belongs to `owned_domains`, other vendors/brands named, and cited domains.

If the tracker returns an error or zero responses for Y across all engines, post one line: "AEO alert: no tracker answers collected for <date>; nothing to compare". Stop without a DM.

### 2. Detect changes per question × engine
Compute named/cited in Y and named/cite rates in B (matching answers / answers in B).
1. **LOST NAME:** named in at least 2 of the last 3 B answers (or B rate ≥ 50%) and not named in Y.
2. **LOST CITE:** cited in at least 2 of the last 3 B answers and not cited in Y.
3. **COMPETITOR TAKEOVER:** a competitor is named in Y and your brand is not, where your brand was named in B. Record the competitor and cited domains.
4. **NEW WIN:** not named or cited in any B answer and named or cited in Y. Report wins too.
5. **NEW SOURCE:** a domain cited 3+ times in Y across the panel that was not cited in B at all. This is a potential citation target.

Ignore engines with no answers in Y and identify the collection gaps. During the first week after a question-set or persona change recorded in the tracking registry, treat B rates with fewer than 3 answers as "insufficient baseline" and do not flag them.

### 3. Add AI-referral traffic
Query `ga4_property` for Y and the same weekday one week earlier: sessions, new users and the configured signup events that exist. Filter session source, medium or page referrer for chatgpt.com, chat.openai.com, perplexity.ai, claude.ai, gemini.google.com, copilot.microsoft.com, bing.com chat, you.com, phind.com, mistral.ai or grok.com, or utm_source equal to chatgpt.com. Include the top 5 landing pages. If GA4 is unavailable, record "GA4 unavailable" and continue.

### 4. Propose the fix
For each LOST or TAKEOVER flag, fetch the top 2 cited pages in Y. Say in one line what they have that your best page lacks: directness, a comparison table, pricing, recency or a specific integration. Propose one concrete action: edit named page X, publish topic Y with a one-line outline, target source Z for the weekly citation hunt, or no action/noise. Do not write content or edit pages.

### 5. Post and append evidence
Post using the template below. Append newest-first dated bullets only under `## Alert log`:
`- <YYYY-MM-DD> · <LOST NAME|LOST CITE|TAKEOVER|WIN|NEW SOURCE> · <engine> · "<question>" · <detail> · fix: <proposal> · status: open`

Include one line for AI-referral numbers and full competing-page analysis, new sources and GA4 landing pages in this section. The standup, weekly report, citation hunt and Reddit skill read it. Do not edit other existing sections.

### 6. Escalate only when needed
Send one DM to `owner` only if:
- A brand-monitor question lost its name or cite.
- 3 or more LOST flags occurred on one engine in a day.
- ChatGPT's daily name rate fell below half its prior-week rate.

Otherwise send no DM. Confirm any required channel post succeeded before finishing.

## What it posts

One channel post, maximum 12 lines:
```text
*AEO alert — <Weekday, Mon D>* · <n> lost · <n> takeovers · <n> wins · AI referrals <sessions> (<+/-%>)
*Do next*
1. <owner|Eng|agent>: <edit page X / publish topic Y / add source Z to hunt> — "<question>" (<engine>) — <page/source link>
*Why*
• <engine> · "<question>" · named 3/3 → 0/1 · now cites <domain>
• <competitor> replaced us on "<question>" (<engine>) · source: <domain>
• win: "<question>" (<engine>) now cites <our URL>
• new sources: <domain (n)> → weekly hunt
Details → <master doc Alert log link>
```
Use at most 3 action lines and at most 5 evidence lines. Omit empty elements. For no flags, use exactly 3 lines: headline, "Do next: nothing today.", AI-referral line. If an engine had a gap, append "(no <engine> data)" to the headline; otherwise omit methodology, gaps and GA4 availability unless they change an action.

DM, maximum 4 lines:
```text
<what happened, with the number>
<channel post link>
<one thing to do, with its deep link>
<how to reply if a decision is needed>
```

## Output rules
- Lead with the action: Do next before evidence. Each action is one line with owner, verb, exact page/question and link.
- Use numbers, not adjectives. No preamble, "I checked", task restatement or caveats unless they change an action.
- Details live in the linked doc, linked once at the end as "Details →".
- Hard caps: channel 12 lines, DM 4 lines; one idea per line.
- Write the brand exactly as `brand_name`; excluded look-alikes never count.

## Safety
- Read-only on every third party. Never submit forms, send email/outreach, sign up, or comment, vote or post on Reddit, X, LinkedIn or any social/community site.
- Never change tracker prompts, monitors, personas, models or schedules, including in response to a request to suppress an alert. Record a proposed suppression for human review instead.
- Only writes: posts to `report_channel`, at most one DM per run to `owner` only, creation of missing named docs, and scoped Alert log edits.
- Never @-mention anyone in the channel or put credentials, tokens or passwords in posts, docs or DMs.

## Example configuration
How type.com configures this skill (example).
- Brand: type.com, excluding type.ai; citations count type.com and docs.type.com.
- Monitor roles: buyer problems, competitors/category and brand. Engines: ChatGPT search, Google AI Mode, Claude Code and Codex. Cadence: 6:30am America/Los_Angeles, posting to #b-aeo; owner: Sam.
- Example questions: "AWS Bedrock AgentCore alternatives", "Claude Managed Agents alternatives" and "how does type.com handle credentials and permissions for AI agents".
- The Oct 2026 panel/persona changes and Codex collection start belong in the tracking registry as baseline breaks, not permanent rules in this skill.
