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.
Composable GEO visibility agent
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
01 / THE SYSTEM
Not a synthetic visibility score. A chain of inspectable records from the rendered answer to the final artifact.
A visible, logged-in browser. Source panels, inline citation chips and answer text — captured from the interface people actually use.
cited ≤ in_sources ≤ answered ≤ queries
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 } }
Per-brand, per-engine runs. Deltas, repeat groups and optional PDF/dashboard views are built from the same scored records.
02 / THE SIGNAL
Engine-specific playbooks adapt to each interface. The capture shape and scoring rules stay stable.
LIVE-VALIDATED PLAYBOOKS
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.
Explore engine playbooks ↗THE VISIBILITY FUNNEL
Did a grounded answer render at all?
answers / queriesDid the engine retrieve your target?
in sources / answersDid the answer actually cite your target?
cited / answersWhere did your best source placement land?
lower is betterWhere did your best inline citation land?
lower is betterHow often did retrieval turn into citation?
cited / in sourcesDid the prose name the brand, linked or not?
mentions / answers03 / THE OUTPUT
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.
04 / THE WORKFLOW
No manual clone, Python setup, API server or dashboard launch. The installed skill prepares its runtime and owns the orchestration.
Give it a question set, engine, target, brand and worker count — directly or from a parent agent workflow.
A deterministic readiness gate catches hard blockers before browser capture and returns concrete remediation.
Parallel workers drive the logged-in engine, return validated records and clean up their own browser tabs.
The parent workflow reads one stable JSON document instead of scraping chat prose or querying SQLite internals.
QUICK START
The only manual prerequisite is a browser session already logged in to the AI engine you want to measure.
$ /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
open-geo is not pretending to be the right shape for every measurement job.
06 / FAQ
Everything else — code, playbooks, formulas and known limitations — is public in the repository.
Open the repository ↗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.
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.
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.
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.
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.
No. --output data is the default. It exports JSON and starts no FastAPI or Vite process. Dashboard, PDF and both remain explicit optional outputs.
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
Open source. MIT licensed. Built for agents that need evidence they can hand to the next agent.