npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

rankcontrol

v0.7.0

Published

RankControl CLI + MCP server: drive your SEO/AI-visibility workspace from the terminal or any AI agent

Downloads

606

Readme

rankcontrol

RankControl from the terminal or any AI agent. One package, two faces:

  • CLInpx rankcontrol <command> (or the short alias rctrl once installed)
  • MCP servernpx rankcontrol mcp (stdio, for Claude Code, Claude Desktop, Cursor, Codex)

Every command calls the same authed, rate-limited, org-scoped API the RankControl dashboard uses. Quotas and approval gates apply server-side no matter which client calls.

Auth

The easy way (browser approval; you must be logged in to RankControl):

npx rankcontrol login

That opens your dashboard, you check the confirmation code matches and approve. The CLI stores a key in ~/.rankcontrol/config.json. npx rankcontrol logout removes it (revoke the key itself in Settings → API).

The headless way (CI, servers, MCP env blocks): create a key in RankControl → Settings → API, then:

export RANKCONTROL_API_KEY=rctrl_pk_...

The env var wins over the stored config when both exist. Scopes are set per key; read-only keys work for all get_*/list_* tools.

CLI

# Visibility and citations
npx rankcontrol funnel                 # AI crawls / AI visits / AI leads (30d)
npx rankcontrol score                  # composite visibility score + subscores (AI/Google/Bing)
npx rankcontrol visibility --days 60   # daily AI visibility score trend
npx rankcontrol sov --days 30          # share of voice vs competitors
npx rankcontrol sources --days 30      # cited domains typed brand/competitive/ugc/editorial
npx rankcontrol sentiment --days 30    # how AI answers frame your brand
npx rankcontrol citations --model chatgpt
npx rankcontrol crawler-access         # can AI crawlers reach your site (daily probe)
npx rankcontrol queries                # tracked queries checked weekly across AI engines
npx rankcontrol query-add "best crm for agencies"
npx rankcontrol query-edit <queryId> "new text"
npx rankcontrol query-track <queryId> off      # pause weekly checks (frees a slot)
npx rankcontrol query-remove <queryId>
npx rankcontrol competitors
npx rankcontrol competitor-add "Acme" https://acme.com
npx rankcontrol competitor-remove <competitorId>

# Content pipeline
npx rankcontrol capacity               # remaining content-plan slots
npx rankcontrol content                # pages with status
npx rankcontrol plan-content --topics "bus travel" --max-difficulty 40
npx rankcontrol commit-titles --file titles.json
npx rankcontrol ideas                  # scored content-idea backlog
npx rankcontrol plan-idea "query text" # put an idea on the calendar
npx rankcontrol delete-planned <contentId>     # title returns to the idea pool
npx rankcontrol generate <contentId> --confirm # write a planned article now
npx rankcontrol publish <contentId> --confirm  # dry run without --confirm
npx rankcontrol archive <contentId>
npx rankcontrol reschedule <contentId> 2026-08-04
npx rankcontrol settings               # article policy (auto-write, auto-publish, images, ...)
npx rankcontrol settings-set --auto-generate off --auto-publish off
npx rankcontrol topics                 # pillar list (topic clusters)
npx rankcontrol topics-set "Topic A" "Topic B"  # replaces the FULL list
npx rankcontrol internal-links <contentId>     # who links here / links out
npx rankcontrol site-pages             # pages used for internal links
npx rankcontrol detect-links https://example.com/sitemap.xml
npx rankcontrol add-pages https://example.com/pricing

# Leads and analytics
npx rankcontrol leads --limit 100      # captured leads with AI source attribution
npx rankcontrol traffic --days 30      # page views, visitors, bounce rate, time on page
npx rankcontrol engagement             # per-page views, citations, sparkline
npx rankcontrol analytics-sources      # which source writes traffic/crawler data
npx rankcontrol analytics-set-source <dataType> <source>
npx rankcontrol analytics-activate <screen>

# Reports
npx rankcontrol report                 # exec summary: last 30 days vs the 30 before
npx rankcontrol wins                   # biggest wins of the last 30 days
npx rankcontrol agent-activity         # recent runs per agent lane
npx rankcontrol jobs                   # async job status

# Backlinks and outreach
npx rankcontrol backlinks --status live
npx rankcontrol backlink-stats
npx rankcontrol outreach-prospects
npx rankcontrol outreach-find-contact <backlinkId>
npx rankcontrol outreach-draft-reply <backlinkId>
npx rankcontrol outreach-queue <backlinkId> --confirm   # sends from YOUR mailbox
npx rankcontrol outreach-status <backlinkId> <status>
npx rankcontrol network                # Link Network credits + placements
npx rankcontrol network-opt-in on --confirm
npx rankcontrol network-remove-placement <placementId> --confirm

# Social and repurposing
npx rankcontrol repurpose [contentId]  # published articles + social drafts (8 platforms)
npx rankcontrol repurpose-generate <contentId> --platforms twitter --confirm
npx rankcontrol repurpose-edit <draftId> --title "New hook"
npx rankcontrol repurpose-channels     # Postiz channel ids
npx rankcontrol repurpose-push <draftId> --channels <id> --confirm
npx rankcontrol repurpose-mark-posted <draftId>
npx rankcontrol social                 # Reddit/X threads where your articles fit
npx rankcontrol social-stats
npx rankcontrol social-status <threadId> <status>
npx rankcontrol social-draft-reply <threadId>

# Brand, team, workspace
npx rankcontrol brand                  # brand profile, products, ICPs in one read
npx rankcontrol brand-set --industry "SaaS"    # name, industry, description, authors, style refs
npx rankcontrol brand-profile-set --json '{"tone":"confident"}'
npx rankcontrol brand-product --json @product.json
npx rankcontrol brand-icp --json @icp.json
npx rankcontrol team
npx rankcontrol team-invite [email protected] --perms content=write,analytics=read --confirm
npx rankcontrol team-revoke <invitationId>
npx rankcontrol team-remove <memberId> --confirm
npx rankcontrol support "Subject" --message "..."

# Integration helpers
npx rankcontrol shopify-install-url <shop>
npx rankcontrol cloudflare-connect     # OAuth URL for read-only crawler analytics
npx rankcontrol cloudflare-zones
npx rankcontrol cloudflare-zone <zoneId> <zoneName>
npx rankcontrol framer-install-embed --confirm
npx rankcontrol webflow-custom-code --confirm

MCP

Claude Code:

claude mcp add rankcontrol --env RANKCONTROL_API_KEY=rctrl_pk_... -- npx rankcontrol mcp

Or in .mcp.json / Cursor mcp.json:

{
  "mcpServers": {
    "rankcontrol": {
      "command": "npx",
      "args": ["rankcontrol", "mcp"],
      "env": { "RANKCONTROL_API_KEY": "rctrl_pk_..." }
    }
  }
}

Tools (83)

Visibility and citations

| Tool | What it does | |---|---| | get_overview_funnel | AI crawls / AI visits / AI leads, last 30 days | | get_visibility_score | Composite score (50% AI + 30% Google + 20% Bing) with subscores | | get_visibility_trend | Daily visibility score from stored weekly citation checks | | get_share_of_voice | Your citation rate vs competitor mention rates + your share | | get_citation_sources | Cited domains typed brand / competitive / UGC / editorial | | get_citation_sentiment | Positive / neutral / negative framing with recent receipts | | get_citability_report | Published pages by citability score, worst first, with fixes | | list_citations | Recent citation checks per AI model | | get_crawler_access | Daily AI-crawler reachability probe (edge blocks, robots.txt) | | list_tracked_queries | The queries checked weekly across the AI engines | | add_tracked_query / update_tracked_query / set_query_tracking / remove_tracked_query | Manage the query pool and its plan slots | | get_competitors / add_competitor / remove_competitor | Manage share-of-voice competitors (max 10) |

Content pipeline

| Tool | What it does | |---|---| | get_planning_capacity | Remaining calendar slots (check before planning) | | plan_content | Generate candidate titles (capacity-gated, nothing scheduled) | | commit_planned_titles | Approve reviewed titles onto the calendar | | get_content_ideas / plan_content_idea | Scored idea backlog; put an idea on the calendar | | delete_planned_title | Remove a planned title (returns to the idea pool) | | generate_article | Write a planned article's body now; dry run by default | | publish_content | Dry run by default; confirm: true publishes to the CMS | | archive_content | Archive an article (reversible in the dashboard) | | reschedule_article | Move a planned article to another day (flexible schedule) | | get_article_settings / update_article_settings | Read / merge-patch the article policy | | get_topics / set_topics | Read / replace the pillar list (full-list replace) | | get_internal_links | Who links to this article internally, and its outbound count | | list_site_pages / add_site_pages / detect_site_links | Pages used for in-article internal links | | list_content | Content pages with status |

Leads and analytics

| Tool | What it does | |---|---| | list_leads | Captured leads with AI model / query / page attribution | | get_traffic_overview | Page views, visitors, sessions, bounce rate, time on page | | get_page_engagement | Per-page views, citations, and a view sparkline | | get_analytics_sources / set_analytics_source | Which source writes traffic and crawler data | | activate_analytics_screen | One-time activation of the Analytics or Reports screen |

Reports

| Tool | What it does | |---|---| | get_exec_summary | Last 30 days vs the 30 before: cite rate, views, crawls, leads | | get_top_wins | Most-cited page, best cite-rate jump, biggest ranking climb | | get_agent_activity | Recent pipeline runs per agent lane | | list_jobs | Async job status (agent runs) |

Backlinks and outreach

| Tool | What it does | |---|---| | list_backlinks / get_backlink_stats | Backlink table and totals | | list_outreach_prospects | Outreach pipeline per published article | | find_outreach_contact | Scrape a prospect site for an outreach email | | draft_outreach_reply | AI-draft the next reply in a live conversation | | queue_outreach_email | Queue an email from the workspace's own mailbox | | update_outreach_status | Move a prospect through the pipeline | | get_link_network | Credit balance, membership, placements | | set_link_network_opt_in / remove_network_placement | Join/leave, retire placements; dry run by default |

Social and repurposing

| Tool | What it does | |---|---| | list_repurpose_queue / get_repurpose_drafts | Published articles + social drafts (8 platforms) | | generate_repurpose_drafts / update_repurpose_draft | Draft and edit platform-native posts | | list_postiz_channels / push_repurpose_draft | Push to Postiz; dry run by default | | mark_repurpose_posted | Record a draft as posted manually | | list_social_threads / get_social_stats | Reddit/X threads where your articles fit | | update_social_thread_status / draft_social_reply | Work a thread; drafts never auto-post |

Brand, team, workspace

| Tool | What it does | |---|---| | get_brand | Brand profile, links/CTAs, products, and ICPs in one read | | update_brand_identity | Name, industry, description, authors (EEAT bylines), style refs | | update_brand_profile | Voice, colors, meta fields, locale | | write_brand_product / write_brand_icp | Create/update/delete products and buyer profiles | | get_team / invite_team_member / revoke_team_invite / remove_team_member | Seats, invites, per-screen permissions | | contact_support | Message the RankControl team with the workspace identified |

Integration helpers

| Tool | What it does | |---|---| | shopify_install_url | Mint an install link for the Shopify app | | get_cloudflare_connect_url / list_cloudflare_zones / select_cloudflare_zone | Connect read-only Cloudflare crawler analytics | | install_framer_embed / install_webflow_custom_code | Install visit tracking; dry run by default |

The plan→commit split is intentional: plan_content proposes, a human (or a supervising agent) reviews, commit_planned_titles approves. publish_content, generate_article, and everything with a public side effect are dry-run-first for the same reason.