Skip to main content
skill CX Codex

rank-tracker · aaron-he-zhu — Claude Code skill: track keyword rankings over time

A skill that measures keyword positions in search and in AI answers, comparing each check against a baseline. Useful when you need to see what dropped after a site change.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add aaron-he-zhu/aaron-marketing-skills --skill rank-tracker -a claude-code
Open on GitHub

What rank-tracker does

Give it a domain and a keyword list, and it returns a position table with deltas against the previous check. Every row carries a source tag: tool export, user-provided, or estimated. It also tracks ownership of snippets, PAA blocks, local and media packs, plus AI Overview presence and citation rate.

No paid subscription required. A ledger.py script records each check as a snapshot, computes the change since the last one, and builds a series for a single keyword. Run it with `python3 "${CLAUDE_PLUGIN_ROOT}/scripts/connectors/ledger.py" record <domain> --source rank --data '{"<keyword>": <position>, ...}'`. With Search Console connected, positions come from there; otherwise the skill uses what you supply.

One thing to keep in mind: a week-scale ranking move is confounded by everything else you shipped. The author advises attributing it against a control — a holdout keyword or competitor you left alone — rather than against zero. A stale position, or one measured on a different locale, device or engine, is flagged NEEDS_REFRESH instead of being reported as current. With no keywords and nothing to infer them from, the skill stops and asks for a list.

What it helps with

  • record positions for a keyword list and save them as a baseline
  • measure how far a term dropped after on-page edits
  • check who owns the snippet and PAA block for target queries
  • see whether AI answers cite pages from the domain
  • compare share of voice against competitors

Example prompts for the agent

  • Set up rank tracking for example.com targeting these keywords: [keyword list]
  • Analyze ranking changes for example.com over the past month
  • Record current positions in the ledger and show the diff from the last check

How to install rank-tracker

1Skills CLI (Vercel)

npx skills add aaron-he-zhu/aaron-marketing-skills --skill rank-tracker -a claude-code

2Manually: put the files in place

~/.claude/skills/rank-tracker/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/rank-tracker/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about rank-tracker

How do I install rank-tracker in Claude?

Run npx skills add aaron-he-zhu/aaron-marketing-skills --skill rank-tracker -a claude-code. The skill lands in ~/.claude/skills/rank-tracker/SKILL.md.

What does rank-tracker do?

It compares current keyword positions against the previous check and reports the delta. It also tracks SERP features and visibility in AI answers.

Do I need a paid SEO tool?

No. Without connected tools, positions are recorded through ledger.py from data you provide. With Search Console connected, real positions are pulled from it.

Source text

SKILL.md · Apache-2.0
---
name: rank-tracker
slug: rank-tracker
displayName: "Rank Tracker · 排名追踪"
summary: "排名追踪/SERP监控"
description: 'Use when the user asks to "track rankings" or "查排名"; measures keyword and SERP-position deltas over time from provided exports or connected tools, including AI-response checks. Not for multi-metric stakeholder reports or setting alerts — use performance-monitor (report or alert mode). 排名追踪/SERP监控'
version: "20.1.0"
license: Apache-2.0
compatibility: "Claude Code and compatible agent-skill hosts"
homepage: "https://github.com/aaron-he-zhu/aaron-marketing-skills"
when_to_use: "Use when tracking keyword rankings, monitoring position changes, comparing ranking snapshots, or detecting ranking drops."
argument-hint: "<domain> [keyword list]"
allowed-tools: WebFetch
metadata: {"author": "aaron-he-zhu", "version": "20.1.0", "discipline": "seo-geo", "phase": "evaluate", "geo-relevance": "medium", "hermes": {"tags": ["marketing", "seo-geo", "evaluate"], "category": "seo-geo"}, "openclaw": {"emoji": "🔍", "homepage": "https://github.com/aaron-he-zhu/aaron-marketing-skills"}}
---

# Rank Tracker

Tracks keyword positions, SERP feature ownership, and AI visibility over time.

## Quick Start

```
Set up rank tracking for [domain] targeting these keywords: [keyword list]
```

```
Analyze ranking changes for [domain] over the past [time period]
```

## Skill Contract

**Expected output**: a ranking report or delta summary plus the standard handoff summary for `memory/monitoring/`.

- **Reads**: current rankings, prior baselines, target keyword list, locale/language/device/engine, snapshot/source refs, observation times/windows, stable page/content bindings, and any user-provided or tool metrics.
- **Writes**: a user-facing monitoring deliverable and reusable summary.
- **Promotes**: significant changes, confirmed anomalies, follow-up actions, and pending decisions to `memory/open-loops.md`.
- **Done when**: every tracked keyword shows a current, context-matched position vs baseline with a labeled delta, or Unknown/NEEDS_REFRESH with its reason; each observation cites its source ref, observed time, window, locale/language/device/engine, evidence label, and ranking page ref; conflicts remain visible; and biggest movers and likely causes are named.
- **Primary next skill**: [performance-monitor](../performance-monitor/SKILL.md) when recurring monitoring should become automated.

### Handoff Summary

> Emit the standard shape from [skill-contract.md §Handoff Summary Format](../../../references/skill-contract.md).

## Data Sources

All integrations optional (see [CONNECTORS.md](../../../CONNECTORS.md)). With tools, pull rankings from ~~SEO tool, impressions from ~~search console, traffic from ~~analytics, and AI citations from ~~AI monitor. Without tools, ask for positions, volumes, competitor data, and SERP feature status.

**Zero-dependency measurement loop** (no paid tool needed): never narrate a ranking movement you did not measure — record each check as a snapshot and let the ledger compute the delta. `python3 "${CLAUDE_PLUGIN_ROOT}/scripts/connectors/ledger.py" record <domain> --source rank --data '{"<keyword>": <position>, ...}'`, then `ledger.py diff <domain> --source rank` for the change since the last check and `ledger.py trend <domain> --source rank --field "<keyword>"` for the series. Record real Search Console positions when connected, or the positions the user provides at Tier 1. A ranking delta is a **week-scale, confounded outcome** — attribute it against a control (a holdout keyword/competitor), not against zero; see [references/measurement-protocol.md](../../../references/measurement-protocol.md). See [scripts/connectors/README.md](../../../scripts/connectors/README.md).

## Decision Gates

**Stop and ask the user when:**
- No target keywords are provided and none can be inferred from `CLAUDE.md` or prior monitoring records — offer: (1) supply a keyword list, (2) track the domain's top known terms, (3) cancel.

**Continue silently (never stop for):**
- No prior baseline exists — record the current run as the baseline, label all positions as the first snapshot, and proceed (do not invent a "previous" position).
- Missing optional tool data (SERP features, AI citations) — mark N/A and proceed.

## Instructions

When a user requests rank tracking or analysis:

1. **Set Up Keyword Tracking** — configure domain, market/locale, device, language, engine, update frequency, priorities, competitor watchlist, and stable page refs. Apply the [SEO/GEO Evidence and Cycle Control Profile](../performance-monitor/references/evidence-and-cycle-control.md).
2. **Record Current Rankings** — output a position table where every row cites its source (tool export / user-provided / estimated), with position ranges, ranking URLs, feature ownership, and movement vs baseline.
3. **Analyze Ranking Changes** — highlight biggest wins, declines, stable terms, new rankings, lost rankings, likely causes, and recovery ideas; each delta labeled against its baseline.
4. **Track SERP Features** — compare ownership of snippets, PAA, image/video packs, local packs, and related feature shifts.
5. **Track GEO / AI Visibility** — monitor AI Overview presence, citation rate, citation position, and trend; mark each value Measured (from an ~~AI monitor) or N/A if unobserved.
6. **Compare Against Competitors** — report share of voice, head-to-head comparisons, and threat levels.
7. **Generate Ranking Report** — output overall trend, key wins, concerns, opportunities, SERP feature changes, GEO visibility, and recommendations, with each metric carrying its source tag.

Label every metric **Measured**, **User-provided**, **Calculated**, **Estimated**, **Proxy**, or **Unknown**; never present an estimate or proxy as measured. An applicable missing metric is Unknown with its reason. A stale or locale/language/device/engine-mismatched position is `NEEDS_REFRESH`, not a current ranking; N/A is only for a genuinely non-applicable field.

> **Reference**: See [Ranking Analysis Templates](references/ranking-analysis-templates.md) for the complete output templates for all seven steps.

## Example

A ranking report names the biggest winners, biggest drops, and next actions, with each position carrying its source tag and labeled delta against baseline.

## Rank Change Quick Reference

### Response Protocol

| Change | Timeframe | Action |
|--------|-----------|--------|
| Drop 1-3 positions | Wait 1-2 weeks | Monitor — may be normal fluctuation |
| Drop 3-5 positions | Investigate within 1 week | Check technical issues and competitor changes |
| Drop 5-10 positions | Investigate immediately | Run a full diagnostic: technical, content, links |
| Drop off page 1 | Emergency response | Comprehensive audit + recovery plan |
| Position gained | Document and learn | Identify what worked and replicate |

> **Reference**: See [Tracking Setup Guide](references/tracking-setup-guide.md) for tracking setup, root-cause taxonomy, CTR benchmarks, SERP feature impact, and algorithm-update assessment.

### Save Results

Ask "Save these results?" If yes, write to `memory/monitoring/` — see [Skill Contract](../../../references/skill-contract.md) §Save Results Template.

## Reference Materials

- [SEO/GEO Evidence and Cycle Control Profile](../performance-monitor/references/evidence-and-cycle-control.md) — exact search observations, freshness, page bindings, and cycle rules
- [Tracking Setup Guide](references/tracking-setup-guide.md) — Setup rules, feature tracking, and interpretation guidance

## Next Best Skill

Initial setup (no baseline) → [performance-monitor](../performance-monitor/SKILL.md). Subsequent runs (baseline exists) → Terminal. Visited-set rule applies per [skill-contract.md](../../../references/skill-contract.md).

© aaron-he-zhu · Apache-2.0 · aaron-he-zhu/aaron-marketing-skills

Similar skills

Everything for SEO and GEO →

rank-tracker by other authors comes first.

From the same set113

serp-markup-builder Builds the document head: title and description options, an Open Graph and Twitter Card block, and validated JSON-LD for rich results. CX Codex +1 1,400installs serp-analysis Maps search engine results pages, snippet opportunities, AI Overviews, and ranking factors. Useful for planning content against live search competition. CX Codex +1 1,400installs performance-monitor Builds multi-metric SEO reports for a domain or sets alerts for changes in traffic, rankings and AI visibility. CX Codex +1 1,300installs domain-authority-auditor Audits domain trust and citation credibility using a 40-item CITE profile against a declared peer cohort. Useful for benchmarking authority and checking penalty vetoes. CX Codex +1 1,300installs offsite-signal-analyzer Profiles a domain's off-site signals: referring domains, anchor mix, toxic links — or sessions arriving from Claude and Perplexity answers. CX Codex +1 1,300installs page-play-builder Builds scalable SEO page systems across four modes: programmatic data-driven pages, third-party parasite content, competitor comparisons, and local SEO. CX Codex +1 1,200installs memory-management Manages authorised project memory across sessions: it initializes, reviews, consolidates, archives, and erases working notes with access controls. CX Codex +1 1,100installs content-amplifier A marketing skill that helps push approved creator content further with paid spend, or repackage one asset into a set of formats. CX Codex +1 1,100installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor