All commands print JSON. Authenticate once with rankcontrol login or export
RANKCONTROL_API_KEY. Commands marked dry run do nothing until you add
--confirm. Removals and team changes print an approval link instead: the
workspace owner approves them in RankControl.
Setup
| Command | What it does |
|---|---|
login |
Browser device authorization; saves a key with full access to your workspace to ~/.rankcontrol. |
logout |
Remove the locally stored key. |
mcp |
Start the MCP server on stdio, for Claude, Cursor, and other agents. |
Overview and reports
| Command | What it does |
|---|---|
funnel |
AI pipeline, last 30 days: crawler hits, AI-referred visits. |
expedition |
The workspace’s expeditions on the Overview: the current expedition, each step’s name and whether it is done, and the next step. |
report |
Executive summary: last 30 days vs the 30 before. |
wins |
Biggest wins: most-cited page, cite-rate jump, ranking climb, best backlink. |
agent-activity |
Recent runs per agent lane. --per-agent <n>, --since-days <n>. |
jobs |
Recent agent runs, async job status. --limit <n>. |
traffic |
Page views, visitors, sessions, bounce rate. --days 7|30|90. --scope site: the whole site from Google Analytics, when connected. |
engagement |
Per-page views and citations with 30-day sparklines. |
rankings |
Google and Bing positions per keyword, Search Console clicks and impressions, and how often Google’s AI Overview shows above each keyword and names you. --scope ours|site. |
Analytics
| Command | What it does |
|---|---|
analytics-sources |
Per-org analytics sources: selections, qualified options, Cloudflare/plugin/embed install state. |
analytics-set-source <dataType> <source> |
Select the writer for a data type (validated against what the setup supports). |
analytics-activate <screen> |
Turn on the Analytics or Reports screen for this workspace. |
Visibility
| Command | What it does |
|---|---|
score |
Composite visibility score with per-pillar subscores. |
visibility |
Daily AI visibility trend. --days 30|60|90. |
sov |
Share of voice vs competitors. --days <n>. |
competitors |
Tracked competitors with visibility score, 30-day citations of checks, domain metrics and positioning analysis. |
competitor-add <name> [websiteUrl] |
Track a competitor (max 10); the site is resolved from the name when omitted. |
competitor-remove <competitorId> |
Stop tracking a competitor (waits for the owner’s approval in RankControl). |
web-totals |
Monthly web total for your domain and every competitor you track, last 3 months, oldest month first. |
footprint |
Web footprint (0-10) for your domain and every competitor you track, with the median peer. |
sources |
Domains AI answers cite for your tracked queries. --days <n>. |
sentiment |
How AI answers frame your brand when cited. --days <n>. |
citations |
Recent citation checks. --model chatgpt|perplexity|..., --limit <n>, --before <time> to page back. |
queries |
List the tracked queries, each with how many of the 6 AI engines cited it in their latest check. |
query-slots |
Tracking slots in use and the plan’s limit. |
query-add <queryText> |
Add a query to the pool; tracks immediately when a slot is free. |
query-edit <queryId> <queryText> |
Rewrite a tracked query’s text. |
query-track <queryId> <on|off> |
Pause or resume weekly checks on a query. Tracking uses one of your tracking slots; pausing frees it. |
query-remove <queryId> |
Delete a query. |
crawler-access |
Daily probe: is your edge or robots.txt blocking the AI search crawlers. |
Content
| Command | What it does |
|---|---|
content |
List content pages with status. |
ideas |
Scored idea backlog: uncovered queries, citation gaps, quick wins. |
plan-idea <queryText> |
Put one of your Content Ideas on the calendar. |
idea-hide <queryId> |
Hide an idea from Content Ideas. A tracked query keeps its weekly checks. |
insights |
Insights: what to work on next on your site, with the evidence for each item. |
insight-plan <itemId> |
Plan up to 3 articles that link to the item’s page. Dry run until --confirm. |
insight-hide <itemId> |
Hide an Insights item. It moves under Done as Hidden and does not come back. |
insight-move <itemId> |
Move an Insights search no page is about to Content Ideas, tagged Search Console. The item moves under Done. |
plan-content |
Generate candidate titles. Nothing schedules until commit-titles. |
commit-titles |
Approve reviewed titles onto the calendar from JSON (--file or stdin). |
capacity |
Remaining plan slots on the calendar. |
generate <contentId> |
Write a planned article’s body now. Dry run; spends LLM budget on --confirm. |
write |
Write several planned articles one after another: --next <n> or --ids a,b; --publish publishes each one once it is written. Dry run until --confirm. |
write-runs |
Recent write runs and each article’s state. |
write-stop <runId> |
Stop a write run. Nothing new starts; an article being written finishes as a draft. |
approval <approvalId> |
Where a change waiting for the workspace owner stands. |
publish <contentId> |
Publish to the connected CMS. Dry run until --confirm. |
meta <contentId> |
Change an article’s title, meta title or meta description (--title, --meta-title, --meta-description). Dry run until --confirm. |
reschedule <contentId> <date> |
Move a planned article to a day (YYYY-MM-DD). |
delete-planned <contentId> |
Remove a planned title from the calendar; the title returns to Content Ideas. |
article-set <contentId> |
Change a planned article’s length, tone, image style or instructions. |
archive <contentId> |
Archive an article out of the working set. |
optimizer |
Published pages ranked by citability, worst first, with open fixes. |
internal-links <contentId> |
Inbound and outbound internal links for an article. |
plan-content filters: --topics a,b, --subject <text>, --content-types a,b,
--max-difficulty <n>, --intents informational,commercial,transactional,
--citation-gaps, --ranking-gaps.
rankcontrol plan-content --topics "travel insurance" --citation-gaps
rankcontrol plan-content --topics "Travel insurance" --subject "ski trips"
rankcontrol commit-titles --file approved.json
rankcontrol write --next 3 --publish --confirm
rankcontrol publish mx7... --confirmArticle policy
| Command | What it does |
|---|---|
settings |
Show the article policy: per-article defaults plus scheduling mode. |
settings-set |
Merge-patch the policy. Only flags you pass change. |
settings-set flags: --auto-publish on|off, --auto-generate on|off,
--images on|off, --title-in-hero on|off, --section-infographics on|off,
--related-reading on|off, --youtube on|off, --emojis on|off,
--internal-links <n>, --external-links <n>, --instructions <text>,
--flexible-schedule on|off, --image-style <style>.
Site links
| Command | What it does |
|---|---|
site-pages |
Pages used for in-article links and Related Reading. |
detect-links <url> |
Scan a sitemap for site pages. --blog-root to crawl a page instead. |
add-pages <urls...> |
Add page URLs for internal linking; dedupes, titles auto-fill. |
site-page-linking <pageId> <on|off> |
Turn linking to a site page on or off. Off keeps the page in your list, but articles published after this don’t link to it. |
site-page-remove <pageId> |
Remove a page from your site pages. Articles published after this don’t link to it, and scans don’t add it back; add-pages adds it again. |
Repurposing
| Command | What it does |
|---|---|
repurpose [contentId] |
The repurpose queue, or full drafts for one article. |
repurpose-generate <contentId> |
Draft social posts. Dry run. |
repurpose-edit <draftId> |
Edit a draft. --body, --title. |
repurpose-channels |
Connected Buffer and Postiz channels and their ids. |
repurpose-push <draftId> |
Send to Buffer or Postiz. Dry run; --scheduler postiz|buffer (needed when both are connected), --channels id1,id2, --when now|schedule|draft|queue (queue is Buffer only), --date <iso>. |
repurpose-mark-posted <draftId> |
Mark a draft posted when you published it yourself. |
Link building
| Command | What it does |
|---|---|
backlinks |
The backlink table, newest first. --status <status>. |
backlink-stats |
Totals plus outreach pipeline counts. |
outreach-prospects |
Prospect sites per published article, with Domain Rating (dr, drSource: ahrefs, or dataforseo for an estimate) and found contacts. |
outreach-stats |
Outreach funnel for the last 90 days by how each prospect was found: prospects, sent, replied, placed, with reply and placement rates per send. |
outreach-find-contact <backlinkId> |
Find a contact email for a prospect. |
outreach-draft-reply <backlinkId> |
AI-draft a reply to an inbound response. Nothing sends. |
outreach-queue <backlinkId> |
Queue an outreach email. Dry run; --subject, --body. |
outreach-status <backlinkId> <status> |
Move a prospect: identified, contacted, replied, link_placed, rejected. |
outreach-cancel <backlinkId> |
Cancel a queued outreach email (first email, reply or follow-up) before it sends. |
network |
Editorial Circle credits, membership state, and placements. |
network-opt-in <on|off> |
Join or leave the network. Dry run; leaving retires live links. |
network-remove-placement <id> |
Retire one placement. Dry run; visible on the partner site. |
Social
| Command | What it does |
|---|---|
social |
Thread prospects (Reddit/X) with rules context. --platform, --status, --age ranked|new. |
social-stats |
Thread pipeline counts. |
social-status <threadId> skipped |
Skip a thread. The only manual status; Posted is detected automatically. |
social-draft-reply <threadId> |
AI-draft a reply for review. --mention none|natural|founderOpen. Nothing posts. |
social-open <threadId> |
Take the draft to the platform yourself: prints the thread URL (X: a composer link with the reply filled in) and starts the checks that mark it Posted. --text for an edited reply (X: 280 characters or fewer). |
social-x-handle <handle|clear> |
Optional X handle used to recognise your posted replies. |
social-reddit-profile |
Save the Reddit account the Social tab drafts for: --karma, --age, --goal, --story, --tone, optional --username. Replaces the stored profile. |
Brand
| Command | What it does |
|---|---|
topics |
The pillar list (topic clusters). |
topics-set <topics...> |
Replace the full pillar list, up to 20 topics. |
brand |
Brand profile, products, buyer profiles (ICPs) and brand guidelines in one read. |
brand-set |
Update identity: --name, --industry, --description, --aliases (other spellings searched as brand mentions, comma-separated), --not-us (same-name brands to skip), or --json for authors and styleReferenceUrls. Arrays replace the stored list. |
brand-profile-set |
Patch voice and style fields, and the Local business switch (localBusiness, serviceArea). --json '{"tone":"..."}' or --json @file.json. |
brand-product |
Create, update, or delete a product. --json (create: name, description, category; update: productId; delete: productId plus "del": true). |
brand-icp |
Same semantics for buyer profiles (create: title, industry, demographics). |
icp-suggest |
Up to 8 audiences for this site from its brand, products, competitors and topics. Saves nothing. --exclude titles already shown. |
icp-draft |
Draft one buyer profile from --describe "<sentence>" or --title/--who from icp-suggest; --json fields are kept as written. Saves nothing; save it with brand-icp. |
brand-reviewed |
Mark the brand as reviewed (Expedition I). |
guideline-add <type> <avoid> <instead> |
Add a brand guideline. |
guideline-on <id> |
Turn a brand guideline on. |
guideline-off <id> |
Turn a brand guideline off. |
guideline-remove <id> |
Delete a brand guideline. |
rankcontrol brand-profile-set --json '{"tone":"conversational"}'
rankcontrol brand-product --json '{"name":"Acme API","description":"...","category":"product"}'Team
| Command | What it does |
|---|---|
team |
Members and pending invites with per-screen permissions. |
team-invite <email> |
Invite a member. Dry run; --perms content=write,analytics=read. |
team-revoke <invitationId> |
Revoke a pending invite. |
team-remove <userId> |
Remove a member. Requires --confirm. |
Integration helpers
| Command | What it does |
|---|---|
cloudflare-connect |
Print the Cloudflare OAuth URL to connect read-only crawler analytics. |
cloudflare-zones |
List Cloudflare zones visible to the connected grant. |
cloudflare-zone <zoneId> <zoneName> |
Pick the polled zone (a crawler source already set stays). |
framer-install-embed |
Install site-wide tracking on the Framer project (dry run without –confirm; installing also publishes the Framer site). |
webflow-custom-code |
Install the tracking loader via Webflow’s Custom Code API (dry run without –confirm; live on the customer’s next site publish). |
Support
| Command | What it does |
|---|---|
support <subject> |
Send a message or bug report to the RankControl team. --message <text> required, --page <url> optional. Capped at 3 per minute. |
help-page [page] |
Read a help page: setup guides for each publishing destination, the crawler and its IP, the API, CLI and MCP, and the plan and pricing; without a page, list the pages. |
billing |
Billing as Settings, Billing shows it: status, billing cycle, next charge, add-ons, usage and recent payments (read-only). |