Keyword Difficulty Analyzer

GEO difficulty

by OpenClaudia · MIT license · ★ 705 on GitHub

GEO difficulty cover

Score how hard a keyword is to rank for in the AI-search era — page-level URL Rating of real competitors (not just domain DR), Ahrefs keyword difficulty, and whether a given site already ranks or is cited in Google's AI Overview. Use…

---
name: geo-difficulty
description: "Score how hard a keyword is to rank for in the AI-search era — page-level URL Rating of real competitors (not just domain DR), Ahrefs keyword difficulty, and whether a given site already ranks or is cited in Google's AI Overview. Use when the user asks 'how hard is <keyword> to rank', 'geo difficulty for <keyword>', or 'keyword difficulty for <domain>'."
---

# GEO Difficulty

Score keyword ranking difficulty for the AI-search era. Unlike plain Ahrefs KD or domain DR, this:

- uses **page-level URL Rating (UR)** of the results that actually target the query — so a generic article on a huge domain (e.g. mckinsey.com) stops inflating the score;
- is **client-relative** — the same SERP is a wall for a no-name site but ~won for a site already ranking or cited in Google's AI Overview;
- folds in the **AI Overview** citation as a first-class signal.

**Disclosure:** contributed by Enception AI. Backed by the free public API behind https://www.enception.ai/tools/geo-difficulty (`POST https://www.enception.ai/api/tools/geo-difficulty`, no API key). Server-side data comes from Ahrefs and SerpAPI.

## Usage

```bash

Overview

Score keyword ranking difficulty for the AI-search era. Unlike plain Ahrefs KD or domain DR, this:

What you get

  • absolutedifficulty 0–100 for a brand-new site (0.35·KD + 0.40·median competitor page-UR + 0.25·targeting%).
  • client_verdict / client_diffonly with --client. WON (top-3 or AI-Overview cited), FOOTHOLD (ranks 4–10), NOT RANKING (with the gap to close, credited for the client's DR).
  • KDAhrefs keyword difficulty; - for zero-volume long-tail.
  • URmedian page-level URL Rating of the real competitors.
  • tgt%share of the top-10 that actually target the query.
  • AIOcited (client in the AI Overview), Nsrc (AIO shown, N sources), none, or n/a (AIO not available for this query).
Manual install (npx, ZIP)
Claude Codenpx skills add OpenClaudia/openclaudia-skills --skill geo-difficulty -g -a claude-code
Claude Code (degit)npx degit OpenClaudia/openclaudia-skills/skills/geo-difficulty#main ~/.claude/skills/geo-difficulty
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md2.7 KB
Read SKILL.md here
OpenClaudia/main1 file shown
SKILL.md
Show the full text49 lines
geo-difficulty/SKILL.md49 lines · 2.7 KB

GEO Difficulty

Score keyword ranking difficulty for the AI-search era. Unlike plain Ahrefs KD or domain DR, this:

  • uses page-level URL Rating (UR) of the results that actually target the query — so a generic article on a huge domain (e.g. mckinsey.com) stops inflating the score;
  • is client-relative — the same SERP is a wall for a no-name site but ~won for a site already ranking or cited in Google's AI Overview;
  • folds in the AI Overview citation as a first-class signal.

Disclosure: contributed by Enception AI. Backed by the free public API behind https://www.enception.ai/tools/geo-difficulty (POST https://www.enception.ai/api/tools/geo-difficulty, no API key). Server-side data comes from Ahrefs and SerpAPI.

Usage

bash scripts/score.sh "ai form real estate" "ai slide legal" --client example.com
  • Pass one or more keywords (quote each). Up to 10 per call.
  • --client <domain> is optional; add it to get the client-relative verdict (WON / FOOTHOLD / NOT RANKING).
  • GEO_DIFFICULTY_URL env var overrides the endpoint (rarely needed).

Or call the API directly:

curl -s -X POST https://www.enception.ai/api/tools/geo-difficulty \
  -H 'content-type: application/json' \
  -d '{"keywords":["ai presentation maker"],"client":"example.com"}' --max-time 150

Output columns

  • absolute — difficulty 0–100 for a brand-new site (0.35·KD + 0.40·median competitor page-UR + 0.25·targeting%).
  • client_verdict / client_diff — only with --client. WON (top-3 or AI-Overview cited), FOOTHOLD (ranks 4–10), NOT RANKING (with the gap to close, credited for the client's DR).
  • KD — Ahrefs keyword difficulty; - for zero-volume long-tail.
  • UR — median page-level URL Rating of the real competitors.
  • tgt% — share of the top-10 that actually target the query.
  • AIO — cited (client in the AI Overview), Nsrc (AIO shown, N sources), none, or n/a (AIO not available for this query).
  • competitors — the targeting results with their UR.

Notes

  • The AI Overview leg depends on Google actually showing an AIO for the query (intermittent); it degrades gracefully to none/n/a.
  • Numbers shift day to day as SERPs and UR change — treat as a current snapshot, not a fixed grade.
  • Each keyword takes a few seconds server-side; keep --max-time generous for batches.
1---
2name: geo-difficulty
3description: "Score how hard a keyword is to rank for in the AI-search era — page-level URL Rating of real competitors (not just domain DR), Ahrefs keyword difficulty, and whether a given site already ranks or is cited in Google's AI Overview. Use when the user asks 'how hard is <keyword> to rank', 'geo difficulty for <keyword>', or 'keyword difficulty for <domain>'."
4---
5 
6# GEO Difficulty
7 
8Score keyword ranking difficulty for the AI-search era. Unlike plain Ahrefs KD or domain DR, this:
9 
10- uses **page-level URL Rating (UR)** of the results that actually target the query — so a generic article on a huge domain (e.g. mckinsey.com) stops inflating the score;
11- is **client-relative** — the same SERP is a wall for a no-name site but ~won for a site already ranking or cited in Google's AI Overview;
12- folds in the **AI Overview** citation as a first-class signal.
13 
14**Disclosure:** contributed by Enception AI. Backed by the free public API behind https://www.enception.ai/tools/geo-difficulty (`POST https://www.enception.ai/api/tools/geo-difficulty`, no API key). Server-side data comes from Ahrefs and SerpAPI.
15 
16## Usage
17 
18```bash
19bash scripts/score.sh "ai form real estate" "ai slide legal" --client example.com
20```
21 
22- Pass one or more keywords (quote each). Up to 10 per call.
23- `--client <domain>` is optional; add it to get the client-relative verdict (`WON` / `FOOTHOLD` / `NOT RANKING`).
24- `GEO_DIFFICULTY_URL` env var overrides the endpoint (rarely needed).
25 
26Or call the API directly:
27 
28```bash
29curl -s -X POST https://www.enception.ai/api/tools/geo-difficulty \
30 -H 'content-type: application/json' \
31 -d '{"keywords":["ai presentation maker"],"client":"example.com"}' --max-time 150
32```
33 
34## Output columns
35 
36- **absolute** — difficulty 0–100 for a brand-new site (`0.35·KD + 0.40·median competitor page-UR + 0.25·targeting%`).
37- **client_verdict / client_diff** — only with `--client`. WON (top-3 or AI-Overview cited), FOOTHOLD (ranks 4–10), NOT RANKING (with the gap to close, credited for the client's DR).
38- **KD** — Ahrefs keyword difficulty; `-` for zero-volume long-tail.
39- **UR** — median page-level URL Rating of the real competitors.
40- **tgt%** — share of the top-10 that actually target the query.
41- **AIO** — `cited` (client in the AI Overview), `Nsrc` (AIO shown, N sources), `none`, or `n/a` (AIO not available for this query).
42- **competitors** — the targeting results with their UR.
43 
44## Notes
45 
46- The AI Overview leg depends on Google actually showing an AIO for the query (intermittent); it degrades gracefully to `none`/`n/a`.
47- Numbers shift day to day as SERPs and UR change — treat as a current snapshot, not a fixed grade.
48- Each keyword takes a few seconds server-side; keep `--max-time` generous for batches.
49 
View all files on GitHub →

Details

License
MIT
Stars on the repo
★ 705
Checked
Source
OpenClaudia/openclaudia-skills ↗
Creator
OpenClaudia · 78 listings
View creator

Similar skills

See all →
SkillAI Search OptimizationAgriciDaniel/claude-seo · by AgriciDanielOptimize content for AI Overviews (formerly SGE), ChatGPT web search, Perplexity, and other AI-powered search experiences. Generative Engine Optimization (GEO) analysis including brand mention signals, AI crawler accessibility, llms.txt compliance, passage-level citability scoring, and platform-specific optimization. Use when user says "AI Overviews", "SGE", GEO", "AI search", "LLM optimization", "Perplexity", "AI citations", ChatGPT search", or "AI visibility".★ 17.4k GitHub starsSkillPhoto Geolocation AnalyzerOldcircle/geo-sleuth · by OldcircleGeolocate or chronolocate a photo with tool-verified reasoning (where was this taken / when was it taken / photo geolocation / geo-guessing). Given one or more photos, intake.py does metadata, OCR and reverse image search (Baidu/Yandex) in one command; clues and candidates go on a candidate board (board.py) that ranks them and gives the next step; clues.py looks up calling codes, driving side, plates and area codes from region packs; for satellite and street view the machine ranks first and you look only at the top few (CLIP in sat_scan.py, DINOv2+SIFT in match.py); plus sun and shadow math, OSM Overpass and DEM skylines. Every conclusion is checked against real data; output is coordinates + error radius, evidence images and tiered confidence. Use when the user shares a photo and asks where was this taken / geolocate this / when was this taken / 这是哪 / 在哪拍的 / 帮我定位这张照片 / 网络迷踪 / 图寻 / 几点拍的.★ 3.4k GitHub starsSkillAI Engine Visibility TrackerRyze-AI-Adgent/open-seo-mcp-skills · by Ryze-AI-AdgentMeasure real AI-engine visibility — traffic from ChatGPT, Perplexity, Claude, Gemini and which pages they cite — from actual GA4 referral data, not prompt sampling. Use when asked "AI visibility", "GEO/AEO check", "do LLMs cite us", "traffic from ChatGPT", or "how do we show up in AI search".★ 3.1k GitHub starsSkillAI Citation Readiness StrategyAgriciDaniel/claude-blog · by AgriciDanielUse GEO and AEO as legacy labels for AI citation readiness. For Google, the★ 2.2k GitHub starsSkillMulti-Channel SEO Operatorleopard627/fire-your-seo-agency · by leopard627SEO·AEO·GEO·LLMO·NEO(네이버) 다섯 레인을 진단하고 직접 구현하며, 인용되는 콘텐츠를 계속 생산하는 서브 블로그·콘텐츠 운영 파이프라인까지 세팅하는 스킬. 사이트를 검색엔진·답변엔진·생성 AI·네이버 AI 브리핑이 인용하는 1차 소스로 만든다. "SEO 해줘", "AI에 인용되게 해줘", "네이버 노출 늘려줘", "llms.txt 만들어줘", "블로그 만들어줘/글 써줘", "콘텐츠 백로그·캘린더 잡아줘", "낡은 글 갱신해줘" 류 요청에 사용. Use for "audit my site's SEO", "get my site cited by ChatGPT/Perplexity/AI Overviews", "improve search visibility", "create llms.txt", "answer engine / generative engine optimization", "set up a blog that gets cited", "content backlog / calendar / refresh", and any AI-search-visibility request.★ 716 GitHub starsSkillSEO and GEO Auditordageno-agents/seo-geo-audit · by dageno-agentsRun a unified SEO and GEO audit for a website, page, or domain. Use when the user asks for a full SEO audit, GEO audit, AI visibility review, EEAT review, entity audit, authority audit, or wants one prioritized report that combines technical findings, content quality, trust signals, and AI citation readiness.★ 175 GitHub stars

More from OpenClaudia

SkillA/B Testing FrameworkOpenClaudia/openclaudia-skills · by OpenClaudiaDesign, plan, and analyze A/B tests with statistical rigor. Use when the user asks about A/B testing, split testing, experiment design, statistical significance, sample size calculation, test duration, multivariate testing, or conversion experiments. Trigger phrases include "A/B test", "split test", "experiment", "statistical significance", "sample size", "test duration", "which version wins", "conversion experiment", "hypothesis test", "variant testing".★ 705 GitHub starsSkillAffiliate Marketing ProgramOpenClaudia/openclaudia-skills · by OpenClaudiaBuild and manage an affiliate marketing program. Use when the user says "affiliate program", "affiliate marketing", "affiliate partners", "referral commissions", "affiliate network", "partner program", "affiliate tracking", or asks about creating, managing, or growing an affiliate or partner program.★ 705 GitHub starsSkillAhrefs API ManagerOpenClaudia/openclaudia-skills · by OpenClaudiaManages Ahrefs API usage in Python using `ahrefs-python` library. Use when working with SEO / marketing related tasks or with data including backlinks, keywords, domain ratings, organic traffic, site audits, rank tracking, and brand monitoring. Covers `ahrefs-python` usage including AhrefsClient / AsyncAhrefsClient, typed request/response models, error handling, and all API sections.★ 705 GitHub starsSkillAI Citations Report GeneratorOpenClaudia/openclaudia-skills · by OpenClaudiaGenerate an AI Citations Report (GEO) for a domain — which AI-search prompts cite the site across Google AI Overview and ChatGPT, plus organic-traffic context and per-article citation coverage. Use when the user asks for an 'AI citations report', 'GEO citations report', or 'which AI prompts cite <domain>'.★ 705 GitHub starsSkillB2B Lead EnricherOpenClaudia/openclaudia-skills · by OpenClaudiaResearch and enrich B2B leads using the Apollo.io API. Use when the user says "find leads", "prospect research", "company enrichment", "find decision makers", "B2B leads", "lead research", "enrich contacts", "find VP of marketing at", or asks about finding people at specific companies or in specific roles.★ 705 GitHub starsSkillBacklink Health CheckerOpenClaudia/openclaudia-skills · by OpenClaudiaAudit a domain's backlink profile using the SemRush API. Use when the user says "audit backlinks", "check my backlinks", "backlink analysis", "link profile", "toxic links", "disavow", "link building opportunities", "referring domains", "anchor text", or asks about a site's link authority.★ 705 GitHub stars