rankrush-cli
Agent-native command-line interface for RankRush — the AI visibility and on-site SEO platform. The CLI wraps RankRush's edge functions and REST API into structured, scriptable commands with --json output, so humans on a terminal and agents like Claude Code can interact with the platform without a browser.
Inspired by CLI-Anything: "Today's Software Serves Humans. Tomorrow's Users will be Agents."
- Homepage: https://rankrush.ai
- Source: https://github.com/nikolapevic/rankrush
- Issues: https://github.com/nikolapevic/rankrush/issues
- License: MIT (see LICENSE)
Install
pip install rankrush-cli
Requires Python 3.10, 3.11, or 3.12.
Developing locally (clone the repo first):
git clone https://github.com/nikolapevic/rankrush.git
cd rankrush/cli
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
Verify the install:
rankrush --version
rankrush --help
rankrush init writes ~/.config/rankrush/.env (or ./.env with
--target cwd) with 0600 permissions. Re-run any time to update the key.
Working in the repo? Developers can also place values in
cli/.envfor repo-local overrides. Shell exports →cli/.env→~/.config/rankrush/.envis the resolution order, first wins.
Authenticate
- Sign in at https://rankrush.ai and open Settings → API Keys.
- Click Generate key. Your key looks like
rr_live_<random>. Copy it. - Run the setup wizard:
rankrush init
The wizard prompts for RANKRUSH_API_KEY, writes it to ~/.config/rankrush/.env (mode 0600), and validates the key against the live backend. Re-run any time to update the key.
Resolution order for the API key (first match wins):
- Shell environment (
export RANKRUSH_API_KEY=...). ./.envin the current working directory (userankrush init --target cwdto scaffold it).~/.config/rankrush/.env(defaultrankrush inittarget).
To override without an interactive prompt:
rankrush init --api-key rr_live_xxx --skip-validate # offline machines
rankrush init --force # overwrite without confirmation
Testing against stage
--stage points any command at the stage environment (app.stage.rankrush.ai)
instead of production — the stage URL and publishable key are bundled, so you
only need a stage API key. Configure it once, then prefix commands with
--stage:
rankrush init --stage # paste a stage key (from app.stage.rankrush.ai → Settings → API Keys)
rankrush --stage smoke
rankrush --stage audit run --profile-id <stage-profile-id>
The stage key is stored as RANKRUSH_STAGE_API_KEY (separate from your prod
RANKRUSH_API_KEY, same env file), so prod and stage never collide. Power users
can also point at any backend with RANKRUSH_SUPABASE_URL +
SUPABASE_PUBLISHABLE_KEY.
Your first 5 minutes
After rankrush init succeeds, run these three commands in order:
# 1. Confirm the live backend accepts your key and the four edge functions are healthy.
rankrush smoke
# 2. List the business profiles in your account. Copy a profile UUID for the next step.
rankrush profiles list
# 3. Run a full AI visibility check — keywords, ChatGPT/Claude/Perplexity/Gemini scores, citations.
rankrush visibility check --profile-id <profile-id>
If rankrush smoke reports a 401, your key is wrong or missing — re-run rankrush init. If it reports a network error, you're offline or behind a proxy.
Every command supports --json for machine-readable output.
Command reference
| Command | Description |
|---|---|
rankrush init |
Interactive setup wizard. Writes API key to ~/.config/rankrush/.env, validates against the backend. Flags: --target user|cwd, --api-key, --publishable-key, --skip-validate, --force, --stage (configure the stage key). |
global --stage |
Prefix any command to target stage (app.stage.rankrush.ai): rankrush --stage smoke. Uses RANKRUSH_STAGE_API_KEY. |
rankrush smoke |
Health-check the critical edge functions. Exits 0 if all pass, 1 otherwise. |
rankrush profiles list |
List all business profiles belonging to your API key. |
rankrush keywords generate |
Generate AEO keywords via the LLM and replace the profile's tracked set in aeo_keywords. Flags: --profile-id, --json. |
rankrush keywords list |
Show the currently tracked AEO keywords for a profile. Flags: --profile-id, --json. |
rankrush visibility check |
Run a full AI visibility analysis for a profile (ChatGPT, Claude, Perplexity, Gemini). |
rankrush visibility delta |
Compare the two most recent cached visibility snapshots for a profile. |
rankrush audit run |
Trigger a full bulk on-site website audit (legacy v1, synchronous). Flags: --url (required), --profile-id, --industry b2b_saas|local_service|ecommerce, --language, --force-refresh, --json. |
rankrush audit start |
Enqueue a v2 audit (writes to audit_runs/node_progress, visible in the web app). Flags: --profile-id, --node-id (single-node mode), --wait, --poll-interval, --timeout, --json. |
rankrush audit status |
Show the current status of a v2 audit run. Arg: <run-id>. Flags: --json. |
rankrush audit get |
Fetch the full audit_runs row plus an aggregated per-node summary. Arg: <run-id>. Flags: --json. |
rankrush audit delete |
Permanently delete an audit run and its node rows (admin-only). Arg: <run-id>. Flags: --json. |
rankrush nodes list |
List node_progress rows for a profile. Flags: --profile-id, --status, --json. |
rankrush nodes suggestions |
Surface recommended_fixes for nodes that still need work, each stamped with a stable suggestion_id. Flags: --profile-id, --include-resolved, --json. |
rankrush nodes complete |
Mark a node status='complete' (notify back from the vault). Arg: <node-id>. Flags: --profile-id, --json. |
rankrush leadgen harvest |
Mine Common Crawl WAT shards into the cc_citation_leads lead store. Flags: --crawl, --shards, --seed, --workers, --dry-run, --out, --json. |
rankrush buzz research refresh |
Pull new Reddit/Quora mentions for a profile. |
rankrush buzz research highlights |
List high-relevance unseen research mentions, best-first. |
rankrush buzz strategy suggest |
Generate a Reddit posting strategy from the profile's research. |
rankrush buzz drafts list |
List Buzz posts filtered by status (draft/approved/scheduled/posted/failed). |
rankrush buzz drafts approve |
Approve a draft post, optionally scheduling it. |
rankrush buzz posts performance |
Show published posts within a time window. |
rankrush report daily |
Composite daily digest: visibility delta + research highlights + draft count. |
rankrush report weekly |
7-day visibility trend + post performance + AEO gap analysis. |
rankrush report aeo-gaps |
List AI platforms where visibility score is below a threshold. |
rankrush blog topics generate |
Generate blog topics for a profile over an N-day window (--days, default 30, clamped 1–180). |
rankrush blog topics list |
List tracked blog topics (title / generation stage / scheduled-for) for a profile. |
rankrush blog post generate |
Draft a full blog post from a topic (--topic-id). Requires a CMS connection; subject to a tier daily cap. |
rankrush blog strategy |
Generate an overall content strategy for a profile. |
rankrush cms connect |
Verify and store CMS (WordPress app-password) credentials for a profile. Username + app password are collected via hidden prompts, never flags. |
rankrush scans enqueue |
Enqueue a background scan (ai_visibility/web_audit/node_check) for a profile. Optional --url override and --priority. |
rankrush leads create |
Admin-only. Create a RankRush account for a sales lead, run a first-impression scan, and return a set-password invite link. |
rankrush repl |
Start an interactive REPL — run commands without the rankrush prefix. |
Every command accepts --help and (where applicable) --json. The top-level --debug flag re-raises the underlying exception with a full traceback instead of the friendly one-line message.
Common workflows
Daily check
rankrush visibility check --profile-id <id> # caches snapshot in ~/.rankrush/cache/
rankrush buzz research refresh --profile-id <id>
rankrush report daily --profile-id <id> --json
report daily reads from the local cache; run visibility check and research refresh first.
Compare two visibility snapshots
# Day 1
rankrush visibility check --profile-id <id>
# Day 2
rankrush visibility check --profile-id <id>
rankrush visibility delta --profile-id <id> --threshold 5
delta flags drops greater than the threshold (default 5 points).
Approve a Buzz draft and schedule it
rankrush buzz drafts list --profile-id <id>
rankrush buzz drafts approve --id <draft-uuid> --schedule-at 2026-05-15T09:00:00Z
Create a lead account (admin)
rankrush leads create \
--business-name "Acme Co" \
--website-url https://acme.example \
--industry b2b_saas \
--location Berlin # optional; used for local_service relevance
# (you are prompted for the lead's email so it never lands in shell history)
Requires an admin rr_live_* api key — the backend verifies the caller's
role. The command returns an invite (set-password) link to share with the lead
plus a summary of the first-impression ChatGPT visibility scan. A 401/403
means the key is not an admin key.
Troubleshooting
Authentication failed / HTTP 401
Your RANKRUSH_API_KEY is missing or invalid. Re-run:
rankrush init
The wizard validates the key against the backend before saving.
Network errors / timeouts
Check your internet connection. The CLI talks to RankRush's Supabase backend over HTTPS — corporate proxies, VPNs with HTTPS inspection, and offline machines will all break it.
Command failed with cryptic error
Add --debug before the command to see the full traceback:
rankrush --debug visibility check --profile-id <id>
Open an issue with that output at https://github.com/nikolapevic/rankrush/issues.
Want to verify your install end-to-end
rankrush --version # → rankrush, version 0.1.15
rankrush smoke # → all edge functions green
rankrush profiles list # → at least one profile
If all three pass, you're set up correctly.
Use it from an AI client (MCP)
pip install "rankrush-cli[mcp]" also installs rankrush-mcp, a Model Context Protocol server that exposes these commands as tools so Claude Desktop / Claude Code / Cursor can drive RankRush directly. Setup + tool list: docs/mcp.md.
Versioning & changelog
rankrush-cli follows Semantic Versioning. Every release is recorded in CHANGELOG.md; the versioning policy and release-cut checklist live in docs/versioning.md.
Contributing
PRs and issues welcome — see CONTRIBUTING.md for local setup, test commands, and the PR checklist.
License
MIT. See LICENSE.
Metadata
Release files for rankrush-cli 0.1.69
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| rankrush_cli-0.1.69.tar.gz | 135.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rankrush_cli-0.1.69-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 431.1 kB
Release files / rankrush_cli-0.1.69.tar.gz
| Download URL | rankrush_cli-0.1.69.tar.gz |
|---|---|
| Size | 135.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bc2e012a7c7709dca1d6571a9fa3d9ebe56e3ad92d4c951b218215ea986831f2
|
|
BLAKE2b-256 checksum How to use checksums |
fe6e817a95cbc650e19b6fd16a8b9d2ef3e113b7fa71650ab937e0caafdc2286
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / rankrush_cli-0.1.69-py3-none-any.whl
| Download URL | rankrush_cli-0.1.69-py3-none-any.whl |
|---|---|
| Size | 295.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2fd27307d05a8a6d59c6b5cf9489be2958c588149e167d975a2a936636c1572e
|
|
BLAKE2b-256 checksum How to use checksums |
82594bf91d64d14c4e44ea6bb6fc310e81af59c0ce00664ef983477e2c88925e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logSecurity for rankrush-cli 0.1.69
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for rankrush_cli-0.1.69.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.