FLOW SEO Framework
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.
Audit a Google Business Profile, compare it to local competitors, and map Maps visibility around a location.
$ npx skills add every-app/open-seo --skill local-seo -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install every-app/open-seo local-seo --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/every-app/open-seo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/local-seo .claude/skills/local-seo && 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-seo" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/local-seo into .claude/skills/local-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-seo", 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/every-app/open-seo/tree/main/.agents/skills/local-seoType 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 every-app/open-seo --skill local-seo -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install every-app/open-seo local-seo --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/local-seo .agents/skills/local-seo && 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-seo" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/local-seo into .agents/skills/local-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-seo", 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 every-app/open-seo --skill local-seo -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install every-app/open-seo local-seo --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/local-seo .cursor/skills/local-seo && 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-seo" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/local-seo into .cursor/skills/local-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-seo", 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/every-app/open-seo.git --path .agents/skills/local-seo--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 every-app/open-seo --skill local-seo -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install every-app/open-seo local-seo --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/local-seo .gemini/skills/local-seo && 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-seo" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/local-seo into .gemini/skills/local-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-seo", 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 every-app/open-seo local-seoInstalls 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 every-app/open-seo --skill local-seo -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/local-seo .github/skills/local-seo && 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-seo" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/local-seo into .github/skills/local-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-seo", 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 every-app/open-seo --skill local-seo -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install every-app/open-seo local-seo --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/local-seo .opencode/skills/local-seo && 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-seo" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/local-seo into .opencode/skills/local-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-seo", 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-seoAudit a Google Business Profile, compare it to local competitors, and map Maps visibility around a location.
Local SEO is an agent skill from every-app/open-seo. Audit a Google Business Profile, compare it to local competitors, and map Maps visibility around a location.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Marketing & SEO, covering Local SEO. The repository describes itself as: Open source alternative to Semrush and Ahrefs. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit deb4491. 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.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
openseo.soFrom 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 SEO loads about 1.9k tokens when it runs. Until then it costs about 30 tokens; SKILL.md has 1,073 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 every-app/open-seo at commit deb4491, republished under its MIT licence (© every-app). 1,073 words, ~1,883 tokens.
.claude/skills/local-seo/SKILL.md (or your agent's skills folder).Work out why a business does or does not show up in Google Maps and the local pack near its customers, and what to fix first.
Use this when rankings depend on a physical location or service area. For national organic work, use competitor-analysis or keyword-research.
projectIdcid/placeId (most reliable)search_local_businesses / get_local_serp_results row; only ask the user when derivation is ambiguousThe project-context tools are free and shared with the app and other agents.
get_project_context first and ground the work in it — what the business does and where it operates decides which keywords and radius matter.business_overview. If it is empty, run a minimal inline setup: infer what the business does and its location from the site and confirm it with the user in one question, write it back with update_project_context, then continue. Never front-load the full interview; suggest seo-project-setup at the end for the rest.update_project_context — local competitors that have a website via addCompetitors (competitor rows are keyed by domain, so skip listings without one), a corrected business_overview — and append a research log entry: { appendResearchLog: { summary: "Local SEO: <business> near <area>. Verdict: <conclusion>" } }.Deliver through the seo-report skill, saving with skill: "local-seo". If that skill is not available, say so and stop before writing HTML.
search_local_businesses: nearby listings, filterable by minRating, minReviews, and isClaimed — use isClaimed: false to find unclaimed listings when prospecting. One call with the brand name as query and a wide radius returns category, rating, review count, claimed status, coordinates, and cid for every location of a chain — usually enough that per-location get_business_profile calls are unnecessary.get_local_serp_results: the Maps/Local Finder result set near a coordinate. The rows carry cid and place_id — collect them once and reuse them everywhere below.get_business_profile: the full profile for one business (hours, rating breakdown) when the search_local_businesses row isn't enough.get_business_reviews: reviews with ratings, text, and whether the owner replied. Queued: a processing response returns a taskId — call again with it after 30-60 seconds, at no extra cost.get_local_rank_grid: rank at every point of a grid around a coordinate, with each point's result count and #1 business. 3x3 is nine searches; only go to 5x5 when the service area is genuinely wide.get_google_business_questions: Q&A on the profile (accepts cid/placeId).get_business_updates: posts published on the profile, with dates.list_business_categories: valid category slugs for search_local_businesses.search_local_businesses (name as query, wide radius) locates the listing and yields its cid and coordinate. If it returns several locations, the business is a chain — see multi-location below.get_local_serp_results for the main keyword near the business coordinate. Record the top 3-5 competitors' cid/place_id and the user's own row.search_local_businesses rows usually carry all of this; use get_business_profile for what they lack.url/contact_url in the rows): it should deep-link to that location's page on the project domain, not a homepage or a stale domain. For broader on-page work, hand off to run_site_audit.get_business_reviews for the user and the strongest competitor. Look at review volume, recency, average rating, and how many reviews got an owner reply.get_local_rank_grid for the main keyword. Use the grid to separate "ranks at the storefront only" from "ranks across the service area", and each point's topResult to name who wins where the target doesn't.get_google_business_questions and get_business_updates when the profile basics are already competitive and the gap is engagement rather than setup.Always build the profile snapshot table for the whole chain — one search_local_businesses call covers it. The per-location deep-dives (reviews, grid, posts, Q&A) are where cost scales:
h1: the business name.
If a report template applies (see seo-report), its sections and tone replace this list.
Sections in this order:
seo-report, pointing at https://openseo.so/docs/skills/local-seo ("OpenSEO Local SEO skill"), then which tools returned what, plus a note reading each missing grid rank against that point's resultsCount rather than calling it invisibility.cid or place_id when you have one. Name matching collides with chains and similarly named businesses.resultsCount: a full result set means outranked; a near-empty one means a sparse SERP, not proof of invisibility.© every-app, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/local-seo of every-app/open-seo.
Open the folder on GitHubat commit deb4491
Local SEO 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 SEO this skillevery-app/open-seo | 23k | — | ~1.9k | Automated safety check: Pass | MIT | |
| FLOW SEO FrameworkAgriciDaniel/claude-seo | 18k | 2 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Google Mapscablate/mcp-google-map | 468 | — | ~909 | Automated safety check: Pass | MIT | |
| Google Maps Local SEOcablate/mcp-google-map | 468 | — | ~633 | Automated safety check: Pass | MIT | |
| Google Maps Travel Planningcablate/mcp-google-map | 468 | — | ~710 | Automated safety check: Pass | MIT | |
| SEO Project Setuppetera2c/simple-table | 229 | 2 repos | ~1.5k | Automated safety check: Pass | MIT |
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.
cablate/mcp-google-map
Search places, resolve addresses, compare routes, inspect neighborhoods, and retrieve geographic or environmental facts through the standalone @cablate/mcp-google-map CLI.
cablate/mcp-google-map
Analyze Google Business Profile visibility, geographic grid rankings, local search keywords, and nearby competitors through the standalone Google Maps CLI.
cablate/mcp-google-map
Build evidence-backed day trips, multi-day itineraries, and efficient stop sequences with Google Maps data through the standalone CLI.
petera2c/simple-table
Set up a durable local SEO workspace with project context, notes, goals, positioning, preferences, MCP checks, and Search Console data intake.
AgriciDaniel/claude-seo
Hub for site-wide SEO work: audits, technical checks, schema, content quality, local, hreflang and AI-search readiness, run through slash commands.
every-app/open-seo
Log genuine, recurring repository friction to .agents/PAPERCUTS.md — confusing setup, a flaky repo command or script, a misleading in-repo error, stale generated files, or a non-obvious gotcha that…
every-app/open-seo
Test a candidate OpenSEO skill end to end by running fresh, isolated Codex sessions against the local backend and scoring the reports they save.
every-app/open-seo
Turn a rough bug report, feature request, support note, or pull request into a short, plain-language issue focused on the problem and desired behavior.
every-app/open-seo
Create or update a skill in this repository the right way — canonical home in .agents/skills, internal-vs-public marking, symlink mirroring into .claude/skills, and public docs registration for…
every-app/open-seo
Remove AI writing patterns from prose so it reads like a person wrote it.
every-app/open-seo
Triage OpenSEO production errors in Cloudflare Workers Observability — verified query recipes, counting gotchas, and a known-noise filter list applied automatically.
Categories
Audit a Google Business Profile, compare it to local competitors, and map Maps visibility around a location. Local SEO is an agent skill from every-app/open-seo. Audit a Google Business Profile, compare it to local competitors, and map Maps visibility around a location.
Local SEO fits situations like: tasks that involve Local SEO.
Run `npx skills add every-app/open-seo --skill local-seo -a claude-code`. Or copy the skill folder (.agents/skills/local-seo in every-app/open-seo) into .claude/skills/local-seo in your project. Claude Code loads it when a task matches its description.
Run `npx skills add every-app/open-seo --skill local-seo -a codex`. Or copy the skill folder (.agents/skills/local-seo in every-app/open-seo) into .agents/skills/local-seo 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 every-app/open-seo --skill local-seo -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-seo, .gemini/skills/local-seo, .github/skills/local-seo and .opencode/skills/local-seo in your project.
SKILL.md names no scripts, command-line tools or credentials: Local SEO is instructions for the agent only.
SKILL.md names 1 domain. In commands or code: openseo.so; the agent is likely to contact it when it follows the instructions. 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 SEO is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.5k 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 SEO: FLOW SEO Framework (AgriciDaniel/claude-seo, 18k stars), Google Maps (cablate/mcp-google-map, 468 stars), Google Maps Local SEO (cablate/mcp-google-map, 468 stars) and Google Maps Travel Planning (cablate/mcp-google-map, 468 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
every-app (a GitHub organization) maintains it in every-app/open-seo, which has 22,680 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 6, 2026.
Source: every-app/open-seo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.