pseolint 0.6.1 → 0.6.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/README.md +52 -18
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
# pseolint
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Find the broken template before SpamBrain does.
|
|
4
4
|
|
|
5
|
-
The
|
|
5
|
+
The CLI for **programmatic SEO auditing** — v0.6.2. Detects SpamBrain-risk patterns across large template-generated sites, now surfaced per-template instead of as a flat findings list.
|
|
6
|
+
|
|
7
|
+
## What's new in v0.6 — audit-as-template
|
|
8
|
+
|
|
9
|
+
- **Per-template verdict aggregation** — the worst template with ≥5% URL coverage drives the site headline. One broken `/listing/:slug` can't hide behind a clean `/category/:slug`.
|
|
10
|
+
- **Per-template variance metric** — uniformity score + top-driver rule per template. "8/10 samples fail `spam/thin-content`" is printed directly on the template card.
|
|
11
|
+
- **Two-phase pipeline** — phase 1 clusters the sitemap (~T fetches); phase 2 deep-audits K pages per template. Typical budget: ~80 fetches on a 100k-URL site vs. 200 in v0.5.
|
|
12
|
+
- **`--per-template`** (default ON) — renders template cards above the findings list.
|
|
13
|
+
- **`--template <signature>`** — drill into one template's findings, useful in CI.
|
|
14
|
+
- **`--legacy-flat`** — opt out; get the v0.5-style flat list.
|
|
15
|
+
- **Backwards compatible** — `--format json` still includes `findings`; `templates` is additive.
|
|
16
|
+
|
|
17
|
+
Design rationale: [`docs/superpowers/specs/2026-05-04-pseolint-v0.6-audit-as-template-reframe.md`](../../docs/superpowers/specs/2026-05-04-pseolint-v0.6-audit-as-template-reframe.md)
|
|
6
18
|
|
|
7
19
|
## What's new in v0.5.2 — credibility layer
|
|
8
20
|
|
|
@@ -55,13 +67,19 @@ npm install -g pseolint
|
|
|
55
67
|
# Audit your local dev server (recommended)
|
|
56
68
|
npx pseolint http://localhost:3000
|
|
57
69
|
|
|
58
|
-
# Audit a live site
|
|
70
|
+
# Audit a live site — per-template output is the default in v0.6
|
|
59
71
|
npx pseolint https://yoursite.com
|
|
60
72
|
|
|
61
73
|
# Audit a build directory
|
|
62
74
|
npx pseolint ./out --ci-threshold concerning
|
|
63
75
|
|
|
64
|
-
#
|
|
76
|
+
# Filter output to a single template (useful in CI)
|
|
77
|
+
npx pseolint https://yoursite.com --template "/listing/:slug"
|
|
78
|
+
|
|
79
|
+
# Suppress template cards; get the v0.5-style flat findings list
|
|
80
|
+
npx pseolint https://yoursite.com --legacy-flat
|
|
81
|
+
|
|
82
|
+
# Show every finding (default view shows verdict + grades + template cards + top 3 fixes)
|
|
65
83
|
npx pseolint http://localhost:3000 --explain
|
|
66
84
|
|
|
67
85
|
# Diff two audit runs (verdict, grades, fixed/regressed/new findings)
|
|
@@ -71,19 +89,32 @@ npx pseolint diff baseline.json current.json
|
|
|
71
89
|
npx pseolint http://localhost:3000 --format html --output report.html
|
|
72
90
|
```
|
|
73
91
|
|
|
74
|
-
A typical
|
|
92
|
+
A typical v0.6 console output looks like:
|
|
75
93
|
|
|
76
94
|
```
|
|
77
|
-
Verdict:
|
|
78
|
-
Integrity
|
|
95
|
+
Verdict: CONCERNING
|
|
96
|
+
Integrity C · Discoverability B · Citation C · Data A
|
|
97
|
+
|
|
98
|
+
Per-template breakdown (3 templates):
|
|
99
|
+
|
|
100
|
+
/listing/:slug CONCERNING C
|
|
101
|
+
10/8201 URLs (0.1%) uniformity 85%
|
|
102
|
+
8/10 samples fail `spam/thin-content`
|
|
103
|
+
|
|
104
|
+
/category/:slug READY A
|
|
105
|
+
10/312 URLs (3.2%) uniformity 94%
|
|
106
|
+
|
|
107
|
+
/help/:slug CAUTION B
|
|
108
|
+
10/47 URLs (21.3%) uniformity 78%
|
|
109
|
+
3/10 samples fail `content/missing-author`
|
|
79
110
|
|
|
80
111
|
3 blockers, 16 warnings — top fixes by impact:
|
|
81
|
-
1. /
|
|
112
|
+
1. /listing/* thin content (8/10 pages) → add 200+ unique words per page
|
|
113
|
+
pseolint.dev/rules/thin-content
|
|
114
|
+
2. /help/* missing author attribution (3 pages) → add author schema or byline
|
|
115
|
+
pseolint.dev/rules/missing-author
|
|
116
|
+
3. /listing/* missing og:image (10 pages) → add to listing layout
|
|
82
117
|
pseolint.dev/rules/og-completeness
|
|
83
|
-
2. Symptom Article schema author (5 errors) → add author + datePublished
|
|
84
|
-
pseolint.dev/rules/schema-required-fields
|
|
85
|
-
3. /tools index thin unique words (1 error) → add 36 distinctive words
|
|
86
|
-
pseolint.dev/rules/unique-value
|
|
87
118
|
|
|
88
119
|
Run `pseolint --explain` for the full list.
|
|
89
120
|
```
|
|
@@ -96,14 +127,9 @@ Run `pseolint --explain` for the full list.
|
|
|
96
127
|
concerning | critical (default: concerning).
|
|
97
128
|
Exit non-zero if the audit's verdict is at or worse
|
|
98
129
|
than the threshold.
|
|
99
|
-
-t, --threshold <n> [DEPRECATED — removed in v0.5] Numeric risk threshold.
|
|
100
|
-
Use --ci-threshold instead. When set, exits non-zero
|
|
101
|
-
if summary.risk >= n (low risk = good).
|
|
102
130
|
--explain Print every finding, bucketed by severity (blockers /
|
|
103
131
|
should-fix / informational). Default view is the
|
|
104
|
-
compact verdict + grades + top-3-fixes
|
|
105
|
-
--watch [planned, v0.4.1] Re-audit on source changes. Logs
|
|
106
|
-
a "not yet implemented" notice and exits in v0.4.0.
|
|
132
|
+
compact verdict + grades + template cards + top-3-fixes.
|
|
107
133
|
-o, --output <file> Write report to file
|
|
108
134
|
--no-color Disable colored output
|
|
109
135
|
--concurrency <n> Max parallel HTTP fetches (default: 5)
|
|
@@ -114,6 +140,14 @@ Run `pseolint --explain` for the full list.
|
|
|
114
140
|
--browser-ws <url> CDP WebSocket endpoint for rendering
|
|
115
141
|
--no-crawl Disable crawl-based page discovery
|
|
116
142
|
|
|
143
|
+
Template output (v0.6)
|
|
144
|
+
--per-template Render per-template cards (default: ON when ≥2 templates
|
|
145
|
+
detected; suppress with --legacy-flat)
|
|
146
|
+
--template <signature> Filter output to a single template, e.g. /listing/:slug.
|
|
147
|
+
CI use case: fail only when that template degrades.
|
|
148
|
+
--legacy-flat Suppress template cards; print the v0.5-style flat
|
|
149
|
+
findings list.
|
|
150
|
+
|
|
117
151
|
Safety (v0.3.2+)
|
|
118
152
|
--safe-mode <saas|cli> Preset: "saas" flips guardSsrf + tightens caps;
|
|
119
153
|
"cli" keeps local-friendly defaults.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pseolint",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.3",
|
|
4
4
|
"description": "Programmatic SEO linter CLI — SpamBrain-proof your pSEO before you publish. v0.4 verdict ladder (ready/caution/concerning/critical) + auto site classification.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ouranos Labs <contact@ouranos-labs.dev>",
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@pseolint/core": "^0.6.
|
|
47
|
-
"@pseolint/mcp": "^0.6.
|
|
46
|
+
"@pseolint/core": "^0.6.3",
|
|
47
|
+
"@pseolint/mcp": "^0.6.3",
|
|
48
48
|
"commander": "^14.0.3",
|
|
49
49
|
"cosmiconfig": "^9.0.1",
|
|
50
50
|
"jiti": "^2.6.0",
|