seo 0.3.0-beta.2 → 0.4.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 +72 -35
- package/README.md +87 -45
- package/SECURITY.md +2 -2
- package/dist/cli.js +89 -227
- package/dist/cli.js.map +1 -1
- package/dist/{dist-D41t9hLG.js → dist-Cv-Z5qD5.js} +1 -1
- package/dist/dist-VKoRyTMH.js +334 -0
- package/dist/dist-VKoRyTMH.js.map +1 -0
- package/dist/index.d.ts +527 -1658
- package/dist/index.js +10142 -13579
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts +2 -2
- package/dist/mcp.js +5453 -8899
- package/dist/mcp.js.map +1 -1
- package/dist/{package-1f8VcMU8.js → package-BfqlCbxN.js} +2 -2
- package/dist/{package-1f8VcMU8.js.map → package-BfqlCbxN.js.map} +1 -1
- package/evals/research.json +2 -2
- package/evals/seo.json +2 -2
- package/package.json +14 -5
- package/skills/seo/SKILL.md +30 -21
- package/dist/dist-STeaS3Hh.js +0 -698
- 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
|
|
|
@@ -61,9 +86,9 @@ read-only access to:
|
|
|
61
86
|
access.
|
|
62
87
|
|
|
63
88
|
The software uses this data to list properties, run the report you requested,
|
|
64
|
-
join search or analytics evidence to crawl findings
|
|
65
|
-
history
|
|
66
|
-
|
|
89
|
+
and join search or analytics evidence to crawl findings. It does not save
|
|
90
|
+
report history. It does not use Google data for advertising or to train
|
|
91
|
+
general-purpose AI models.
|
|
67
92
|
|
|
68
93
|
The shared desktop OAuth client identifies the `seo` app to Google. OAuth
|
|
69
94
|
tokens and API responses are returned to your machine, not to the project
|
|
@@ -80,16 +105,26 @@ site ID, sitekey, requested report type, date range, and row limit directly to
|
|
|
80
105
|
Clicky over HTTPS. It can read the traffic data that sitekey permits. The
|
|
81
106
|
project maintainer does not receive the request or response.
|
|
82
107
|
|
|
83
|
-
The site ID is saved in the
|
|
108
|
+
The site ID is saved in the local configuration. The sitekey uses the operating
|
|
84
109
|
system keychain when available, with a private local file fallback. Agents and
|
|
85
110
|
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
|
-
The software stores
|
|
92
|
-
|
|
126
|
+
The software stores settings, OAuth tokens, cached API responses, and logs in
|
|
127
|
+
local user directories. It does not save reports or crawls. It does not
|
|
93
128
|
upload Google API responses to a hosted SEO account or project database.
|
|
94
129
|
Google API requests go directly from your machine to Google over HTTPS. The
|
|
95
130
|
software does not send Search Console data to a research provider. `seo
|
|
@@ -124,10 +159,10 @@ run, expired rows may remain in the local cache file until you delete them.
|
|
|
124
159
|
Run `seo cache clear --provider google-analytics` to remove cached Google
|
|
125
160
|
Analytics responses immediately. Run `seo cache clear --provider gsc` to do
|
|
126
161
|
the same for Search Console. Run `seo cache clear --provider clicky` to remove
|
|
127
|
-
cached Clicky responses.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
162
|
+
cached Clicky responses. Settings and saved provider credentials remain until
|
|
163
|
+
you delete them with the relevant command or run `seo reset --yes`. The reset
|
|
164
|
+
command removes Google tokens, local configuration, caches, logs, any
|
|
165
|
+
histories or reports saved by earlier versions, and saved provider
|
|
131
166
|
credentials. It removes active keychain credentials before deleting local
|
|
132
167
|
files. If the keychain refuses a deletion, reset stops and tells you to unlock
|
|
133
168
|
it before trying again.
|
|
@@ -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
|
|
@@ -60,15 +58,16 @@ npm i -g seo
|
|
|
60
58
|
seo start
|
|
61
59
|
```
|
|
62
60
|
|
|
63
|
-
`seo start` signs you in with Google
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
61
|
+
`seo start` signs you in with Google. Then it offers to add an MCP server to
|
|
62
|
+
the agents it finds (the free hosted server is the first choice, or you can
|
|
63
|
+
run one locally) and to install the skill. That is all it asks. Nothing about
|
|
64
|
+
your site is saved: each command names the site it works on.
|
|
67
65
|
|
|
68
|
-
|
|
66
|
+
List the properties your sign-in can read, then run the main report for one:
|
|
69
67
|
|
|
70
68
|
```sh
|
|
71
|
-
seo
|
|
69
|
+
seo sites
|
|
70
|
+
seo report --site example.com
|
|
72
71
|
```
|
|
73
72
|
|
|
74
73
|
## Connect the hosted MCP server
|
|
@@ -81,15 +80,22 @@ claude mcp add --transport http seoskill https://seoskill.dev/mcp
|
|
|
81
80
|
codex mcp add seoskill --url https://seoskill.dev/mcp
|
|
82
81
|
```
|
|
83
82
|
|
|
84
|
-
Sign in with Google when the client asks.
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
Sign in with Google when the client asks. That first Google account is your
|
|
84
|
+
account, so there is no password or separate signup. The server keeps only
|
|
85
|
+
your linked Google accounts and any API keys you save, encrypted. It keeps no
|
|
86
|
+
report data, no Search Console or analytics rows and no request logs.
|
|
87
|
+
|
|
88
|
+
Your [account page](https://seoskill.dev/account) lets you add more Google
|
|
89
|
+
accounts, save DataForSEO or Ahrefs keys, or delete everything.
|
|
90
|
+
Each request uses the linked Google account that can read the site. The
|
|
87
91
|
[hosted MCP guide](https://seoskill.dev/docs/mcp) covers other clients, and the
|
|
88
92
|
[API keys guide](https://seoskill.dev/docs/keys) shows how to add a key
|
|
89
93
|
without pasting it into a chat.
|
|
90
94
|
|
|
91
95
|
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.
|
|
96
|
+
on your machine, through the CLI or the local MCP server. Bing data also runs
|
|
97
|
+
only there for now; when you ask the hosted server for Bing, it tells your
|
|
98
|
+
agent which CLI command to run.
|
|
93
99
|
|
|
94
100
|
## The eight commands
|
|
95
101
|
|
|
@@ -100,12 +106,13 @@ on your machine, through the CLI or the local MCP server.
|
|
|
100
106
|
| `seo compare --date <date>` | `seo_compare` | Equal periods before and after a date, with the Google updates in the window |
|
|
101
107
|
| `seo index` | `seo_index` | Pages that lost most of their clicks, checked live and with URL Inspection |
|
|
102
108
|
| `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 |
|
|
109
|
+
| `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
110
|
| `seo crawl <url>` | `seo_crawl` | A site crawl with technical issues and the URLs they affect (local only) |
|
|
105
111
|
| `seo internal-links --url <url>` | `seo_internal_links` | Pages that could link to a target page (local only) |
|
|
106
112
|
|
|
107
113
|
Each command takes its target (a site, URL or property) and an optional date
|
|
108
|
-
window.
|
|
114
|
+
window. `--site` takes a domain, a URL or a Search Console property, and
|
|
115
|
+
`seo sites` lists the ones you can read. Commands that return rows also take `--detail summary|rows|full` and
|
|
109
116
|
`--offset`. Brand terms, minimum impressions and the comparison period are set
|
|
110
117
|
for you and shown in the output, so there is nothing else to tune.
|
|
111
118
|
|
|
@@ -117,7 +124,7 @@ The [command docs](https://seoskill.dev/docs) explain each one.
|
|
|
117
124
|
Run the report without a section first:
|
|
118
125
|
|
|
119
126
|
```sh
|
|
120
|
-
seo report
|
|
127
|
+
seo report --site example.com
|
|
121
128
|
```
|
|
122
129
|
|
|
123
130
|
It shows site totals against the previous period, the pages and queries that
|
|
@@ -125,33 +132,25 @@ moved, and a short count with top rows for each section. Then ask for the one
|
|
|
125
132
|
section that matters:
|
|
126
133
|
|
|
127
134
|
```sh
|
|
128
|
-
seo report --section quick-wins
|
|
135
|
+
seo report --site example.com --section quick-wins
|
|
129
136
|
```
|
|
130
137
|
|
|
131
138
|
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.
|
|
139
|
+
`second-page`, `content-decay`, `cannibalization`, `traffic-drop` and `bing`.
|
|
140
|
+
Page sections check their top 20 URLs live and merge same-site redirects.
|
|
134
141
|
|
|
135
142
|
Each result ends with the command to run next. A traffic drop usually leads to
|
|
136
143
|
`seo compare` with the date it started, then `seo page` for the URLs that
|
|
137
144
|
moved:
|
|
138
145
|
|
|
139
146
|
```sh
|
|
140
|
-
seo compare --date 2026-09-15
|
|
147
|
+
seo compare --site example.com --date 2026-09-15
|
|
141
148
|
seo page --url https://example.com/pricing
|
|
142
149
|
```
|
|
143
150
|
|
|
144
151
|
Start with the summary. Ask for `--detail rows --offset 20` for the next page
|
|
145
152
|
of rows, or `--detail full` for every field, only when you need them.
|
|
146
153
|
|
|
147
|
-
Use `--project` when you have more than one saved project, or `--site` to work
|
|
148
|
-
without one:
|
|
149
|
-
|
|
150
|
-
```sh
|
|
151
|
-
seo report --project example
|
|
152
|
-
seo report --site sc-domain:example.com
|
|
153
|
-
```
|
|
154
|
-
|
|
155
154
|
## Add keyword and competitor data
|
|
156
155
|
|
|
157
156
|
Research uses your own provider account, so each request costs your credits
|
|
@@ -162,7 +161,9 @@ seo providers dataforseo connect
|
|
|
162
161
|
seo providers ahrefs connect
|
|
163
162
|
```
|
|
164
163
|
|
|
165
|
-
|
|
164
|
+
On the hosted server, save the keys on your
|
|
165
|
+
[account page](https://seoskill.dev/account) or send them as headers. Then ask
|
|
166
|
+
for one action:
|
|
166
167
|
|
|
167
168
|
```sh
|
|
168
169
|
seo research keyword_metrics --keywords "invoice software,invoice template"
|
|
@@ -177,18 +178,44 @@ Ahrefs". The hosted server adds it for everyone; the CLI adds it when you have
|
|
|
177
178
|
saved an Ahrefs key. Provider numbers are estimates. Search Console stays the
|
|
178
179
|
record of what your own site actually got.
|
|
179
180
|
|
|
181
|
+
## Add Bing Webmaster Tools
|
|
182
|
+
|
|
183
|
+
Bing data is free. It works in the CLI and the local MCP server. Save a Bing
|
|
184
|
+
Webmaster API key (Bing Webmaster Tools, then Settings, then API access):
|
|
185
|
+
|
|
186
|
+
```sh
|
|
187
|
+
seo providers bing connect
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Agents and CI can set `SEO_BING_API_KEY` instead. `seo providers bing status`
|
|
191
|
+
shows the connection and `seo providers bing disconnect` removes it. The
|
|
192
|
+
hosted server has no Bing for now. When you ask it for Bing, it tells your
|
|
193
|
+
agent to run the CLI instead, the same way it does for a crawl.
|
|
194
|
+
|
|
195
|
+
`seo report` then shows Google and Bing clicks and impressions for the same
|
|
196
|
+
dates, and each engine's share of those clicks. The `bing` section puts Bing's
|
|
197
|
+
top queries and pages beside Google's numbers for the same rows, and
|
|
198
|
+
`seo data --source bing` returns the raw Bing rows. Bing and Google numbers sit
|
|
199
|
+
side by side and are never added together. Bing lists only its top queries
|
|
200
|
+
and pages by week, so a row missing from Bing's list is unknown, not zero.
|
|
201
|
+
|
|
180
202
|
## Add your analytics
|
|
181
203
|
|
|
182
|
-
Google Analytics comes with your Google sign-in.
|
|
183
|
-
|
|
204
|
+
Google Analytics comes with your Google sign-in. List your properties, then
|
|
205
|
+
pass the numeric property id to a Google Analytics command:
|
|
206
|
+
|
|
207
|
+
```sh
|
|
208
|
+
seo analytics google properties
|
|
209
|
+
seo ai-referrals --property 123456789
|
|
210
|
+
```
|
|
184
211
|
|
|
185
212
|
Clicky is available through the
|
|
186
213
|
[Clicky provider package](https://github.com/iannuttall/seoskill-clicky-provider).
|
|
187
|
-
Install it, then
|
|
214
|
+
Install it, then connect a site with its Clicky site ID:
|
|
188
215
|
|
|
189
216
|
```sh
|
|
190
217
|
seo providers install @seoskill/clicky-provider
|
|
191
|
-
seo
|
|
218
|
+
seo analytics clicky connect --site-id 12345
|
|
192
219
|
```
|
|
193
220
|
|
|
194
221
|
The hosted server reads Google Analytics only. Clicky runs on your machine,
|
|
@@ -207,7 +234,8 @@ evidence rules. If you skipped it during `seo start`, add it now:
|
|
|
207
234
|
seo skill install
|
|
208
235
|
```
|
|
209
236
|
|
|
210
|
-
|
|
237
|
+
`seo start` can add the hosted or the local MCP server for you. To add the
|
|
238
|
+
local MCP server later, to Codex, Claude Code, Claude Desktop or Cursor:
|
|
211
239
|
|
|
212
240
|
```sh
|
|
213
241
|
seo mcp install
|
|
@@ -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.
|
|
@@ -238,20 +266,31 @@ installed provider packages.
|
|
|
238
266
|
Nothing here promises clicks, rankings or indexing. Check a change by running
|
|
239
267
|
the same command again over a later, complete window.
|
|
240
268
|
|
|
269
|
+
## Upgrading from 0.3
|
|
270
|
+
|
|
271
|
+
Saved project profiles are gone. Every command takes `--site` (or `--url`), and
|
|
272
|
+
`--project` or `--client` now stops with a note that says so. `seo projects`,
|
|
273
|
+
`seo client` and the commands that saved history between runs (`change-log`,
|
|
274
|
+
`tests`, `content-groups`, `monitoring`, `schedule`, `index-watch`,
|
|
275
|
+
`technical-watch`, `crawl-reports`, `crawl-diff` and `diagnose`) were removed.
|
|
276
|
+
Your agent keeps its own notes now. Each removed command names what to use
|
|
277
|
+
instead. To stay on the old version, run `npm i -g seo@0.2.41`.
|
|
278
|
+
|
|
241
279
|
## Upgrading from 0.2
|
|
242
280
|
|
|
243
281
|
Version 0.3.0 moved most reports into the eight commands. Old names such as
|
|
244
282
|
`seo quick-wins` still run in 0.3 and print the new command to use. They stop
|
|
245
283
|
working in 0.4.0. Some reports and commands were removed, including rank
|
|
246
|
-
tracking, programmatic SEO, AI search readiness, llms.txt, Bing
|
|
284
|
+
tracking, programmatic SEO, AI search readiness, llms.txt, Bing links,
|
|
247
285
|
IndexNow, Semrush, local search, server logs and the monthly and narrative
|
|
248
|
-
reports.
|
|
249
|
-
[changelog](CHANGELOG.md) lists
|
|
286
|
+
reports. Bing Webmaster search data came back in 0.3.0-beta.3. The old
|
|
287
|
+
research reports became `seo research`. The [changelog](CHANGELOG.md) lists
|
|
288
|
+
every old name and where it went.
|
|
250
289
|
|
|
251
290
|
## Use it in CI and scripts
|
|
252
291
|
|
|
253
|
-
Add `--json` to any command. JSON mode never prompts
|
|
254
|
-
|
|
292
|
+
Add `--json` to any command. JSON mode never prompts. Pass `--site` every
|
|
293
|
+
time.
|
|
255
294
|
|
|
256
295
|
```sh
|
|
257
296
|
seo report --site sc-domain:example.com --json
|
|
@@ -303,8 +342,9 @@ working example.
|
|
|
303
342
|
## Local data and Google access
|
|
304
343
|
|
|
305
344
|
Google tokens use your system keychain, with a private `0600` file fallback on
|
|
306
|
-
headless machines.
|
|
307
|
-
|
|
345
|
+
headless machines. Settings, provider keys and a short cache of Google
|
|
346
|
+
responses stay in your local config directory. Reports and crawls are not
|
|
347
|
+
saved: each run returns its results and your agent decides what to keep. A command still reaches the network when it needs Google,
|
|
308
348
|
your site or a provider you connected.
|
|
309
349
|
|
|
310
350
|
```sh
|
|
@@ -314,7 +354,8 @@ seo auth logout --all
|
|
|
314
354
|
seo reset
|
|
315
355
|
```
|
|
316
356
|
|
|
317
|
-
The hosted server keeps
|
|
357
|
+
The hosted server keeps only your linked sign-ins and saved keys, encrypted,
|
|
358
|
+
and no report data or logs. Read the
|
|
318
359
|
[privacy policy](https://seoskill.dev/privacy) for every network boundary and
|
|
319
360
|
the [telemetry page](https://seoskill.dev/telemetry) for the anonymous usage
|
|
320
361
|
counts and how to turn them off.
|
|
@@ -328,6 +369,7 @@ vulnerabilities privately through the process in [SECURITY.md](SECURITY.md).
|
|
|
328
369
|
- [Getting started](https://seoskill.dev/docs/getting-started)
|
|
329
370
|
- [Hosted MCP](https://seoskill.dev/docs/mcp)
|
|
330
371
|
- [API keys](https://seoskill.dev/docs/keys)
|
|
372
|
+
- [Your hosted account](https://seoskill.dev/account)
|
|
331
373
|
- [CLI](https://seoskill.dev/docs/cli)
|
|
332
374
|
- [Commands](https://seoskill.dev/docs)
|
|
333
375
|
- [What is stored](https://seoskill.dev/docs/privacy)
|
package/SECURITY.md
CHANGED
|
@@ -19,8 +19,8 @@ questions and non-sensitive bugs.
|
|
|
19
19
|
|
|
20
20
|
## Local data and credentials
|
|
21
21
|
|
|
22
|
-
`seo` is local-first.
|
|
23
|
-
|
|
22
|
+
`seo` is local-first. Settings, Google OAuth metadata, provider keys and
|
|
23
|
+
caches stay on the machine running the command. Access and refresh tokens
|
|
24
24
|
use the operating-system keychain when enabled; fallback token files and local
|
|
25
25
|
credential files use private file permissions.
|
|
26
26
|
|