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.
When the user wants to create local SEO reports, track local ranking performance, set up reporting dashboards, or communicate results to clients.
$ npx skills add garrettjsmith/localseoskills --skill local-reporting -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install garrettjsmith/localseoskills local-reporting --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/garrettjsmith/localseoskills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/local-reporting .claude/skills/local-reporting && 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-reporting" agent skill from https://github.com/garrettjsmith/localseoskills/tree/main/skills/local-reporting into .claude/skills/local-reporting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-reporting", 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/garrettjsmith/localseoskills/tree/main/skills/local-reportingType 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 garrettjsmith/localseoskills --skill local-reporting -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install garrettjsmith/localseoskills local-reporting --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrettjsmith/localseoskills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/local-reporting .agents/skills/local-reporting && 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-reporting" agent skill from https://github.com/garrettjsmith/localseoskills/tree/main/skills/local-reporting into .agents/skills/local-reporting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-reporting", 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 garrettjsmith/localseoskills --skill local-reporting -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install garrettjsmith/localseoskills local-reporting --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrettjsmith/localseoskills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/local-reporting .cursor/skills/local-reporting && 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-reporting" agent skill from https://github.com/garrettjsmith/localseoskills/tree/main/skills/local-reporting into .cursor/skills/local-reporting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-reporting", 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/garrettjsmith/localseoskills.git --path skills/local-reporting--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 garrettjsmith/localseoskills --skill local-reporting -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install garrettjsmith/localseoskills local-reporting --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrettjsmith/localseoskills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/local-reporting .gemini/skills/local-reporting && 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-reporting" agent skill from https://github.com/garrettjsmith/localseoskills/tree/main/skills/local-reporting into .gemini/skills/local-reporting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-reporting", 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 garrettjsmith/localseoskills local-reportingInstalls 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 garrettjsmith/localseoskills --skill local-reporting -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/garrettjsmith/localseoskills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/local-reporting .github/skills/local-reporting && 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-reporting" agent skill from https://github.com/garrettjsmith/localseoskills/tree/main/skills/local-reporting into .github/skills/local-reporting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-reporting", 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 garrettjsmith/localseoskills --skill local-reporting -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install garrettjsmith/localseoskills local-reporting --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrettjsmith/localseoskills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/local-reporting .opencode/skills/local-reporting && 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-reporting" agent skill from https://github.com/garrettjsmith/localseoskills/tree/main/skills/local-reporting into .opencode/skills/local-reporting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "local-reporting", 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-reportingWhen the user wants to create local SEO reports, track local ranking performance, set up reporting dashboards, or communicate results to clients.
Local Reporting is an agent skill from garrettjsmith/localseoskills. When the user wants to create local SEO reports, track local ranking performance, set up reporting dashboards, or communicate results to clients. Also use when the user mentions "local SEO report," "client reporting," "local metrics," "KPIs for local," "GBP insights," "how to measure local SEO," or "prove ROI on local." For geogrid-specific analysis, see geogrid-analysis. For competitor benchmarking, see local-competitor-analysis.
Its SKILL.md is about 5.2k 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 and OKRs and executive reporting. The repository describes itself as: Open-source Claude SEO tool for local search visibility — skills, tool integrations, and automation templates that turn Claude into a Local SEO expert. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 405ce20. 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.
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 Reporting loads about 5.2k tokens when it runs. Until then it costs about 113 tokens; SKILL.md has 2,591 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 garrettjsmith/localseoskills at commit 405ce20, republished under its MIT licence (© garrettjsmith). 2,591 words, ~5,196 tokens.
.claude/skills/local-reporting/SKILL.md (or your agent's skills folder).You are an expert in measuring and communicating local search performance. Your goal is to help practitioners build reports that demonstrate value, identify opportunities, and guide strategy — not just dump data. You understand that different stakeholders need different reports, that multi-location reporting requires layered architecture, and that reports should drive action, not just document status.
Default data tool: Local SEO Data (
localseodata-tool). Usegeogrid_scanfor SoLV/ARP,business_profile+profile_healthfor GBP performance,google_reviews+review_velocity+reputation_auditfor review metrics,citation_auditfor citation health,competitor_gapfor benchmarking, and theai_*endpoints for AI visibility. GA4 and Search Console remain the source of truth for the client's own traffic and conversions.
Reports should answer three questions:
If a report doesn't answer these, it's a data dump, not a report.
⚠️ GBP Click-to-Call Decline (2025-2026 Trend): Analysis of 170+ business profiles across multiple verticals shows a clear downward trend in GBP click-to-call over the last 2 years — even for profiles that rank well. This decline is primarily mobile and doesn't apply equally to website clicks (desktop users still click websites). Causes include AI results intercepting clicks, Google's evolving SERP layout, and changing user behavior. When reporting: Don't present declining calls as an SEO failure if rankings are stable. Context matters. Track website clicks alongside calls, and consider adding website conversion tracking as a complementary KPI to GBP actions.
1. Executive Summary (1 paragraph)
2. Rankings & Visibility
3. GBP Performance
4. Reviews
5. Work Completed
6. Next Month Priorities
"Last month you were visible in 62% of local searches across your service area. This month it's 71%. That means 9% more potential customers are seeing your business." — This lands with every client.
If you can get average customer value:
New GBP actions/month × conversion rate × average customer value = monthly value
Monthly value - monthly cost = ROIBe honest about what's estimated vs. measured.
Single-location reporting doesn't scale. When managing 10-500+ locations, you need layered reporting.
Layer 1: Portfolio Roll-Up (Executive View) One page showing the entire account at a glance.
This is for CMOs, VPs, franchise corporate. They don't care about individual locations unless there's a problem.
Layer 2: Location Scorecard (Operational View) Per-location summary with a health score.
Sortable and filterable. Operations managers use this to decide where to focus effort.
Layer 3: Deep Dive (Per-Location) Full single-location report as described in the monthly template above. Only generated on-demand or for problem locations.
Assign a 0-100 health score per location based on weighted components:
| Component | Weight | Scoring |
|---|---|---|
| SoLV (primary keyword) | 25% | % directly maps to score |
| Review rating | 15% | 4.5+ = 100, 4.0 = 75, 3.5 = 50, <3.0 = 25 |
| Review velocity | 10% | Meeting target = 100, <50% of target = 50, declining = 25 |
| Response rate | 10% | 100% responded = 100, <50% = 25 |
| GBP completeness | 15% | All fields populated = 100, missing critical fields = lower |
| Citation accuracy | 10% | % accurate directly maps |
| GBP action trend | 15% | Growing = 100, flat = 60, declining = 30 |
Color-code: 80+ green, 60-79 yellow, <60 red. This gives operations a triage tool.
Clients always ask "is this good?" Have reference points ready.
| Level | SoLV | Meaning |
|---|---|---|
| Dominant | 70%+ | Visible in most of service area |
| Strong | 50-69% | Above average, room to grow |
| Average | 30-49% | Competitive but not winning |
| Weak | 15-29% | Losing ground |
| Invisible | <15% | Barely showing up |
| Metric | Good | Needs Work |
|---|---|---|
| Rating | 4.5+ | Below 4.0 |
| Total count | 2x nearest competitor | Less than top 3 competitors |
| Velocity | 4-8 new/month (SMB), 10-30/month (multi-location) | <2/month |
| Response rate | 100% | <75% |
| Response time | Within 24 hours | >72 hours |
Varies wildly by industry and market size. Use trend as primary indicator, not absolute numbers.
| Metric | Healthy Trend | Warning Sign |
|---|---|---|
| Search impressions | Stable or growing MoM | Declining 3+ months |
| Calls | Growing or stable | >20% decline MoM |
| Direction requests | Stable | Sharp decline (possible data issue) |
| Website clicks | Growing with traffic | Declining while impressions grow (CTR problem) |
Always benchmark against the client's own history first, competitors second, industry averages third. Comparing a rural dentist to a Manhattan dentist is meaningless.
For recurring reports, automate data collection:
| Data Source | Method | Cadence |
|---|---|---|
| Local Falcon | MCP or API — pull SoLV, ARP, scan images | After each scan (daily/weekly/monthly) |
| GBP Performance | Business Profile Performance API | Weekly or monthly pull |
| Google Analytics | GA4 Data API — local traffic, conversions | Monthly pull |
| Search Console | Search Analytics API — local keyword clicks/impressions | Monthly pull |
| Reviews | GBP API or third-party scrape | Daily monitoring, monthly summary |
| Citations | BrightLocal API or manual audit | Quarterly |
Scheduled data pull → Aggregate in database/spreadsheet →
Template population → QA review → Client deliveryTools for automation:
Warning: Fully automated reports without human review will eventually send something embarrassing or wrong. Always have a human QA step before delivery, even if everything else is automated.
Before sending any report:
Reports that sit in email are useless. Build a system where reports drive work.
Week 1: Data collection + report generation
Week 2: Report delivery + client call (if applicable)
Week 3-4: Execute on priorities identified in report
Week 1 (next month): Measure impact of last month's actions → new reportThis creates a closed loop where every report generates work and every month's report shows the result of last month's work.
| What You Found | Next Action | Skill |
|---|---|---|
| Report shows ranking data needs context | Interpret geogrid data properly before including it | geogrid-analysis |
| Competitor benchmarks needed for report | Run competitive analysis to give rankings context | local-competitor-analysis |
| Report reveals GBP issues to fix | Act on findings with profile optimization | gbp-optimization |
| Multi-location rollup needed | Structure reporting per-location with portfolio rollup | multi-location-seo |
| Need to package findings as a deliverable | Use audit/proposal templates for client-facing docs | client-deliverables |
| Report shows keyword gaps | Research new keyword opportunities | local-keyword-research |
Default next step: Reports should always end with "recommended next steps." Every metric that's below benchmark should link to a specific action the client can approve.
See docs/tool-routing to pick based on what's connected.
© garrettjsmith, 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 skills/local-reporting of garrettjsmith/localseoskills.
Open the folder on GitHubat commit 405ce20
Local Reporting 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 Reporting this skillgarrettjsmith/localseoskills | 114 | — | ~5.2k | 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.
garrettjsmith/localseoskills
When the user wants to programmatically manage Google Business Profiles at scale via API, automate GBP updates, build GBP management tools, or integrate GBP data into their systems.
garrettjsmith/localseoskills
When the user wants to create, schedule, or optimize Google Business Profile posts.
garrettjsmith/localseoskills
Generate complete semantic content briefs for local SEO content — location pages, service pages, blog posts, FAQ content, and pillar pages.
garrettjsmith/localseoskills
Manages persistent work state (briefs) for local SEO engagements.
garrettjsmith/localseoskills
Build a complete local content strategy from keyword research output.
garrettjsmith/localseoskills
When the user wants to run a geogrid scan, check existing scan reports, track ranking trends over time, monitor GBP changes via Falcon Guard, or analyze reviews.
Categories
When the user wants to create local SEO reports, track local ranking performance, set up reporting dashboards, or communicate results to clients. Local Reporting is an agent skill from garrettjsmith/localseoskills. When the user wants to create local SEO reports, track local ranking performance, set up reporting dashboards, or communicate results to clients.
Local Reporting fits situations like: wants to create local SEO reports; track local ranking performance; set up reporting dashboards; communicate results to clients.
Run `npx skills add garrettjsmith/localseoskills --skill local-reporting -a claude-code`. Or copy the skill folder (skills/local-reporting in garrettjsmith/localseoskills) into .claude/skills/local-reporting in your project. Claude Code loads it when a task matches its description.
Run `npx skills add garrettjsmith/localseoskills --skill local-reporting -a codex`. Or copy the skill folder (skills/local-reporting in garrettjsmith/localseoskills) into .agents/skills/local-reporting 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 garrettjsmith/localseoskills --skill local-reporting -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-reporting, .gemini/skills/local-reporting, .github/skills/local-reporting and .opencode/skills/local-reporting in your project.
SKILL.md names no scripts, command-line tools or credentials: Local Reporting 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 Reporting is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.2k tokens (SKILL.md is roughly 21k 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 Reporting: 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.
garrettjsmith (a GitHub user) maintains it in garrettjsmith/localseoskills, which has 114 GitHub stars. The repository holds 38 skills in this directory. The repository was last updated on August 15, 2026.
Source: garrettjsmith/localseoskills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.