Integrate GEO Audit
Add AI search visibility audits to your development workflow. Install the Claude Code skill, use curl, or plug into your CI/CD pipeline.
Claude Code Skill
Run /geo-audit example.com from any project in Claude Code. Three steps:
Step 1 — Create the skill directory
mkdir -p .claude/skills/geo-audit Step 2 — Save the skill file
Copy this into .claude/skills/geo-audit/SKILL.md:
---
name: geo-audit
description: Run a GEO audit on a URL to check AI search visibility
user-invocable: true
allowed-tools: Bash
---
Run a GEO (Generative Engine Optimisation) audit using the GEO Audit API at geoaudit.co.uk.
## Accepting a URL
If the user provides a URL or domain as an argument (e.g. `/geo-audit example.com`), use that.
If no argument is given, try to detect the project's domain by checking (in order):
1. `package.json` → `homepage` field
2. `CNAME` file in the repo root
3. Common config files (`astro.config.*`, `next.config.*`, `netlify.toml`, `vercel.json`) for site URL
4. Ask the user
## Running the audit
Use curl to call the GEO Audit API with `wait=true` (holds the connection until the audit completes — no polling needed):
```bash
URL="<the domain>"
curl -s "https://geoaudit.co.uk/report?url=$URL&wait=true"
```
## Presenting results
From the Markdown report, extract and present:
- **Score** and **grade** (e.g. "72/100 — Good")
- **Category breakdown** — Technical, Content, Authority scores
- **Top priorities** — the highest-impact recommendations
## Offering to help
If you are currently working on the audited site's codebase, offer to implement the top recommendations. For example:
- Adding missing structured data
- Creating an llms.txt file
- Fixing robots.txt AI crawler rules
- Improving heading hierarchy or meta descriptions Step 3 — Use it
/geo-audit example.com Claude will call the GEO Audit API, poll for results, and present your score, category breakdown, and top priorities. If you're working on the audited site, it'll offer to implement the recommendations.
curl / CI/CD
Quick one-liner
curl -s "https://geoaudit.co.uk/report?url=example.com"
Returns the full Markdown report. If the audit isn't ready yet, you'll get a 202 — retry after the Retry-After header.
Polling script for pipelines
#!/bin/bash
URL="${1:?Usage: geo-audit.sh example.com}"
ENDPOINT="https://geoaudit.co.uk/report?url=$URL"
while true; do
HTTP_CODE=$(curl -s -o /tmp/geo-report.md -w "%{http_code}" "$ENDPOINT")
if [ "$HTTP_CODE" = "200" ]; then
cat /tmp/geo-report.md
exit 0
elif [ "$HTTP_CODE" = "202" ]; then
echo "Audit in progress, retrying..." >&2
sleep 15
else
echo "Error: HTTP $HTTP_CODE" >&2
exit 1
fi
done Polls until the audit completes. Use in GitHub Actions, GitLab CI, or any pipeline.
How it works
The /report?url= endpoint accepts any domain or URL and returns a full GEO audit as Markdown.
- wait=true — Hold the connection open until the audit completes (up to ~280s). No polling needed — ideal for AI agents and single-request tools.
- 202 — Audit started or in progress (without
wait=true). CheckRetry-Afterheader (20s for new, 10s for in-progress). - 200 — Audit complete. Response body is the full Markdown report.
- fresh=true — Force a new scan even if a recent result exists.
Send Accept: application/json for JSON output.
Full API documentation: /llms.txt