GEO-First SEO Audit Tool
zubair-trabzada/geo-seo-claude
Audits a website for AI search visibility across ChatGPT, Claude, Perplexity and Google AI Overviews while checking traditional SEO, schema and E-E-A-T content quality.
Find documented UNFAIRGAPS - systemic regulatory holes where a product can plug the leak - using court filings, regulatory fines, and enforcement data.
$ npx skills add AyanbekDos/unfairgaps-os --skill unfairgaps -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install AyanbekDos/unfairgaps-os unfairgaps --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/AyanbekDos/unfairgaps-os.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/unfairgaps .claude/skills/unfairgaps && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "unfairgaps" agent skill from https://github.com/AyanbekDos/unfairgaps-os/tree/main/skills/unfairgaps into .claude/skills/unfairgaps/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unfairgaps", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/AyanbekDos/unfairgaps-os/tree/main/skills/unfairgapsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add AyanbekDos/unfairgaps-os --skill unfairgaps -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install AyanbekDos/unfairgaps-os unfairgaps --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AyanbekDos/unfairgaps-os.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/unfairgaps .agents/skills/unfairgaps && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "unfairgaps" agent skill from https://github.com/AyanbekDos/unfairgaps-os/tree/main/skills/unfairgaps into .agents/skills/unfairgaps/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unfairgaps", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add AyanbekDos/unfairgaps-os --skill unfairgaps -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install AyanbekDos/unfairgaps-os unfairgaps --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AyanbekDos/unfairgaps-os.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/unfairgaps .cursor/skills/unfairgaps && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "unfairgaps" agent skill from https://github.com/AyanbekDos/unfairgaps-os/tree/main/skills/unfairgaps into .cursor/skills/unfairgaps/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unfairgaps", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/AyanbekDos/unfairgaps-os.git --path skills/unfairgaps--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add AyanbekDos/unfairgaps-os --skill unfairgaps -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install AyanbekDos/unfairgaps-os unfairgaps --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AyanbekDos/unfairgaps-os.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/unfairgaps .gemini/skills/unfairgaps && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "unfairgaps" agent skill from https://github.com/AyanbekDos/unfairgaps-os/tree/main/skills/unfairgaps into .gemini/skills/unfairgaps/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unfairgaps", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install AyanbekDos/unfairgaps-os unfairgapsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add AyanbekDos/unfairgaps-os --skill unfairgaps -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/AyanbekDos/unfairgaps-os.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/unfairgaps .github/skills/unfairgaps && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "unfairgaps" agent skill from https://github.com/AyanbekDos/unfairgaps-os/tree/main/skills/unfairgaps into .github/skills/unfairgaps/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unfairgaps", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add AyanbekDos/unfairgaps-os --skill unfairgaps -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install AyanbekDos/unfairgaps-os unfairgaps --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AyanbekDos/unfairgaps-os.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/unfairgaps .opencode/skills/unfairgaps && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "unfairgaps" agent skill from https://github.com/AyanbekDos/unfairgaps-os/tree/main/skills/unfairgaps into .opencode/skills/unfairgaps/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unfairgaps", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
unfairgapsFind documented UNFAIRGAPS - systemic regulatory holes where a product can plug the leak - using court filings, regulatory fines, and enforcement data.
Unfairgaps is an agent skill from AyanbekDos/unfairgaps-os. Find documented UNFAIRGAPS - systemic regulatory holes where a product can plug the leak - using court filings, regulatory fines, and enforcement data. Five operations in one methodology - industry-scan, validate-idea, site-audit, customer-pains, profession-scan. Dual mode - native Claude Code (WebSearch+WebFetch) or delegates to run.py if PERPLEXITYAPIKEY is set. profession-scan is native-only and country-aware (any country).
Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/customer-pains.md`, `references/industry-scan.md` and `references/profession-scan.md`).
It sits in Marketing & SEO, covering SEO audit. It works with Perplexity. The repository describes itself as: Find real business pain points from court filings, regulatory fines, and enforcement data. 4 pipelines. Works in any country. One API key. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a922bbc. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
PERPLEXITY_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Unfairgaps loads about 3.4k tokens when it runs, and up to ~10k if it reads all its reference files. Until then it costs about 111 tokens; SKILL.md has 1,510 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from AyanbekDos/unfairgaps-os at commit a922bbc, republished under its MIT licence (© AyanbekDos). 1,510 words, ~3,393 tokens.
.claude/skills/unfairgaps/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.We are not finding customers to sell to. We are finding UNFAIRGAPS - systemic holes in a regulatory regime where a good product can plug the leak for EVERYONE who hasn't been caught yet.
A $72M jury verdict is interesting only if it exposes a systemic gap (e.g., "no evidence chain for training compliance"), not because one company got hit.
A good event corroborates a SYSTEMIC PATTERN. A great report groups events into 3-5 confirmed systemic patterns, each with a clear answer to:
An event with no corroboration in the ledger is anecdotal - report it separately, do not pretend it's a wedge.
Four operations share the same 4-phase event-collection protocol (below). The fifth operation, profession-scan, uses a different 3-phase regulatory-profile protocol described in its own reference. Parse the user's intent into one of these operations, then load the matching op-specific reference from references/ for that operation's details.
| Operation | Input | Output | Reference |
|---|---|---|---|
| industry-scan | industry + country | Pain report: 3-5 CONFIRMED unfairgaps in that industry × country, each with product sketch | industry-scan.md |
| validate-idea | business idea + country | VALIDATED / PROMISING / WEAK / NO_EVIDENCE / SATURATED verdict grounded in enforcement data | validate-idea.md |
| site-audit | URL | Claims-vs-reality audit: per-claim verdicts + missed unfairgaps the site ignores | site-audit.md |
| customer-pains | URL | B2B2C unfairgaps affecting YOUR customers' customers, with pitch templates for outbound | customer-pains.md |
| profession-scan | profession + country (any country; auto-localizes regulators, language, currency) | Pain bundle for a profession: 8-15 pains with skill_specs (calculator / checklist / template / reference / advisor) | profession-scan.md |
How to pick the operation from user input:
<industry> <country>" -> industry-scan<idea>" / "is <idea> real pain" / "should I build <X>" -> validate-idea<url>" / "check claims on <url>" / "is <url> real or fluff" -> site-audit<url>'s customers" / "customer pains <url>" / "outbound angles for <url>" -> customer-pains<X>" / "find pains for <profession>" / "scan <profession> in US" / "what pains does a <profession> have" -> profession-scanIf the user's request is ambiguous, ask which operation they want. Do not guess.
Before running any operation:
profession-scan: always run the native 3-phase protocol described in references/profession-scan.md. No CLI path. run.py does not implement this operation. Skip the rest of this section and load the profession-scan reference.PERPLEXITY_API_KEY is set in env AND user didn't explicitly say "use claude code" / "no api" / "native":python run.py <operation> <args> (the CLI path; faster, deterministic, scriptable). Stop here.The native flow uses 0 API keys - entirely free via your Claude Code / Cursor / Codex subscription.
This protocol is mandatory for all four operations. Skip or reorder phases and the output becomes untrustworthy. Every phase produces a visible artifact. Do not synthesize the final report before Phase 4.
Produce a compact plan BEFORE searching. See the op-specific reference for its exact schema. Generally includes:
[en] for US, [ru, kk] for KZ, [de, en] for DE)Compose queries across these categories (expanded in v0.3 after empirical gap-analysis vs Perplexity):
Query rules:
2024 2025 2026.gov / regulator / court-system sources explicitlyEmit candidate pool as a table, scored by domain_class:
primary_gov (+4) - .gov, federal/state regulator, court docketprimary_court (+4) - court opinion databases, official docketsaggregator_primary (+3.5) - curated lists of primary-source events (Taproot OSHA fines, JDSupra, CourtListener top verdicts - one fetch yields 10-15 named events)quasi_primary (+3) - regulator press releases, enforcement DB mirrorssecondary_trade (+2) - industry trade press with named case/$ (Insurance Journal, Construction Dive, ENR, law-firm analyses naming defendants)secondary_news (+1) - major news outlets with named case/$tertiary_blog (0) - law-firm marketing blogs, consulting opinion, LinkedInjunk - SEO content, vendor marketing, norm/penalty tables without eventsPool should be 20-60 candidates. Dedupe by URL before scoring.
Fetch the top 8-12 candidates by global score (NOT top-N per query). Budget caps at 14 total fetches including follow-ups.
For each fetched page, IMMEDIATELY write a compact evidence card (≤150 tokens) and append to the ledger. Do not keep raw page text in context - compress then discard.
Card schema (shared; op-specific references may add fields):
- id: ev_XXX
event_key: "<authority>|<action_type>|<date>|<actor>|<docket_or_id>" # event-level canonical key for dedup
pain: "<1-2 sentences, what went wrong and who lost money>"
actor: "<company/role sanctioned or suffering>"
jurisdiction: "<federal | state name | country | EU-level>"
evidence_type: "court_record | regulatory_fine | industry_report | news"
source_class: "primary_gov | primary_court | aggregator_primary | quasi_primary | secondary_trade | secondary_news"
financial_impact: "<exact amount + currency, or null>"
date: "<YYYY-MM or YYYY>"
language: "<en | ru | de | ...>"
pinpoint_citation:
url: "<full URL>"
locator: "<page N, section X, paragraph P - or quoted selector>"
quote: "<≤200 char verbatim excerpt proving the claim>"
evidence_quality: "hard | soft"
notes: "<optional - contradicts ev_XXX, corroborates, or coverage_gap>"Event-level dedup: before appending, check if event_key matches an existing card. If yes, merge pinpoint_citation into corroborating_urls: [] on the existing card. Don't create duplicates.
Follow-up fetches (max 4 of the 14 cap): after initial 8-10 fetches, if the ledger has <6 hard events OR a pain-hypothesis from Phase 1 has zero evidence, do up to 4 targeted follow-up fetches.
Hard stop at 14 fetches. If still thin, emit coverage_gap notes and proceed to Phase 4 - do NOT fabricate breadth.
Read through the Evidence Ledger and group events into candidate unfairgap hypotheses - systemic regulatory holes that recur across multiple cases.
For each candidate pattern, emit an UNFAIRGAP entry:
- unfairgap_id: ug_XXX
hypothesis: "<1 sentence: the systemic hole in plain language>"
status: "CONFIRMED_SYSTEMIC | EMERGING_PATTERN | ANECDOTAL"
corroborating_events: [ev_XXX, ev_YYY, ev_ZZZ]
event_count: N
scale_signal: "<$ range across events; sum if meaningful>"
regulatory_source: "<which regulator(s); which statutes>"
product_sketch:
what: "<concrete product, 1-2 sentences>"
who_pays: "<specific buyer persona - NOT the sanctioned companies, their NOT-YET-SANCTIONED peers>"
why_now: "<what makes this urgent in 2024-2026 specifically>"
what_kills_it: "<biggest risk to the wedge>"
coverage_caveats: "<what we don't know that would change the call>"Status rules (non-negotiable):
Do not promote ANECDOTAL to CONFIRMED with clever arguments. If the data isn't there, say so.
Drop-rule: events that don't slot into any unfairgap pattern don't appear in Phase 4 main topics. They go to an "Anecdotal signals" appendix only.
Target: 3-5 CONFIRMED_SYSTEMIC unfairgaps per run. If you have 0-2, the run didn't find a pattern - say so in the report, don't pad.
Op-specific (see reference). General shape:
Save under an op-specific filename (see reference).
coverage_gap. Padding with unrelated cases = failure.pinpoint_citation with url + locator + quote. URL-only is not a citation.aggregator_primary sites that cite the same release verbatim; (b) preserve the canonical event_key so evidence from the aggregator merges with the primary when reachable later. Do NOT drop the event.Once you've determined which of the 5 operations the user wants and you've briefed yourself on the relevant protocol above, read the matching reference for input-parsing, query-category specifics, reference-card-schema additions, and the final-report format:
references/industry-scan.mdreferences/validate-idea.mdreferences/site-audit.mdreferences/customer-pains.mdreferences/profession-scan.md (uses its own 3-phase protocol - SCOPE -> Pains -> Bundle; ignore the shared 4-phase rules)Each reference is small (<150 lines) - read the one that applies, then execute.
© AyanbekDos, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (references) in skills/unfairgaps of AyanbekDos/unfairgaps-os.
Open the folder on GitHubat commit a922bbc
Unfairgaps next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Unfairgaps this skillAyanbekDos/unfairgaps-os | 112 | — | ~3.4k | Automated safety check: Pass | MIT | |
| GEO-First SEO Audit Toolzubair-trabzada/geo-seo-claude | 11k | — | ~2.8k | Automated safety check: Notes | MIT | |
| GEO Platform Optimizerzubair-trabzada/geo-seo-claude | 11k | 2 repos | ~4.7k | Automated safety check: Notes | MIT | |
| AI Discoverability AuditBrianRWagner/ai-marketing-claude-code-skills | 440 | — | ~2.3k | Automated safety check: Pass | None | |
| SEO Auditshadcn-labs/agentcn | 490 | — | ~598 | Automated safety check: Pass | MIT | |
| Global SEO Growthminhnv0807/ai-business-skills | 610 | — | ~5k | Automated safety check: Pass | MIT |
zubair-trabzada/geo-seo-claude
Audits a website for AI search visibility across ChatGPT, Claude, Perplexity and Google AI Overviews while checking traditional SEO, schema and E-E-A-T content quality.
zubair-trabzada/geo-seo-claude
Audits a site for AI search visibility one platform at a time, scoring Google AI Overviews, ChatGPT, Perplexity, Gemini and Bing Copilot and listing gaps to fix.
BrianRWagner/ai-marketing-claude-code-skills
Audits how a brand is described by AI search tools such as ChatGPT, Perplexity and Gemini, then produces a scored report, action plan and re-audit schedule.
shadcn-labs/agentcn
How to present the deterministic AI-SEO audit returned by auditpage.
minhnv0807/ai-business-skills
Covers six SEO layers for a website: crawl and index audit, local SEO, search-intent content, AI search visibility, schema markup and backlink or directory distribution.
Nexus-JPF/note-companion
Use and read this skill immediately if the user request is in any way related to SEO or a site's organic search or AI search presence.
Works with
Categories
Find documented UNFAIRGAPS - systemic regulatory holes where a product can plug the leak - using court filings, regulatory fines, and enforcement data. Unfairgaps is an agent skill from AyanbekDos/unfairgaps-os. Find documented UNFAIRGAPS - systemic regulatory holes where a product can plug the leak - using court filings, regulatory fines, and enforcement data.
Unfairgaps fits situations like: tasks that involve SEO audit.
Run `npx skills add AyanbekDos/unfairgaps-os --skill unfairgaps -a claude-code`. Or copy the skill folder (skills/unfairgaps in AyanbekDos/unfairgaps-os) into .claude/skills/unfairgaps in your project. Claude Code loads it when a task matches its description.
Run `npx skills add AyanbekDos/unfairgaps-os --skill unfairgaps -a codex`. Or copy the skill folder (skills/unfairgaps in AyanbekDos/unfairgaps-os) into .agents/skills/unfairgaps in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add AyanbekDos/unfairgaps-os --skill unfairgaps -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/unfairgaps, .gemini/skills/unfairgaps, .github/skills/unfairgaps and .opencode/skills/unfairgaps in your project.
Going by SKILL.md and its folder, Unfairgaps needs the command-line tools its instructions call (python) and credentials named PERPLEXITY_API_KEY. Our summary lists: Python 3; A credential in PERPLEXITY_API_KEY.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Unfairgaps is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Unfairgaps: GEO-First SEO Audit Tool (zubair-trabzada/geo-seo-claude, 11k stars), GEO Platform Optimizer (zubair-trabzada/geo-seo-claude, 11k stars), AI Discoverability Audit (BrianRWagner/ai-marketing-claude-code-skills, 440 stars) and SEO Audit (shadcn-labs/agentcn, 490 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
AyanbekDos (a GitHub user) maintains it in AyanbekDos/unfairgaps-os, which has 112 GitHub stars. The repository was last updated on May 20, 2026.
Source: AyanbekDos/unfairgaps-os on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.