Install
openclaw skills install @xuboboo/geo-agent-skillDiagnose a brand's visibility, recommendations, citations, competitor presence, factual accuracy, and content gaps in AI-assisted web search. Use for GEO audits, AI search visibility analysis, AI citation analysis, brand-versus-competitor comparisons, website GEO content diagnostics, ChatGPT/豆包/DeepSeek/通义千问/智谱 GLM/Kimi/文心一言/Claude/Gemini/Perplexity brand mention analysis, AI search optimization, and generative engine optimization (GEO) reports. Supports 17+ AI engines (8 international + 9 Chinese). Do not use for ordinary copywriting, general SEO keyword research, social-media scraping, guaranteed-ranking requests, or content publishing.
openclaw skills install @xuboboo/geo-agent-skillPattern: Pipeline + Inversion + Reviewer This skill enforces a strict multi-step pipeline with gate conditions. It interviews the user for missing inputs before acting (Inversion). It runs a quality review checklist before finalizing the report (Reviewer).
Produce a traceable AI-search/GEO audit for one brand using current web search, deterministic metric calculation, and evidence-backed recommendations.
If web_search is unavailable, switch to OFFLINE_IMPORT mode. Never fabricate search results or citations.
Minimum:
Recommended:
SKILL.mdscripts/modules/ (v1.1+ optional extensions)/mnt/data/geo-audit-runsGEO_AUDIT_RUNS_DIR or ./geo-audit-runspython3 / python)DO NOT start the audit until all required inputs are confirmed.
If the user provides a partial input, ask for missing fields in this order:
Once all minimum fields are confirmed, proceed to Phase 1. If the user wants a quick snapshot, set mode=quick and skip Phase 0 questions.
python <SKILL>/scripts/validate_input.py \
--input /path/to/input.json \
--output <RUN>/intermediate/normalized_input.json
python <SKILL>/scripts/initialize_run.py \
--input <RUN>/intermediate/normalized_input.json \
--base-dir "$GEO_AUDIT_RUNS_DIR"
Gate: Do NOT proceed to Phase 2 unless validate_input returns ok: true.
web_search to research the official brand website.brand.json known_facts field.| Business Type | Signals | Question Bias |
|---|---|---|
| SaaS | Pricing page, free trial, API docs, dashboard | Comparison, use-case, integration |
| E-commerce | Product pages, cart, reviews, price elements | Purchase, trust, comparison |
| Local Service | Phone, address, service area, Google Maps | Recommendation, location, trust |
| Publisher | Blog, articles, bylines, publication dates | Authority, content quality |
| Agency | Portfolio, case studies, client logos | Credibility, results, comparison |
Gate: Do NOT proceed to Phase 3 without at least 2 verified facts.
Optional extensions (run after core research):
- v1.1-v1.3 Deep Scoring: see modules/brand-depth-scoring.md — site readiness, freshness, citability, trust stack
- v1.9 GEO Lint: see modules/geo-lint.md — 92-rule pre-publish compliance check
- v2.1 Entity KG: see modules/entity-kg.md — entity completeness & knowledge graph scoring
Generate questions following these constraints:
python <SKILL>/scripts/validate_questions.py \
--questions <RUN>/intermediate/questions.json \
--input <RUN>/input/brand.json
Gate: Do NOT proceed to Phase 4 unless validate_questions returns ok: true.
Optional: v1.7 Funnel Stage Classification — see modules/funnel-journey.md
Execute searches in batches of 5 questions per batch.
web_search, persist result immediately via scripts/append_search_result.pyGate: At least 80% of questions must have successful results before proceeding.
Optional extensions:
- v1.4-v1.5 Enhanced Pipeline: see modules/search-pipeline.md — signal extraction, query templates, quality scoring, retry, drift detection
- v2.0 Multi-Engine: see modules/multi-engine.md — 6 AI engine API queries with auto-fallback
recommendation_type, sentiment_score, competitor_co_mentionsintermediate/entity_analysis.jsonlpython <SKILL>/scripts/classify_citations.py \
--run-dir <RUN> \
--output <RUN>/intermediate/citations.json
intermediate/claims.jsonOptional: v1.3 AI Perception, v1.7 Attribute Analysis, v1.8 Publisher Influence — see modules/funnel-journey.md
All numeric metrics MUST be produced by the script. Do NOT hand-calculate.
python <SKILL>/scripts/calculate_metrics.py \
--questions <RUN>/intermediate/questions.json \
--entities <RUN>/intermediate/entity_analysis.jsonl \
--citations <RUN>/intermediate/citations.json \
--claims <RUN>/intermediate/claims.json \
--output <RUN>/intermediate/metrics.json
Optional: v1.7 Funnel-Stage Metrics, v1.8 Journey Metrics — see modules/funnel-journey.md
python <SKILL>/scripts/rank_opportunities.py \
--input <RUN>/intermediate/opportunities.draft.json \
--output <RUN>/intermediate/opportunities.json
Before generating the final report, run this quality checklist:
| # | Check | Severity | Action if Fail |
|---|---|---|---|
| 1 | All required output files will be generated | ERROR | Fix before rendering |
| 2 | Metrics.json exists and is valid JSON | ERROR | Re-run calculate_metrics |
| 3 | At least 80% search success rate | WARNING | Mark as PARTIAL |
| 4 | No fabricated URLs in evidence | ERROR | Remove fabricated URLs |
| 5 | Limitation statement will be included | ERROR | Add LIMITATION_TEXT |
| 6 | Opportunities <= 10, Briefs <= 5 | ERROR | Truncate |
| 7 | No forbidden promise patterns in output | ERROR | Remove promises |
| 8 | All URLs traceable to search results | WARNING | Flag untraceable |
Gate: Do NOT proceed to Phase 9 if any ERROR-level check fails.
python <SKILL>/scripts/render_report.py --run-dir <RUN>
Optional: v1.9 Schema Automation (AI-readable file generation) — see modules/schema-automation.md
After Phase 9 completes, persist metrics to history for drift detection:
python <SKILL>/scripts/monitor.py <RUN>
This stores current metrics in <RUN>/metrics_history.jsonl for future comparison.
Compare current metrics against baseline thresholds:
python <SKILL>/scripts/monitor.py <RUN> --check-alerts
Alert rules (configurable):
geo_score < 40 → criticalgeo_score < 60 → warningmention_rate < 0.30 → criticalrecommendation_rate < 0.20 → warningsentiment_index < 20 → criticalOutput: <RUN>/alerts.json
To set up recurring audits, use the scheduler:
# Add a daily audit at 02:00
python <SKILL>/scripts/scheduler.py --add "brand-weekly" \
--brand-config <RUN>/input/brand.json \
--cron "0 2 * * 1"
# List configured schedules
python <SKILL>/scripts/scheduler.py --list
# Run a specific schedule on-demand
python <SKILL>/scripts/scheduler.py --run "brand-weekly"
# Run all enabled schedules
python <SKILL>/scripts/scheduler.py --run-all
Windows Task Scheduler integration:
python <SKILL>/scripts/scheduler.py --add "brand-daily" \
--brand-config <RUN>/input/brand.json
# Then register: schtasks /create /tn "GEOAudit_brand-daily" /tr "..." /sc daily /st 02:00
Compare current run against a previous baseline:
python <SKILL>/scripts/detect_drift.py --baseline <BASELINE_RUN> --current <RUN>
python <SKILL>/scripts/detect_visibility_alerts.py --baseline <BASELINE_RUN> --current <RUN>
python <SKILL>/scripts/chain_runs.py --baseline <BASELINE_RUN> --current <RUN>
Generate actionable improvement plans from drift analysis:
python <SKILL>/scripts/generate_improvement_plan.py --run-dir <RUN>
python <SKILL>/scripts/generate_closed_loop_actions.py --run-dir <RUN>
python <SKILL>/scripts/generate_optimization_actions.py --run-dir <RUN>
Gate: Phase 10 is optional. Skip if user only needs a one-time audit.
python <SKILL>/scripts/validate_report.py --run-dir <RUN> --update-manifest
python <SKILL>/scripts/package_outputs.py --run-dir <RUN>
Gate: Mark COMPLETED only if validate_report returns ok: true.
Gate: If search success rate < 80%, mark FAILED.
Gate: If search success rate 80-90%, mark PARTIAL.
All numeric metrics must be produced by scripts/calculate_metrics.py.
Do not calculate or alter metric values in natural-language reasoning.
If the user provides a run_id:
<base>/<run_id>/output/manifest.json.raw/search_results.jsonl.Return paths to:
output/report.mdoutput/report.jsonoutput/questions.csvoutput/evidence.csvoutput/opportunities.csvoutput/manifest.jsonoutput/geo_lint_report.json (if GEO Lint module enabled)output/llms.txt (if Schema Automation module enabled)output/llms-full.txt (if Schema Automation module enabled)output/entity.json (if Schema Automation module enabled)output/brand.json (if Schema Automation module enabled)output/aeo.json (if Schema Automation module enabled)references/methodology/ (20 scoring models & frameworks)references/specification/ (10 formal contracts & rules)references/research/ (13 external tool research notes)references/INDEX.mdschemas/modules/ for v1.1+ extension documentation