seo 0.1.0 → 0.2.1
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 +2 -2
- package/README.md +138 -42
- package/TERMS.md +2 -2
- package/TRADEMARKS.md +9 -5
- package/dist/cli.js +69 -52
- package/dist/cli.js.map +1 -1
- package/dist/{dist-CSY2_p-j.js → dist-CTBhWxn6.js} +49 -49
- package/dist/dist-CTBhWxn6.js.map +1 -0
- package/dist/{dist-FeAUNn9A.js → dist-eiewVfiS.js} +1 -1
- package/dist/index.d.ts +186 -94
- package/dist/index.js +843 -415
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts +18 -1
- package/dist/mcp.js +6532 -4665
- package/dist/mcp.js.map +1 -1
- package/dist/{package-uzXzqDW6.js → package-BTOI9tde.js} +2 -2
- package/dist/{package-uzXzqDW6.js.map → package-BTOI9tde.js.map} +1 -1
- package/evals/README.md +117 -0
- package/evals/affected-urls.json +57 -0
- package/evals/ai-readiness.json +84 -0
- package/evals/ai-referrals.json +71 -0
- package/evals/ai-search-scorecard.json +70 -0
- package/evals/audit-page.json +57 -0
- package/evals/audit-urls.json +58 -0
- package/evals/cannibalisation.json +57 -0
- package/evals/community-intent.json +57 -0
- package/evals/compare-crawls.json +56 -0
- package/evals/content-optimization.json +57 -0
- package/evals/crawl-diff.json +58 -0
- package/evals/crawl-history.json +44 -0
- package/evals/crawl-report.json +44 -0
- package/evals/crawler-rules.json +44 -0
- package/evals/ctr-underperformers.json +57 -0
- package/evals/decaying-pages.json +57 -0
- package/evals/entity-readiness.json +57 -0
- package/evals/explain-crawl-issue.json +44 -0
- package/evals/generate-llms-txt.json +44 -0
- package/evals/geo-gaps.json +57 -0
- package/evals/index-coverage-plan.json +58 -0
- package/evals/index-coverage.json +70 -0
- package/evals/index-monitor.json +58 -0
- package/evals/index-watch.json +68 -0
- package/evals/internal-links.json +57 -0
- package/evals/link-recovery.json +58 -0
- package/evals/llms-txt-audit.json +44 -0
- package/evals/measure-change.json +58 -0
- package/evals/monthly-action-plan.json +56 -0
- package/evals/monthly-report.json +58 -0
- package/evals/narrative-report.json +58 -0
- package/evals/okf-build.json +44 -0
- package/evals/okf-validate.json +44 -0
- package/evals/page-opportunities.json +57 -0
- package/evals/performance-audit.json +57 -0
- package/evals/pseo-audit.json +84 -0
- package/evals/query-clusters.json +57 -0
- package/evals/quick-wins.json +86 -0
- package/evals/redirect-trace.json +57 -0
- package/evals/refresh-priorities.json +57 -0
- package/evals/search-performance-overview.json +86 -0
- package/evals/second-page.json +58 -0
- package/evals/segment-impact.json +57 -0
- package/evals/seo-fix-queue.json +85 -0
- package/evals/seo-geo-readiness.json +84 -0
- package/evals/seo-site-audit.json +85 -0
- package/evals/seo-to-ai-query.json +57 -0
- package/evals/seo.json +87 -0
- package/evals/setup-check.json +56 -0
- package/evals/site-crawl.json +44 -0
- package/evals/striking-distance.json +85 -0
- package/evals/technical-watch.json +57 -0
- package/evals/top-fixes.json +44 -0
- package/evals/traffic-anomaly.json +57 -0
- package/evals/update-correlation.json +57 -0
- package/evals/update-postmortem.json +57 -0
- package/package.json +5 -3
- package/skills/README.md +50 -61
- package/skills/seo/SKILL.md +88 -63
- package/skills/seo/agents/openai.yaml +2 -2
- package/dist/dist-CSY2_p-j.js.map +0 -1
- package/skills/affected-urls/SKILL.md +0 -39
- package/skills/affected-urls/agents/openai.yaml +0 -4
- package/skills/ai-readiness/SKILL.md +0 -34
- package/skills/ai-readiness/agents/openai.yaml +0 -4
- package/skills/ai-referrals/SKILL.md +0 -31
- package/skills/ai-referrals/agents/openai.yaml +0 -4
- package/skills/audit-page/SKILL.md +0 -50
- package/skills/audit-page/agents/openai.yaml +0 -4
- package/skills/audit-urls/SKILL.md +0 -39
- package/skills/audit-urls/agents/openai.yaml +0 -4
- package/skills/cannibalisation/SKILL.md +0 -31
- package/skills/cannibalisation/agents/openai.yaml +0 -4
- package/skills/community-intent/SKILL.md +0 -39
- package/skills/community-intent/agents/openai.yaml +0 -4
- package/skills/compare-crawls/SKILL.md +0 -40
- package/skills/compare-crawls/agents/openai.yaml +0 -4
- package/skills/content-optimization/SKILL.md +0 -31
- package/skills/content-optimization/agents/openai.yaml +0 -4
- package/skills/crawl-diff/SKILL.md +0 -51
- package/skills/crawl-diff/agents/openai.yaml +0 -4
- package/skills/crawl-history/SKILL.md +0 -37
- package/skills/crawl-history/agents/openai.yaml +0 -4
- package/skills/crawl-report/SKILL.md +0 -37
- package/skills/crawl-report/agents/openai.yaml +0 -4
- package/skills/crawler-rules/SKILL.md +0 -34
- package/skills/crawler-rules/agents/openai.yaml +0 -4
- package/skills/ctr-underperformers/SKILL.md +0 -31
- package/skills/ctr-underperformers/agents/openai.yaml +0 -4
- package/skills/decaying-pages/SKILL.md +0 -31
- package/skills/decaying-pages/agents/openai.yaml +0 -4
- package/skills/entity-readiness/SKILL.md +0 -34
- package/skills/entity-readiness/agents/openai.yaml +0 -4
- package/skills/explain-crawl-issue/SKILL.md +0 -32
- package/skills/explain-crawl-issue/agents/openai.yaml +0 -4
- package/skills/generate-llms-txt/SKILL.md +0 -37
- package/skills/generate-llms-txt/agents/openai.yaml +0 -4
- package/skills/geo-gaps/SKILL.md +0 -37
- package/skills/geo-gaps/agents/openai.yaml +0 -4
- package/skills/index-coverage/SKILL.md +0 -84
- package/skills/index-coverage/agents/openai.yaml +0 -4
- package/skills/index-coverage-plan/SKILL.md +0 -50
- package/skills/index-coverage-plan/agents/openai.yaml +0 -4
- package/skills/index-monitor/SKILL.md +0 -49
- package/skills/index-monitor/agents/openai.yaml +0 -4
- package/skills/index-watch/SKILL.md +0 -77
- package/skills/index-watch/agents/openai.yaml +0 -4
- package/skills/internal-links/SKILL.md +0 -31
- package/skills/internal-links/agents/openai.yaml +0 -4
- package/skills/link-recovery/SKILL.md +0 -51
- package/skills/link-recovery/agents/openai.yaml +0 -4
- package/skills/llms-txt-audit/SKILL.md +0 -34
- package/skills/llms-txt-audit/agents/openai.yaml +0 -4
- package/skills/measure-change/SKILL.md +0 -52
- package/skills/measure-change/agents/openai.yaml +0 -4
- package/skills/monthly-action-plan/SKILL.md +0 -50
- package/skills/monthly-action-plan/agents/openai.yaml +0 -4
- package/skills/monthly-report/SKILL.md +0 -50
- package/skills/monthly-report/agents/openai.yaml +0 -4
- package/skills/narrative-report/SKILL.md +0 -51
- package/skills/narrative-report/agents/openai.yaml +0 -4
- package/skills/okf-build/SKILL.md +0 -39
- package/skills/okf-build/agents/openai.yaml +0 -4
- package/skills/okf-validate/SKILL.md +0 -43
- package/skills/okf-validate/agents/openai.yaml +0 -4
- package/skills/page-opportunities/SKILL.md +0 -31
- package/skills/page-opportunities/agents/openai.yaml +0 -4
- package/skills/performance/SKILL.md +0 -50
- package/skills/performance/agents/openai.yaml +0 -4
- package/skills/performance-audit/SKILL.md +0 -31
- package/skills/performance-audit/agents/openai.yaml +0 -4
- package/skills/pseo-audit/SKILL.md +0 -103
- package/skills/pseo-audit/agents/openai.yaml +0 -4
- package/skills/query-clusters/SKILL.md +0 -31
- package/skills/query-clusters/agents/openai.yaml +0 -4
- package/skills/quick-wins/SKILL.md +0 -31
- package/skills/quick-wins/agents/openai.yaml +0 -4
- package/skills/redirect-trace/SKILL.md +0 -51
- package/skills/redirect-trace/agents/openai.yaml +0 -4
- package/skills/refresh-priorities/SKILL.md +0 -48
- package/skills/refresh-priorities/agents/openai.yaml +0 -4
- package/skills/search-performance-overview/SKILL.md +0 -48
- package/skills/search-performance-overview/agents/openai.yaml +0 -4
- package/skills/second-page/SKILL.md +0 -50
- package/skills/second-page/agents/openai.yaml +0 -4
- package/skills/segment-impact/SKILL.md +0 -50
- package/skills/segment-impact/agents/openai.yaml +0 -4
- package/skills/seo-fix-queue/SKILL.md +0 -50
- package/skills/seo-fix-queue/agents/openai.yaml +0 -4
- package/skills/seo-geo-readiness/SKILL.md +0 -60
- package/skills/seo-geo-readiness/agents/openai.yaml +0 -4
- package/skills/seo-site-audit/SKILL.md +0 -59
- package/skills/seo-site-audit/agents/openai.yaml +0 -4
- package/skills/seo-to-ai-query/SKILL.md +0 -31
- package/skills/seo-to-ai-query/agents/openai.yaml +0 -4
- package/skills/setup-check/SKILL.md +0 -49
- package/skills/setup-check/agents/openai.yaml +0 -4
- package/skills/site-crawl/SKILL.md +0 -39
- package/skills/site-crawl/agents/openai.yaml +0 -4
- package/skills/striking-distance/SKILL.md +0 -52
- package/skills/striking-distance/agents/openai.yaml +0 -4
- package/skills/technical-watch/SKILL.md +0 -49
- package/skills/technical-watch/agents/openai.yaml +0 -4
- package/skills/top-fixes/SKILL.md +0 -38
- package/skills/top-fixes/agents/openai.yaml +0 -4
- package/skills/traffic-anomaly/SKILL.md +0 -52
- package/skills/traffic-anomaly/agents/openai.yaml +0 -4
- package/skills/update-correlation/SKILL.md +0 -51
- package/skills/update-correlation/agents/openai.yaml +0 -4
- package/skills/update-postmortem/SKILL.md +0 -49
- package/skills/update-postmortem/agents/openai.yaml +0 -4
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "seo",
|
|
3
|
-
"version": "0.1
|
|
4
|
-
"description": "SEO
|
|
3
|
+
"version": "0.2.1",
|
|
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",
|
|
7
7
|
"author": "Ian Nuttall",
|
|
8
|
-
"homepage": "https://
|
|
8
|
+
"homepage": "https://seoskill.dev",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "git+https://github.com/iannuttall/seo.git"
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"bugs": {
|
|
14
14
|
"url": "https://github.com/iannuttall/seo/issues"
|
|
15
15
|
},
|
|
16
|
+
"funding": "https://github.com/iannuttall/seo",
|
|
16
17
|
"keywords": [
|
|
17
18
|
"seo",
|
|
18
19
|
"search-console",
|
|
@@ -41,6 +42,7 @@
|
|
|
41
42
|
"files": [
|
|
42
43
|
"dist",
|
|
43
44
|
"skills",
|
|
45
|
+
"evals",
|
|
44
46
|
"PRIVACY.md",
|
|
45
47
|
"SECURITY.md",
|
|
46
48
|
"TERMS.md",
|
package/skills/README.md
CHANGED
|
@@ -1,30 +1,43 @@
|
|
|
1
1
|
# Agent skills
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This package ships one skill: `seo`. It teaches an agent how to use `seo`
|
|
4
|
+
without reading the whole repo.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
The skill is a router, not a manual. It explains the discover, describe, run
|
|
7
|
+
flow, names the report ids for common jobs, and states the evidence rules that
|
|
8
|
+
apply to every report. It does not memorise each report. Per-report depth, when
|
|
9
|
+
to use a report, when to avoid it, its schema, the order to read its output,
|
|
10
|
+
what its evidence cannot support, and one verification step, is fetched at
|
|
11
|
+
runtime with `describe`. This keeps the skill small and always in sync with the
|
|
12
|
+
registry.
|
|
13
|
+
|
|
14
|
+
## Install during setup
|
|
15
|
+
|
|
16
|
+
Install the CLI and run the guided setup when you are starting from scratch:
|
|
7
17
|
|
|
8
18
|
```bash
|
|
9
|
-
|
|
19
|
+
npm i -g seo
|
|
20
|
+
seo start
|
|
10
21
|
```
|
|
11
22
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
with the standard agent skills installer:
|
|
23
|
+
Setup offers to install both the skill and local MCP server. If the CLI is
|
|
24
|
+
already set up, install or reinstall the skill directly:
|
|
15
25
|
|
|
16
26
|
```bash
|
|
17
|
-
|
|
27
|
+
seo skill install
|
|
18
28
|
```
|
|
19
29
|
|
|
20
|
-
|
|
21
|
-
|
|
30
|
+
The skill can call the CLI directly when MCP tools are not available. The npm
|
|
31
|
+
package and repository contain the same skill.
|
|
22
32
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
The skills name the report ids for their workflow.
|
|
33
|
+
Use `seo skill list` or `seo skill path seo` to inspect the copy bundled with
|
|
34
|
+
the npm package.
|
|
26
35
|
|
|
27
|
-
|
|
36
|
+
## Discover, describe, run
|
|
37
|
+
|
|
38
|
+
The MCP path is deliberately small: discover ids with `seo_list_reports`, load
|
|
39
|
+
one report's full depth with `seo_describe_report`, then execute it with
|
|
40
|
+
`seo_run_report`. The same catalog is available without MCP:
|
|
28
41
|
|
|
29
42
|
```bash
|
|
30
43
|
seo reports list --json
|
|
@@ -32,50 +45,26 @@ seo reports describe <report-id> --json
|
|
|
32
45
|
seo reports run <report-id> --params '<json>' --json
|
|
33
46
|
```
|
|
34
47
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
##
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
- `seo-fix-queue`: turn crawl results into an implementation queue.
|
|
59
|
-
- `pseo-audit`: audit repeated URL templates with GSC, crawl, and URL Inspection evidence.
|
|
60
|
-
- `index-watch`: monitor exact indexed-state evidence, transitions, failures, and quota-deferred checks.
|
|
61
|
-
- `performance`: separate Lighthouse lab diagnostics, CrUX field Core Web Vitals, and unscored fallback evidence.
|
|
62
|
-
- `community-intent`: review explicit intent language in retained GSC queries without claiming a page gap.
|
|
63
|
-
- `seo-to-ai-query`: create deterministic monitoring-prompt suggestions from retained GSC queries.
|
|
64
|
-
- `measure-change`: compare equal finalized GSC windows without turning an incomplete after-period into a directional verdict.
|
|
65
|
-
|
|
66
|
-
The `seo` skill routes requests that span several focused workflows.
|
|
67
|
-
|
|
68
|
-
## Report skills
|
|
69
|
-
|
|
70
|
-
Every compact MCP report id has a same-name skill. Each skill teaches the
|
|
71
|
-
discovery flow and the evidence limits that matter for that report.
|
|
72
|
-
|
|
73
|
-
- Setup: `setup-check`.
|
|
74
|
-
- Diagnosis: `search-performance-overview`, `segment-impact`, `striking-distance`, `traffic-anomaly`, `update-correlation`.
|
|
75
|
-
- Opportunities: `cannibalisation`, `ctr-underperformers`, `decaying-pages`, `internal-links`, `query-clusters`, `quick-wins`.
|
|
76
|
-
- AI search: `ai-referrals`, `community-intent`, `content-optimization`, `page-opportunities`, `performance-audit`, `seo-to-ai-query`.
|
|
77
|
-
- Crawl: `affected-urls`, `ai-readiness`, `audit-urls`, `compare-crawls`, `site-crawl`, `entity-readiness`, `explain-crawl-issue`, `geo-gaps`, `crawl-report`, `crawl-history`, `crawler-rules`, `llms-txt-audit`, `generate-llms-txt`, `okf-build`, `okf-validate`, `top-fixes`.
|
|
78
|
-
- Monitoring: `crawl-diff`, `index-coverage`, `index-coverage-plan`, `index-monitor`, `index-watch`, `link-recovery`, `redirect-trace`.
|
|
79
|
-
- Reporting: `audit-page`, `monthly-report`, `pseo-audit`, `narrative-report`, `second-page`.
|
|
80
|
-
- Experiments: `measure-change`.
|
|
81
|
-
- Workflows: `monthly-action-plan`, `refresh-priorities`, `technical-watch`, `update-postmortem`.
|
|
48
|
+
Always describe a report before its first run. The describe response is the
|
|
49
|
+
per-report manual: its `readOrder`, `doNotClaim` limits, `verify` step, and
|
|
50
|
+
`related` ids come straight from the registry.
|
|
51
|
+
|
|
52
|
+
## Adding a report
|
|
53
|
+
|
|
54
|
+
Register the report once in `packages/mcp/src/report-registry.ts`, including its
|
|
55
|
+
depth guidance in `packages/mcp/src/report-guidance.ts` and
|
|
56
|
+
`packages/mcp/src/report-depth.ts` (`readOrder`, `doNotClaim`, `verify`,
|
|
57
|
+
`related`). CLI discovery, MCP discovery, and the skill then share its id,
|
|
58
|
+
description, input schema, handler, and depth automatically. No new skill file
|
|
59
|
+
is needed. The router only lists report ids for common jobs; a report earns a
|
|
60
|
+
mention there when it belongs in one of those chains.
|
|
61
|
+
|
|
62
|
+
Run `pnpm skills:validate` after changing the skill or the registry. The
|
|
63
|
+
validator checks the skill frontmatter and word count, that every command and
|
|
64
|
+
report id the skill names resolves, that the MCP tool names are real, and that
|
|
65
|
+
every `evals/*.json` is well formed.
|
|
66
|
+
|
|
67
|
+
## Evals
|
|
68
|
+
|
|
69
|
+
Behaviour tests for the skill live in the top-level `evals/` directory. See
|
|
70
|
+
[../evals/README.md](../evals/README.md) for the file shape and how to run them.
|
package/skills/seo/SKILL.md
CHANGED
|
@@ -1,74 +1,99 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: seo
|
|
3
|
-
description:
|
|
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 52 evidence-backed local reports through the SEO CLI and MCP server.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# seo
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
`seo` is a local CLI, MCP server, and report engine. It answers SEO questions
|
|
9
|
+
with evidence from three sources: its own crawl of the site, Google Search
|
|
10
|
+
Console, and GA4. Every report returns structured JSON with the observed
|
|
11
|
+
evidence, derived findings, caveats, and provenance kept separate. Nothing is
|
|
12
|
+
hosted; data stays on the machine.
|
|
9
13
|
|
|
10
|
-
|
|
11
|
-
|
|
14
|
+
You do not need to memorise reports. Discover them at runtime.
|
|
15
|
+
|
|
16
|
+
## Discover, describe, run
|
|
17
|
+
|
|
18
|
+
With the MCP server (preferred):
|
|
19
|
+
|
|
20
|
+
1. `seo_list_reports` returns every report id with a one-line purpose,
|
|
21
|
+
optionally by category.
|
|
22
|
+
2. `seo_describe_report` with one id returns when to use it, when to avoid it,
|
|
23
|
+
its exact JSON Schema, the order to read its output in, what its evidence
|
|
24
|
+
cannot support, one verification step, and related report ids.
|
|
25
|
+
3. `seo_run_report` with the id and a bounded `params` object. Read
|
|
26
|
+
`structuredContent`, not the display text.
|
|
27
|
+
|
|
28
|
+
The same catalog exists without MCP:
|
|
12
29
|
|
|
13
30
|
```bash
|
|
14
|
-
seo
|
|
15
|
-
seo
|
|
31
|
+
seo reports list --json
|
|
32
|
+
seo reports describe <report-id> --json
|
|
33
|
+
seo reports run <report-id> --params '<json>' --json
|
|
16
34
|
```
|
|
17
35
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
- Quote `principle` and `evidenceRef` when explaining
|
|
67
|
-
|
|
68
|
-
- If
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
36
|
+
Always describe a report before its first run in a session. The describe
|
|
37
|
+
response is the per-report manual: follow its `readOrder`, respect its
|
|
38
|
+
`doNotClaim` limits, and use its `related` ids to decide what to run next.
|
|
39
|
+
Reuse the schema for repeated runs. Do not guess parameters.
|
|
40
|
+
|
|
41
|
+
## Setup and selection
|
|
42
|
+
|
|
43
|
+
Run the `setup-check` report (or `seo doctor`) if auth state is unknown.
|
|
44
|
+
Saved project profiles are selected with `--project <id>`; list them with
|
|
45
|
+
`seo projects list --json`. Without a profile, pass `--site sc-domain:example.com`
|
|
46
|
+
for Search Console reports or `--url https://example.com` for crawl-only
|
|
47
|
+
reports. Crawl and page audits work with no Google connection at all. Always
|
|
48
|
+
pass `--json`; JSON mode never prompts.
|
|
49
|
+
|
|
50
|
+
## Common jobs
|
|
51
|
+
|
|
52
|
+
Each job lists report ids in a sensible starting order. Run the first, read
|
|
53
|
+
its evidence, then decide; do not run a whole chain blindly.
|
|
54
|
+
|
|
55
|
+
| Job | Reports |
|
|
56
|
+
|---|---|
|
|
57
|
+
| Page not indexed or missing from Google | `index-coverage`, `index-monitor` (URL Inspection), `audit-page`, `redirect-trace` |
|
|
58
|
+
| Traffic or clicks dropped | `search-performance-overview`, `traffic-anomaly`, `update-correlation`, `segment-impact`, `decaying-pages`, `link-recovery` |
|
|
59
|
+
| Audit a whole site | `report` command (main report), `site-crawl`, `top-fixes`, `ai-search-scorecard` |
|
|
60
|
+
| More clicks from existing pages | `quick-wins`, `ctr-underperformers`, `striking-distance`, `second-page`, `internal-links` |
|
|
61
|
+
| AI search visibility and readiness | `ai-search-scorecard`, `ai-readiness`, `geo-gaps`, `entity-readiness`, `llms-txt-audit`, `ai-referrals` |
|
|
62
|
+
| Plan content from real demand | `query-clusters`, `page-opportunities`, `content-optimization`, `cannibalisation` |
|
|
63
|
+
| Catch regressions over time | `technical-watch`, `crawl-diff`, `index-watch`, `measure-change` after a fix ships |
|
|
64
|
+
| Client-ready reporting | `monthly-report`, `narrative-report`, `monthly-action-plan` |
|
|
65
|
+
| Turn crawl findings into tickets | `top-fixes`, `affected-urls`, `explain-crawl-issue` |
|
|
66
|
+
|
|
67
|
+
A single page complaint usually needs both angles: the index evidence for that
|
|
68
|
+
URL and an `audit-page` pass for content or technical problems on the page
|
|
69
|
+
itself.
|
|
70
|
+
|
|
71
|
+
The main human report is the `seo report` command. It is the right first move
|
|
72
|
+
when the user asks a broad "how is my site doing" question; the focused
|
|
73
|
+
reports above are for specific symptoms.
|
|
74
|
+
|
|
75
|
+
## Evidence rules
|
|
76
|
+
|
|
77
|
+
- Check `dataStatus`, selection counts, `caveats`, and `warnings` before
|
|
78
|
+
summarising any report. Name skipped or incomplete evidence first.
|
|
79
|
+
- Partial, capped, filtered, or sampled sources never support a zero or an
|
|
80
|
+
all-clear. Grouped Search Console totals undercount because anonymised query
|
|
81
|
+
rows are withheld.
|
|
82
|
+
- Values marked heuristic are prioritisation aids, not forecasts. Never
|
|
83
|
+
promise clicks, rankings, indexing, or AI citations from any report.
|
|
84
|
+
- Quote `principle` and `evidenceRef` when explaining a recommendation, and
|
|
85
|
+
give the user the report's verification step alongside any suggested change.
|
|
86
|
+
- If a report returns no rows, say so plainly.
|
|
87
|
+
- Intentional controls such as `noindex`, canonicals, and robots rules are
|
|
88
|
+
observations until the user confirms they are unintended.
|
|
89
|
+
|
|
90
|
+
## Beyond the report catalog
|
|
91
|
+
|
|
92
|
+
The CLI also has direct commands for raw provider access and administration:
|
|
93
|
+
`seo gsc-query`, `seo url-inspect`, `seo ga4-report`, `seo updates`,
|
|
94
|
+
`seo crawl`, `seo export`, and `seo projects`. Use `seo help all` to list
|
|
95
|
+
everything. Prefer a registered report when one covers the question, because
|
|
96
|
+
reports carry provenance and caveats that raw queries do not.
|
|
97
|
+
|
|
98
|
+
Report output is cached locally. Pass `refresh: true` (or `--refresh`) only
|
|
99
|
+
when the user explicitly wants a fresh fetch.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "seo"
|
|
3
|
-
short_description: "
|
|
4
|
-
default_prompt: "Use $seo to
|
|
3
|
+
short_description: "Use immediately for anything touching SEO, organic search, or AI search: audits, rankings, traffic changes, indexing, crawling, Search Console, GA4, or AI visibility"
|
|
4
|
+
default_prompt: "Use $seo to discover, describe, and run the right local SEO report and explain its evidence."
|