seo 0.2.10 → 0.2.13
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/README.md +101 -1
- package/dist/cli.js +212 -130
- package/dist/cli.js.map +1 -1
- package/dist/{dist-CBY8QOnv.js → dist-BB0yH7qK.js} +1 -1
- package/dist/{dist-w2XtKwjW.js → dist-Dwdogl4j.js} +85 -80
- package/dist/dist-Dwdogl4j.js.map +1 -0
- package/dist/index.d.ts +1984 -71
- package/dist/index.js +2900 -247
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +2647 -197
- package/dist/mcp.js.map +1 -1
- package/dist/{package-92W1Zc-o.js → package-B_swz2Xd.js} +2 -2
- package/dist/{package-92W1Zc-o.js.map → package-B_swz2Xd.js.map} +1 -1
- package/evals/bing-webmaster-overview.json +31 -0
- package/evals/link-evidence.json +29 -0
- package/evals/seo.json +16 -0
- package/evals/server-log-analysis.json +29 -0
- package/package.json +3 -3
- package/skills/seo/SKILL.md +56 -67
- package/dist/dist-w2XtKwjW.js.map +0 -1
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.
|
|
80
|
+
seo v0.2.13
|
|
81
81
|
|
|
82
82
|
Run SEO audits, find what needs fixing, and ship the changes with your agent.
|
|
83
83
|
|
|
@@ -181,6 +181,106 @@ seo analytics google properties
|
|
|
181
181
|
seo analytics google report --property 123456789 --dimensions landingPage --metrics sessions,totalUsers
|
|
182
182
|
```
|
|
183
183
|
|
|
184
|
+
Bing Webmaster is optional. Connect it when you want Bing traffic trends,
|
|
185
|
+
crawl changes, and query and page opportunities beside your Google evidence:
|
|
186
|
+
|
|
187
|
+
```sh
|
|
188
|
+
seo providers bing connect
|
|
189
|
+
seo providers bing report --project example
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
The guided connection asks for the API key from Bing Webmaster Tools Settings,
|
|
193
|
+
then API Access. It validates the key, lists verified sites, matches one to the
|
|
194
|
+
selected project when the hostname is unambiguous, and stores the key in the
|
|
195
|
+
system keychain with a private local file fallback. Agents and CI can set
|
|
196
|
+
`SEO_BING_API_KEY` and run the report without saving the key.
|
|
197
|
+
|
|
198
|
+
The report compares recent traffic periods, highlights material crawl changes,
|
|
199
|
+
and returns bounded query and page review lists. Provider responses stay
|
|
200
|
+
uncached and byte limited. Invalid, partial, capped, unavailable, and sampled
|
|
201
|
+
evidence remain distinct. Bing's `inIndex` crawl statistic is provider
|
|
202
|
+
evidence, not URL-level proof that a page is indexed. A query or page missing
|
|
203
|
+
from a weekly top list is unknown, not zero.
|
|
204
|
+
|
|
205
|
+
Use the same connection to review a bounded set of referring links, or import
|
|
206
|
+
an export from another source:
|
|
207
|
+
|
|
208
|
+
```sh
|
|
209
|
+
seo links --project example --json
|
|
210
|
+
seo links --file ./links.csv --row-limit 10000 --json
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
CSV and JSONL imports stream from disk. Regular JSON arrays have a smaller
|
|
214
|
+
file limit to avoid a memory spike. Every result includes the number of rows
|
|
215
|
+
read, rejected, deduplicated, omitted, or stopped by a limit. It is evidence
|
|
216
|
+
from the selected source, not a complete backlink index or an authority score.
|
|
217
|
+
|
|
218
|
+
## Create an HTML report for a client
|
|
219
|
+
|
|
220
|
+
The built-in renderer creates a standalone report when you need a predictable
|
|
221
|
+
file without asking an agent to design it:
|
|
222
|
+
|
|
223
|
+
```sh
|
|
224
|
+
seo report --project example --format html
|
|
225
|
+
seo monthly-report --project example --format html
|
|
226
|
+
seo report-narrative --project example --format html --view analyst
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Client view keeps the presentation concise. Analyst view adds evidence coverage
|
|
230
|
+
and unavailable sections. Use `--output ./report.html` to choose the file path.
|
|
231
|
+
The file contains its own CSS, works offline, prints cleanly, and is marked
|
|
232
|
+
`noindex,nofollow`.
|
|
233
|
+
|
|
234
|
+
An agent can instead design its own report from the structured result:
|
|
235
|
+
|
|
236
|
+
```sh
|
|
237
|
+
seo report --project example --full --json > seo-report.json
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Ask the agent to turn that evidence into one responsive, print-friendly HTML
|
|
241
|
+
file for the intended audience. It can choose the layout and visual style, but
|
|
242
|
+
it must keep provider labels, reporting dates, data status, limitations, and
|
|
243
|
+
verification steps visible. Missing or partial data must not become zero, and
|
|
244
|
+
the presentation must not invent forecasts, causes, scores, or conclusions.
|
|
245
|
+
The installed skill teaches agents this contract automatically.
|
|
246
|
+
|
|
247
|
+
## Analyze crawler traffic in server logs
|
|
248
|
+
|
|
249
|
+
Stream a local NGINX or Apache-style combined access log without importing or
|
|
250
|
+
retaining every raw request:
|
|
251
|
+
|
|
252
|
+
```sh
|
|
253
|
+
seo server-logs analyze --file ./access.log --json
|
|
254
|
+
seo server-logs analyze --file ./access.jsonl --format jsonl --json
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
The report groups observed search and AI crawler user agents by response class
|
|
258
|
+
and path. Input bytes, rows, line size, unique paths, and returned detail are
|
|
259
|
+
bounded, and any capped or malformed evidence stays visible. User-agent names
|
|
260
|
+
can be spoofed, so the result describes observed request strings rather than
|
|
261
|
+
verified crawler identity.
|
|
262
|
+
|
|
263
|
+
## Notify IndexNow after a change
|
|
264
|
+
|
|
265
|
+
Generate a key file in the public asset directory for your site, then deploy
|
|
266
|
+
it before sending notifications:
|
|
267
|
+
|
|
268
|
+
```sh
|
|
269
|
+
seo indexnow setup --site https://example.com --output ./public
|
|
270
|
+
seo indexnow verify --site https://example.com
|
|
271
|
+
seo indexnow submit --site https://example.com --url https://example.com/changed-page
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Use `--dry-run --json` to validate a submission without notifying IndexNow.
|
|
275
|
+
The command accepts one URL, a comma-separated list, or a newline-delimited
|
|
276
|
+
file. A run is limited to 1,000 unique URLs, every URL must use the configured
|
|
277
|
+
host, and the public key file is checked before a live request. The local key
|
|
278
|
+
mapping stays in the system keychain with a private file fallback. Agents and
|
|
279
|
+
CI can set `SEO_INDEXNOW_KEY` for the current process instead.
|
|
280
|
+
|
|
281
|
+
An accepted IndexNow request confirms receipt only. It does not prove that a
|
|
282
|
+
URL was crawled, indexed, ranked, or shown in search results.
|
|
283
|
+
|
|
184
284
|
## Crawl a site
|
|
185
285
|
|
|
186
286
|
For a large or unfamiliar site, start with the sitemap health pass:
|