← Back to Skills
Communication

localrank-agent-skills

peterw By peterw 👁 6 views ▲ 0 votes

Track local rankings, run SEO audits, and manage

GitHub
---
name: LocalRank
description: Track local rankings, run SEO audits, and manage agency clients using LocalRank
author: LocalRank
repository: https://github.com/peterw/localrank-agent-skills
---

# LocalRank Skill

Track local rankings, run SEO audits, and manage agency clients using LocalRank.

**Last updated:** 2026-01-30

> Freshness check: If more than 30 days have passed since the last-updated date above, inform the user that this skill may be outdated and point them to the update options below.

## Keeping This Skill Updated

**Source:** github.com/peterw/localrank-agent-skills
**API docs:** app.localrank.so/settings/api

| Installation | How to update |
|-------------|---------------|
| CLI (npx skills) | `npx skills update` |
| Claude Code plugin | `/plugin update localrank@localrank-skills` |
| Cursor | Remote rules auto-sync from GitHub |
| Manual | Pull latest from repo or re-copy skills/localrank/ |

---

## Setup

Before using this skill, ensure:

1. **API Key:** Run the setup command to configure your API key securely
   - Get your key at https://app.localrank.so/settings/api
   - Run: `<skill-path>/scripts/localrank.js setup`
   - Or set environment variable: `export LOCALRANK_API_KEY=lr_your_key`

2. **Requirements:** Node.js 18+ (uses built-in fetch). No other dependencies needed.

**Config priority (highest to lowest):**
1. `LOCALRANK_API_KEY` environment variable
2. `./.localrank/config.json` (project-local)
3. `~/.config/localrank/config.json` (user-global)

### Handling "API key not found" errors

**CRITICAL:** When you receive an "API key not found" error:

1. **Tell the user to run setup** - The setup is interactive. Recommend they run:
   ```
   <skill-path>/scripts/localrank.js setup
   ```

2. **Stop and wait** - Do not continue with tasks. Wait for the user to complete setup.

**DO NOT** attempt to search for API keys in other locations or guess credentials.

---

## What LocalRank Does

LocalRank helps local SEO agencies track and improve Google Business Profile rankings:

- **Rank Tracking:** Visual grid maps showing where businesses rank across a geographic area
- **GMB Audits:** Analyze any Google Business Profile for issues and opportunities
- **LocalBoost:** Build citations on 50+ directories to improve local authority
- **SuperBoost:** Premium GBP optimization with AI-powered improvements
- **Review Booster:** Collect more Google reviews from happy customers

---

## Common Actions

| User says... | Action |
|-------------|--------|
| "How are my clients doing?" | `portfolio:summary` |
| "Check rankings for Acme Plumbing" | `client:report --business "Acme"` |
| "What should I work on today?" | `prioritize:today` |
| "Find easy wins" | `quick-wins:find` |
| "Which clients might churn?" | `at-risk:clients` |
| "Run an audit on this business" | `audit:run --url "..."` |
| "Draft an update email for Acme" | `email:draft --business "Acme"` |
| "How can I help this client rank better?" | `recommendations:get --business "..."` |

---

## Workflow

### Morning Check-in
```bash
# See what needs attention today
./scripts/localrank.js prioritize:today

# Quick overview of all clients
./scripts/localrank.js portfolio:summary
```

### Client Call Prep
```bash
# Get full report for a client
./scripts/localrank.js client:report --business "Acme Plumbing"

# Get recommendations for improvement
./scripts/localrank.js recommendations:get --business "Acme Plumbing"
```

### Finding Opportunities
```bash
# Keywords close to page 1 (easy wins)
./scripts/localrank.js quick-wins:find

# Clients at risk of churning
./scripts/localrank.js at-risk:clients
```

### Prospect Audits
```bash
# Run a GMB audit (costs 500 credits)
./scripts/localrank.js audit:run --url "https://google.com/maps/place/..."

# Check audit results
./scripts/localrank.js audit:get <audit_id>
```

---

## Commands Reference

### Setup & Config

| Command | Description |
|---------|-------------|
| `setup` | Interactive setup - prompts for API key |
| `setup --key <key>` | Non-interactive setup |
| `config:show` | Show current config and API key source |

### Clients & Businesses

| Command | Description |
|---------|-------------|
| `businesses:list` | List all tracked businesses |
| `businesses:list --search "name"` | Search by business name |

### Rankings & Scans

| Command | Description |
|---------|-------------|
| `scans:list` | List recent ranking scans |
| `scans:list --business "name"` | Filter scans by business |
| `scans:list --limit 20` | Limit results (max 50) |
| `scans:get <scan_id>` | Get detailed scan with keyword rankings |

### Reports

| Command | Description |
|---------|-------------|
| `client:report --business "name"` | Full client report comparing recent scans. Shows wins, drops, visual map URL |
| `portfolio:summary` | Overview of all clients - improving, declining, stable |
| `prioritize:today` | What to work on right now - urgent items and quick wins |
| `quick-wins:find` | Keywords ranking 11-20 that could reach page 1 |
| `quick-wins:find --business "name"` | Quick wins for specific client |
| `at-risk:clients` | Clients who might churn - ranking drops, low engagement |

### GMB Audits

| Command | Description |
|---------|-------------|
| `audit:run --url "google.com/maps/..."` | Run GMB audit (500 credits). Returns audit_id |
| `audit:get <audit_id>` | Get audit results - score, issues, recommendations |

### Tools

| Command | Description |
|---------|-------------|
| `recommendations:get --business "name"` | How to help a client rank better. Suggests products |
| `email:draft --business "name"` | Generate monthly update email for a client |

---

## Examples

### Check portfolio health
```bash
./scripts/localrank.js portfolio:summary
```
Returns:
```json
{
  "total_clients": 15,
  "improving": 8,
  "declining": 2,
  "stable": 5,
  "avg_rank_across_portfolio": 7.3,
  "clients": [...]
}
```

### Get client report
```bash
./scripts/localrank.js client:report --business "Acme Plumbing"
```
Returns:
```json
{
  "business_name": "Acme Plumbing",
  "latest_scan": {
    "date": "2026-01-28",
    "avg_rank": 4.2,
    "keywords": [...]
  },
  "wins": [
    {"keyword": "plumber near me", "from": 8.5, "to": 3.2, "improved_by": 5.3}
  ],
  "drops": [],
  "view_url": "https://app.localrank.so/share/abc123"
}
```

### Find quick wins
```bash
./scripts/localrank.js quick-wins:find
```
Returns keywords ranking 11-20 across all clients - these are close to page 1 and easy to push up.

### Run a GMB audit
```bash
./scripts/localrank.js audit:run --url "https://google.com/maps/place/..."
# Wait for completion
./scripts/localrank.js audit:get <audit_id>
```

### Draft client email
```bash
./scripts/localrank.js email:draft --business "Acme Plumbing"
```
Returns a ready-to-send monthly update email with rankings, wins, and visual map link.

---

## Understanding the Data

### Ranking Values
- **avg_rank:** Average position across the geographic grid (lower is better)
- **best_rank:** Best position found in any grid point
- Rankings 1-3 are in the "Local Pack" (visible on Google Maps)
- Rankings 4-10 are "page 1"
- Rankings 11-20 are "quick wins" - close to visibility

### Visual Maps
Most responses include a `view_url` like `https://app.localrank.so/share/abc123`
- Share these with clients to show ranking coverage
- The grid shows where the business ranks from different locations

### Status Values
- **improving:** Rankings got better since last scan
- **declining:** Rankings dropped (needs attention)
- **stable:** Rankings unchanged
- **new:** Only one scan, no comparison data yet

---

## Products to Recommend

When `recommendations:get` suggests products:

| Product | When to use | What it does |
|---------|-------------|--------------|
| **SuperBoost** | Avg rank > 10 | AI-powered GBP optimization, premium citations |
| **LocalBoost** | Avg rank 5-10 | Build 50+ citations to increase local authority |
| **ContentBoost** | Avg rank > 7 | AI-generated local content for topical authority |
| **Review Booster** | Any client | Collect more Google reviews automatically |
| **Rank Tracker** | < 5 keywords | Track more keywords to measure impact |

---

## Tips

- **Visual proof:** Always include the `view_url` when showing clients their rankings
- **Quick wins first:** Keywords at rank 11-15 are easiest to push to page 1
- **Audit before proposal:** Run `audit:run` on prospects to show them issues
- **Proactive communication:** Use `at-risk:clients` to catch churn early
- **Batch operations:** Use `portfolio:summary` for monthly reviews of all clients

---

## Support

Questions? [email protected]
communication

Comments

Sign in to leave a comment

Loading comments...