open-geo
Use this skill when measuring or rechecking a brand's visibility in AI answers, citations, source lists, or competitor rankings; when resuming an interrupted GEO run; or when another workflow needs captured answers and a portable measurement artifact.
Install / Use
npx skills add Pupok462/open-geo --skill open-geoInstalls into whichever agent you are using.
Gemini Rules
Gemini CLI config
Quality Score
Category
AutomationSupported Platforms
Our assessment of open-geo
open-geo scores 75/100 on our quality scale, 2605th of 2,870 Automation skills we index.
Its Gemini Rules is 8.7 KB long, well organised into 13 sections with 1 code example: a thorough specification that gives an agent plenty to work with.
It has no GitHub stars yet, so there is no community track record; judge it on its content.
Maintenance, license and trust
- The repository was last updated 5 days ago, so open-geo is actively maintained.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 80/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
open-geo compared with similar skills
All 4 of these similar skills score higher than open-geo; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| open-geo (this skill)by Pupok462 | 75 | 0 | 5d ago | Gemini Rules |
| Agent-Reachby Panniantong | 100 | 106.6k | 5d ago | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 90.4k | 1d ago | MCP Server |
| rufloby ruvnet | 100 | 80.2k | today | MCP Server |
| openclawby thedotmack | 100 | 101.6k | 11d ago | SKILL.md |
Frequently asked questions
- How do I install open-geo?
- Run
npx skills add Pupok462/open-geo. The install tabs above show the steps for each supported agent. - Which AI agents does open-geo work with?
- It is written for Gemini CLI, as a Gemini Rules file. Other agents that read the same format can often use it too.
- Is open-geo safe to use?
- It declares no license and scores 80/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is open-geo still maintained?
- The repository was last updated 5 days ago, so open-geo is actively maintained.
Skill content
View source on GitHubname: open-geo description: Use this skill when measuring or rechecking a brand's visibility in AI answers, citations, source lists, or competitor rankings; when resuming an interrupted GEO run; or when another workflow needs captured answers and a portable measurement artifact. Use it even if the user says only “am I recommended?”, “who gets cited instead?”, or “run these questions”. Capture rendered answers through an available engine playbook, persist validated data, and export JSON; add PDF/dashboard only when requested. Accept a query CSV or a semantic-core handoff. Question research requires the separate opt-in harvest flow; this skill does not audit or edit the target website.
Open GEO
One run = one question set, target, and engine. Return a portable
open-geo.run-artifact.v1 JSON file, with optional PDF/dashboard.
pipeline/INTERFACES.md defines the contracts; pipeline/schema.py validates captures.
Invocation and defaults
/open-geo <questions.csv> <engine> <domain-or-URL-prefix> --brand "<name>"
[--n-worker N] [--output data|dashboard|pdf|both]
[--artifact-out <path.json>] [--period today|all]
[--lang en|ru|zh|ar] [--repeat R]
These are skill arguments, not a shell command. Defaults: one worker, data,
reports/run-<id>.json, all, en, one capture. --lang controls the exported
presentation and user summary, not query language or captured sentiment.
--repeat R costs R independent captures; never infer it from “check again”.
Read only what this run needs
| When | Read | |---|---| | Runtime is not resolved, dependencies are missing, or caller paths differ | runtime.md | | Before creating/resuming a run or processing captures | run.md — exact CLI sequence, counts, failure policy | | Before capture/finalization, or when a result looks suspicious | gotchas.md — observed failures and corrections | | User requests question research instead of supplying a CSV/core | harvest.md — grounded research and review gate | | PDF, dashboard, combined-engine report, or repeats requested | deliverables.md | | Explaining a metric or its denominator | metrics.md | | Editing/testing this skill | validation.md — replay evidence and acceptance checks |
STEP R — resolve the runtime and paths
Prefer the current repo containing pipeline/INTERFACES.md, then caller-supplied
OPEN_GEO_ROOT, then a writable installed package, then the managed runtime.
Bootstrap instructions are in runtime.md; perform setup rather than asking the user
to launch services. Use the runtime's .venv/bin/python from its root.
Before changing directories, resolve the input CSV/core and explicit artifact path
against the caller's original directory. Resolve one absolute database path (normally
data/aeo.db under that root, or the caller's explicit isolated DB) and pass it to every CLI.
STEP A — resolve the measurement
Reuse arguments and free-text context. Ask only for missing brand, target, engine,
and question input; concurrency defaults to 1. List engines from actual playbooks
under engines/, excluding README.md and FAST_PATH.md. A missing playbook is a
blocker, not permission to invent capture steps.
Accept a supplied query,lens CSV directly. For a core.json handoff, read
questions_csv, brand, domain, and totals.coverage (INTERFACES §8); keep the
coverage for the final summary. Missing or empty input blocks run creation.
Host primitives
Ask with the host's question tool (AskUserQuestion on Claude), or in conversation.
Spawn with its native agent tool (Claude Agent, Grok spawn_subagent, equivalent
on other hosts). Read the host-native worker contract at the pointer below.
Without delegation, perform the same capture contract sequentially; do not substitute
an API or headless scrape for the rendered browser surface.
STEP A.5 — questions, only if requested
Use harvest.md only when the user opts into generating/researching questions.
It produces a reviewed CSV and provenance; a supplied CSV/core bypasses this step.
Do not replace the user's questions with a newly invented set.
STEP 1 — validate, then create or resume
Follow run.md: validate CSV before writing a run, retain file order, count
unique (query,lens) pairs. Reject malformed rows rather than silently dropping them.
Check for a compatible unfinished run; an explicit resume request or fully specified
invocation resumes it automatically. If the set differs, create a separate run and
identify the unfinished one. Capture only the --pending rows.
For --repeat R > 1, read deliverables.md before creating runs; repeats share a
group, but never share captured rows.
STEPS 2–3 — capture pending rows
Read the whole engines/<engine>.md and the host-native
../../agents/capture-worker.md. Probe the host's visible-browser connection
and playbook-required clean context before creating a new run. A missing connection,
login wall, or unsupported clean context blocks live capture.
Default to sequential capture. If concurrency is requested and the host/browser
supports isolation, split pending rows into min(N, pending count) ordered chunks.
One worker owns each chunk and its tabs; account limits still apply across workers.
Give each worker:
- Full engine playbook, exact
(query,lens)rows, target including its path, brand, engine, and pointers to INTERFACES §1 andpipeline/schema.py. - A unique absolute output path inside this invocation's temporary directory
(
mktemp -d), plus chunk index. Never reuse a global/tmp/open_geo_cap_1.json.
Workers persist a validated array after each query, then return its path, JSON, and captured/missing keys. They never receive the DB/run ID or ingest commands. The orchestrator owns writes and exports. On hosts without workers, keep that same separation of capture and ingest in the sequential execution.
Hard capture constraints:
- Read source/citation URLs in place; never visit the cited sites. Close only tabs opened for this capture, including on failure.
- Preserve
overview_present, source order, and citation/source inclusion. Compute ranks withtarget_ranks; a shared domain alone does not match a URL-prefix target. - Preserve
prior_contextand its evidence; a contaminated answer is flagged data, not a clean measurement. Screenshots are transient (screenshot_path=null). - On CAPTCHA or rate limit, stop the affected capture and preserve completed work; do not solve challenges or keep increasing concurrency.
STEP 4 — persist and reconcile
Follow the commands in run.md. Validate each returned file's engine and keys
against its assignment, then ingest incrementally. Read errors even on exit 0.
skipped is a duplicate, not a corrected overwrite. Verify stored keys/counts after
ingest; do not equate worker success with durable storage.
Finalize done only when every unique CSV pair is stored with no extra keys.
Missing captures are not overview_present=false answers. Preserve a paused run
as running with its ID and pending count for resume; finalize an abandoned or
unrecoverable run failed. Never silently label a partial run as complete.
STEPS 5–5b — metrics and sentiment
Aggregate with pipeline.aggregate and save its JSON stdout. It computes metrics
and domain statistics, but does not synthesize sentiment.
Read per-query sentiments via pipeline.run --sentiments; write one neutral sentence
for each represented lens plus all, using only those notes and their language.
All-null notes mean a null summary. Persist the {lens: summary} object with
pipeline.lens_sentiment; verify the returned written lenses.
STEP 6 — export
Export JSON with pipeline.artifact using the same DB; open the file and check
schema version, run ID/status, target, result counts, metrics, and lens summaries.
The default data output ends here. Start presentation services or generate a PDF
only for the requested output, following deliverables.md.
STEP 7 — return the result
Use the all row from aggregate stdout: answer coverage, target visibility in
sources/citations, average best source/citation ranks, source→citation conversion,
and brand mention rate. null means no data, never zero. Explain denominators when
needed via metrics.md; brand mention is independent of linked presence.
Report captured/expected counts, status, unresolved blockers and prior-context flags alongside metrics. For partial exports, metrics describe captured rows only. Include core demand coverage if supplied, then the absolute artifact path and any verified PDF path/dashboard URL. Do not claim a fixture replay is a live GEO result.
Related Skills
Agent-Reach
106.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Scrapling
90.4k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
ruflo
80.2k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
openclaw
101.6kThis guide walks through setting up the claude-mem plugin on an OpenClaw gateway. By the end, your agents will have persistent memory across sessions via system prompt context injection, and optionally a real-time observation feed streaming to a messaging channel.
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
