CitationBenchTalk to Sales
Playbooks

Track ChatGPT, Claude, Perplexity, and Gemini citations daily

Daily share-of-voice snapshot across 5 LLMs and Google AI Overviews for your brand and category queries, with alerts on drops and an optional skill to reclaim lost mentions.

Daily snapshot of who's being cited by ChatGPT, Perplexity, Claude, Gemini, and Google AI Overviews for your top brand and intent queries. The GEO flagship workflow.

OutcomeDaily share-of-voice snapshot across 5 LLMs for 20–50 queries; alerts on drops
Time~5 min setup, runs in the background daily
Cost~0.5 credits per (query × LLM × sample); typical setup ≈ 225 credits/month per query
PrereqsAPI key, list of monitored prompts (start with your top brand + category queries)

What it does

For each citation query:
  Daily, per LLM (5), per sample (3-5):
    Query the LLM with the prompt
    Parse citations and mentions
    Score each cited domain
  Aggregate over the day, the week, the month
  Compare to baseline
  Alert on drops

Optional: citation_hunter skill on alerts → produce.refine to reclaim lost mentions

Step 1 — Pick your prompts

Start with 20–50 prompts that matter. Three classes:

  • Brand queries: "What is acme.com?" "Reviews of Acme PM?"
  • Category queries: "Best project management software for engineering teams"
  • Comparison queries: "Acme vs monday.com"
  • Problem queries: "How to track team capacity?"

The category and problem queries are where you discover whether AI search even mentions you — usually the biggest gap.

Step 2 — Add each as a monitored query

for PROMPT in \
  "Best project management software for engineering teams" \
  "How to track team capacity in real time" \
  "Acme vs monday.com" \
  "Reviews of acme.com"
do
  curl -X POST https://api.citationbench.com/v1/research/ai-citation/queries \
    -H "Authorization: Bearer $CITATIONBENCH_API_KEY" \
    -H "X-Workspace-Id: $WORKSPACE_ID" \
    -d "{
      \"prompt\":        \"$PROMPT\",
      \"llms\":          [\"chatgpt\", \"perplexity\", \"claude\", \"gemini\", \"google_aio\"],
      \"samplesPerDay\": 3,
      \"trackDomains\":  [\"acme.com\", \"monday.com\", \"linear.app\", \"asana.com\"],
      \"tags\":          [\"category-query\", \"q2-2026\"]
    }"
done

Step 3 — Watch the dashboard or wire alerts

Dashboard

https://app.citationbench.com/<ws_id>/geo renders the share-of-voice over time per query.

Webhook on drops

curl -X POST .../v1/webhooks -d '{
  "url":    "https://hooks.our-portal.com/citation-drops",
  "events": ["ai_citation.share_of_voice.dropped"]
}'

Payload:

{
  "queryId": "aiq_***",
  "prompt": "Best project management software for engineering teams",
  "domain": "acme.com",
  "previousRate": 0.42,
  "currentRate": 0.28,
  "deltaRate": -0.14,
  "windowDays": 7,
  "perLlm": {
    "chatgpt": { "ourRate": 0.2, "delta": -0.2 },
    "perplexity": { "ourRate": 0.8, "delta": 0.0 }
  }
}

When a citation drop happens, fire the citation_hunter skill to draft a refresh:

curl -X POST .../v1/agent/invoke -d '{
  "skill": "citation_hunter",
  "input": {
    "queryIds":    ["aiq_***"],
    "reclamation": "recommend",
    "schedule":    "daily:08:00"
  }
}'

reclamation: "recommend" queues a draft refresh at WAITING_APPROVAL. "auto" lets it run unattended (only enable for content you trust the agent to update).

Step 5 — Cross-portfolio for agencies

Same prompts, every client workspace:

curl -X POST .../v1/workspaces/bulk-action -d '{
  "action":     "research.ai_citation.queries.create",
  "workspaces": "all",
  "config": {
    "prompt":        "{{ workspace.brand.primaryKeyword }}",
    "samplesPerDay": 3
  }
}'

{{ workspace.brand.primaryKeyword }} resolves per workspace, so each client tracks their own primary query.

One-shot script

#!/usr/bin/env bash
set -euo pipefail
KEY="${CITATIONBENCH_API_KEY:?}"
WS="${WORKSPACE_ID:?}"
BASE="https://api.citationbench.com/v1"

PROMPTS=(
  "Best project management software for engineering teams"
  "How to track team capacity"
  "Acme vs monday.com"
  "Reviews of acme.com"
)

for P in "${PROMPTS[@]}"; do
  curl -sf -X POST $BASE/research/ai-citation/queries \
    -H "Authorization: Bearer $KEY" \
    -H "X-Workspace-Id: $WS" \
    -d "{
      \"prompt\":        \"$P\",
      \"llms\":          [\"chatgpt\",\"perplexity\",\"claude\",\"gemini\",\"google_aio\"],
      \"samplesPerDay\": 3,
      \"trackDomains\":  [\"acme.com\",\"monday.com\",\"linear.app\",\"asana.com\"]
    }"
done

# Wire reclamation
curl -sf -X POST $BASE/agent/invoke \
  -H "Authorization: Bearer $KEY" \
  -H "X-Workspace-Id: $WS" \
  -d '{
    "skill": "citation_hunter",
    "input": { "reclamation": "recommend", "schedule": "daily:08:00" }
  }'

echo "Daily citation tracking + reclamation drafting active."

Gotchas

  • LLM variance is real. A single sample can wildly mislead — always use 3+ samples per LLM per day.
  • Citation ≠ mention. We distinguish cited domains (with URLs) from brand mentions (name-only). They have different remediation paths.
  • AI Overviews differ by location. Google AIO results vary by region — set location per workspace.
  • Reclamation isn't instant. Even after you refresh content, LLM training data lags. Expect 2–8 weeks for reclamation to show up.
  • Cost grows with prompts × samples. Start with 20 prompts × 3 samples × 5 LLMs = 300 samples/day = 150 credits/day. Scale up after you see signal.

On this page