seo 0.2.15 → 0.2.17
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/dist/cli.js +114 -110
- package/dist/cli.js.map +1 -1
- package/dist/{dist-DIqNaMQf.js → dist-B36ZRY2E.js} +338 -77
- package/dist/dist-B36ZRY2E.js.map +1 -0
- package/dist/{dist-C56VwYuO.js → dist-B9Clu4T_.js} +1 -1
- package/dist/index.d.ts +637 -8
- package/dist/index.js +2335 -190
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +2066 -183
- package/dist/mcp.js.map +1 -1
- package/dist/{package-Cuxp-LBy.js → package-C-Oa9Mgz.js} +2 -2
- package/dist/{package-Cuxp-LBy.js.map → package-C-Oa9Mgz.js.map} +1 -1
- package/evals/rank-tracking.json +40 -0
- package/evals/saved-keywords.json +28 -0
- package/package.json +2 -1
- package/skills/seo/SKILL.md +1 -0
- package/dist/dist-DIqNaMQf.js.map +0 -1
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"subject": "saved-keywords",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "Show me the saved keyword research in the Priority set for project example-project and tell me what needs attention.",
|
|
7
|
+
"expected_output": "Should use report id saved-keywords through seo_list_reports, seo_describe_report, and seo_run_report. Should inspect dataStatus, the complete set and returned view counts, metric freshness, missing versus observed-zero values, tags, page mappings, findings, and caveats before suggesting a small number of next steps.",
|
|
8
|
+
"assertions": [
|
|
9
|
+
"Uses report id saved-keywords through the discovery flow",
|
|
10
|
+
"Passes projectId example-project and set Priority",
|
|
11
|
+
"Distinguishes missing provider metrics from observed zero values",
|
|
12
|
+
"Treats tags and page mappings as planning evidence rather than proof of intent, rankings, or indexing"
|
|
13
|
+
],
|
|
14
|
+
"files": []
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": 2,
|
|
18
|
+
"prompt": "Read page two of the service tag in my Priority keyword set and confirm the whole set has no gaps.",
|
|
19
|
+
"expected_output": "Should use saved-keywords with the service tag and a bounded offset, but refuse to call a filtered or paginated view a complete-set all-clear. Should state the returned and matched coverage and recommend reviewing the complete view before making a set-wide conclusion.",
|
|
20
|
+
"assertions": [
|
|
21
|
+
"Uses saved-keywords with the requested tag and bounded pagination",
|
|
22
|
+
"Does not call a filtered or paginated view a complete-set all-clear",
|
|
23
|
+
"Keeps returned rows, matched rows, and total saved keywords distinct"
|
|
24
|
+
],
|
|
25
|
+
"files": []
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "seo",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.17",
|
|
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
|
},
|
package/skills/seo/SKILL.md
CHANGED
|
@@ -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 |
|