Keyword rank tracking report
Track the same saved keywords in a fixed market and device, then compare each exact snapshot with the prior compatible run. Results stay on your machine, including queued task state, cost and history.
Install and run the monitor
Install the CLI once, then run seo start to connect your site and Google data. After setup you can run this monitor yourself or ask your agent to run it.
Install the SEO CLI globally.
npm i -g seoRun setup after installation.
seo startCollect or resume one exact rank run for a saved keyword set.
seo reports run rank-tracking --params '{"projectId":"example","set":"Priority","targetDomain":"example.com","devices":["desktop"],"collectionMethod":"queued","cadence":"weekly"}' --jsonWhat the monitor records
Collect exact organic positions for a saved keyword set, then compare compatible local snapshots with coverage, task state, and cost kept visible.
- Best for
- A saved keyword set needs repeatable position checks for one fixed market and device.
- Needs
- Saved keyword set and target domain
- You get
- A run summary with tracked keywords, completed, pending and failed snapshots, exact position changes, ranking URL changes, and prior-run coverage.
- Use next
- Inspect live search results
What you need before you run it
This monitor uses A local saved keyword set, target domain, fixed search market, separate device configuration, provider task evidence, exact retained positions, requested depth, coverage, cost, and prior compatible runs.
Saved keyword set and target domain
Select up to 50 keywords for live collection or 1,000 for queued collection, with an optional saved tag filter.
Fixed search market and device
Uses the saved country, language, location, and one or two explicit device configurations without blending their positions.
Connected exact-rank provider
Posts or collects bounded search snapshots with task ids, exact ranks, requested depth, coverage, warnings, and cost.
How the report finds the opportunity
The report uses existing search and page evidence to build a limited review list. An opportunity is a reason to inspect a page, not a promise of more traffic.
Creates or resumes one local run for the exact keyword set, target domain, market, device, provider, depth, collection method, and cadence.
Records observed, not observed within depth, pending, and failed states separately for every keyword and device pair.
Compares the latest completed evidence with the prior compatible run for new, lost, improved, declined, unchanged, and ranking URL changes.
Retains bounded local history and caps report output without hiding omitted counts.
Check the evidence behind each opportunity
Start with the query, page and date range behind each suggestion. Thin or partial evidence belongs in the review pile, not the implementation queue.
| Read first | Why it matters |
|---|---|
| Result | A run summary with tracked keywords, completed, pending and failed snapshots, exact position changes, ranking URL changes, and prior-run coverage. |
| More detail | A bounded item list with current and previous evidence plus fixed market, device, depth, provider task, local retention, cost, warning, and caveat context. |
| Read it with | Read market, device, depth, run state, coverage, and cost before the change list. Add Search Console evidence when clicks, impressions, or average position matter to the decision. |
What the result cannot prove
Not observed within depth does not prove that the domain has no ranking. Search results can change between checks, and exact snapshots answer a different question from Search Console average position. Pending or failed tasks cannot support a loss. A ranking change alone cannot establish cause, traffic impact, or future performance.
Read market, device, depth, run state, coverage, and cost before the change list. Add Search Console evidence when clicks, impressions, or average position matter to the decision. Run a Search Console opportunity report before prioritising work from position movement alone.
Run the local collector daily so queued tasks are picked up before the provider ready list expires. The saved cadence controls when a new weekly or monthly run starts, while each poll resumes the same unfinished run.
Use a different report for these jobs
You need clicks, impressions, or average position from Search Console. You only need to inspect one current result page with no saved history.
You need clicks, impressions, CTR, or average position from searches associated with the site.
Use a Search Console opportunity report for first-party performance evidence. Exact rank snapshots do not contain clicks or impressions and should not replace average position.
You need to inspect one current result page but do not need saved history.
Run live search results for that query and market. It returns the retained result page and features without creating a recurring tracking configuration.
Use the monitor with an agent or in code
The command above is enough for most work. These options let an agent, script or application run the same monitor with explicit input and structured output.
CLI
Use the report catalog when an agent, script or CI job needs predictable JSON instead of the normal terminal output. Check the current input first, then run the monitor with the validated parameters.
Check the current input before the agent or script runs the monitor.
seo reports describe rank-tracking --jsonOnce the input is valid, run the monitor through the report catalog.
seo reports run rank-tracking --params '{"projectId":"example","set":"Priority","targetDomain":"example.com","devices":["desktop"],"collectionMethod":"queued","cadence":"weekly","depth":100}' --jsonMCP
An MCP agent follows the same two-step flow. It inspects the current schema, fills the required fields and only then runs the monitor.
Ask the MCP server for the current monitor input.
{
"id": "rank-tracking"
}Run the monitor after the agent has checked and filled the input.
{
"id": "rank-tracking",
"params": {
"projectId": "example",
"set": "Priority",
"targetDomain": "example.com",
"devices": [
"desktop"
],
"collectionMethod": "queued",
"cadence": "weekly",
"depth": 100
}
}TypeScript
Install the package in a Node 22 project when your application needs to run the monitor directly. The result includes the same evidence, warnings and limits returned through the CLI and MCP server.
Add the SEO package to your project.
npm install seoRun the monitor from your TypeScript application.
import { executeReport } from 'seo/mcp'
const result = await executeReport(
'rank-tracking',
{
"projectId": "example",
"set": "Priority",
"targetDomain": "example.com",
"devices": [
"desktop"
],
"collectionMethod": "queued",
"cadence": "weekly",
"depth": 100
},
)
console.log(result)What to do next
Check market, device, depth, coverage and cost before reading the position changes. Inspect changed ranking URLs and add Search Console evidence before deciding that a movement deserves work.
- 01Inspect the current result page and ranking URL when a change could reflect intent drift or a competing template.
- 02Run a Search Console opportunity report before prioritising work from position movement alone.
Related reports
Inspect one bounded search snapshot with exact retained organic ranks, market context, result features, provider coverage, cache status, and request cost.
Open one local project keyword set and check metric freshness, research tags, page mappings, and view coverage before choosing the next investigation.
Find page-one rankings with weak CTR where title or snippet work may earn more clicks.
Group position 11 to 20 Search Console queries into practical actions.
Sources used by this monitor
These primary sources define the provider data or search controls used by the result.