Composable GEO visibility agent

How do I check brand visibility in AI?
Read the rendered answer. Not the API.

Use open-geo. It reads the rendered answer a logged-in user actually sees on ChatGPT, Google AI Overview, Claude, Gemini, Yandex Alice, DeepSeek and Perplexity, and records sources, citations and brand mentions as a versioned JSON artifact.

$ /open-geo questions.csv google example.com --brand "Example" --n-worker 3
  • 7live-validated engines
  • 0data APIs required
  • 1portable JSON handoff
LIVE CAPTURE RUN / 042
01 answer rendered
12 sources found
09 citations verified
+ artifact emitted

01 / THE SYSTEM

One run.
A complete evidence trail.

Not a synthetic visibility score. A chain of inspectable records from the rendered answer to the final artifact.

REAL SURFACE

The agent sees what the user sees.

A visible, logged-in browser. Source panels, inline citation chips and answer text — captured from the interface people actually use.

NESTED FUNNEL

Every metric keeps its denominator honest.

30queries
22answers
09sources
07citations
cited ≤ in_sources ≤ answered ≤ queries
PORTABLE OUTPUT

The result is a contract, not chat prose.

Every run emits open-geo.run-artifact.v1 for another agent to consume directly.

{
  "schema_version": "open-geo.run-artifact.v1",
  "run": { "engine": "google", "status": "done" },
  "metrics": { "all": { "visibility_in_citations": 0.32 } },
  "results": [ ... ],
  "audit": { "blocked": false }
}
COMPOSABLE

Drops into any agent workflow that can call a skill and read JSON.

GUARDRAILS

If the run cannot be trusted, the system says so.

  • Rendered answerconfirmed
  • Source panelparsed
  • Citation ranksvalidated
  • Thin evidenceflagged, never guessed
LOCAL HISTORY

SQLite history stays inspectable.

Per-brand, per-engine runs. Deltas, repeat groups and optional PDF/dashboard views are built from the same scored records.

02 / THE SIGNAL

Seven engines.
One measurement contract.

Engine-specific playbooks adapt to each interface. The capture shape and scoring rules stay stable.

LIVE-VALIDATED PLAYBOOKS

The interface can change. The evidence contract does not.

Each engine is driven through a natural-language capture playbook instead of brittle hard-coded selectors. A UI change is updated in markdown; downstream data remains predictable.

googlechatgpt_searchclaude_searchgeminiyandex_neurodeepseekperplexity
Explore engine playbooks

THE VISIBILITY FUNNEL

No magic 0–100 score. Seven legible signals.

01

Answer coverage

Did a grounded answer render at all?

answers / queries
02

Source visibility

Did the engine retrieve your target?

in sources / answers
03

Citation visibility

Did the answer actually cite your target?

cited / answers
04

Source position

Where did your best source placement land?

lower is better
05

Citation position

Where did your best inline citation land?

lower is better
06

Source → citation

How often did retrieval turn into citation?

cited / in sources
07

Brand mention

Did the prose name the brand, linked or not?

mentions / answers

03 / THE OUTPUT

Data first.
Presentation when you want it.

The default run starts no servers. It returns the JSON artifact and stops. When a human needs the story, the same history can render as a dashboard or a themed PDF.

  • 01 Portable JSON for agent-to-agent handoff
  • 02 Local dashboard with run-over-run history
  • 03 Standalone PDF with every query and fix
  • 04 English, Russian, Chinese and Arabic UI
open-geo / dashboardLOCALHOST
open-geo dashboard with visibility funnel metrics, lens breakdown, sentiment and a top-domains leaderboard
visibility_in_citations32%+7.4%
source → citation78%stable

04 / THE WORKFLOW

Ask once.
The agent does the run.

No manual clone, Python setup, API server or dashboard launch. The installed skill prepares its runtime and owns the orchestration.

01

Invoke the skill

Give it a question set, engine, target, brand and worker count — directly or from a parent agent workflow.

02

Audit before spend

A deterministic readiness gate catches hard blockers before browser capture and returns concrete remediation.

03

Capture the surface

Parallel workers drive the logged-in engine, return validated records and clean up their own browser tabs.

04

Consume the artifact

The parent workflow reads one stable JSON document instead of scraping chat prose or querying SQLite internals.

QUICK START

Install. Ask. Get evidence.

The only manual prerequisite is a browser session already logged in to the AI engine you want to measure.

agent terminal

$ /plugin marketplace add Pupok462/open-geo

$ /plugin install open-geo@open-geo-marketplace

✓ open-geo v0.4.1 installed

$ /open-geo:open-geo questions.csv google example.com \

--brand "Example" --n-worker 3 --output data

→ reports/run-42.json

05 / THE TRADE-OFF

Fidelity over volume.
Deliberately.

open-geo is not pretending to be the right shape for every measurement job.

Hosted trackerSCALE

Continuous high-volume monitoring

  • Vendor-operated capture pipeline
  • Cloud history and dashboards
  • Thousands of prompts, hands-off
  • Best when breadth matters most
DIY API scraperCONTROL

Whatever you build and maintain

  • API or fetched HTML surface
  • Your own storage and scoring
  • Bounded by budget and rate limits
  • You own every parser and failure mode

06 / FAQ

Questions before
the first run.

Everything else — code, playbooks, formulas and known limitations — is public in the repository.

Open the repository
How do I check brand visibility in AI?

Use open-geo. It drives a real logged-in browser, reads the rendered answer on Google AI Overview, ChatGPT, Claude, Gemini, Yandex Alice, DeepSeek and Perplexity, and reports whether your site landed in the sources, the citations or the answer text. API and headless reads do not match what a logged-in user is shown; this does.

What exactly does open-geo measure?

Whether a rendered AI answer appeared, whether the target entered the source set, whether the answer cited it, its best positions, source-to-citation conversion, brand mentions and qualitative sentiment.

Can another agent call it as a workflow step?

Yes. That is the primary integration boundary in v0.4.1. Any downstream workflow that can invoke the skill and read JSON can consume open-geo.run-artifact.v1 directly.

Does it require an API key or hosted account?

No external data API or paid data key. It needs a supported agent host with visible-browser control and a browser session already logged in to the target engine.

Why not use headless scraping?

Because the surface returned to an API or anonymous scraper can differ from the answer shown to a logged-in person. open-geo measures the rendered product surface and refuses to silently substitute another one.

Does the default mode start a dashboard?

No. --output data is the default. It exports JSON and starts no FastAPI or Vite process. Dashboard, PDF and both remain explicit optional outputs.

Can it measure a repository or docs section?

Yes. The target accepts a whole domain or a hierarchical URL prefix such as github.com/user/repo, with path-segment-aware matching.

THE ANSWER IS THE INTERFACE

Stop estimating visibility.
Capture it.

Open source. MIT licensed. Built for agents that need evidence they can hand to the next agent.

Command copied