| name | semrush-local-seo |
| description | Manage and analyze local SEO data with semrush CLI v4 commands. Use when the user asks for Semrush local listings, local business location records, Google Maps or map-rank campaigns, map-rank keywords, heatmaps, local competitors, NAP/listing QA, or local SEO reporting through the Semrush CLI. |
Semrush Local SEO
Use semrush local ... commands for Semrush Listing Management and Map Rank Tracker workflows. This skill is for local SEO operational data; use semrush-competitor-research for organic domain-wide competitor gaps.
Prerequisites
Local SEO commands use Semrush v4 and require OAuth:
export SEMRUSH_OAUTH_TOKEN="<set-locally>"
semrush account auth status --output json --quiet
When OAuth is missing or invalid, stop and report the auth requirement. Do not fall back to v3 API-key commands for local listing changes.
Workflow
- Identify business, location count, target markets, and whether the task is read-only or mutating.
- Inspect existing listings before create, update, or delete operations.
- Pull map-rank campaigns, keywords, heatmap, and competitors for ranking analysis.
- Separate listing data quality findings from map visibility findings.
- For mutating operations, show the JSON body and get explicit user confirmation before running create, update, or delete.
Listing Commands
Read listings:
semrush local listing list --output json --quiet
semrush local listing get <LISTING_ID> --output json --quiet
Create, update, and delete listings only after explicit confirmation:
semrush local listing create --json '{"name":"Example Business"}' --output json --quiet
semrush local listing update <LISTING_ID> --json '{"name":"Updated Business"}' --output json --quiet
semrush local listing delete <LISTING_ID> --output json --quiet
If JSON is complex, write it to a temporary file and pipe it via stdin only when the CLI version supports stdin for that command.
Map Rank Commands
semrush local map-rank campaigns --output json --quiet
semrush local map-rank keywords <CAMPAIGN_ID> --output json --quiet
semrush local map-rank heatmap <CAMPAIGN_ID> --output json --quiet
semrush local map-rank competitors <CAMPAIGN_ID> --output json --quiet
Use heatmap output to identify grid-level visibility weaknesses. Use keyword output to separate ranking issues by service, city, modifier, and intent.
Local SEO Checks
| Area | Check |
|---|
| NAP consistency | Name, address, phone, URL, categories, and service area alignment. |
| Listing completeness | Hours, attributes, descriptions, photos, business category, and links. |
| Map rank keywords | Visibility by service keyword and geo modifier. |
| Heatmap | Strong and weak areas around the location. |
| Local competitors | Nearby businesses consistently outranking the target. |
Avoid making listing edits based only on model assumptions. Use source-of-truth business data provided by the user or returned by Semrush.
Output Format
Return:
- Account and auth status relevant to v4 local commands.
- Listing summary: IDs, completeness issues, and risky inconsistencies.
- Map-rank summary: campaigns, keywords, heatmap patterns, and competitors.
- Recommended actions split into safe reads, proposed edits, and user-confirmed mutations.
- Exact commands run and JSON bodies used or proposed.
Related Skills
- Use
semrush-traffic-trends for geo traffic patterns beyond maps.
- Use
semrush-keyword-research for local keyword expansion.
- Use
semrush-batch-workflows for repeated read-only domain or keyword reporting; batch recipes do not currently support local v4 commands.