Help us improve
Share bugs, ideas, or general feedback.
From local-seo-skills
Manages persistent briefs for local SEO projects per business/location, automating first-run setup with targeted questions and folder creation for reports, scans, audits, and drafts.
npx claudepluginhub garrettjsmith/localseoskills --plugin local-seo-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/local-seo-skills:briefThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Briefs are persistent work state for local SEO engagements. One brief per location. Brand rollup for multi-location work. Scheduled task outputs extend the brief over time, building a compounding history of every scan, audit, report, and finding for each business.
Guides local SEO strategy including Google Business Profile optimization, NAP consistency audits, local pack rankings, citation building, and location page optimization.
Generates professional local SEO client deliverables: audit reports, proposals, scopes of work, competitive analyses, onboarding documents, and market intelligence reports. Useful for SEO practitioners creating client-facing docs.
First-run alias that redirects new Agentic SEO users to the canonical agentic-seo and project-init workflow without duplicating process rules.
Share bugs, ideas, or general feedback.
Briefs are persistent work state for local SEO engagements. One brief per location. Brand rollup for multi-location work. Scheduled task outputs extend the brief over time, building a compounding history of every scan, audit, report, and finding for each business.
briefs/
{brand}/
_brand.brief.md ← config + rollup across all locations
reports/ ← brand-level rollup reports
{location}/
location.brief.md ← always current, always lean
reports/ ← weekly, monthly, QBR reports
scans/ ← geogrid scans, citation audits, page audits
drafts/ ← GBP posts, review responses awaiting approval
alerts/ ← monitoring alerts
This is the most important section. When a user mentions a specific business and no brief exists, do not proceed with their request yet. Run setup first, then circle back to what they asked for.
Before doing any work for a specific business, check for an existing brief:
briefs/{brand-slug}/{location-slug}/location.brief.mdTell the user:
"I don't have a brief for [Business Name] yet. Let me grab a few details so I can track everything going forward. This takes about 2 minutes."
Then ask these questions one at a time, not all at once:
Q1: "What's the primary keyword you want to rank for? (e.g. 'plumber buffalo ny')"
Q2: "What's the website URL?"
Q3: "How far does the service area extend? (e.g. 5 miles, 20 miles)"
Q4: "Are you managing this for a client, or is this your own business?"
Q5: "Do you want alerts and reports sent to a Slack channel?" (optional, skip if they say no)
That's it. Don't ask for more than these unless something is genuinely ambiguous.
Create brief folder structure:
briefs/{brand-slug}/{location-slug}/location.brief.mdbriefs/{brand-slug}/{location-slug}/reports/briefs/{brand-slug}/{location-slug}/scans/briefs/{brand-slug}/{location-slug}/drafts/briefs/{brand-slug}/{location-slug}/alerts/briefs/{brand-slug}/_brand.brief.mdPopulate Identity section from answers and any context already in the conversation
Configure _brand.brief.md approval block from Q4/Q5 answers
Run initial audit automatically, don't ask permission:
local_auditbusiness_profile + profile_healthgeogrid_scan (7x7, primary keyword, stated radius)citation_auditreview_velocity + google_reviewscompetitor_gapPopulate Findings from audit results
Set Next Action to the single highest-priority fix
Offer scheduled task setup:
"Brief created and initial audit done. I found [X critical, Y important issues]. [Top finding in one sentence].
Want me to set up automated monitoring? I can configure weekly ranking scans, review monitoring, GBP change detection, and monthly reports to run automatically."
If yes, go through task list from
tasks/README.md, recommend based on audit findings, configure via/scheduleIf no, proceed with original request
Then return to what the user originally asked for:
"Now let me [original request]..."
If no filesystem access: run the same conversation and audit, then output the brief as formatted text at the end of setup:
"Here's your brief. Add this to your Project knowledge base so I'll have it next time:" [brief content]
Outside of first run, create a brief mid-session if:
Do not create briefs for:
Claude Code / Cowork:
briefs/{brand-slug}/{location-slug}/location.brief.md
Claude Project: Upload brief file to Project knowledge base after creation. Tell user to do this if they haven't.
At end of every session:
When a scheduled task writes an output file:
[DATE] | {task type} → {one-line finding} → see {output path}_brand.brief.md Locations table row for this locationThe brief stays lean. Detail lives in the output files. The brief is the index.
When a user returns to a business:
Do not re-run tools with results in scans/ unless user asks or data is >30 days old.
After months of scheduled tasks writing to a brief, the history is queryable:
Never delete output files. Archive if the folder gets unwieldy. The history is the value.
During every session, manual or scheduled, watch for:
When observed, surface it explicitly:
"I noticed [X] during this session. This pattern isn't in the skill files. Want me to add it to
meta/lessons.mdfor review?"
Wait for confirmation. Then write the lesson.
After each location session:
_brand.brief.md Locations tableLowercase, hyphens, obvious:
keystone-insurance, mikes-plumbingbuffalo, downtown-chicago, pittsburgh-pa