SEO for AI agents: plan content, publish posts, earn dofollow backlinks, track Domain Rating.
The official command-line interface for RankGoat, the SEO backlink exchange that writes and publishes done-for-you blog posts with real dofollow links between member sites.
Manage your content plan, generate posts, approve drafts, and read your backlink and SEO data straight from the terminal or a CI pipeline. Built on the public RankGoat API.
npm install -g rankgoat
Or run it without installing:
npx rankgoat whoami
Requires Node.js 20 or newer. Zero runtime dependencies.
Create an API key at rankgoat.app/app/settings#api, then:
rankgoat auth login rg_live_xxxxxxxx
The key is stored in ~/.rankgoat/config.json (owner-readable only). Alternatively set RANKGOAT_API_KEY in your environment, or pass --api-key on any command, handy for CI.
export RANKGOAT_API_KEY=rg_live_xxxxxxxx
rankgoat whoami
rankgoat <command> [args] [options]
rankgoat whoami # member + sites with credit balances
rankgoat sites # list your sites
rankgoat sites get 123 # one site, full detail
rankgoat sites credits 123 # credit balance by bucket
The monthly plan is a calendar of briefs the AI turns into posts.
rankgoat plan list 123 --month 2026-06
rankgoat plan add 123 --auto # let AI plan a brief (async)
rankgoat plan add 123 --title "Notion vs Obsidian" --keyword "notion alternatives" --type comparison --hub 5
rankgoat plan edit 789 --title "Notion vs Obsidian (2026)" --type guide
rankgoat plan schedule 789 2026-06-22
rankgoat plan archive 789
rankgoat plan restore 789
rankgoat plan generate 789 --wait # write the post now (spends 1 credit)
rankgoat posts list 123 --status draft
rankgoat posts get 456 --html # print the post body
rankgoat posts approve 456 # approve a draft for publishing
rankgoat backlinks 123 # inbound + outbound link graph
rankgoat mentions 123 # brand mentions received + given
rankgoat seo authority 123 # Domain Rating over time
rankgoat seo onpage 123
rankgoat seo sitemap 123
rankgoat seo gsc 123 # Google Search Console performance
rankgoat seo equity 123 # link-equity points: balances + ledger
rankgoat seo flywheel 123 # unindexed-post fixes awaiting review
Topic clusters the monthly planner draws briefs from, weighted by priority.
rankgoat hubs list 123
rankgoat hubs add 123 --name "AI note-taking" --keywords "ai notes, ai note app" --priority high
rankgoat hubs edit 5 --priority low
rankgoat hubs archive 5 # the planner stops drawing from it
rankgoat hubs restore 5
Your product's real capabilities. They ground content generation, so posts never invent features the product does not have.
rankgoat features list 123
rankgoat features add 123 --name "Offline sync" --description "Notes sync without a connection"
rankgoat features edit 7 --description "Now with conflict resolution"
rankgoat features archive 7 # new posts stop mentioning it
rankgoat features restore 7
Some actions (AI planning, post generation) run in the background and return a job handle. Poll it, or pass --wait on the original command:
rankgoat jobs plan-generate 789 --wait
| Option | Description |
|---|---|
--api-key <key> | Use this key (overrides env and saved config) |
--api-url <url> | Override the API base URL (defaults to https://rankgoat.app/api/v1) |
--json | Output raw JSON, ideal for scripting with jq |
--wait | Block until an async job finishes |
-h, --help | Show help |
-v, --version | Show the CLI version |
Every command supports --json for machine-readable output:
rankgoat sites --json | jq '.sites[] | select(.status=="active") | .domain'
Exit code is non-zero on any API or usage error, so it composes cleanly in CI.
The CLI is built to be driven by agents: structured JSON on every command, env-var auth, and non-zero exits on failure. Two ways to plug in:
MCP server. rankgoat mcp runs a Model Context Protocol server on stdio exposing all 34 capabilities (plan, generate, approve, backlinks, mentions, DR, GSC, sitemap, hubs, features, link equity, flywheel) as typed tools:
claude mcp add rankgoat -e RANKGOAT_API_KEY=rg_live_... -- npx -y rankgoat mcp
Or in any MCP client config:
{
"mcpServers": {
"rankgoat": {
"command": "npx",
"args": ["-y", "rankgoat", "mcp"],
"env": { "RANKGOAT_API_KEY": "rg_live_..." }
}
}
}
Shell + SKILL.md. Agents that run shell commands can use the CLI directly; the bundled SKILL.md teaches them the workflows, including which calls spend credits and where to keep a human in the loop.
More at rankgoat.app/agent.
RankGoat members pay for done-for-you blog posts that get published on their own sites with dofollow outbound links to other members. The link graph is non-reciprocal and niche/DR-matched, so it builds real authority without pattern-matching as a scheme. Learn more at rankgoat.app or read the API reference.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y rankgoatMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-madrzak-rankgoat": {
"command": "npx",
"args": [
"-y",
"rankgoat"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencerankgoatnpmio.github.madrzak/rankgoat works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.