Appearance
rank-tracker
FreshSource: BIBLE.md (Phase 3, Phase 10 Route wrappers), bible/campaigns.md (Tracking rankings)
Orchestrator over the mobile-serp plugin for SERP scraping plus rank-store for persistence. Tracks domain position across locations with 90-day history.
Routes
| Method | Route | What |
|---|---|---|
| GET | /ranks | List tracked keywords |
| POST | /ranks/check | Check current rank |
| GET | /ranks/report | Historical trend report |
| POST | /ranks/batch | Batch rank check |
Single rank check
bash
curl -X POST http://localhost:4700/ranks/check \
-H "Content-Type: application/json" \
-H "x-api-key: ghost-engine-key" \
-d '{
"keyword": "junk removal dallas",
"domain": "journeyjunkremoval.com",
"state": "TX"
}'Returns:
json
{
"success": true,
"keyword": "junk removal dallas",
"domain": "journeyjunkremoval.com",
"locations": [
{ "location": "Dallas, TX", "rank": 7 },
{ "location": "Fort Worth, TX", "rank": 12 },
{ "location": "Plano, TX", "rank": 9 }
],
"summary": {
"totalLocations": 3,
"ranked": 3,
"unranked": 0,
"avgRank": 9.3,
"bestRank": 7,
"worstRank": 12,
"bestLocation": "Dallas, TX"
}
}Batch rank check
bash
curl -X POST http://localhost:4700/ranks/batch \
-H "Content-Type: application/json" \
-H "x-api-key: ghost-engine-key" \
-d '{
"checks": [
{ "keyword": "junk removal dallas", "domain": "journeyjunkremoval.com" },
{ "keyword": "junk hauling dallas", "domain": "journeyjunkremoval.com" }
],
"state": "TX"
}'Historical rank report
bash
curl "http://localhost:4700/ranks/report?keyword=junk+removal+dallas&domain=journeyjunkremoval.com&days=30"Returns trend:
json
{
"keyword": "junk removal dallas",
"domain": "journeyjunkremoval.com",
"trend": "improving",
"delta": -3,
"from": 10,
"to": 7,
"dataPoints": 28,
"periodDays": 30
}Trend values: improving (delta negative), declining (delta positive), stable.
CLI
bash
node cli.mjs rank \
--keyword "junk removal dallas" \
--domain "journeyjunkremoval.com" \
--state "TX"Daily rank cron
bash
curl -X POST http://localhost:4700/schedules \
-H "Content-Type: application/json" \
-H "x-api-key: ghost-engine-key" \
-d '{
"jobType": "rank-check",
"runsPerDay": 1,
"startHour": 6,
"endHour": 7,
"spreadStrategy": "even",
"daysOfWeek": [1,2,3,4,5],
"jobConfig": {
"keyword": "junk removal dallas",
"domain": "journeyjunkremoval.com",
"state": "TX"
}
}'Storage
Rank snapshots stored 90 days in core/rank-store.mjs. Persistence at data/ghost-engine/ranks/{keyword-hash}.json.
How it fits with other plugins
- Uses
mobile-serp(orserp-tracker) for SERP scraping - Persists snapshots to
core/rank-store - Triggered by
schedulerjobTyperank-check - Read by
analytics,client-reporting,revenue-attribution
Related
- Ranks API
- serp-tracker: SERP feature tracking
- Geogrid Scanner: lat/lng grid rank scans