seoskills.sh
Catalog/seoskills/internal

GBP Review Velocity & Sentiment Monitor

Pulls reviews per location from the Google Business Profile API and computes review velocity, star trend, response rate…

0 installs

Use this skill

$ npx skills add seoskills.sh/gbp-review-monitor
Category
Repository
seoskills/internal
GitHub stars
License

SKILL.md

---
name: GBP Review Velocity & Sentiment Monitor
description: Pulls reviews per location from the Google Business Profile API and computes review velocity, star trend, response rate, and NLP sentiment and theme extraction, flagging velocity drops, sentiment declines, and unanswered reviews. Use when the user wants review monitoring, reputation tracking, response-rate audits, or competitor review benchmarking across locations.
category: local-seo
---

# GBP Review Velocity & Sentiment Monitor

AGENT ROLE: Autonomous reputation-monitoring agent. Pull reviews per location, compute velocity/sentiment/response metrics, and emit the JSON in `references/output.schema.json`.

## OBJECTIVE
Quantify each location's review health — how fast reviews arrive, the star trend, sentiment and recurring themes, and how many reviews go unanswered — and flag deteriorations that need attention.

## INPUTS
- `account_id` + `location_ids` (REQUIRED): GBP resources (`accounts/{a}/locations/{l}`).
- `window_days` (OPTIONAL, default 90): velocity + trend window.
- `sentiment_backend` (OPTIONAL enum `lexicon|openai`): default `lexicon` (keyless); `openai` if `OPENAI_API_KEY` set.
- `benchmark` (OPTIONAL): prior run's aggregates for trend deltas.

## AUTHENTICATION (Google Business Profile API)
1. REQUIRE OAuth token, scope `https://www.googleapis.com/auth/business.manage` (`GBP_OAUTH_TOKEN` or delegated SA).
   - IF absent THEN STOP `error.code="AUTH_MISSING_TOKEN"`; `401` → STOP `error.code="AUTH_EXPIRED"`.
2. Requires Google-approved Business Profile API access. `403 SERVICE_DISABLED`/`PERMISSION_DENIED` → STOP `error.code="API_ACCESS_NOT_APPROVED"`.
3. Reviews live on the v4 endpoint: `GET https://mybusiness.googleapis.com/v4/{account_id}/locations/{loc}/reviews` (paged via `pageToken`).
4. `openai` sentiment backend: `POST https://api.openai.com/v1/chat/completions` with `OPENAI_API_KEY`.

## EXPECTED TOOL CALLS
- Run `scripts/gbp_reviews.py --account accounts/1 --locations loc1,loc2 --window 90`.
- Per location: page all reviews in the window; each review has `starRating` (ONE..FIVE), `comment`, `createTime`, and `reviewReply` (present iff answered).

## PROCEDURE (deterministic, per location)
STEP 1 — FETCH reviews within `window_days` (page until `createTime` older than the window).
STEP 2 — VELOCITY: `reviews_per_week = count / (window_days/7)`; compare first-half vs second-half of the window to detect acceleration/deceleration.
STEP 3 — STAR TREND: mean star of older half vs recent half; `star_delta`.
STEP 4 — SENTIMENT: map `starRating` to polarity, refine with text sentiment (`lexicon` or `openai`); extract recurring THEMES from negative reviews (top noun phrases / lexicon categories: service, wait, price, cleanliness, staff).
STEP 5 — RESPONSE RATE: `answered / total`; `unanswered_recent` = unanswered reviews in the last 14 days (highest priority).
STEP 6 — FLAGS: `velocity_drop` (recent < 0.5× earlier), `sentiment_decline` (`star_delta <= -0.4`), `low_response_rate` (< 0.5). EMIT per-location metrics + flags, sorted worst-first.

## RATE LIMITS & ERROR HANDLING
- GBP v4 strict QPM. `429` → backoff `2^attempt` (max 5) then STOP `error.code="RATE_LIMITED"` with `partial`.
- `openai` sentiment `429` → backoff (max 4); on persistent failure fall back to `lexicon` and set `sentiment_backend="lexicon"`.
- Per-location failure → mark `status="fetch_error"`, continue.

## MISSING / INSUFFICIENT DATA
- IF a location has < 5 reviews in the window THEN report raw counts but mark trend metrics `low_confidence` (too few to trend).
- Star rating is authoritative for polarity; if a review has no `comment`, sentiment = star-derived only (note `text_available=false`).
- Never invent themes; if no negative reviews, themes = [].

## OUTPUT
One JSON object per `references/output.schema.json`. No prose.

## FILES
- `scripts/gbp_reviews.py` — GBP v4 reviews client, velocity/star/response metrics, sentiment + theme extraction.
- `references/output.schema.json` — output contract.

Not using the CLI? Copy the SKILL.md and paste it straight into ChatGPT, Claude, or any agent.

Embed a badge

seoskills.sh install badge

More in Local SEO

Local SEOagricidaniel/claude-seo

seo-local

Local SEO analysis covering Google Business Profile optimization, NAP consistency, citation health, review signals, local schema markup, location page quality, multi-location SEO, and industry-specific recommendations. Detects business type (brick-and-mortar, SAB, hybrid) and industry vertical. Use when user says "local SEO", "Google Business Profile", "GBP", "map pack", "local pack", "citations", "NAP consistency", "service area", or "multi-location".

5.3K installs
Local SEOeronred/aso-skills

localization

When the user wants to localize their App Store listing for international markets. Also use when the user mentions "localization", "translate my app", "international markets", "expand to new countries", "localize metadata", or "which countries should I target". For keyword research in specific markets, see keyword-research. For metadata writing, see metadata-optimization.

2.9K installs
Local SEOcalm-north/seojuice-skills

rank-local

Build a local SEO strategy covering Google Business Profile, local citations, reviews, and NAP consistency. Use when the user asks about local SEO, Google Business Profile, Google Maps ranking, local pack, NAP consistency, local citations, review strategy, or ranking for "[service] near me" searches.

2.5K installs
Local SEOkostja94/marketing-skills

local-seo

No description available.

2.3K installs
Local SEOjezweb/claude-skills

seo-local-business

Generate complete SEO setup for local business websites — HTML head tags, JSON-LD LocalBusiness schema, robots.txt, sitemap.xml. Australian-optimised with +61 phone, ABN, suburb patterns. Use whenever the user wants SEO for a local business (tradesman, café, clinic, agency, retailer), needs JSON-LD structured data, asks for LocalBusiness schema, or wants meta tags / robots.txt / sitemap for a suburb-serving business.

1.7K installs
Local SEOanycap-ai/anycap

anycap-ai-tool-seo

Guide for planning and auditing SEO for AI tool, SaaS, and product-led websites. Powered by AnyCap -- the capability runtime that equips AI agents with web search and web crawl through a single CLI. Use when Codex needs to define SEO ICPs, map search intent to page types, inspect live SERPs, write page briefs for tool/comparison/alternatives/pricing/tutorial pages, prioritize technical SEO foundations, plan citations or backlinks, or decide whether programmatic SEO is safe and worthwhile. Trigger on mentions of AI tool SEO, SaaS SEO, product-led SEO, search intent, page type mapping, vs pages,

472 installs