seo 0.3.0-beta.2 → 0.3.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/PRIVACY.md +62 -25
- package/README.md +49 -18
- package/dist/cli.js +136 -130
- package/dist/cli.js.map +1 -1
- package/dist/{dist-D41t9hLG.js → dist-C9P8dY80.js} +1 -1
- package/dist/{dist-STeaS3Hh.js → dist-wSAqXmM1.js} +58 -58
- package/dist/dist-wSAqXmM1.js.map +1 -0
- package/dist/index.d.ts +24 -4
- package/dist/index.js +74 -11
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +473 -38
- package/dist/mcp.js.map +1 -1
- package/dist/{package-1f8VcMU8.js → package-7H_jIpAz.js} +2 -2
- package/dist/{package-1f8VcMU8.js.map → package-7H_jIpAz.js.map} +1 -1
- package/evals/research.json +2 -2
- package/package.json +10 -2
- package/skills/seo/SKILL.md +21 -11
- package/dist/dist-STeaS3Hh.js.map +0 -1
package/PRIVACY.md
CHANGED
|
@@ -3,11 +3,14 @@
|
|
|
3
3
|
Last updated: 15 October 2026
|
|
4
4
|
|
|
5
5
|
This policy covers the official `seo` command-line tool, library, MCP server,
|
|
6
|
-
the hosted MCP server at seoskill.dev/mcp, and the
|
|
6
|
+
the hosted MCP server at seoskill.dev/mcp with its account page, and the
|
|
7
|
+
seoskill.dev website.
|
|
7
8
|
|
|
8
|
-
In short: the hosted MCP
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
In short: the hosted MCP keeps only your linked Google accounts and any API
|
|
10
|
+
keys you save, encrypted, so it can fetch your own data when you ask. It never
|
|
11
|
+
keeps your Search Console or analytics data, your reports or a log of your
|
|
12
|
+
requests. The only thing kept about your use is an anonymous usage
|
|
13
|
+
count (the event, report, agent, version and week).
|
|
11
14
|
|
|
12
15
|
The command-line tool runs on your machine. It does not create an SEO
|
|
13
16
|
account, upload reports to a hosted SEO service, or send reports or connected
|
|
@@ -21,30 +24,52 @@ the work you requested. The sections below explain what each request can send.
|
|
|
21
24
|
## The hosted MCP server
|
|
22
25
|
|
|
23
26
|
The hosted MCP server at `https://seoskill.dev/mcp` runs the same reports
|
|
24
|
-
for an MCP client you connect to it.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
27
|
+
for an MCP client you connect to it. To do that it keeps a small store in
|
|
28
|
+
Cloudflare D1 with only these things:
|
|
29
|
+
|
|
30
|
+
- **A person id.** A random id created the first time you sign in with
|
|
31
|
+
Google. That first Google account is your account. There is no password.
|
|
32
|
+
- **Your linked Google accounts.** The email address of each Google account
|
|
33
|
+
you link, and its refresh and access tokens. You grant read-only access to
|
|
34
|
+
Search Console and Google Analytics.
|
|
35
|
+
- **Your API keys, if you save them.** A DataForSEO login and password and an
|
|
36
|
+
Ahrefs key.
|
|
37
|
+
|
|
38
|
+
Every token and key is encrypted with a server key before it is written. The
|
|
39
|
+
tokens are used only to fetch your own data when you or your agent ask for
|
|
40
|
+
it. The token your MCP client keeps carries only your person id.
|
|
41
|
+
|
|
42
|
+
The server keeps nothing else. It does not keep reports, Search Console
|
|
43
|
+
or Google Analytics rows, lists of your sites, or the pages it checked.
|
|
44
|
+
Request logs are turned off.
|
|
45
|
+
|
|
37
46
|
- **Your data.** Search Console, Google Analytics and provider responses are
|
|
38
|
-
fetched for each request, returned to your MCP client and not kept. Pages
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
fetched for each request, returned to your MCP client and not kept. Pages checked live are fetched for the request and not kept.
|
|
48
|
+
- **API key headers.** You can send `X-DataForSEO-Login`,
|
|
49
|
+
`X-DataForSEO-Password` and `X-Ahrefs-Key` headers instead of saving keys.
|
|
50
|
+
A header wins over a saved key and is used for that request only.
|
|
51
|
+
- **The account page.** At [seoskill.dev/account](https://seoskill.dev/account)
|
|
52
|
+
you sign in with Google to see your linked accounts, add or remove them,
|
|
53
|
+
and save or remove keys. It sets one essential cookie that holds your
|
|
54
|
+
encrypted person id for up to 30 days.
|
|
55
|
+
- **Outside services.** Google answers its own requests. The provider you
|
|
56
|
+
choose receives your research request under its own policy.
|
|
57
|
+
Ahrefs receives the domains in research rows for the free Domain Rating
|
|
58
|
+
column. Cloudflare runs the server, stores the encrypted data and handles
|
|
59
|
+
the network requests.
|
|
44
60
|
- **Usage counts.** Each run sends one anonymous event to the same telemetry
|
|
45
61
|
endpoint the CLI uses, with the event, report, agent, version and week. It
|
|
46
62
|
never contains a site, URL, query, key, account or report data.
|
|
47
63
|
|
|
64
|
+
### Delete your hosted data
|
|
65
|
+
|
|
66
|
+
Sign in at [seoskill.dev/account](https://seoskill.dev/account) and choose
|
|
67
|
+
**Delete everything**. It deletes your person id, linked accounts and keys,
|
|
68
|
+
and revokes the Google sign-ins. Your agents will ask you to sign in again if
|
|
69
|
+
you use the hosted server later. You can also revoke SEO Skill in your
|
|
70
|
+
[Google Account connections](https://myaccount.google.com/connections), which
|
|
71
|
+
stops the stored Google tokens working.
|
|
72
|
+
|
|
48
73
|
Your MCP client and its model provider receive the results under their own
|
|
49
74
|
terms.
|
|
50
75
|
|
|
@@ -86,6 +111,16 @@ CI can use `SEO_CLICKY_SITEKEY` without saving it. Clicky responses are cached
|
|
|
86
111
|
locally for up to 24 hours, and cache keys and cached responses do not contain
|
|
87
112
|
the sitekey.
|
|
88
113
|
|
|
114
|
+
## Bing data the software can access
|
|
115
|
+
|
|
116
|
+
Bing access is optional. In the command-line tool and local MCP server, you
|
|
117
|
+
save a Bing Webmaster API key with `seo providers bing connect`, or set
|
|
118
|
+
`SEO_BING_API_KEY`. The key is saved in the system keychain when available,
|
|
119
|
+
with a private local file fallback. Requests go directly from your machine to
|
|
120
|
+
Bing over HTTPS and can read the sites that key can read. Run
|
|
121
|
+
`seo providers bing disconnect` to remove the saved key. The hosted MCP
|
|
122
|
+
server does not read Bing data.
|
|
123
|
+
|
|
89
124
|
## How Google data is protected
|
|
90
125
|
|
|
91
126
|
The software stores project profiles, settings, OAuth tokens, cached API
|
|
@@ -300,8 +335,10 @@ copy, publish, transmit, or pass it to an agent or application yourself.
|
|
|
300
335
|
## Removing access and local data
|
|
301
336
|
|
|
302
337
|
Use `seo auth logout` to remove local Google tokens. Use
|
|
303
|
-
`seo providers dataforseo disconnect
|
|
304
|
-
remove the corresponding saved
|
|
338
|
+
`seo providers dataforseo disconnect`, `seo providers ahrefs disconnect` or
|
|
339
|
+
`seo providers bing disconnect` to remove the corresponding saved credential.
|
|
340
|
+
To remove what the hosted MCP keeps, use **Delete everything** on the
|
|
341
|
+
[account page](https://seoskill.dev/account). Environment variables are
|
|
305
342
|
controlled by your shell or runtime and are not changed by these commands. Use `seo privacy` to
|
|
306
343
|
inspect local paths and `seo reset --yes` to remove every saved credential and
|
|
307
344
|
local file managed by the software.
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<h1 align="center">SEO Skill</h1>
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
11
|
-
The SEO command for AI agents.
|
|
11
|
+
The SEO command for AI agents. A free Google Search Console MCP server and CLI: your agent reads your real Search Console, Google Analytics and Bing data, with Google update dates beside it, plus keyword research from your own DataForSEO or Ahrefs key.
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
@@ -18,8 +18,6 @@
|
|
|
18
18
|
·
|
|
19
19
|
<a href="https://seoskill.dev/docs">Documentation</a>
|
|
20
20
|
·
|
|
21
|
-
<a href="https://seoskill.dev/docs/mcp">Hosted MCP</a>
|
|
22
|
-
·
|
|
23
21
|
<a href="https://www.npmjs.com/package/seo">npm</a>
|
|
24
22
|
·
|
|
25
23
|
<a href="https://github.com/iannuttall/seo/issues">Questions</a>
|
|
@@ -43,8 +41,8 @@
|
|
|
43
41
|
</p>
|
|
44
42
|
|
|
45
43
|
Ask your agent what is happening in search and get an answer built from your
|
|
46
|
-
own Search Console, Google Analytics and Clicky data,
|
|
47
|
-
laid over it. Add your own DataForSEO or Ahrefs key when you need keyword,
|
|
44
|
+
own Search Console, Bing Webmaster Tools, Google Analytics and Clicky data,
|
|
45
|
+
with Google update dates laid over it. Add your own DataForSEO or Ahrefs key when you need keyword,
|
|
48
46
|
SERP, competitor or backlink data.
|
|
49
47
|
|
|
50
48
|
The results are facts with their dates and limits. There is no advice baked
|
|
@@ -81,15 +79,22 @@ claude mcp add --transport http seoskill https://seoskill.dev/mcp
|
|
|
81
79
|
codex mcp add seoskill --url https://seoskill.dev/mcp
|
|
82
80
|
```
|
|
83
81
|
|
|
84
|
-
Sign in with Google when the client asks.
|
|
85
|
-
|
|
86
|
-
|
|
82
|
+
Sign in with Google when the client asks. That first Google account is your
|
|
83
|
+
account, so there is no password or separate signup. The server keeps only
|
|
84
|
+
your linked Google accounts and any API keys you save, encrypted. It keeps no
|
|
85
|
+
report data, no Search Console or analytics rows and no request logs.
|
|
86
|
+
|
|
87
|
+
Your [account page](https://seoskill.dev/account) lets you add more Google
|
|
88
|
+
accounts, save DataForSEO or Ahrefs keys, or delete everything.
|
|
89
|
+
Each request uses the linked Google account that can read the site. The
|
|
87
90
|
[hosted MCP guide](https://seoskill.dev/docs/mcp) covers other clients, and the
|
|
88
91
|
[API keys guide](https://seoskill.dev/docs/keys) shows how to add a key
|
|
89
92
|
without pasting it into a chat.
|
|
90
93
|
|
|
91
94
|
A crawl fetches many pages, so `seo crawl` and `seo internal-links` run only
|
|
92
|
-
on your machine, through the CLI or the local MCP server.
|
|
95
|
+
on your machine, through the CLI or the local MCP server. Bing data also runs
|
|
96
|
+
only there for now; when you ask the hosted server for Bing, it tells your
|
|
97
|
+
agent which CLI command to run.
|
|
93
98
|
|
|
94
99
|
## The eight commands
|
|
95
100
|
|
|
@@ -100,7 +105,7 @@ on your machine, through the CLI or the local MCP server.
|
|
|
100
105
|
| `seo compare --date <date>` | `seo_compare` | Equal periods before and after a date, with the Google updates in the window |
|
|
101
106
|
| `seo index` | `seo_index` | Pages that lost most of their clicks, checked live and with URL Inspection |
|
|
102
107
|
| `seo research <action>` | `seo_research` | Keyword metrics, ranked keywords, SERPs, competitors and backlinks from your key |
|
|
103
|
-
| `seo data` | `seo_data` | Raw Search Console rows; the hosted tool also reads analytics landing pages |
|
|
108
|
+
| `seo data` | `seo_data` | Raw Search Console rows, or Bing rows in the CLI and local server; the hosted tool also reads analytics landing pages |
|
|
104
109
|
| `seo crawl <url>` | `seo_crawl` | A site crawl with technical issues and the URLs they affect (local only) |
|
|
105
110
|
| `seo internal-links --url <url>` | `seo_internal_links` | Pages that could link to a target page (local only) |
|
|
106
111
|
|
|
@@ -129,8 +134,8 @@ seo report --section quick-wins
|
|
|
129
134
|
```
|
|
130
135
|
|
|
131
136
|
The sections are `overview`, `quick-wins`, `low-ctr`, `striking-distance`,
|
|
132
|
-
`second-page`, `content-decay`, `cannibalization` and `
|
|
133
|
-
sections check their top 20 URLs live and merge same-site redirects.
|
|
137
|
+
`second-page`, `content-decay`, `cannibalization`, `traffic-drop` and `bing`.
|
|
138
|
+
Page sections check their top 20 URLs live and merge same-site redirects.
|
|
134
139
|
|
|
135
140
|
Each result ends with the command to run next. A traffic drop usually leads to
|
|
136
141
|
`seo compare` with the date it started, then `seo page` for the URLs that
|
|
@@ -162,7 +167,9 @@ seo providers dataforseo connect
|
|
|
162
167
|
seo providers ahrefs connect
|
|
163
168
|
```
|
|
164
169
|
|
|
165
|
-
|
|
170
|
+
On the hosted server, save the keys on your
|
|
171
|
+
[account page](https://seoskill.dev/account) or send them as headers. Then ask
|
|
172
|
+
for one action:
|
|
166
173
|
|
|
167
174
|
```sh
|
|
168
175
|
seo research keyword_metrics --keywords "invoice software,invoice template"
|
|
@@ -177,6 +184,27 @@ Ahrefs". The hosted server adds it for everyone; the CLI adds it when you have
|
|
|
177
184
|
saved an Ahrefs key. Provider numbers are estimates. Search Console stays the
|
|
178
185
|
record of what your own site actually got.
|
|
179
186
|
|
|
187
|
+
## Add Bing Webmaster Tools
|
|
188
|
+
|
|
189
|
+
Bing data is free. It works in the CLI and the local MCP server. Save a Bing
|
|
190
|
+
Webmaster API key (Bing Webmaster Tools, then Settings, then API access):
|
|
191
|
+
|
|
192
|
+
```sh
|
|
193
|
+
seo providers bing connect
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Agents and CI can set `SEO_BING_API_KEY` instead. `seo providers bing status`
|
|
197
|
+
shows the connection and `seo providers bing disconnect` removes it. The
|
|
198
|
+
hosted server has no Bing for now. When you ask it for Bing, it tells your
|
|
199
|
+
agent to run the CLI instead, the same way it does for a crawl.
|
|
200
|
+
|
|
201
|
+
`seo report` then shows Google and Bing clicks and impressions for the same
|
|
202
|
+
dates, and each engine's share of those clicks. The `bing` section puts Bing's
|
|
203
|
+
top queries and pages beside Google's numbers for the same rows, and
|
|
204
|
+
`seo data --source bing` returns the raw Bing rows. Bing and Google numbers sit
|
|
205
|
+
side by side and are never added together. Bing lists only its top queries
|
|
206
|
+
and pages by week, so a row missing from Bing's list is unknown, not zero.
|
|
207
|
+
|
|
180
208
|
## Add your analytics
|
|
181
209
|
|
|
182
210
|
Google Analytics comes with your Google sign-in. Pick the property during
|
|
@@ -227,7 +255,7 @@ installed provider packages.
|
|
|
227
255
|
|
|
228
256
|
- Missing, partial, capped and filtered data is named. It never becomes a zero
|
|
229
257
|
or an all-clear.
|
|
230
|
-
- Search Console, analytics, live page checks and provider estimates stay
|
|
258
|
+
- Search Console, Bing, analytics, live page checks and provider estimates stay
|
|
231
259
|
apart. Query rows do not add up to site totals.
|
|
232
260
|
- Flags such as likely automated queries and CTR gaps against the site's own
|
|
233
261
|
curve are heuristics. They point at rows worth a look.
|
|
@@ -243,10 +271,11 @@ the same command again over a later, complete window.
|
|
|
243
271
|
Version 0.3.0 moved most reports into the eight commands. Old names such as
|
|
244
272
|
`seo quick-wins` still run in 0.3 and print the new command to use. They stop
|
|
245
273
|
working in 0.4.0. Some reports and commands were removed, including rank
|
|
246
|
-
tracking, programmatic SEO, AI search readiness, llms.txt, Bing
|
|
274
|
+
tracking, programmatic SEO, AI search readiness, llms.txt, Bing links,
|
|
247
275
|
IndexNow, Semrush, local search, server logs and the monthly and narrative
|
|
248
|
-
reports.
|
|
249
|
-
[changelog](CHANGELOG.md) lists
|
|
276
|
+
reports. Bing Webmaster search data came back in 0.3.0-beta.3. The old
|
|
277
|
+
research reports became `seo research`. The [changelog](CHANGELOG.md) lists
|
|
278
|
+
every old name and where it went.
|
|
250
279
|
|
|
251
280
|
## Use it in CI and scripts
|
|
252
281
|
|
|
@@ -314,7 +343,8 @@ seo auth logout --all
|
|
|
314
343
|
seo reset
|
|
315
344
|
```
|
|
316
345
|
|
|
317
|
-
The hosted server keeps
|
|
346
|
+
The hosted server keeps only your linked sign-ins and saved keys, encrypted,
|
|
347
|
+
and no report data or logs. Read the
|
|
318
348
|
[privacy policy](https://seoskill.dev/privacy) for every network boundary and
|
|
319
349
|
the [telemetry page](https://seoskill.dev/telemetry) for the anonymous usage
|
|
320
350
|
counts and how to turn them off.
|
|
@@ -328,6 +358,7 @@ vulnerabilities privately through the process in [SECURITY.md](SECURITY.md).
|
|
|
328
358
|
- [Getting started](https://seoskill.dev/docs/getting-started)
|
|
329
359
|
- [Hosted MCP](https://seoskill.dev/docs/mcp)
|
|
330
360
|
- [API keys](https://seoskill.dev/docs/keys)
|
|
361
|
+
- [Your hosted account](https://seoskill.dev/account)
|
|
331
362
|
- [CLI](https://seoskill.dev/docs/cli)
|
|
332
363
|
- [Commands](https://seoskill.dev/docs)
|
|
333
364
|
- [What is stored](https://seoskill.dev/docs/privacy)
|