seo 0.2.8 → 0.2.10

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # Privacy policy
2
2
 
3
- Last updated: 16 July 2026
3
+ Last updated: 18 July 2026
4
4
 
5
5
  This policy covers the official `seo` command-line tool, library, MCP server,
6
6
  and the seoskill.dev website.
@@ -34,18 +34,46 @@ The use of information received from Google APIs follows the [Google API
34
34
  Services User Data Policy](https://developers.google.com/terms/api-services-user-data-policy),
35
35
  including its Limited Use requirements.
36
36
 
37
- ## What stays on your machine
37
+ ## How Google data is protected
38
38
 
39
- The software stores project profiles, settings, OAuth tokens, caches, logs, and
40
- saved reports in local user directories. `seo privacy` prints the relevant
41
- paths and file permissions.
39
+ The software stores project profiles, settings, OAuth tokens, cached API
40
+ responses, logs, and saved reports in local user directories. It does not send
41
+ Google user data to a hosted SEO account or database. Requests go directly from
42
+ your machine to Google APIs over HTTPS.
42
43
 
43
44
  OAuth tokens use the operating system keychain when that option is enabled.
44
45
  The fallback token file and any bring-your-own OAuth client file are written
45
- with user-only file permissions. You are responsible for the security of your
46
+ with user-only file permissions. Config, cache, and log directories are also
47
+ created with user-only permissions on supported systems. `seo privacy` prints
48
+ the relevant local paths and file permissions so you can inspect them.
49
+
50
+ The local cache is not a substitute for device security or disk encryption. A
51
+ person or process with access to your operating system account may be able to
52
+ read local reports and caches. You are responsible for the security of your
46
53
  device, backups, shell history, exported reports, and any environment variables
47
54
  you create.
48
55
 
56
+ ## How long Google data is kept
57
+
58
+ OAuth tokens remain on your machine until you run `seo auth logout` or
59
+ `seo reset --yes`. Revoking SEO Skill from your Google Account invalidates the
60
+ grant. You should still run `seo auth logout` if you also want to remove the
61
+ local token record.
62
+
63
+ Google Analytics and Search Console API responses are cached locally so repeat
64
+ commands do not make the same request unnecessarily. A cached response is
65
+ eligible for reuse for up to 24 hours. Expired cache rows are removed during
66
+ automatic cache maintenance, which also removes cache rows older than 30 days
67
+ and enforces local size limits. On a machine where the command is no longer
68
+ run, expired rows may remain in the local cache file until you delete them.
69
+
70
+ Run `seo cache clear --provider google-analytics` to remove cached Google
71
+ Analytics responses immediately. Run `seo cache clear --provider gsc` to do
72
+ the same for Search Console. Project profiles and reports that you deliberately
73
+ save remain until you delete them with the relevant command or run
74
+ `seo reset --yes`. The reset command removes all configuration, tokens, caches,
75
+ logs, and saved data managed by the software.
76
+
49
77
  ## Network requests
50
78
 
51
79
  Commands connect directly from your machine to the services needed for the
@@ -114,11 +142,7 @@ ask it to inspect.
114
142
  No local report is shared with another person or service unless you export,
115
143
  copy, publish, or transmit it yourself.
116
144
 
117
- ## Removing local data and Google access
118
-
119
- `seo auth logout` removes locally stored Google tokens. `seo reset --yes`
120
- removes local SEO configuration, tokens, caches, logs, and saved data managed by
121
- the tool.
145
+ ## Removing Google access
122
146
 
123
147
  You can also revoke the app from your [Google Account connections](https://myaccount.google.com/connections).
124
148
  Deleting local files does not delete data held by Google, npm, GitHub, a site
package/README.md CHANGED
@@ -77,7 +77,7 @@ technical report before connecting Google.
77
77
  Running `seo help` shows the shape of the tool:
78
78
 
79
79
  ```txt
80
- seo v0.2.8
80
+ seo v0.2.10
81
81
 
82
82
  Run SEO audits, find what needs fixing, and ship the changes with your agent.
83
83
 
@@ -183,7 +183,21 @@ seo analytics google report --property 123456789 --dimensions landingPage --metr
183
183
 
184
184
  ## Crawl a site
185
185
 
186
- Run a readable technical crawl, the base of any technical SEO audit:
186
+ For a large or unfamiliar site, start with the sitemap health pass:
187
+
188
+ ```sh
189
+ seo crawl --sitemap-url https://example.com/sitemap.xml --health --format pretty
190
+ ```
191
+
192
+ This reads the sitemap, then checks each listed URL for status, redirects,
193
+ robots decisions, network failures, and access blocks. It does not parse or
194
+ render page bodies, join Google data, check external links, or write page and
195
+ robots responses to the local cache. Requests begin one at a time and increase
196
+ only after clean responses.
197
+
198
+ Run the full crawl second when the health evidence points to a problem, or when
199
+ you need metadata, canonicals, indexability, links, structured data, or page
200
+ content:
187
201
 
188
202
  ```sh
189
203
  seo crawl https://example.com --format pretty
@@ -199,7 +213,15 @@ seo crawl-reports --compare latest --against previous
199
213
  ```
200
214
 
201
215
  Useful crawl controls include `--max-pages`, `--max-depth`, `--include`,
202
- `--exclude`, `--no-sitemap`, `--no-external`, and `--fail-on` for CI.
216
+ `--exclude`, `--no-sitemap`, `--no-external`, and `--fail-on` for CI. Every
217
+ request uses the stable versioned identity
218
+ `SEO-Skill/<version> (+https://seoskill.dev)`.
219
+
220
+ If a site denies or challenges that identity, the report keeps the HTTP status,
221
+ provider indicators, request ID when available, and practical access guidance.
222
+ Do not allow requests based on User-Agent alone because it can be spoofed.
223
+ Scope any temporary exception to the audit machine source IP, required host or
224
+ paths, and the exact blocking rule.
203
225
 
204
226
  ## Use it in CI and scripts
205
227
 
@@ -208,8 +230,8 @@ runs.
208
230
 
209
231
  ```sh
210
232
  seo report --project example --json
233
+ seo crawl --sitemap-url https://example.com/sitemap.xml --health --format junit --output sitemap-health.xml --fail-on high
211
234
  seo crawl https://example.com --json --output crawl.json
212
- seo crawl https://example.com --fail-on high --json
213
235
  ```
214
236
 
215
237
  Reports keep observed data, derived findings, skipped sections, limits, and
@@ -343,6 +365,13 @@ const page = await auditPage({
343
365
  url: 'https://example.com/pricing',
344
366
  })
345
367
 
368
+ const health = await crawlSite({
369
+ url: 'https://example.com',
370
+ mode: 'sitemap',
371
+ strategy: 'health',
372
+ sitemapUrl: 'https://example.com/sitemap.xml',
373
+ })
374
+
346
375
  const crawl = await crawlSite({
347
376
  url: 'https://example.com',
348
377
  maxPages: 100,
@@ -350,6 +379,7 @@ const crawl = await crawlSite({
350
379
  })
351
380
 
352
381
  console.log(page.issues)
382
+ console.log(health.summary, health.access)
353
383
  console.log(crawl.summary, crawl.issueGroups)
354
384
  ```
355
385