searvex-seo 0.7.0 → 1.0.0
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/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +53 -0
- package/NOTICE +2 -0
- package/README.md +29 -13
- package/THIRD_PARTY_NOTICES.md +750 -0
- package/dist/analyze/audit.d.ts +4 -0
- package/dist/analyze/audit.js +6 -2
- package/dist/analyze/audit.js.map +1 -1
- package/dist/analyze/content.js +9 -1
- package/dist/analyze/content.js.map +1 -1
- package/dist/analyze/context.d.ts +7 -1
- package/dist/analyze/context.js +10 -1
- package/dist/analyze/context.js.map +1 -1
- package/dist/analyze/inventory.js +1 -1
- package/dist/analyze/priority.js +32 -0
- package/dist/analyze/priority.js.map +1 -1
- package/dist/analyze/structured-data.js +3 -1
- package/dist/analyze/structured-data.js.map +1 -1
- package/dist/analyze/technical.d.ts +10 -0
- package/dist/analyze/technical.js +41 -12
- package/dist/analyze/technical.js.map +1 -1
- package/dist/cli.js +22 -8
- package/dist/cli.js.map +1 -1
- package/dist/commands/crux.d.ts +8 -0
- package/dist/commands/crux.js +61 -0
- package/dist/commands/crux.js.map +1 -0
- package/dist/commands/gsc.d.ts +10 -1
- package/dist/commands/gsc.js +201 -35
- package/dist/commands/gsc.js.map +1 -1
- package/dist/commands/monitor.js +71 -20
- package/dist/commands/monitor.js.map +1 -1
- package/dist/commands/optimize.js +26 -4
- package/dist/commands/optimize.js.map +1 -1
- package/dist/commands/research.js +1 -1
- package/dist/commands/research.js.map +1 -1
- package/dist/commands/run.js +8 -7
- package/dist/commands/run.js.map +1 -1
- package/dist/crawl/render.d.ts +4 -0
- package/dist/crawl/render.js +38 -5
- package/dist/crawl/render.js.map +1 -1
- package/dist/extract/html.d.ts +5 -0
- package/dist/extract/html.js +10 -0
- package/dist/extract/html.js.map +1 -1
- package/dist/integrations/bing.d.ts +20 -1
- package/dist/integrations/bing.js +42 -2
- package/dist/integrations/bing.js.map +1 -1
- package/dist/integrations/credentials.d.ts +51 -3
- package/dist/integrations/credentials.js +165 -1
- package/dist/integrations/credentials.js.map +1 -1
- package/dist/integrations/crux.d.ts +5 -1
- package/dist/integrations/crux.js +27 -3
- package/dist/integrations/crux.js.map +1 -1
- package/dist/integrations/google-oauth.d.ts +2 -1
- package/dist/integrations/google-oauth.js +3 -3
- package/dist/integrations/google-oauth.js.map +1 -1
- package/dist/integrations/gsc-csv.d.ts +0 -5
- package/dist/integrations/gsc-csv.js +0 -14
- package/dist/integrations/gsc-csv.js.map +1 -1
- package/dist/integrations/property.d.ts +20 -0
- package/dist/integrations/property.js +82 -0
- package/dist/integrations/property.js.map +1 -1
- package/dist/net/fetcher.d.ts +2 -2
- package/dist/net/fetcher.js +1 -1
- package/dist/net/ssrf.js +2 -1
- package/dist/net/ssrf.js.map +1 -1
- package/dist/optimize/fixes.d.ts +2 -0
- package/dist/optimize/fixes.js +8 -1
- package/dist/optimize/fixes.js.map +1 -1
- package/dist/optimize/transaction.d.ts +7 -1
- package/dist/optimize/transaction.js +48 -21
- package/dist/optimize/transaction.js.map +1 -1
- package/dist/repo/audit.js +11 -2
- package/dist/repo/audit.js.map +1 -1
- package/dist/repo/detect.d.ts +5 -0
- package/dist/repo/detect.js +34 -2
- package/dist/repo/detect.js.map +1 -1
- package/dist/repo/scan.d.ts +21 -2
- package/dist/repo/scan.js +90 -13
- package/dist/repo/scan.js.map +1 -1
- package/dist/report/html.js +1 -1
- package/dist/report/markdown.d.ts +1 -1
- package/dist/report/markdown.js +2 -1
- package/dist/report/markdown.js.map +1 -1
- package/dist/rules/engine.js +4 -0
- package/dist/rules/engine.js.map +1 -1
- package/dist/searvex.mjs +1908 -1231
- package/knowledge/rules/structured-data.json +2 -1
- package/package.json +4 -2
- package/skills/monitor/SKILL.md +2 -2
- package/skills/research/SKILL.md +3 -0
- package/skills/searvex/SKILL.md +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "searvex",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Search intelligence & optimization engine: deterministic technical SEO + GEO audits with a sourced rule base, competitor research, and safe, verified code fixes with rollback.",
|
|
5
5
|
"author": { "name": "Cihan Topaç", "url": "https://github.com/cihantopac" },
|
|
6
6
|
"license": "Apache-2.0",
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,59 @@ All notable changes to this project are documented here. The format follows
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [1.0.0] - 2026-11-01
|
|
9
|
+
|
|
10
|
+
First stable release. Every capability advertised as supported has been verified end to end; Bing Webmaster
|
|
11
|
+
is the one integration shipped as experimental. Evidence: [docs/release-checklist.md](docs/release-checklist.md)
|
|
12
|
+
and [docs/quality.md](docs/quality.md).
|
|
13
|
+
|
|
14
|
+
### Security and data integrity
|
|
15
|
+
- `monitor` no longer attaches search data of another website: `--import`, `--site-url`, `SEARVEX_GSC_SITE`
|
|
16
|
+
and `--baseline` are checked against the monitored site; an export without a pages table needs `--property`.
|
|
17
|
+
- Search Console exports whose pages span several subdomains are scoped as domain properties (their totals
|
|
18
|
+
include every subdomain); an explicit `--property` that does not contain every exported page is refused.
|
|
19
|
+
- `--render`: a hard per-page deadline stops pages whose scripts never yield or allocate without bound; a
|
|
20
|
+
stuck browser is replaced. Local host names with a trailing dot are blocked.
|
|
21
|
+
- Optimizer: backups and the manifest are written before the first file (an interrupted apply is recoverable
|
|
22
|
+
with `rollback`, and new applies are refused until then); a failed verification never overwrites files
|
|
23
|
+
edited meanwhile; CRLF line endings and file modes are preserved.
|
|
24
|
+
- Credentials: opt-in OS keychain store (`SEARVEX_CREDENTIAL_STORE=keychain`: macOS Keychain, Secret Service,
|
|
25
|
+
Windows DPAPI) using the OS's own tools with secrets on stdin; entries are isolated per config directory.
|
|
26
|
+
Automated scans confirm that no token, key or client secret reaches output or run files.
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
- `searvex bing auth|status|sites|logout` and `searvex crux auth|status|logout`: keys are entered without echo,
|
|
30
|
+
checked against the API and kept in the credential store instead of environment variables.
|
|
31
|
+
- `gsc auth` opens the browser for consent (`--no-browser` to only print the URL).
|
|
32
|
+
- `THIRD_PARTY_NOTICES.md` with the licence texts of all bundled runtime packages.
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
- Search Console API reports show property totals from the daily series (anonymised queries included), equal
|
|
36
|
+
to the CSV export of the same period. Bing reports use the daily site series for totals and explain empty
|
|
37
|
+
data. `bing report` requires a verified site of the account.
|
|
38
|
+
- "Fix first" names the likely root cause of dependent findings (e.g. a client-side language switch that
|
|
39
|
+
changes titles, canonicals and hreflang for renderers) and ranks it first.
|
|
40
|
+
- 3-letter hreflang codes without an ISO 639-1 equivalent (`ast`, `ceb`) are reported at low severity with an
|
|
41
|
+
explanation instead of as high-severity mistakes; a finding's severity is its most severe occurrence.
|
|
42
|
+
- Status commands (`gsc|bing|crux status`) exit 0 only when the integration is usable.
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
- Repository mode: test/fixture/benchmark/example folders, HTML fragments and server template folders are not
|
|
46
|
+
treated as the site (a repository without a website now scores n/a); static sites in workspace folders and
|
|
47
|
+
locale sub-folders are found; clean URLs; sitemap URLs without a file (unless another app routes them); all
|
|
48
|
+
Laravel route files; Blade/PHP expressions no longer hide attributes; admin views and tests skipped; error
|
|
49
|
+
pages modelled as 404/500; Next.js fill images and aspect-ratio utility classes are sized; personal sites
|
|
50
|
+
are not asked for Organization markup.
|
|
51
|
+
- Website mode: pages linked only through internal redirects are not orphans; orphans are not reported on
|
|
52
|
+
crawls stopped at the page limit; cannibalisation candidates must share a language and exclude legal pages;
|
|
53
|
+
Turkish soft-404 wording is detected (Unicode-aware boundaries).
|
|
54
|
+
|
|
55
|
+
### Verified
|
|
56
|
+
- Live: Search Console API (authorization, refresh, properties, pagination, reports), Search Console CSV
|
|
57
|
+
(real Turkish and English exports), CrUX (values identical to the raw API), Bing Webmaster (mechanics; no
|
|
58
|
+
site data yet). Real-world rounds on 13 public sites and 9 repositories; benchmarks to 50,000 pages;
|
|
59
|
+
reproducible package; clean installs on Linux, macOS and Windows.
|
|
60
|
+
|
|
8
61
|
## [0.7.0] - 2026-10-30
|
|
9
62
|
|
|
10
63
|
### Added
|
package/NOTICE
CHANGED
|
@@ -11,6 +11,8 @@ The bundled distribution (dist/searvex.mjs) includes the following third-party s
|
|
|
11
11
|
- robots-parser (MIT) https://github.com/samclarke/robots-parser
|
|
12
12
|
- @babel/parser (MIT) https://github.com/babel/babel
|
|
13
13
|
|
|
14
|
+
Full licence texts of every bundled package: THIRD_PARTY_NOTICES.md.
|
|
15
|
+
|
|
14
16
|
Rule descriptions summarise and link to official documentation from Google Search Central, Bing
|
|
15
17
|
Webmaster, Yandex, schema.org, W3C, web.dev, MDN and crawler operators. Those documents remain the
|
|
16
18
|
property of their respective owners.
|
package/README.md
CHANGED
|
@@ -5,9 +5,10 @@ repositories for technical SEO and GEO/AEO (AI search) issues against a **source
|
|
|
5
5
|
base**, researches competitors, and applies **safe, verified code fixes with one-command rollback**.
|
|
6
6
|
It ships as a standalone CLI and as a Claude Code plugin.
|
|
7
7
|
|
|
8
|
-
> Status: **
|
|
9
|
-
>
|
|
10
|
-
>
|
|
8
|
+
> Status: **v1.0.0**. Tested with automated tests (incl. Playwright rendering and adversarial isolation tests),
|
|
9
|
+
> CI on Linux, macOS and Windows, clean installs of the packed package, and real-world validation on 13 public
|
|
10
|
+
> sites, 9 repositories and live Search Console / CrUX accounts — see [docs/quality.md](docs/quality.md) and
|
|
11
|
+
> [docs/release-checklist.md](docs/release-checklist.md). Read [Limitations](#limitations) before relying on it.
|
|
11
12
|
|
|
12
13
|
## Why Searvex
|
|
13
14
|
|
|
@@ -37,8 +38,8 @@ Competitor research and differentiation notes: [docs/research/competitors-2026-1
|
|
|
37
38
|
(`research`).
|
|
38
39
|
- Fix a small set of problems in code automatically (9 rule types: e.g. missing `lang`, viewport, robots.txt
|
|
39
40
|
sitemap line, invalid hreflang codes), always as a dry-run diff first, then apply → re-verify → rollback.
|
|
40
|
-
- Read Search Console
|
|
41
|
-
inference.
|
|
41
|
+
- Read Search Console data from a CSV export you download (no account needed), or from the Search Console
|
|
42
|
+
API (your own OAuth client) and the Bing API (experimental) when you connect them yourself, and keep measured data separate from inference.
|
|
42
43
|
|
|
43
44
|
**Searvex does not:**
|
|
44
45
|
|
|
@@ -114,7 +115,7 @@ searvex connect https://example.com
|
|
|
114
115
|
searvex gsc import performance-export.zip --audit latest # Search Console CSV export, no account access
|
|
115
116
|
searvex gsc auth --client client_secret.json # your own Google OAuth "Desktop app" client
|
|
116
117
|
searvex gsc report sc-domain:example.com --audit latest
|
|
117
|
-
|
|
118
|
+
searvex bing auth && searvex bing report https://example.com/ # Bing API key, asked once (hidden input)
|
|
118
119
|
|
|
119
120
|
# Inspect the rule base and re-verify its official sources
|
|
120
121
|
searvex rules check-sources
|
|
@@ -129,13 +130,28 @@ Full reference: [docs/cli.md](docs/cli.md).
|
|
|
129
130
|
|
|
130
131
|
### Optional integrations (read-only, opt-in)
|
|
131
132
|
|
|
132
|
-
| Variable | Enables |
|
|
133
|
-
|
|
134
|
-
| `
|
|
135
|
-
| `searvex gsc
|
|
136
|
-
| `
|
|
137
|
-
| `searvex
|
|
138
|
-
| `
|
|
133
|
+
| Variable | Enables | Status |
|
|
134
|
+
|---|---|---|
|
|
135
|
+
| `npm i -D playwright` | `--render`: JavaScript rendering and raw-vs-rendered comparison | supported |
|
|
136
|
+
| `searvex gsc import export.zip` | Search Console Performance CSV/ZIP exports (no account access; no query × page data) | supported² |
|
|
137
|
+
| `searvex gsc auth` (or `SEARVEX_GSC_TOKEN`) | Search Console query × page analysis, `monitor` performance | supported³ |
|
|
138
|
+
| `searvex bing auth` (or `SEARVEX_BING_API_KEY`) | Bing Webmaster Tools query × page analysis | experimental¹ |
|
|
139
|
+
| `searvex crux auth` (or `SEARVEX_CRUX_API_KEY`) | Real-user Core Web Vitals (Chrome UX Report API) | supported⁴ |
|
|
140
|
+
| `SEARVEX_CREDENTIAL_STORE=keychain` | Keep the Search Console refresh token in the OS keychain instead of a 0600 file | supported |
|
|
141
|
+
|
|
142
|
+
¹ Experimental: implemented and tested against recorded API behaviour and synthetic exports, but not yet
|
|
143
|
+
verified against the live service or real exports in every UI language. Interfaces may change; please report
|
|
144
|
+
problems. See [docs/release-checklist.md](docs/release-checklist.md).
|
|
145
|
+
|
|
146
|
+
² Verified with real exports downloaded in the Turkish and English Search Console UI (both give identical
|
|
147
|
+
results); other UI languages are recognised from published UI terms.
|
|
148
|
+
|
|
149
|
+
³ Verified against the live Search Console API (authorization, refresh, property discovery, pagination,
|
|
150
|
+
reports; totals identical to the CSV export of the same period). Revocation on `gsc logout` is tested against a
|
|
151
|
+
mock server only.
|
|
152
|
+
|
|
153
|
+
⁴ Verified against the live CrUX API: values identical to the raw API response; origins without enough
|
|
154
|
+
real-user traffic are reported as not measured.
|
|
139
155
|
|
|
140
156
|
Without them, Searvex reports these metrics as **not measured** — it never estimates them.
|
|
141
157
|
|