How to think about AirOps AEO data — interpreting metrics, handling ambiguous asks, routing to the right agent.
Interprets AirOps AEO metrics, routes analysis between AI search and page performance agents, and provides actionable content recommendations.
/plugin marketplace add airopshq/airops-claude-plugin/plugin install AirOps@airops-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
AirOps tracks how AI search engines talk about a brand. The core idea:
There's also a page side — how each URL on the brand's site performs across AEO (AI citations), GSC (Google search), and GA4 (site analytics).
Everything hangs off a Brand Kit, which lives in a Workspace. You always need to find the right brand kit first.
| Domain | What it covers | Agent |
|---|---|---|
| AI search visibility | Prompts, answers, mentions, citations, competitors, share of voice | ai-search-analyst |
| Page performance | Page-level AEO + GSC + GA4 metrics, smart filters, optimization opportunities | page-analyst |
Delegate to the right agent. If a question spans both (e.g. "which pages are losing AI citations and also losing Google rankings?"), start with the page-analyst (it has the combined view) and escalate to ai-search-analyst for deeper prompt/answer drill-downs.
Prompts have a brand_mentioned field. When the brand is in the question
("What is AirOps?"), AI will almost always mention it — inflating metrics.
Default to non-branded (brand_mentioned: false) for all analysis.
Only include branded when:
If metrics look suspiciously high, check whether branded prompts are included.
Users often ask vague things. Here's how to route them:
/airops:refresh-content "url" or /airops:create-blog "keyword")Don't guess. A quick clarifying question saves a wrong analysis.
Mention rate is the primary metric for AI search visibility. It tells you whether AI is actually talking about the brand. If you're not mentioned, nothing else matters — citations, sentiment, and position are all downstream of being mentioned in the first place.
Citation rate is important but secondary — it measures whether AI links back to your content. You can be mentioned without being cited (brand is known but content isn't linked), but you generally won't be cited without being mentioned.
When reporting or analyzing:
| Pattern | What it means | Action |
|---|---|---|
| High mention, low citation | Brand is known but not linked to | Create more authoritative, linkable content so AI has something to cite |
| Low sentiment | AI talks about you negatively | Flag for messaging/PR review |
| Declining mention + stable citation | Losing mindshare but content still works | Brand awareness campaign needed |
| Declining citation + stable mention | Losing authority but still known | Content refresh — update outdated pages so AI trusts them again |
relative_volume_score (0-1) tells you how popular a prompt is. A prompt with
0.9 volume where you're not mentioned is a much bigger opportunity than one with
0.1 volume. Always factor in volume when prioritizing.
Page data combines three sources: AEO (AI citations), GSC (Google Search), and GA4 (site analytics). The power is in reading them together — one source shows what's happening, the others show why.
| Pattern | What it means | Action |
|---|---|---|
Losing AI citations (losing_ai_visibility) | AI is dropping references to this page | Content is going stale for AI. Refresh with current data, stats, examples. Check what AI is citing instead. |
Losing clicks, stable position (losing_clicks) | Ranking hasn't changed but fewer people click | Something else is eating clicks — likely AI overviews or featured snippets. Review meta title/description. Consider if AI is answering the query directly. |
Rankings slipping (rankings_slipping) | Position declining over time | Classic SEO issue — competitors may have fresher/better content. Audit and refresh. |
Almost page one (almost_page_one) | Ranking #11-20 | Quick win — small improvements could push to page 1. Strengthen content, add internal links, improve on-page SEO. |
Citation rate decline, stable SEO (citation_rate_decline) | AI losing faith in this page while Google still ranks it | Early warning. AI updates faster than Google. If AI drops you, Google may follow. Refresh content now before both decline. |
| AEO signal | GSC signal | GA4 signal | What's happening | What to do |
|---|---|---|---|---|
| Citations dropping | Clicks dropping | Traffic dropping | Everything is declining. This page is losing relevance across the board. | Major content refresh or rewrite. Check what competitors/citations are winning instead. |
| Citations dropping | Clicks stable | Traffic stable | AI is moving away from this page but Google still sends traffic. | The page works for traditional search but isn't structured for AI citation. Update to be more authoritative/quotable. |
| Citations stable | Clicks dropping | Traffic dropping | AI still cites you but Google traffic is falling. | Traditional SEO issue — position may be slipping, or AI overviews are taking clicks. Check position trend. |
| Citations rising | Clicks stable | Traffic rising | AI is sending you more traffic via citations. | This page is winning in AI search. Study what makes it work and replicate the pattern. |
| Citations stable | Clicks rising | Traffic rising | Google is sending more traffic, AI unchanged. | Traditional SEO win. Don't change what's working — focus AI optimization effort elsewhere. |
| No citations | High clicks | High traffic | Google loves this page but AI doesn't cite it. | Opportunity — optimize this high-traffic page to be more citable by AI (structured data, clear answers, authoritative framing). |
get_page_prompts to see which AI prompts cite the page. Are those prompts losing volume? Are competitors getting cited instead?You MUST check if a page already exists before suggesting ANY content action. This is a hard gate, not a suggestion. If you skip this step, you will recommend creating content that already exists — which is worse than recommending nothing.
For every keyword, topic, or content gap you identify:
list_pages — search by primary_keyword AND by url containing
relevant terms. Do both searches. Cast a wide net.folder_name to see if an entire section already existsA real check means you actually called list_pages with relevant filters and
reviewed the results. It does NOT mean:
Every recommendation needs its own check. If you're suggesting 5 pieces of content, that's 5 checks. No exceptions.
Suggesting "create a pillar page about X" when the brand already has one is embarrassing and erodes trust. The existing page might just need a refresh — updated stats, better structure for AI citation, stronger authority signals. Duplicate content also competes with itself in search rankings.
For each opportunity, run at least two of these:
list_pages filtered by primary_keyword matching the prompt's keywordlist_pages filtered by url containing relevant terms (e.g. URL contains "pricing" or "comparison")list_pages filtered by folder_name to scan an entire section (e.g. /blog/, /resources/, /guides/)When suggesting actions, point the user to a specific skill they can run. The user can invoke these directly — you can't run them yourself, but you can tell the user exactly what to type with the right inputs pre-filled.
| Situation | Recommendation | Suggest to user |
|---|---|---|
| Page exists, performing well | Leave it alone — focus effort elsewhere | (no action needed) |
| Page exists, losing citations or traffic | Refresh with current data, optimize for AI | /airops:refresh-content "<page-url>" |
| Page exists, no AI citations at all | Restructure for AI citability | /airops:refresh-content "<page-url>" |
| No page exists, high volume keyword (confirmed via search) | Create new content targeting this keyword | /airops:create-blog "<keyword>" |
| No page exists, low volume keyword | Deprioritize unless strategically important | (no action needed) |
| Comparing two competitors/products | Create comparison content | /airops:create-comparison "<brand-a>" "<brand-b>" |
| Multiple keywords in a category | Create a roundup or list | /airops:create-listicle "<topic>" |
Format your suggestions as ready-to-run commands with the actual keyword, URL, or topic filled in. The user should be able to copy and paste directly.
In your output, show your work. When recommending content creation, explicitly state that you checked for existing pages and what you searched for. Example:
"Searched
list_pagesfor keyword 'aeo tools' and URL containing 'aeo' — no existing page found. Recommend creating:/airops:create-blog "aeo tools""
Never recommend changes to root-level or home pages (e.g. example.com/,
example.com, www.example.com/). Even if their citation rate or traffic is
declining, suggesting edits to a homepage is not actionable advice — home pages
serve a different purpose than content pages, and their AI citation behavior is
driven by brand recognition, not content optimization.
When scanning list_pages results:
/ or empty)losing_ai_visibility),
skip it silently — it's noise, not signalThis applies to all recommendations: page-analyst findings, action grids,
"what should we work on" answers, and any suggested /airops:refresh-content commands.
Expert guidance for Next.js Cache Components and Partial Prerendering (PPR). **PROACTIVE ACTIVATION**: Use this skill automatically when working in Next.js projects that have `cacheComponents: true` in their next.config.ts/next.config.js. When this config is detected, proactively apply Cache Components patterns and best practices to all React Server Component implementations. **DETECTION**: At the start of a session in a Next.js project, check for `cacheComponents: true` in next.config. If enabled, this skill's patterns should guide all component authoring, data fetching, and caching decisions. **USE CASES**: Implementing 'use cache' directive, configuring cache lifetimes with cacheLife(), tagging cached data with cacheTag(), invalidating caches with updateTag()/revalidateTag(), optimizing static vs dynamic content boundaries, debugging cache issues, and reviewing Cache Component implementations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.