rankcontrol 0.2.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Infowick
3
+ Copyright (c) 2026 RankControl, LLC
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -9,15 +9,15 @@ Every command calls the same authed, rate-limited, org-scoped API the RankContro
9
9
 
10
10
  ## Auth
11
11
 
12
- The easy way approve in your browser (you must be logged in to RankControl):
12
+ The easy way (browser approval; you must be logged in to RankControl):
13
13
 
14
14
  ```bash
15
15
  npx rankcontrol login
16
16
  ```
17
17
 
18
- That opens your dashboard, you check the confirmation code matches, pick the permissions to grant, and the CLI stores a scoped key in `~/.rankcontrol/config.json`. `npx rankcontrol logout` removes it (revoke the key itself in Settings → API).
18
+ 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).
19
19
 
20
- The headless way (CI, servers, MCP `env` blocks) create a key in **RankControl → Settings → API**, then:
20
+ The headless way (CI, servers, MCP `env` blocks): create a key in **RankControl → Settings → API**, then:
21
21
 
22
22
  ```bash
23
23
  export RANKCONTROL_API_KEY=rctrl_pk_...
@@ -28,15 +28,102 @@ The env var wins over the stored config when both exist. Scopes are set per key;
28
28
  ## CLI
29
29
 
30
30
  ```bash
31
+ # Visibility and citations
31
32
  npx rankcontrol funnel # AI crawls / AI visits / AI leads (30d)
33
+ npx rankcontrol score # composite visibility score + subscores (AI/Google/Bing)
32
34
  npx rankcontrol visibility --days 60 # daily AI visibility score trend
35
+ npx rankcontrol sov --days 30 # share of voice vs competitors
36
+ npx rankcontrol sources --days 30 # cited domains typed brand/competitive/ugc/editorial
37
+ npx rankcontrol sentiment --days 30 # how AI answers frame your brand
33
38
  npx rankcontrol citations --model chatgpt
39
+ npx rankcontrol crawler-access # can AI crawlers reach your site (daily probe)
40
+ npx rankcontrol queries # tracked queries checked weekly across AI engines
41
+ npx rankcontrol query-add "best crm for agencies"
42
+ npx rankcontrol query-edit <queryId> "new text"
43
+ npx rankcontrol query-track <queryId> off # pause weekly checks (frees a slot)
44
+ npx rankcontrol query-remove <queryId>
45
+ npx rankcontrol competitors
46
+ npx rankcontrol competitor-add "Acme" https://acme.com
47
+ npx rankcontrol competitor-remove <competitorId>
48
+
49
+ # Content pipeline
34
50
  npx rankcontrol capacity # remaining content-plan slots
51
+ npx rankcontrol content # pages with status
35
52
  npx rankcontrol plan-content --topics "bus travel" --max-difficulty 40
36
53
  npx rankcontrol commit-titles --file titles.json
37
- npx rankcontrol publish <contentId> # dry run
38
- npx rankcontrol publish <contentId> --confirm # actually publish
39
- npx rankcontrol jobs # async job status (agent runs)
54
+ npx rankcontrol ideas # scored content-idea backlog
55
+ npx rankcontrol plan-idea "query text" # put an idea on the calendar
56
+ npx rankcontrol delete-planned <contentId> # title returns to the idea pool
57
+ npx rankcontrol generate <contentId> --confirm # write a planned article now
58
+ npx rankcontrol publish <contentId> --confirm # dry run without --confirm
59
+ npx rankcontrol archive <contentId>
60
+ npx rankcontrol reschedule <contentId> 2026-08-04
61
+ npx rankcontrol settings # article policy (auto-write, auto-publish, images, ...)
62
+ npx rankcontrol settings-set --auto-generate off --auto-publish off
63
+ npx rankcontrol topics # pillar list (topic clusters)
64
+ npx rankcontrol topics-set "Topic A" "Topic B" # replaces the FULL list
65
+ npx rankcontrol internal-links <contentId> # who links here / links out
66
+ npx rankcontrol site-pages # pages used for internal links
67
+ npx rankcontrol detect-links https://example.com/sitemap.xml
68
+ npx rankcontrol add-pages https://example.com/pricing
69
+
70
+ # Leads and analytics
71
+ npx rankcontrol leads --limit 100 # captured leads with AI source attribution
72
+ npx rankcontrol traffic --days 30 # page views, visitors, bounce rate, time on page
73
+ npx rankcontrol engagement # per-page views, citations, sparkline
74
+ npx rankcontrol analytics-sources # which source writes traffic/crawler data
75
+ npx rankcontrol analytics-set-source <dataType> <source>
76
+ npx rankcontrol analytics-activate <screen>
77
+
78
+ # Reports
79
+ npx rankcontrol report # exec summary: last 30 days vs the 30 before
80
+ npx rankcontrol wins # biggest wins of the last 30 days
81
+ npx rankcontrol agent-activity # recent runs per agent lane
82
+ npx rankcontrol jobs # async job status
83
+
84
+ # Backlinks and outreach
85
+ npx rankcontrol backlinks --status live
86
+ npx rankcontrol backlink-stats
87
+ npx rankcontrol outreach-prospects
88
+ npx rankcontrol outreach-find-contact <backlinkId>
89
+ npx rankcontrol outreach-draft-reply <backlinkId>
90
+ npx rankcontrol outreach-queue <backlinkId> --confirm # sends from YOUR mailbox
91
+ npx rankcontrol outreach-status <backlinkId> <status>
92
+ npx rankcontrol network # Link Network credits + placements
93
+ npx rankcontrol network-opt-in on --confirm
94
+ npx rankcontrol network-remove-placement <placementId> --confirm
95
+
96
+ # Social and repurposing
97
+ npx rankcontrol repurpose [contentId] # published articles + social drafts (8 platforms)
98
+ npx rankcontrol repurpose-generate <contentId> --platforms twitter --confirm
99
+ npx rankcontrol repurpose-edit <draftId> --title "New hook"
100
+ npx rankcontrol repurpose-channels # Postiz channel ids
101
+ npx rankcontrol repurpose-push <draftId> --channels <id> --confirm
102
+ npx rankcontrol repurpose-mark-posted <draftId>
103
+ npx rankcontrol social # Reddit/X threads where your articles fit
104
+ npx rankcontrol social-stats
105
+ npx rankcontrol social-status <threadId> <status>
106
+ npx rankcontrol social-draft-reply <threadId>
107
+
108
+ # Brand, team, workspace
109
+ npx rankcontrol brand # brand profile, products, ICPs in one read
110
+ npx rankcontrol brand-set --industry "SaaS" # name, industry, description, authors, style refs
111
+ npx rankcontrol brand-profile-set --json '{"tone":"confident"}'
112
+ npx rankcontrol brand-product --json @product.json
113
+ npx rankcontrol brand-icp --json @icp.json
114
+ npx rankcontrol team
115
+ npx rankcontrol team-invite user@company.com --perms content=write,analytics=read --confirm
116
+ npx rankcontrol team-revoke <invitationId>
117
+ npx rankcontrol team-remove <memberId> --confirm
118
+ npx rankcontrol support "Subject" --message "..."
119
+
120
+ # Integration helpers
121
+ npx rankcontrol shopify-install-url <shop>
122
+ npx rankcontrol cloudflare-connect # OAuth URL for read-only crawler analytics
123
+ npx rankcontrol cloudflare-zones
124
+ npx rankcontrol cloudflare-zone <zoneId> <zoneName>
125
+ npx rankcontrol framer-install-embed --confirm
126
+ npx rankcontrol webflow-custom-code --confirm
40
127
  ```
41
128
 
42
129
  ## MCP
@@ -61,19 +148,104 @@ Or in `.mcp.json` / Cursor `mcp.json`:
61
148
  }
62
149
  ```
63
150
 
64
- ### Tools
151
+ ### Tools (83)
152
+
153
+ **Visibility and citations**
65
154
 
66
155
  | Tool | What it does |
67
156
  |---|---|
68
157
  | `get_overview_funnel` | AI crawls / AI visits / AI leads, last 30 days |
158
+ | `get_visibility_score` | Composite score (50% AI + 30% Google + 20% Bing) with subscores |
69
159
  | `get_visibility_trend` | Daily visibility score from stored weekly citation checks |
160
+ | `get_share_of_voice` | Your citation rate vs competitor mention rates + your share |
161
+ | `get_citation_sources` | Cited domains typed brand / competitive / UGC / editorial |
162
+ | `get_citation_sentiment` | Positive / neutral / negative framing with recent receipts |
163
+ | `get_citability_report` | Published pages by citability score, worst first, with fixes |
70
164
  | `list_citations` | Recent citation checks per AI model |
71
- | `get_visibility_score` | Current overall AI visibility score |
165
+ | `get_crawler_access` | Daily AI-crawler reachability probe (edge blocks, robots.txt) |
166
+ | `list_tracked_queries` | The queries checked weekly across the AI engines |
167
+ | `add_tracked_query` / `update_tracked_query` / `set_query_tracking` / `remove_tracked_query` | Manage the query pool and its plan slots |
168
+ | `get_competitors` / `add_competitor` / `remove_competitor` | Manage share-of-voice competitors (max 10) |
169
+
170
+ **Content pipeline**
171
+
172
+ | Tool | What it does |
173
+ |---|---|
72
174
  | `get_planning_capacity` | Remaining calendar slots (check before planning) |
73
175
  | `plan_content` | Generate candidate titles (capacity-gated, nothing scheduled) |
74
176
  | `commit_planned_titles` | Approve reviewed titles onto the calendar |
75
- | `publish_content` | Dry run by default; `confirm: true` publishes |
177
+ | `get_content_ideas` / `plan_content_idea` | Scored idea backlog; put an idea on the calendar |
178
+ | `delete_planned_title` | Remove a planned title (returns to the idea pool) |
179
+ | `generate_article` | Write a planned article's body now; dry run by default |
180
+ | `publish_content` | Dry run by default; `confirm: true` publishes to the CMS |
181
+ | `archive_content` | Archive an article (reversible in the dashboard) |
182
+ | `reschedule_article` | Move a planned article to another day (flexible schedule) |
183
+ | `get_article_settings` / `update_article_settings` | Read / merge-patch the article policy |
184
+ | `get_topics` / `set_topics` | Read / replace the pillar list (full-list replace) |
185
+ | `get_internal_links` | Who links to this article internally, and its outbound count |
186
+ | `list_site_pages` / `add_site_pages` / `detect_site_links` | Pages used for in-article internal links |
76
187
  | `list_content` | Content pages with status |
188
+
189
+ **Leads and analytics**
190
+
191
+ | Tool | What it does |
192
+ |---|---|
193
+ | `list_leads` | Captured leads with AI model / query / page attribution |
194
+ | `get_traffic_overview` | Page views, visitors, sessions, bounce rate, time on page |
195
+ | `get_page_engagement` | Per-page views, citations, and a view sparkline |
196
+ | `get_analytics_sources` / `set_analytics_source` | Which source writes traffic and crawler data |
197
+ | `activate_analytics_screen` | One-time activation of the Analytics or Reports screen |
198
+
199
+ **Reports**
200
+
201
+ | Tool | What it does |
202
+ |---|---|
203
+ | `get_exec_summary` | Last 30 days vs the 30 before: cite rate, views, crawls, leads |
204
+ | `get_top_wins` | Most-cited page, best cite-rate jump, biggest ranking climb |
205
+ | `get_agent_activity` | Recent pipeline runs per agent lane |
77
206
  | `list_jobs` | Async job status (agent runs) |
78
207
 
79
- The plan→commit split is intentional: `plan_content` proposes, a human (or a supervising agent) reviews, `commit_planned_titles` approves. `publish_content` is dry-run-first for the same reason.
208
+ **Backlinks and outreach**
209
+
210
+ | Tool | What it does |
211
+ |---|---|
212
+ | `list_backlinks` / `get_backlink_stats` | Backlink table and totals |
213
+ | `list_outreach_prospects` | Outreach pipeline per published article |
214
+ | `find_outreach_contact` | Scrape a prospect site for an outreach email |
215
+ | `draft_outreach_reply` | AI-draft the next reply in a live conversation |
216
+ | `queue_outreach_email` | Queue an email from the workspace's own mailbox |
217
+ | `update_outreach_status` | Move a prospect through the pipeline |
218
+ | `get_link_network` | Credit balance, membership, placements |
219
+ | `set_link_network_opt_in` / `remove_network_placement` | Join/leave, retire placements; dry run by default |
220
+
221
+ **Social and repurposing**
222
+
223
+ | Tool | What it does |
224
+ |---|---|
225
+ | `list_repurpose_queue` / `get_repurpose_drafts` | Published articles + social drafts (8 platforms) |
226
+ | `generate_repurpose_drafts` / `update_repurpose_draft` | Draft and edit platform-native posts |
227
+ | `list_postiz_channels` / `push_repurpose_draft` | Push to Postiz; dry run by default |
228
+ | `mark_repurpose_posted` | Record a draft as posted manually |
229
+ | `list_social_threads` / `get_social_stats` | Reddit/X threads where your articles fit |
230
+ | `update_social_thread_status` / `draft_social_reply` | Work a thread; drafts never auto-post |
231
+
232
+ **Brand, team, workspace**
233
+
234
+ | Tool | What it does |
235
+ |---|---|
236
+ | `get_brand` | Brand profile, links/CTAs, products, and ICPs in one read |
237
+ | `update_brand_identity` | Name, industry, description, authors (EEAT bylines), style refs |
238
+ | `update_brand_profile` | Voice, colors, meta fields, locale |
239
+ | `write_brand_product` / `write_brand_icp` | Create/update/delete products and buyer profiles |
240
+ | `get_team` / `invite_team_member` / `revoke_team_invite` / `remove_team_member` | Seats, invites, per-screen permissions |
241
+ | `contact_support` | Message the RankControl team with the workspace identified |
242
+
243
+ **Integration helpers**
244
+
245
+ | Tool | What it does |
246
+ |---|---|
247
+ | `shopify_install_url` | Mint an install link for the Shopify app |
248
+ | `get_cloudflare_connect_url` / `list_cloudflare_zones` / `select_cloudflare_zone` | Connect read-only Cloudflare crawler analytics |
249
+ | `install_framer_embed` / `install_webflow_custom_code` | Install visit tracking; dry run by default |
250
+
251
+ 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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rankcontrol",
3
- "version": "0.2.0",
3
+ "version": "0.7.0",
4
4
  "description": "RankControl CLI + MCP server: drive your SEO/AI-visibility workspace from the terminal or any AI agent",
5
5
  "license": "MIT",
6
6
  "homepage": "https://rctrl.com",