# /gbp-optimize

> Backed by `.claude/context/ai-seo/playbook/02-gbp-optimize.md` (+ `00-field-notes.md` for suspension edge cases).


# /gbp-optimize — Google Business Profile Optimization

Backed by `.claude/context/ai-seo/playbook/02-gbp-optimize.md` (+ `00-field-notes.md` for suspension edge cases).

## When to trigger
- "Optimize ACME Agency's Google Business Profile", "write GBP posts for X", "fix the GBP categories", "/gbp-optimize ACME Agency".
- Right after `/local-seo-audit` flags GBP gaps (GBP is the #1 local ranking lever — everything ranks the GBP).

## What it produces
A Google Doc "GBP Optimization — <Client>" with: category set (1 primary + additional, with re-theming notes), optimized description, services list, 4–8 ready GBP posts, ACME Agencyw plan, geotag/attributes checklist, and a **suspension-risk + verification** section.

## Step-by-Step

### 1. Parse
First positional = client/business. Flags: `--gbp` (profile name), `--location`, `--categories` (known current categories), `--dry-run`. If you don't know the current GBP state, ask the user to paste the current categories/description or a screenshot — then proceed; don't fabricate the current state.

### 2. Gather context
```bash
node ACME Agency/scripts/seo_run.mjs --skill gbp --mode gather --client "<name>" --url "<url>" --location "<city>"
```
Read the CONTEXT (business facts + scraped site for service/keyword signals).

### 3. Read the method
Read `.claude/context/ai-seo/playbook/02-gbp-optimize.md` fully. Note the non-negotiables: keyword↔category match, the description rules/length, services count, post cadence, and the **suspension triggers** (name/address changes, adding YMYL categories too fast, the automated-calls feature). Read `00-field-notes.md` for recovery edge cases.

### 4. Generate the package (markdown)
Produce, in the playbook's terms:
- **Categories** — recommended primary + additional, each justified by the keyword-category match rule; flag any re-theming and sequence YMYL additions safely.
- **Description** — written to the playbook's formula and length, keyword-aware but natural.
- **Services** — full list named per the playbook.
- **GBP posts** — generate the batch using the course's "Endless GBP Posts" prompt (load it via the playbook / `prompts/`); make them publish-ready, localized, no AI-tells.
- **ACME Agencyws** — the get-more-ACME Agencyws plan + response approach.
- **Other boxes** — hours, attributes, products, geotagged-image guidance.
- **Safe changes & verification** — what to change in what order to avoid re-verification/suspension; if unverified, the verification game-plan (incl. video-verification steps from the playbook).
Write to `ACME Agency/clients/<Client>/SEO/gbp.md` (or `/tmp`).

### 5. Save + report
```bash
node ACME Agency/scripts/seo_run.mjs --skill gbp --mode save --client "<name>" \
  --in "<gbp.md>" --title "GBP Optimization — <Client>" \
  --slack "*GBP Optimization — <Client>*
Recommended primary category: <x>. <N> posts ready. Suspension risks flagged: <y>."
```
Add `--dry-run` to skip Drive/Slack. Output the Doc link.

## Guardrails
- **Never edit the live GBP.** Output is a package the team publishes after ACME Agencyw.
- **Suspension-first:** always surface what could trigger a suspension before recommending it. Disable the automated-calls feature on every profile.
- Croatian/Bosnian copy follows the no-em-dash / no-AI-tell rules.
