{"skill":{"slug":"aeo-analytics-free","displayName":"AEO Analytics Free","summary":"Track AI visibility — measure whether a brand is mentioned and cited by AI assistants (Gemini, ChatGPT, Perplexity) for target prompts. Runs scans, tracks me...","description":"---\nname: aeo-analytics-free\ndescription: >\n  Track AI visibility — measure whether a brand is mentioned and cited by AI assistants\n  (Gemini, ChatGPT, Perplexity) for target prompts. Runs scans, tracks mention/citation\n  rates over time, detects trends, and identifies opportunities. Uses Gemini API free tier\n  (with grounding) as primary method, web search as fallback.\n  Use when a user wants to: check if AI models mention their brand, track AI citation\n  changes over time, measure AEO content effectiveness, monitor competitor AI visibility,\n  or audit their brand's presence in AI-generated answers.\n  Pairs with aeo-prompt-research-free (identifies prompts) and aeo-content-free\n  (creates/refreshes content). This skill closes the loop by measuring results.\n---\n\n# AEO Analytics (Free)\n\n> **Source:** [github.com/psyduckler/aeo-skills](https://github.com/psyduckler/aeo-skills/tree/main/aeo-analytics-free)\n> **Part of:** [AEO Skills Suite](https://github.com/psyduckler/aeo-skills) — [Prompt Research](https://github.com/psyduckler/aeo-skills/tree/main/aeo-prompt-research-free) → [Content](https://github.com/psyduckler/aeo-skills/tree/main/aeo-content-free) → Analytics\n\nTrack whether AI assistants mention and cite your brand — and how that changes over time.\n\n## Requirements\n\n- **Primary:** Gemini API key (free from aistudio.google.com) — enables grounding with source data\n- **Fallback:** `web_search` only — weaker signal but zero API keys needed\n- `web_fetch` — optional, for deeper analysis of cited pages\n\n## Input\n\n- **Domain** (required) — the brand's website (e.g., `tabiji.ai`)\n- **Brand names** (required) — names to search for in responses (e.g., `[\"tabiji\", \"tabiji.ai\"]`)\n- **Prompts** (required for first scan) — list of target prompts to track. Can come from `aeo-prompt-research-free` output.\n- **Data file path** (optional) — where to store scan history. Default: `aeo-analytics/<domain>.json`\n\n## Commands\n\nThe skill supports three commands:\n\n### `scan` — Run a new visibility scan\n\nExecute all tracked prompts against the AI model and record results.\n\n### `report` — Generate a visibility report\n\nAnalyze accumulated scan data and produce a formatted report.\n\n### `add-prompts` / `remove-prompts` — Manage tracked prompts\n\nAdd or remove prompts from the tracking list.\n\n---\n\n## Scan Workflow\n\n### Step 1: Load or Initialize Data\n\nCheck if a data file exists for this domain. If yes, load it. If no, create a new one.\nSee `references/data-schema.md` for the full JSON schema.\n\n### Step 2: Run Prompts\n\nFor each tracked prompt:\n\n**Method A — Gemini API with grounding (preferred):**\nSee `references/gemini-grounding.md` for API details.\n\n1. Send prompt to Gemini API with `googleSearch` tool enabled\n2. From the response, extract:\n   - **Response text** — the AI's answer\n   - **Grounding chunks** — the web sources cited (URLs + titles)\n   - **Web search queries** — what the AI searched for\n\n3. Analyze the response:\n   - **Mentioned?** — Search response text for brand names (case-insensitive, word-boundary match)\n   - **Mention excerpt** — Extract the sentence(s) containing the brand name\n   - **Cited?** — Check if brand's domain appears in any grounding chunk URI\n   - **Cited URLs** — List the specific brand URLs cited\n   - **Sentiment** — Classify the mention context as positive/neutral/negative\n   - **Competitors** — Extract other brand names and domains from response + citations\n\n**Method B — Web search fallback (if no Gemini API key):**\n1. `web_search` the exact prompt text\n2. Check if brand's domain appears in search results\n3. Record as \"web-proxy\" method (less direct than grounding)\n\n### Step 3: Save Results\n\nAppend the scan results to the data file. Never overwrite previous scans — history is the whole point.\n\n### Step 4: Quick Summary\n\nAfter scanning, output a brief summary:\n- Prompts scanned\n- Current mention rate and citation rate\n- Change vs. last scan (if applicable)\n- Any notable changes (new mentions, lost citations)\n\n---\n\n## Report Workflow\n\n### Per-Prompt Detail\n\nFor each tracked prompt, show:\n\n```\n1. \"[prompt text]\"\n   Scans: [total] (since [first scan date])\n   Mentioned: [count]/[total] ([%]) — [trend arrow] [trend description]\n   Cited: [count]/[total] ([%])\n   Latest: [✅/❌ Mentioned] + [✅/❌ Cited]\n   Sentiment: [positive/neutral/negative]\n   Competitors mentioned: [list]\n```\n\nIf mentioned in latest scan, include the mention excerpt.\nIf not mentioned, note which sources were cited instead and rate the opportunity (HIGH/MEDIUM/LOW).\n\n### Summary Section\n\n```\nVISIBILITY SCORE\n  Brand mentioned: [X]/[total] prompts ([%]) in latest scan\n  Brand cited: [X]/[total] prompts ([%]) in latest scan\n\nTRENDS (last [N] days, [N] scans)\n  Mention rate: [%] → [trend]\n  Citation rate: [%] → [trend]\n  Most improved: [prompt] ([old rate] → [new rate])\n  Most volatile: [prompt] (mentioned [X]/[N] scans)\n  Consistently absent: [list of prompts never mentioned]\n\nCOMPETITOR SHARE OF VOICE\n  [Competitor 1] — mentioned in [X]/[total] prompts\n  [Competitor 2] — mentioned in [X]/[total] prompts\n  [Brand] — mentioned in [X]/[total] prompts\n\nNEXT ACTIONS\n  → [Prioritized recommendations based on gaps and trends]\n```\n\n### Recommendations Logic\n\n- **High opportunity:** Prompt has 0% mention rate + no strong owner in citations → create content\n- **Close to winning:** Prompt has mentions but no citations → refresh content for citation-worthiness\n- **Volatile:** Mention rate between 20-60% → content exists but needs strengthening\n- **Won:** Mention rate >80% + citation rate >50% → maintain, monitor for decay\n\n---\n\n## Data Management\n\n- Data file location: `aeo-analytics/<domain>.json`\n- Schema: see `references/data-schema.md`\n- Each scan appends to the `scans` array — never delete history\n- Prompts can be added/removed without affecting historical data\n- When adding new prompts, they start with 0 scans (no backfill)\n\n## Tips\n\n- Run scans at consistent intervals (weekly or biweekly) for meaningful trend data\n- After publishing new AEO content, wait 2-4 weeks for indexing before expecting changes\n- Gemini's grounding results can vary run-to-run — that's normal. Aggregate data over multiple scans is more reliable than any single result\n- Track 10-20 prompts max for a focused view. Too many dilutes the signal\n- This skill completes the AEO loop: Research (aeo-prompt-research-free) → Create/Refresh (aeo-content-free) → Measure (this skill) → repeat\n","tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":1529,"installsAllTime":5,"installsCurrent":5,"stars":0,"versions":1},"createdAt":1771176843308,"updatedAt":1778491549296},"latestVersion":{"version":"1.0.0","createdAt":1771176843308,"changelog":"Initial publish","license":null},"metadata":null,"owner":{"handle":"psyduckler","userId":"s17918h35fap1pyt0j2wfakqzd885fpq","displayName":"psyduckler","image":"https://avatars.githubusercontent.com/u/260153069?v=4"},"moderation":null}