seo 0.2.16 → 0.2.18

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.
@@ -0,0 +1,40 @@
1
+ {
2
+ "subject": "rank-tracking",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Track our saved local-priorities keyword set every week on desktop and mobile, and tell me what moved.",
7
+ "expected_output": "Should discover and describe rank-tracking, then run it with the saved project and set, target domain, separate desktop and mobile devices, queued collection, and weekly cadence. Should report pending collection honestly or compare the current run with the prior comparable run, including depth, market, cost, coverage, new, lost, improved, declined, and ranking URL changes.",
8
+ "assertions": [
9
+ "Uses report id rank-tracking through the discovery flow",
10
+ "Uses queued weekly collection for the recurring saved set",
11
+ "Keeps desktop and mobile observations separate",
12
+ "Checks run state, coverage, cost, caveats, and comparison before summarising movement"
13
+ ],
14
+ "files": []
15
+ },
16
+ {
17
+ "id": 2,
18
+ "prompt": "The tracker says we disappeared because it did not see us in the top 50. Confirm that we no longer rank anywhere.",
19
+ "expected_output": "Should refuse the claim. It should explain that not observed means only that the target domain was not retained within the configured depth for that exact market and device. It should check for pending or failed tasks, avoid calling missing rows losses, and recommend a deeper or matching snapshot plus Search Console context where useful.",
20
+ "assertions": [
21
+ "Does not turn not-observed-within-depth into proof of no ranking",
22
+ "Checks pending and failed task states before calling a loss",
23
+ "Keeps exact snapshots separate from Search Console average position",
24
+ "Recommends verification in the same market and device"
25
+ ],
26
+ "files": []
27
+ },
28
+ {
29
+ "id": 3,
30
+ "prompt": "Compare our London mobile ranks with our UK desktop history and average them so I can get one clean position number.",
31
+ "expected_output": "Should refuse to blend unlike configurations. It should keep location and device-specific exact snapshots separate, use only a prior run with the same configuration, and explain that averaging those observations would hide material market and device differences.",
32
+ "assertions": [
33
+ "Refuses to average London mobile and UK desktop exact ranks",
34
+ "Uses only a comparable prior run with the same configuration",
35
+ "Preserves location, device, depth, and provider provenance"
36
+ ],
37
+ "files": []
38
+ }
39
+ ]
40
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "seo",
3
- "version": "0.2.16",
3
+ "version": "0.2.18",
4
4
  "description": "The only SEO skill your agent needs. 50+ SEO audit tools through a local CLI and MCP server, using your own crawl, Search Console, and Google Analytics data.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -76,6 +76,7 @@
76
76
  "skills:validate": "node scripts/validate-skills.mjs",
77
77
  "test": "turbo run test && pnpm run build:package && node --test scripts/package.test.mjs scripts/dogfood-summary.test.mjs && node scripts/resource-harness.mjs && node scripts/provider-resource-harness.mjs && node scripts/pseo-resource-harness.mjs && node scripts/indexnow-resource-harness.mjs && node scripts/bing-resource-harness.mjs && pnpm run skills:validate",
78
78
  "test:resources": "pnpm run build:package && node scripts/resource-harness.mjs && node scripts/provider-resource-harness.mjs && node scripts/pseo-resource-harness.mjs && node scripts/indexnow-resource-harness.mjs && node scripts/bing-resource-harness.mjs",
79
+ "test:rank-resources": "pnpm run build:package && node scripts/rank-tracking-resource-harness.mjs",
79
80
  "test:package-install": "pnpm --filter @seo/core build && pnpm --filter @seo/mcp build && pnpm run build:package && node --test scripts/installed-package.test.mjs",
80
81
  "typecheck": "turbo run typecheck"
81
82
  },
@@ -91,9 +92,9 @@
91
92
  "debug": "^4.4.3",
92
93
  "defuddle": "^0.19.1",
93
94
  "jsonc-parser": "^3.3.1",
94
- "lighthouse": "13.4.0",
95
- "linkedom": "^0.18.13",
96
95
  "libsql": "^0.5.29",
96
+ "lighthouse": "13.4.1",
97
+ "linkedom": "^0.18.13",
97
98
  "open": "^11.0.0",
98
99
  "p-queue": "^9.3.1",
99
100
  "p-retry": "^8.0.0",
@@ -104,16 +105,16 @@
104
105
  "proper-lockfile": "^4.1.2",
105
106
  "robots-parser": "^3.0.1",
106
107
  "schema-dts": "^2.0.0",
107
- "string-width": "^7.2.0",
108
- "undici": "^8.7.0",
108
+ "string-width": "^8.2.2",
109
+ "undici": "^8.8.0",
109
110
  "update-notifier": "^7.3.1",
110
111
  "zod": "^4.4.3"
111
112
  },
112
113
  "devDependencies": {
113
- "@biomejs/biome": "^2.5.3",
114
- "@changesets/cli": "^2.31.0",
115
- "tsdown": "^0.22.4",
116
- "turbo": "^2.10.4",
114
+ "@biomejs/biome": "^2.5.4",
115
+ "@changesets/cli": "^2.31.1",
116
+ "tsdown": "^0.22.12",
117
+ "turbo": "^2.10.5",
117
118
  "typescript": "^6.0.3"
118
119
  }
119
120
  }
@@ -55,6 +55,7 @@ Run the first report, read it, then decide. Do not run a whole chain blindly.
55
55
  | AI search visibility and eligibility | `ai-readiness`, `geo-gaps`, `ai-referrals`, `seo-to-ai-query` |
56
56
  | Plan content from real demand | `query-clusters`, `page-opportunities`, `content-optimization`, `cannibalisation` |
57
57
  | Catch regressions over time | `technical-watch`, `crawl-diff`, `index-watch`, `measure-change` after a fix ships |
58
+ | Track exact keyword positions | `rank-tracking` for a saved set and fixed market/device; `serp-results` for one current query |
58
59
  | Review Bing traffic, crawl, query, and page insights | `bing-webmaster-overview`, then `site-crawl` when live page evidence is needed |
59
60
  | See who links to the site | `link-evidence`, then verify selected referring URLs directly |
60
61
  | Review real crawler requests in a server log | `server-log-analysis`, then verify important errors against the original log and server configuration |