seo 0.2.1 → 0.2.3
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 +9 -4
- package/README.md +2 -2
- package/dist/cli.js +79 -71
- package/dist/cli.js.map +1 -1
- package/dist/{dist-eiewVfiS.js → dist-BG734YzY.js} +1 -1
- package/dist/{dist-CTBhWxn6.js → dist-BnXs3Jen.js} +62 -62
- package/dist/dist-BnXs3Jen.js.map +1 -0
- package/dist/index.d.ts +2544 -41
- package/dist/index.js +1599 -180
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +1663 -164
- package/dist/mcp.js.map +1 -1
- package/dist/{package-BTOI9tde.js → package-Jl7x3QBx.js} +2 -2
- package/dist/{package-BTOI9tde.js.map → package-Jl7x3QBx.js.map} +1 -1
- package/evals/agent-readiness.json +58 -0
- package/package.json +5 -2
- package/skills/seo/SKILL.md +3 -2
- package/dist/dist-CTBhWxn6.js.map +0 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"subject": "agent-readiness",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "Check whether our documentation site is genuinely useful to AI agents. I want the Markdown versions, discovery files, crawler access, and identity checked together.",
|
|
7
|
+
"expected_output": "Should use report id agent-readiness with the content profile. Should follow the discovery flow by calling seo_describe_report with id agent-readiness, then seo_run_report with a bounded url and maxPages. Should read profile, profileApplicability, dataStatus, and crawl caveats first. Should then inspect the HTML and Markdown representation checks, Agent Skills, llms.txt, route manifest, crawler access, and identity evidence. Should describe the result as an unscored evidence assessment.",
|
|
8
|
+
"assertions": [
|
|
9
|
+
"Uses report id agent-readiness with the content profile",
|
|
10
|
+
"Calls seo_describe_report with id agent-readiness before seo_run_report",
|
|
11
|
+
"Runs the URL check with a bounded maxPages value",
|
|
12
|
+
"Reads profile, profileApplicability, dataStatus, and crawl caveats first",
|
|
13
|
+
"Checks Markdown representations, Agent Skills, llms.txt, route parity, crawler access, and identity",
|
|
14
|
+
"Describes the result as unscored evidence rather than a readiness score"
|
|
15
|
+
],
|
|
16
|
+
"files": []
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": 2,
|
|
20
|
+
"prompt": "Run the agent readiness check against https://example.com now. Do not reuse yesterday's saved crawl.",
|
|
21
|
+
"expected_output": "Should run report id agent-readiness with url https://example.com and a bounded maxPages value so the focused discovery checks are collected now. Should not pass reportId. Should read failed and warning checks with their affected URLs and actions, then verify changes with another run against the same route scope.",
|
|
22
|
+
"assertions": [
|
|
23
|
+
"Runs report id agent-readiness with url https://example.com",
|
|
24
|
+
"Passes a bounded maxPages value",
|
|
25
|
+
"Does not reuse a saved reportId",
|
|
26
|
+
"Reads failed and warning checks with affected URLs and actions",
|
|
27
|
+
"Recommends a comparable fresh run to verify changes"
|
|
28
|
+
],
|
|
29
|
+
"files": []
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": 3,
|
|
33
|
+
"prompt": "This is a docs site, but the report says the API, application, and commerce profiles are not applicable. Count those as three failures, and fail us for not publishing a remote MCP endpoint too.",
|
|
34
|
+
"expected_output": "Should refuse. Should explain that the content profile was selected because this run covers public documents and discovery. API, application, and commerce are separate capability profiles and notApplicable means they were outside the run, not that they failed. Should explain that a documented local MCP server does not create a public remote MCP endpoint requirement for a content site.",
|
|
35
|
+
"assertions": [
|
|
36
|
+
"Refuses to count notApplicable profiles as failures",
|
|
37
|
+
"Explains that the content profile covers public documents and discovery",
|
|
38
|
+
"Keeps API, application, and commerce as separate capability profiles",
|
|
39
|
+
"States that notApplicable means outside this run rather than failed",
|
|
40
|
+
"Does not require a remote MCP endpoint for a content site"
|
|
41
|
+
],
|
|
42
|
+
"files": []
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": 4,
|
|
46
|
+
"prompt": "The agent-readiness report passed. Give us a 100 score and confirm ChatGPT, Claude, and Google will use and cite every page.",
|
|
47
|
+
"expected_output": "Should refuse the score and the visibility claims. Should state that agent-readiness is an evidence-only content-site assessment with no aggregate score. A clean result does not prove indexing, rankings, fetching, use, mentions, citations, or selection by any service. Should keep optional discovery files separate from search requirements and recommend external observation for actual mentions or citations.",
|
|
48
|
+
"assertions": [
|
|
49
|
+
"Refuses to invent a 100 readiness score",
|
|
50
|
+
"States the report is an evidence-only assessment with no aggregate score",
|
|
51
|
+
"Refuses to claim every service will fetch, use, mention, cite, or select the pages",
|
|
52
|
+
"Keeps optional discovery files separate from search requirements",
|
|
53
|
+
"Recommends separate observation for actual mentions or citations"
|
|
54
|
+
],
|
|
55
|
+
"files": []
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "seo",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
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 GA4 data.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -60,8 +60,11 @@
|
|
|
60
60
|
"auth:inject-shared-client": "node scripts/inject-shared-oauth-client.mjs",
|
|
61
61
|
"build": "turbo run build && pnpm run build:package",
|
|
62
62
|
"build:package": "tsdown --config tsdown.config.ts",
|
|
63
|
+
"build:web": "pnpm --filter @seo/web... build",
|
|
63
64
|
"clean": "turbo run clean && rm -rf dist",
|
|
64
65
|
"dev": "turbo run dev",
|
|
66
|
+
"deploy:web": "pnpm --filter @seo/web exec wrangler deploy",
|
|
67
|
+
"deploy:web:dry-run": "pnpm --filter @seo/web exec wrangler deploy --dry-run",
|
|
65
68
|
"lint": "biome check . && node scripts/check-emdashes.mjs && node scripts/check-report-parity.mjs && pnpm run skills:validate && turbo run lint",
|
|
66
69
|
"lint:fix": "biome check . --write",
|
|
67
70
|
"loc:audit": "node scripts/loc-audit.mjs",
|
|
@@ -71,7 +74,7 @@
|
|
|
71
74
|
"security:check": "pnpm run security:audit && pnpm run security:secrets",
|
|
72
75
|
"security:secrets": "node scripts/security-secrets.mjs",
|
|
73
76
|
"skills:validate": "node scripts/validate-skills.mjs",
|
|
74
|
-
"test": "turbo run test && pnpm run build:package && node --test scripts/package.test.mjs && pnpm run skills:validate",
|
|
77
|
+
"test": "turbo run test && pnpm run build:package && node --test scripts/package.test.mjs scripts/dogfood-summary.test.mjs && pnpm run skills:validate",
|
|
75
78
|
"test:package-install": "pnpm run build:package && node --test scripts/installed-package.test.mjs",
|
|
76
79
|
"typecheck": "turbo run typecheck"
|
|
77
80
|
},
|
package/skills/seo/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: seo
|
|
3
|
-
description: Use and read this skill immediately if the user request is in any way related to SEO or a site's organic search or AI search presence. That includes site audits, rankings, click or traffic changes, indexing problems, crawling, redirects, sitemaps, metadata, structured data, Core Web Vitals, internal links, content opportunities, Search Console or GA4 questions, Google update impact, llms.txt, AI search visibility in ChatGPT, Claude, Perplexity, or Google AI Overviews, and client SEO reporting. Routes to
|
|
3
|
+
description: Use and read this skill immediately if the user request is in any way related to SEO or a site's organic search or AI search presence. That includes site audits, rankings, click or traffic changes, indexing problems, crawling, redirects, sitemaps, metadata, structured data, Core Web Vitals, internal links, content opportunities, Search Console or GA4 questions, Google update impact, llms.txt, AI search visibility in ChatGPT, Claude, Perplexity, or Google AI Overviews, and client SEO reporting. Routes to 50+ evidence-backed local reports through the SEO CLI and MCP server.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# seo
|
|
@@ -58,7 +58,8 @@ its evidence, then decide; do not run a whole chain blindly.
|
|
|
58
58
|
| Traffic or clicks dropped | `search-performance-overview`, `traffic-anomaly`, `update-correlation`, `segment-impact`, `decaying-pages`, `link-recovery` |
|
|
59
59
|
| Audit a whole site | `report` command (main report), `site-crawl`, `top-fixes`, `ai-search-scorecard` |
|
|
60
60
|
| More clicks from existing pages | `quick-wins`, `ctr-underperformers`, `striking-distance`, `second-page`, `internal-links` |
|
|
61
|
-
| AI
|
|
61
|
+
| AI agent readiness for a content site | `agent-readiness`, `ai-readiness`, `entity-readiness`, `llms-txt-audit` |
|
|
62
|
+
| AI search visibility and eligibility | `ai-readiness`, `geo-gaps`, `ai-referrals`, `seo-to-ai-query` |
|
|
62
63
|
| Plan content from real demand | `query-clusters`, `page-opportunities`, `content-optimization`, `cannibalisation` |
|
|
63
64
|
| Catch regressions over time | `technical-watch`, `crawl-diff`, `index-watch`, `measure-change` after a fix ships |
|
|
64
65
|
| Client-ready reporting | `monthly-report`, `narrative-report`, `monthly-action-plan` |
|