[ SEO ]
/local-seo-audit
Backed by `.claude/context/ai-seo/playbook/01-local-seo-audit.md` (+ `00-field-notes.md`).
ACME Agency, <id> and you@example.com mark values that are per-agency — your install fills them with YOUR clients and accounts. If a section references a helper script you don't have yet, it ships with that workflow's install./local-seo-audit — AI-Powered Local SEO Audit
Backed by .claude/context/ai-seo/playbook/01-local-seo-audit.md (+ 00-field-notes.md). Method source: Caleb Ulku, "AI SEO Mastery Pro". Shared I/O runner: ACME Agency/scripts/seo_run.mjs.
When to trigger
- "Run a local SEO audit for ACME Agency", "audit the SEO for this business", "/local-seo-audit ACME Agency"
- A prospect/client asks "why aren't we ranking on Google Maps / locally?"
- Before pitching SEO as a service, or kicking off a new SEO retainer (pairs with
/seo-site-structurenext).
NOT for: paid ads diagnosis (that's media-buyer / /meta-ads-analyze), or content writing (that's /seo-content).
What it produces
A Google Doc in Klijenti/<Client>/SEO/ titled "Local SEO Audit — <Client>", with:
- Snapshot — business, location, site, primary services, current GBP signals seen.
- Competition assessment — is this niche+location winnable? (uses the playbook's low-competition signals).
- Technical audit — findings against the playbook checklist (indexability, speed signals, mobile, title/meta, NAP, internal linking, schema presence).
- GBP gap analysis — what's missing/weak vs the GBP playbook (categories, description, services, posts, ACME Agencyws).
- Core 30 / content gap — how far the site is from the Core 30 structure (topical + geographic relevance).
- AI-visibility gap — is the business present in ChatGPT / AI Overviews / Bing (quick GEO read).
- Prioritized 30/60/90-day plan — ordered actions, each tagged with the skill that executes it.
Step-by-Step
1. Parse the request
- First positional = client/business name. Flags:
--url,--location(city/region),--gbp(profile name),--dry-run(no Drive/Slack — print only). - If no URL and the client isn't in
clients.jsonwith a website, ask the user for the site URL and the target city. Don't guess.
2. Gather context (script)
node ACME Agency/scripts/seo_run.mjs --skill local-audit --mode gather \
--client "<name>" --url "<url>" --location "<city>"
This prints a JSON CONTEXT block: resolved business facts (Slack channel, Drive folder), client notes, and the scraped site (homepage title/description/markdown + key pages). Read it.
3. Read the method
- Read
.claude/context/ai-seo/playbook/01-local-seo-audit.mdin full (path is in the CONTEXTplaybookfield). - Skim
.claude/context/ai-seo/playbook/00-field-notes.mdfor real-world gotchas (proximity ceiling, visible-address rule, "every URL needs a backlink", phone-answer-rate signal). - For the GBP / structure / AI-visibility gap sections, also glance at playbooks
02,04, and03so the gaps are framed in those skills' terms.
4. Do the audit
Working from the scraped site + the playbook, write the deliverable as markdown (use #/##/###, bullet lists, and pipe tables). Be specific and evidence-based — cite what you actually saw on the site. Apply the playbook's rules literally:
- Topical before geographic — flag if the site is chasing city terms without topical depth.
- GBP proximity ceiling — if location targeting exceeds the GBP's real address reach, say so and set expectations.
- Competition — give a clear winnable / hard / very-hard verdict with reasons.
- Every recommendation must map to one of:
/gbp-optimize,/seo-site-structure,/seo-content,/seo-schema,/seo-backlinks,/ai-visibility. Tag each action with its skill. - End with the 30/60/90 plan as a table:
| Phase | Action | Skill | Expected impact |.
Write it to a temp file, e.g. ACME Agency/clients/<Client>/SEO/audit.md (create the folder) or /tmp/seo-audit.md.
5. Save + report (script)
node ACME Agency/scripts/seo_run.mjs --skill local-audit --mode save \
--client "<name>" --in "<path to audit.md>" \
--title "Local SEO Audit — <Client>" \
--slack "*Local SEO Audit — <Client>*
Competition: <one-word verdict>. Top 3 priorities: <a>, <b>, <c>."
- The script creates the Google Doc in the client's Drive
/SEOfolder and posts the summary + Doc link to the client Slack channel (one message — no progress chatter). - With
--dry-run, append--dry-run: it prints what it would do and skips Drive/Slack. - Output the Doc link to the user immediately.
Guardrails
- Recommend-only. Never edit the live site, GBP, or DNS. This skill diagnoses and plans.
- No invented data. If you couldn't see the GBP or rank data, say "not verified" rather than asserting. Pull before hypothesizing (Diagnosis Protocol).
- Croatian/Bosnian clients: any client-facing prose in the Doc follows the no-em-dash / no-AI-tell rules in root CLAUDE.md.