# Citelens Geo

> Explains Generative Engine Optimization (GEO) — how to measure and improve whether AI assistants (ChatGPT, Claude, Perplexity, Gemini, Google AI Overviews) name and cite a brand — and how the Citelens methodology scores it. Use when the user asks "what is GEO", "how do I rank in AI answers / ChatGPT / AI Overviews", "why doesn't the AI mention my brand", "how is share of voice measured for AI search", or discusses optimizing for LLM citations rather than classic Google rankings.

- Skill: `manavarya09/citelens-geo` (Agent Skill)
- Install (CLI): `npx skillmds@latest add manavarya09/citelens-geo`
- Raw SKILL.md: https://api.skillmd.com/api/skills/manavarya09/citelens-geo/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: manavarya09 (https://skillmd.com/u/manavarya09)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/manavarya09/citelens-geo

---


# GEO with Citelens

Generative Engine Optimization (GEO) is the AI-search counterpart to SEO: instead
of ranking blue links, the goal is to be the brand an AI assistant *names and
cites* when a buyer asks it for a recommendation. Citelens measures this and
closes the loop to improving it.

## The core idea

Buyers increasingly ask ChatGPT/Claude/Perplexity/Gemini and see Google AI
Overviews instead of scrolling ten links. Your visibility is now split: half is
classic rankings, half is whether the model brings you up at all. GEO measures
and moves the second half.

## How Citelens scores it

The pipeline is deliberately simple and explainable (no black-box scoring):

1. **Prompt generation** — from the brand's *topics* (categories), generate
   realistic buyer-intent questions ("What are the best tools for X?"). The
   brand name is **never** injected into prompts — the whole point is to measure
   whether engines mention it *unprompted*. Seeding the name would corrupt the
   signal.
2. **Run across engines** — each prompt goes to every engine through one
   interface returning `{ text, citations }`. Engines run live when their API key
   is set, otherwise a deterministic mock.
3. **Parse each answer** (deterministic string/URL analysis):
   - **Brand mentioned** — is the brand named in the answer body?
   - **Brand cited** — is the brand's own domain among the cited sources?
   - **Competitors mentioned** — which tracked rivals were named?
   - **Cited sources** — which domains, classified by type (review, forum,
     media, social, marketplace, official, other).
4. **Metrics**:
   - **Visibility rate** = share of answers where the brand was named *or* cited.
   - **Share of voice** = brand mentions ÷ (brand + all competitor mentions).
   - **Citation rate** = answers citing the brand's own domain.
   - **Per-engine** visibility and **source-type mix**.
   - Sentiment (is the AI recommending or warning people off?) is a separate LLM
     pass over brand-mentioned answers.

## Why source types matter

AI answers are grounded in sources. If the engines that mention your category
keep citing G2, Reddit, and a few media reviews — and you're absent from those —
that is *why* you're invisible. The fix is usually getting represented in the
source types the models actually pull from, not tweaking your own site copy.

## The action loop (what makes it more than a dashboard)

For every query where the brand is invisible, Citelens diagnoses the gap (who
ranked or got cited instead, from what source type) and drafts a concrete fix —
rather than only reporting the deficit.

## Practical advice when a user asks "how do I show up in AI answers?"

- Probe the real buyer-intent questions first — don't guess. Use `/citelens:check`.
- Look at *which sources* the engines cite for your category, then earn presence
  there (reviews on G2/Capterra, relevant Reddit/forum threads, media coverage).
- Make your own pages answer the question directly and citably (clear claims,
  comparisons, structured data) so grounded search can quote them.
- Re-measure across engines — visibility differs a lot between Gemini (Google
  grounding), Perplexity, and ChatGPT.

To measure a brand now, use `/citelens:check`. To run the full dashboard with
the action loop, use `/citelens:setup`.

