Localseodata Tool
garrettjsmith/localseoskills
When the user wants to pull local SEO data — SERP results, local pack rankings, business profile data, reviews, citations, audits, geogrid scans, keyword research, AI visibility, competitor…
When a local business wants to map the competitors winning the local pack for its target queries — their categories, ratings, review counts, and what they have that it lacks.
$ npx skills add unifapi-agent/agents --skill local-competitor-scan -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install unifapi-agent/agents local-competitor-scan --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/unifapi-agent/agents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/local-seo-agent/local-competitor-scan .claude/skills/local-competitor-scan && 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 "local-competitor-scan" agent skill from https://github.com/unifapi-agent/agents/tree/main/skills/local-seo-agent/local-competitor-scan into .claude/skills/local-competitor-scan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-competitor-scan", 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/unifapi-agent/agents/tree/main/skills/local-seo-agent/local-competitor-scanType 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 unifapi-agent/agents --skill local-competitor-scan -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install unifapi-agent/agents local-competitor-scan --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unifapi-agent/agents.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/local-seo-agent/local-competitor-scan .agents/skills/local-competitor-scan && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "local-competitor-scan" agent skill from https://github.com/unifapi-agent/agents/tree/main/skills/local-seo-agent/local-competitor-scan into .agents/skills/local-competitor-scan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-competitor-scan", 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 unifapi-agent/agents --skill local-competitor-scan -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install unifapi-agent/agents local-competitor-scan --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unifapi-agent/agents.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/local-seo-agent/local-competitor-scan .cursor/skills/local-competitor-scan && 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 "local-competitor-scan" agent skill from https://github.com/unifapi-agent/agents/tree/main/skills/local-seo-agent/local-competitor-scan into .cursor/skills/local-competitor-scan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-competitor-scan", 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/unifapi-agent/agents.git --path skills/local-seo-agent/local-competitor-scan--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 unifapi-agent/agents --skill local-competitor-scan -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install unifapi-agent/agents local-competitor-scan --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unifapi-agent/agents.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/local-seo-agent/local-competitor-scan .gemini/skills/local-competitor-scan && 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 "local-competitor-scan" agent skill from https://github.com/unifapi-agent/agents/tree/main/skills/local-seo-agent/local-competitor-scan into .gemini/skills/local-competitor-scan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-competitor-scan", 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 unifapi-agent/agents local-competitor-scanInstalls 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 unifapi-agent/agents --skill local-competitor-scan -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/unifapi-agent/agents.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/local-seo-agent/local-competitor-scan .github/skills/local-competitor-scan && 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 "local-competitor-scan" agent skill from https://github.com/unifapi-agent/agents/tree/main/skills/local-seo-agent/local-competitor-scan into .github/skills/local-competitor-scan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-competitor-scan", 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 unifapi-agent/agents --skill local-competitor-scan -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install unifapi-agent/agents local-competitor-scan --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unifapi-agent/agents.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/local-seo-agent/local-competitor-scan .opencode/skills/local-competitor-scan && 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 "local-competitor-scan" agent skill from https://github.com/unifapi-agent/agents/tree/main/skills/local-seo-agent/local-competitor-scan into .opencode/skills/local-competitor-scan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-competitor-scan", 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.
local-competitor-scanWhen a local business wants to map the competitors winning the local pack for its target queries — their categories, ratings, review counts, and what they have that it lacks.
Local Competitor Scan is an agent skill from unifapi-agent/agents. When a local business wants to map the competitors winning the local pack for its target queries — their categories, ratings, review counts, and what they have that it lacks. Also use on "who's beating me in the map pack," "local competitor analysis," "local SEO competitors," "why do they outrank me," "competitor review counts," "local competitive gap," or "what are competitors doing locally." Reads public map and SERP data only — read-only research.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `README.md`).
It sits in Marketing & SEO, covering Local SEO and Competitor analysis. The repository describes itself as: Open-source marketing agents for Claude, ChatGPT, Codex, OpenClaw & Hermes. One plugin: SEO audits, GEO / AI-visibility, local SEO, KOL pricing, social listening & competitive… The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit fb53247. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).
From 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 no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Local Competitor Scan loads about 2.3k tokens when it runs. Until then it costs about 119 tokens; SKILL.md has 1,009 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 unifapi-agent/agents at commit fb53247, republished under its MIT licence (© unifapi-agent). 1,009 words, ~2,278 tokens.
.claude/skills/local-competitor-scan/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.You are a local competitive analyst. The businesses sitting in the local pack ahead of you are the clearest brief for what local Google rewards in your category and city. This skill maps the competitors ranking for a business's target local queries, profiles them on the signals that move local rank — and, for the leaders, pulls their broader organic strength to explain why they win — then surfaces the concrete gap. Read-only.
This is an enhanced skill: it reads live public data through UnifAPI.
A competitive brief built from memory is a guess. You have to read the actual pack rivals, their actual listings, and — for the leaders — their actual organic footprint. Use the unifapi skill to connect (OAuth MCP), then call:
local/search, maps/search — the businesses occupying the local pack for each target query × location, plus each one's name, place_id, primary + secondary category, rating, review_count, phone, website, hours, and position. Loop the query (and location) and dedupe rivals by place_id — recurring rivals surface as the real competition.seo/serp — who ranks the organic blue links for the same queries. A rival can own the organic results yet trail in the pack, or vice versa; reading both separates "wins the map" from "wins the page."seo/competitors/domain (the rival's organic competitors and the domains it actually competes with) and seo/competitors/ranked-keywords (the breadth of queries the rival's site ranks for). This is the context layer: a pack leader that also ranks for hundreds of local queries has site authority underwriting its prominence — that is a different, harder gap than a rival that merely has more reviews.UnifAPI reads public data only — it never touches any business's profile. Keep any billing metadata so the output can state record cost.
local-pack-audit if one exists). If queries are missing, ask. (Read .agents/product-marketing.md / .claude/product-marketing.md first if it exists.)local/search + maps/search, collect the businesses appearing across them keyed by place_id, and cross-check the organic block with seo/serp. Count how many target queries each rival appears in — frequency is the first filter: a business in 5 of 6 packs is a core rival; a one-query cameo is noise.category (relevance), rating and review_count (prominence), review recency where visible, secondary categories, hours completeness, and website presence.seo/competitors/ranked-keywords (how broad their organic footprint is) and seo/competitors/domain (whose organic territory they fight for). A pack lead backed by site authority is a structural advantage, not just a review-count edge — say which it is.For each recurring competitor, score how far ahead of the target they are on the levers local rank rewards. Higher total = bigger threat / clearer brief:
| Signal | How to score (per competitor vs. target) | Weight |
|---|---|---|
| Pack frequency | queries they appear in ÷ total target queries | ×3 |
| Review volume | review_count ratio vs. target (capped at 3×) | ×3 |
| Rating | rating delta vs. target (each +0.1 = 1 pt, capped) | ×2 |
| Category fit | primary category more specific to the queries? (0/1/2) | ×2 |
| Organic strength | ranked-keywords count vs. target — broad local footprint? (0–3) | ×2 |
| Completeness | secondary categories + hours + website all present? (0–3) | ×1 |
Threat score = Σ(signal × weight). Rank competitors by threat descending. The top of that list is the business to study and beat first; the signals driving its score are the to-do list.
# Local Competitor Scan — <business> — <date>
Queries: <…> · location: <…> · language/device: <…>
## Competitor profile (ranked by threat score)
| Competitor | Pack freq | Primary category | Rating | Reviews | Ranked kw | Threat | Lead over target |
| ------------- | --------- | ---------------------- | ------ | ------- | --------- | ------ | ------------------------------------------- |
| Cool Air HVAC | 6/6 | Furnace repair service | 4.9 | 680 | 1,240 | 19 | Reviews 3.2×, exact category, broad organic |
| A1 Comfort | 5/6 | HVAC contractor | 4.7 | 410 | 320 | 11 | Reviews 2×, full hours |
| _Target_ | 3/6 | HVAC contractor | 4.7 | 210 | 180 | — | — |
## Gap summary
- The signal gap in concrete numbers: where the target trails the pack leaders (review volume, rating, category specificity, organic footprint).
- The common denominator: what every top-3 rival has that the target doesn't.
- A ranked shortlist of what to close first, ordered by the rubric's weighting.
Each figure cited to the live local-pack / listing / SERP record it came from. Record cost consumed (or best estimate).Brief: HVAC company, queries "ac repair / furnace repair / hvac repair" × Austin. Target: 4.7 rating, 210 reviews, primary category "HVAC contractor", appears in 3/3 of "ac"/"hvac" packs but absent from "furnace repair".
seo/competitors/ranked-keywords shows ~1,240 ranked queries (vs. target ~180) and seo/competitors/domain puts it among the city's organic leaders. Threat score 19: reviews 3.2×, exact category for the query the target is missing from, and structural site authority. The brief: review velocity + the furnace category + content depth.Verdict: A1 is catchable on reviews alone; Cool Air needs reviews + furnace category + a content play. Reads: 6 local/maps + 3 SERP + 4 competitor-organic.
© unifapi-agent, 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 1 other file in skills/local-seo-agent/local-competitor-scan of unifapi-agent/agents.
Open the folder on GitHubat commit fb53247
Local Competitor Scan 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 |
|---|---|---|---|---|---|---|
| Local Competitor Scan this skillunifapi-agent/agents | 587 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Localseodata Toolgarrettjsmith/localseoskills | 114 | — | ~4.1k | Automated safety check: Pass | MIT | |
| Geogrid Analysisgarrettjsmith/localseoskills | 114 | — | ~4.2k | Automated safety check: Pass | MIT | |
| Local Competitor Analysisgarrettjsmith/localseoskills | 114 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Client Deliverablesgarrettjsmith/localseoskills | 114 | — | ~5.8k | Automated safety check: Pass | MIT | |
| SEO Content Brief GeneratorAgriciDaniel/claude-seo | 18k | 2 repos | ~2.6k | Automated safety check: Pass | MIT |
garrettjsmith/localseoskills
When the user wants to pull local SEO data — SERP results, local pack rankings, business profile data, reviews, citations, audits, geogrid scans, keyword research, AI visibility, competitor…
garrettjsmith/localseoskills
When the user wants to analyze local ranking data using geogrid scans, interpret map pack rankings across a geographic area, or understand ARP/ATRP/SoLV metrics.
garrettjsmith/localseoskills
When the user wants to analyze local search competitors, benchmark against map pack rivals, or understand why competitors outrank them.
garrettjsmith/localseoskills
When the user needs to create a client-facing document such as an SEO audit, proposal, scope of work, competitive analysis report, onboarding document, or market intelligence report.
AgriciDaniel/claude-seo
Builds research-backed SEO content briefs with competitor scoring, per-section word counts and page-type templates, for new pages or improving existing ones.
AgriciDaniel/claude-seo
Brings the FLOW framework's stage-specific SEO prompts into the agent, from keyword discovery through backlinks, on-page work and conversion to local SEO, loaded on demand.
unifapi-agent/agents
When the user wants to track how often their brand or domain gets mentioned across ChatGPT and AI search engines over a set of prompts, and how that share of voice compares to named competitors over…
unifapi-agent/agents
When a seller or SDR wants to catch public buying intent on X/Twitter and LinkedIn — someone asking for a tool they sell, complaining about or switching off a competitor, or hiring for a role that…
unifapi-agent/agents
When the user wants to research customers from public communities, or synthesize customer language, pains, and objections.
unifapi-agent/agents
When the user wants to research keywords, find keyword opportunities, run a keyword gap analysis, build topic clusters, or compare what competitors rank for.
unifapi-agent/agents
When the user wants to add, fix, or optimize schema markup and structured data on their site.
unifapi-agent/agents
When the user wants to audit, review, or diagnose SEO issues on their site.
Categories
When a local business wants to map the competitors winning the local pack for its target queries — their categories, ratings, review counts, and what they have that it lacks. Local Competitor Scan is an agent skill from unifapi-agent/agents. When a local business wants to map the competitors winning the local pack for its target queries — their categories, ratings, review counts, and what they have that it lacks.
Local Competitor Scan fits situations like: tasks that involve Local SEO; tasks that involve Competitor analysis.
Run `npx skills add unifapi-agent/agents --skill local-competitor-scan -a claude-code`. Or copy the skill folder (skills/local-seo-agent/local-competitor-scan in unifapi-agent/agents) into .claude/skills/local-competitor-scan in your project. Claude Code loads it when a task matches its description.
Run `npx skills add unifapi-agent/agents --skill local-competitor-scan -a codex`. Or copy the skill folder (skills/local-seo-agent/local-competitor-scan in unifapi-agent/agents) into .agents/skills/local-competitor-scan 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 unifapi-agent/agents --skill local-competitor-scan -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/local-competitor-scan, .gemini/skills/local-competitor-scan, .github/skills/local-competitor-scan and .opencode/skills/local-competitor-scan in your project.
SKILL.md names no scripts, command-line tools or credentials: Local Competitor Scan is instructions for the agent only.
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.
Local Competitor Scan is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Local Competitor Scan: Localseodata Tool (garrettjsmith/localseoskills, 114 stars), Geogrid Analysis (garrettjsmith/localseoskills, 114 stars), Local Competitor Analysis (garrettjsmith/localseoskills, 114 stars) and Client Deliverables (garrettjsmith/localseoskills, 114 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
unifapi-agent (a GitHub organization) maintains it in unifapi-agent/agents, which has 587 GitHub stars. The repository holds 47 skills in this directory. The repository was last updated on September 5, 2026.
Source: unifapi-agent/agents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.