SEO Audit
by coreyhaines31 / marketingskills
Audit, review, or diagnose SEO issues on your site.
Optimize a Google Business Profile (GMB, Google My Business listing) with the Reach MCP server.
Listed ·Updated
Install data from skills.sh
Optimize Google Business Profile is an SEO Audit skill for AI agents, published in the seoskills.sh catalog. Reach for it when your work involves full technical and on-page audits with prioritized action plans. Install it with one command and it runs inside your own agent, so the work happens in your workflow, not a separate SEO tool.
Find the gaps in a Google Business Profile and fix them one previewed, approved change at a time.
This skill needs the Reach MCP server connected in your AI client:
https://reach.locus-intelligence.com/api/mcp (remote, Streamable HTTP, OAuth sign-in, no API key)Reach by Locus operates this required hosted MCP endpoint; this repository contains client instructions, not the server. Connect through your MCP client and sign in to your own Reach account with browser OAuth. Never paste passwords, access tokens or API keys into chat.
Editing needs the Google Business Profile connected in Reach.
get_account. If there is more than one location, ask which one. If its connectionStatus is not active, tell the owner to reconnect Google in Reach and stop.get_recommendations for the location, then get_listing with sections: ["profile"] to see what is there now. If readiness is never_run, the profile has not been scored yet: say that, not "nothing missing". Never add gaps that are not in the response.actionability:
agent_can_fix: offer to do it with the tool named in fix.needs_owner_input: ask the owner for the substance (a phone number, the real opening hours, what services they offer). Never invent it.needs_setup: explain once what it needs, without pushing.update_listing with preview: true (the default) and only that change in changes.update_listing again with the same changes, preview: false and the basedOn the preview returned. Pass an idempotencyKey.published.applied, skipped and failed exactly as returned.get_listing (sections: ["profile"]). If the old value still shows, say Google may still be applying it.update_recommendation_status with the item's taskId, status: "completed" and an idempotencyKey.status: "dismissed" only when the owner asks to drop an item.manage_media).stagedDashboardEdits (unpublished edits saved in Reach), show them separately. Set includeStagedEdits only after the owner approves those too.publishMode: "all" only when the owner asks to publish everything and has approved the preview of every included change, including staged edits. Asking to publish everything does not replace those approvals.connectionStatus is not active.limitations before saying there is no data.rate_limited, give retryAfterSeconds and do not retry right away. On listing_only, relay the message and connectUrl, and stop. On an upgrade refusal, name requiredPlan, point to Plans in Reach, and stop.Not using the CLI? Copy the SKILL.md and paste it straight into ChatGPT, Claude, or any agent.