searvex-seo 1.0.0 → 1.1.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.
Files changed (57) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/CHANGELOG.md +49 -0
  4. package/README.md +166 -179
  5. package/dist/analyze/audit.d.ts +8 -0
  6. package/dist/analyze/audit.js +12 -0
  7. package/dist/analyze/audit.js.map +1 -1
  8. package/dist/cli.d.ts +6 -1
  9. package/dist/cli.js +63 -11
  10. package/dist/cli.js.map +1 -1
  11. package/dist/commands/gsc.js +11 -2
  12. package/dist/commands/gsc.js.map +1 -1
  13. package/dist/commands/repo.js +9 -6
  14. package/dist/commands/repo.js.map +1 -1
  15. package/dist/commands/review.d.ts +11 -0
  16. package/dist/commands/review.js +72 -0
  17. package/dist/commands/review.js.map +1 -0
  18. package/dist/commands/run.d.ts +2 -0
  19. package/dist/commands/run.js +33 -5
  20. package/dist/commands/run.js.map +1 -1
  21. package/dist/net/fetcher.d.ts +2 -2
  22. package/dist/net/fetcher.js +1 -1
  23. package/dist/optimize/fixes.js +68 -2
  24. package/dist/optimize/fixes.js.map +1 -1
  25. package/dist/repo/audit.js +2 -1
  26. package/dist/repo/audit.js.map +1 -1
  27. package/dist/report/brand.d.ts +4 -0
  28. package/dist/report/brand.js +7 -0
  29. package/dist/report/brand.js.map +1 -0
  30. package/dist/report/client.d.ts +15 -0
  31. package/dist/report/client.js +196 -0
  32. package/dist/report/client.js.map +1 -0
  33. package/dist/report/extras.d.ts +19 -0
  34. package/dist/report/extras.js +57 -0
  35. package/dist/report/extras.js.map +1 -0
  36. package/dist/report/html.d.ts +29 -3
  37. package/dist/report/html.js +144 -140
  38. package/dist/report/html.js.map +1 -1
  39. package/dist/report/i18n.d.ts +13 -0
  40. package/dist/report/i18n.js +202 -0
  41. package/dist/report/i18n.js.map +1 -0
  42. package/dist/report/prompt.d.ts +52 -0
  43. package/dist/report/prompt.js +120 -0
  44. package/dist/report/prompt.js.map +1 -0
  45. package/dist/report/remediation.d.ts +39 -0
  46. package/dist/report/remediation.js +83 -0
  47. package/dist/report/remediation.js.map +1 -0
  48. package/dist/searvex.mjs +4018 -2823
  49. package/knowledge/rules/international.json +3 -2
  50. package/knowledge/rules/metadata.json +5 -3
  51. package/package.json +9 -3
  52. package/skills/audit/SKILL.md +12 -9
  53. package/skills/geo/SKILL.md +2 -1
  54. package/skills/monitor/SKILL.md +3 -2
  55. package/skills/optimize/SKILL.md +11 -2
  56. package/skills/research/SKILL.md +1 -1
  57. package/skills/searvex/SKILL.md +33 -13
@@ -6,7 +6,7 @@
6
6
  {
7
7
  "name": "searvex",
8
8
  "source": "./",
9
- "description": "Deterministic technical SEO + GEO audits, competitor research and safe code fixes with rollback."
9
+ "description": "Technical SEO + GEO audits with a bilingual action-center report, repair prompts for coding agents and safe code fixes with rollback."
10
10
  }
11
11
  ]
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "searvex",
3
- "version": "1.0.0",
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.",
3
+ "version": "1.1.0",
4
+ "description": "Understand search, fix what matters: deterministic technical SEO + GEO audits with a sourced rule base, a bilingual (EN/TR) action-center report with root-cause groups and repair prompts, 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",
7
7
  "homepage": "https://github.com/cihantopac/searvex#readme",
package/CHANGELOG.md CHANGED
@@ -5,6 +5,55 @@ All notable changes to this project are documented here. The format follows
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.1.0] - 2026-11-01
9
+
10
+ A product-experience release: the analysis engine and its evidence are unchanged; how results are presented,
11
+ selected and fixed is new. Release notes: [docs/release-notes-1.1.0.md](docs/release-notes-1.1.0.md).
12
+
13
+ ### Added
14
+ - **Brand identity**: the approved Searvex logo (outlined SVG, theme-aware) in every HTML report header, an SVG
15
+ favicon in the reports, and the logo in the README. Source files in `docs/assets/brand/`.
16
+ - **SEO action center** (`report.html`): Overview (health score, issue groups, affected URLs, condition by area,
17
+ top three priorities, limits of the run), Priorities, Issues, GEO, Search performance (only with connected
18
+ data), Changes (only with a previous run) and Evidence. One shell for website, repository, monitor and
19
+ ecosystem reports.
20
+ - **English / Türkçe** interface with browser-language detection, and Turkish titles and fixes for all 90
21
+ rules. Evidence, URLs, code, file paths and rule ids are never translated.
22
+ - **Light / Dark / System** theme next to the language switch; both are remembered in `localStorage` (safe
23
+ fallback when storage is blocked) and applied before first paint.
24
+ - **Root-cause groups**: findings are split by URL template, source file or — when a rule hits most page types —
25
+ one shared layout, with page counts covering every affected URL. Every occurrence keeps a stable reference
26
+ (`ruleId#hash`).
27
+ - **Remediation labels**: automatic (only when a dry-run plan produced a concrete patch), agent-assisted or
28
+ manual/operational.
29
+ - **Issue selection and repair prompts**: select occurrences, groups or all visible issues, then generate an
30
+ editable prompt (Copy / Download Markdown, English or Turkish) for a coding agent. It contains the run id,
31
+ references, root-cause groups, evidence, fixes, verification steps and `optimize --only …` commands for the
32
+ automatic part. Secrets are redacted; crawled text is fenced as untrusted data. Website-only audits get a
33
+ remediation brief instead.
34
+ - `searvex review <runId|latest> <ref|ruleId> <confirmed|rejected|fixed> [--note]`: records agent/human
35
+ verdicts in `reviews.json`, shown next to (never instead of) the scanner evidence.
36
+ - `searvex open [runId|latest]` and `--open`: open the HTML report.
37
+ - Automatic fixes for three more rules (12 in total): identical duplicate `<title>` and meta description in
38
+ static HTML (conflicting duplicates become a task), relative hreflang URLs in static HTML (with `--site-url`).
39
+ - `run` writes `repository-report.html`; a website report produced with a repository knows that repository
40
+ (prompts target it; real patches count as automatic). `gsc report --audit` refreshes the audit's HTML with
41
+ the verified search data.
42
+ - `scripts/screenshots.mjs` captures README screenshots from a real report.
43
+
44
+ ### Changed
45
+ - Terminal summary: score, issue types and affected pages, three priorities, automatic fixes, limits and the
46
+ `file://` link of the report — instead of twelve finding lines.
47
+ - Claude Code skills answer in 80–150 words with the report link and one next action; no phase-by-phase
48
+ narration, long tables or raw JSON in the chat.
49
+ - README rewritten as a visual product page with real report screenshots.
50
+
51
+ ### Fixed
52
+ - Optimizer, monorepos: `robots.no-sitemap` generated a second sitemap for an app that already had one, and
53
+ used the single `--site-url` for an app served on another host (found on a real monorepo copy, where the
54
+ patch passed verification but would have published login routes under the wrong host). It now plans only
55
+ for the app the finding is about and turns ambiguous multi-app cases into a reviewed task.
56
+
8
57
  ## [1.0.0] - 2026-11-01
9
58
 
10
59
  First stable release. Every capability advertised as supported has been verified end to end; Bing Webmaster
package/README.md CHANGED
@@ -1,222 +1,209 @@
1
- # Searvex
2
-
3
- **Open-source search intelligence & optimization engine.** Searvex audits websites and code
4
- repositories for technical SEO and GEO/AEO (AI search) issues against a **sourced, versioned rule
5
- base**, researches competitors, and applies **safe, verified code fixes with one-command rollback**.
6
- It ships as a standalone CLI and as a Claude Code plugin.
7
-
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.
12
-
13
- ## Why Searvex
14
-
15
- | | Searvex | Typical crawlers (Screaming Frog, Sitebulb) | Prompt-only SEO skills |
16
- |---|---|---|---|
17
- | Deterministic, reproducible checks | ✅ code, not prompts | ✅ | ❌ |
18
- | Every finding cites an official source + check date | ✅ `searvex rules show <id>` | ❌ | ❌ |
19
- | Myth firewall (no keyword density, fixed title lengths, llms.txt-as-ranking-factor…) | ✅ | partly | ❌ |
20
- | Repository mode: findings with `file:line` for Next.js, Astro, Nuxt, Laravel, WordPress, static sites | ✅ | ❌ | partial |
21
- | Safe fixes: dry-run diff → apply → re-verify → rollback | ✅ | ❌ | ❌ |
22
- | GEO: AI crawler access by *purpose* (training vs search vs user fetch) | ✅ | partial | partial |
23
- | Honest measurement: each finding is `verified`, `heuristic` or `unmeasurable` | ✅ | ❌ | ❌ |
24
- | Local-first, no paid API required | ✅ | desktop app | ✅ |
25
-
26
- Competitor research and differentiation notes: [docs/research/competitors-2026-10.md](docs/research/competitors-2026-10.md).
27
-
28
- ## What it does — and what it does not
29
-
30
- **Searvex does:**
31
-
32
- - Crawl public pages (robots.txt-compliant, rate-limited) or read a repository's source, and check them against
33
- 90 rules. 71 rules are `verified` against official documentation, 17 are `heuristic` and 2 are `unmeasurable`
34
- signals that are reported as such.
35
- - Explain every finding with its official source, the date the source was checked, how to fix it and how to
36
- verify the fix.
37
- - Compare runs over time (`monitor`), across related sites (`ecosystem`) and against competitors you name
38
- (`research`).
39
- - Fix a small set of problems in code automatically (9 rule types: e.g. missing `lang`, viewport, robots.txt
40
- sitemap line, invalid hreflang codes), always as a dry-run diff first, then apply → re-verify → rollback.
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.
43
-
44
- **Searvex does not:**
45
-
46
- - Estimate traffic, rankings, search volume, keyword difficulty, backlinks or AI citations. Without a connected
47
- data source these are reported as **not measured**.
48
- - Promise rankings or "SEO scores" that search engines use. The health score is a Searvex summary, not a search
49
- engine metric.
50
- - Publish content, submit URLs, change live sites or send data to a Searvex server (there is none).
51
- - Offer a one-click Google login. Search Console access uses your own Google Cloud OAuth client, or a CSV
52
- export you download yourself.
53
- - See login-protected pages, run Lighthouse lab tests, or execute JavaScript unless you opt into `--render`.
54
- - Rewrite your content. Judgement-based changes (titles, descriptions, alt text) are drafted by the agent for your
55
- review, never applied silently.
56
-
57
- ## Install
58
-
59
- Requires **Node.js ≥ 20.10** (Windows, macOS, Linux). The npm package is `searvex-seo`; the command it installs is `searvex`.
1
+ <h1 align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/brand/primary-reversed.svg">
4
+ <img alt="Searvex" src="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/brand/primary-color.svg" width="320">
5
+ </picture>
6
+ </h1>
7
+
8
+ <p align="center"><strong>Understand Search. Fix What Matters.</strong></p>
9
+
10
+ <p align="center">
11
+ Open-source SEO and AI-search auditor for websites and code repositories. It finds what is actually wrong,
12
+ groups it by root cause, explains it with official sources and fixes the safe parts in your code — with
13
+ verification and one-command rollback. CLI and Claude Code plugin.
14
+ </p>
60
15
 
61
- ```bash
62
- npm install -g searvex-seo
63
- ```
16
+ <p align="center">
17
+ <a href="https://www.npmjs.com/package/searvex-seo"><img alt="npm" src="https://img.shields.io/npm/v/searvex-seo?color=0e4f55&label=npm"></a>
18
+ <a href="https://github.com/cihantopac/searvex/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/cihantopac/searvex/actions/workflows/ci.yml/badge.svg"></a>
19
+ <a href="LICENSE"><img alt="License: Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-0e4f55"></a>
20
+ <img alt="Node ≥ 20.10" src="https://img.shields.io/badge/node-%E2%89%A5%2020.10-0e4f55">
21
+ </p>
64
22
 
65
- ```bash
66
- searvex --help
67
- ```
23
+ <p align="center">
24
+ <picture>
25
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/dashboard-dark.webp">
26
+ <img alt="Searvex HTML report: health score, issue groups, affected URLs, condition by area and the three issues to fix first" src="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/dashboard-light.webp" width="900">
27
+ </picture>
28
+ <br><sub>Real report of a live site (ovokodo.com, 52 pages, 2026-11-01). English / Türkçe · light / dark / system.</sub>
29
+ </p>
68
30
 
69
- ### Claude Code plugin
31
+ ## What Searvex does
70
32
 
71
- In Claude Code:
33
+ <picture>
34
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/workflow-dark.svg">
35
+ <img alt="Workflow: Audit, Understand, Prioritize, Fix, Verify, Monitor" src="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/workflow-light.svg" width="900">
36
+ </picture>
72
37
 
73
- ```
74
- /plugin marketplace add cihantopac/searvex
75
- /plugin install searvex@searvex
76
- ```
38
+ - **Audit** a live site (robots.txt-compliant crawl) or a repository (Next.js, Astro, Nuxt, Laravel, WordPress, static HTML).
39
+ - **Understand** every finding: evidence, the official source it is based on and the date that source was checked.
40
+ - **Prioritize** by root cause: one broken layout on 50 pages is one task, not 50.
41
+ - **Fix** what can be fixed safely, in your code, after you approve a diff — or hand the rest to your coding agent with a ready-made repair prompt.
42
+ - **Verify** by re-auditing; failed verification rolls back automatically.
43
+ - **Monitor** what improved or regressed since the last run.
77
44
 
78
- Then use **`/searvex <url> [path]`** — it runs the whole workflow in a fixed order (scope → competitors →
79
- audit → GEO → change since last run → research → repository audit → fix plan → approved fixes → content
80
- plan → monitoring) with approval checkpoints. Single steps are available as the namespaced skills `/searvex:audit`, `/searvex:research`,
81
- `/searvex:optimize`, `/searvex:geo`, `/searvex:monitor`. The plugin bundles the CLI
82
- (`dist/searvex.mjs`), so no `npm install` is needed.
45
+ ## From findings to fixes
83
46
 
84
- ## Usage
47
+ <table>
48
+ <tr>
49
+ <td width="50%" valign="top">
85
50
 
86
- ```bash
87
- # Everything in order with one crawl: audit → GEO → change since last run → research → repo audit → fix plan (dry run)
88
- searvex run https://example.com ./my-site --competitor https://rival-a.com
51
+ **Select what to fix.** Issues are grouped by root cause — a URL template, a source file or a shared layout — and labelled by how they get fixed:
89
52
 
90
- # Website mode: crawl (robots.txt-compliant, rate-limited) and audit
91
- searvex audit https://example.com --max-pages 300
53
+ - **Automatic** — a deterministic Searvex optimizer produced a verified patch.
54
+ - **Agent-assisted** — needs source or content judgement.
55
+ - **Manual** — deployment, server, Search Console or business decisions.
92
56
 
93
- # Repository mode: detect the framework and analyse source files
94
- searvex audit ./my-next-app
57
+ </td>
58
+ <td width="50%" valign="top">
95
59
 
96
- # Safe fixes for a repository: dry run first (default), then apply with verification
97
- searvex optimize ./my-site --site-url https://example.com --lang en
98
- searvex optimize ./my-site --site-url https://example.com --lang en --apply
99
- searvex rollback <changeId> ./my-site
60
+ <picture>
61
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/issues-dark.webp">
62
+ <img alt="Issues grouped by root cause with selection checkboxes" src="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/issues-light.webp">
63
+ </picture>
100
64
 
101
- # GEO / AI-search readiness
102
- searvex geo https://example.com
65
+ </td>
66
+ </tr>
67
+ <tr>
68
+ <td width="50%" valign="top">
103
69
 
104
- # Brand family / product ecosystem across related sites
105
- searvex ecosystem https://company.example https://product-a.example https://product-b.example
70
+ <picture>
71
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/prompt-dark.webp">
72
+ <img alt="Editable repair prompt with copy and Markdown download" src="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/prompt-light.webp">
73
+ </picture>
106
74
 
107
- # Competitor & content-gap research (competitors are passed explicitly)
108
- searvex research https://example.com --competitor https://rival-a.com --competitor https://rival-b.com
75
+ </td>
76
+ <td width="50%" valign="top">
109
77
 
110
- # Regression monitoring against the previous run (optionally with Search Console data)
111
- searvex monitor https://example.com --fail-on high
78
+ **Generate a repair prompt** for Claude Code, Codex or any coding agent: target and run id, stable finding references, exact URLs or `file:line`, root-cause groups, evidence, the fix and how to verify it. The receiving agent is told to re-check the source, reject false positives, fix root causes once, get approval and re-audit.
112
79
 
113
- # Optional search performance data: Google / CSV / skip (asked once per site)
114
- searvex connect https://example.com
115
- searvex gsc import performance-export.zip --audit latest # Search Console CSV export, no account access
116
- searvex gsc auth --client client_secret.json # your own Google OAuth "Desktop app" client
117
- searvex gsc report sc-domain:example.com --audit latest
118
- searvex bing auth && searvex bing report https://example.com/ # Bing API key, asked once (hidden input)
119
-
120
- # Inspect the rule base and re-verify its official sources
121
- searvex rules check-sources
122
- searvex rules list
123
- searvex rules show canonical.in-body
124
- searvex rules validate
125
- ```
80
+ Secrets are redacted and crawled text is fenced as untrusted data. Without a repository the prompt becomes a remediation brief — the report never pretends it can edit your site.
81
+
82
+ </td>
83
+ </tr>
84
+ </table>
85
+
86
+ ## Capabilities
87
+
88
+ | | |
89
+ |---|---|
90
+ | **Technical SEO** | Crawlability, indexability, canonicals, redirects, hreflang, metadata, structured data (Google rich-result requirements), links, performance signals, security. |
91
+ | **GEO / AI search** | AI crawler access by purpose (search vs. training vs. user fetch), snippet controls, entity consistency, content clarity. AI citations are reported as *not measured*. |
92
+ | **Repository checks** | Findings with `file:line` for framework source code, not only rendered HTML. |
93
+ | **Search Console & CrUX** | Optional, read-only: Search Console API (your own OAuth client) or CSV export, Chrome UX Report field data. Measured data is kept apart from inference. |
94
+ | **Competitor research** | Topic and page-type coverage gaps against competitors you name — labelled as hypotheses, not demand. |
95
+ | **Optimization** | 12 rule types fixed automatically (e.g. missing `lang`/viewport, canonicals, sitemap + robots.txt, identical duplicate `<title>`/description, hreflang codes and relative URLs): dry run → approval → apply → verify → rollback. |
96
+ | **Monitoring** | Changes since the previous run in every report; `monitor` and `--fail-on high` for CI. |
97
+
98
+ ## Evidence, not claims
126
99
 
127
- Reports are written to `.searvex/runs/<runId>/` as Markdown, interactive HTML, JSON and SARIF
128
- (`--format md,html,json,sarif`). Use `--fail-on high` in CI to fail builds on serious issues.
129
- Full reference: [docs/cli.md](docs/cli.md).
100
+ Status: **v1.1.0** ([release notes](docs/release-notes-1.1.0.md), [changelog](CHANGELOG.md)).
130
101
 
131
- ### Optional integrations (read-only, opt-in)
102
+ - **90 rules**, each with an official source and check date: **71 verified**, **17 heuristic**, **2 unmeasurable** (reported, never scored). `searvex rules show <id>`.
103
+ - **Automated tests** across unit, integration, Playwright and end-to-end runs of the bundled CLI; CI on Linux, macOS and Windows with Node 20, 22 and 24 ([quality report](docs/quality.md)).
104
+ - **Real-world validation** on 13 public sites and 9 repositories; **live** Search Console and CrUX checks returned values identical to the official exports and raw API.
105
+ - **Real issues it found**, confirmed against live HTML: a 404 page listed in MDN's sitemap; two `<title>` elements on every page of an Inertia.js site; Turkish URLs that switch to English (and to "page not found") for an en-US browser.
106
+ - **Safety:** read-only by default, SSRF protection, robots.txt always honoured, secret files never read, changes journaled with byte-for-byte rollback, reports rendered without `innerHTML` under a strict CSP.
132
107
 
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 |
108
+ Searvex never promises rankings, indexing, traffic or AI citations. The health score is Searvex's own summary of its findings, not a search-engine metric.
109
+
110
+ ## Quick start
111
+
112
+ Requires **Node.js ≥ 20.10**. The npm package is `searvex-seo`; the command is `searvex`.
113
+
114
+ ```bash
115
+ npm install -g searvex-seo
116
+ ```
141
117
 
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).
118
+ ```bash
119
+ searvex audit https://example.com --open
120
+ ```
145
121
 
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.
122
+ ```bash
123
+ searvex audit ./my-site --site-url https://example.com
124
+ ```
148
125
 
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.
126
+ ```bash
127
+ searvex optimize ./my-site --site-url https://example.com --lang en
128
+ ```
152
129
 
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.
130
+ Reports land in `.searvex/runs/<runId>/` (`report.html`, `.md`, `.json`, optional `.sarif`). `searvex open latest`
131
+ opens the newest one. Full reference: [docs/cli.md](docs/cli.md).
155
132
 
156
- Without them, Searvex reports these metrics as **not measured** — it never estimates them.
133
+ **Claude Code plugin** — no npm install needed:
157
134
 
158
- ## What it checks
135
+ ```
136
+ /plugin marketplace add cihantopac/searvex
137
+ /plugin install searvex@searvex
138
+ ```
159
139
 
160
- 90 rules across crawlability, indexability, canonicalisation, international (hreflang), metadata,
161
- structured data (Google rich-result requirements), performance, security, links, content and GEO.
162
- Examples: robots.txt failures and AI crawler access, redirect chains and loops, noindex/sitemap
163
- conflicts, canonical conflicts (including canonicals pushed into `<body>` by invalid head markup),
164
- hreflang reciprocity and codes, soft 404s, client-side-only rendering, duplicate and near-duplicate
165
- content (template-aware), retired rich-result types (FAQ, HowTo), entity consistency, declared vs actual
166
- content language, untranslated headings on localized pages.
140
+ Then `/searvex <url> [path]` runs the whole workflow with approval checkpoints and answers with a short
141
+ summary plus the report link. Single steps: `/searvex:audit`, `/searvex:geo`, `/searvex:research`,
142
+ `/searvex:optimize`, `/searvex:monitor`.
167
143
 
168
- Each rule records the engines it applies to (Google, Bing, Yandex, AI systems), the official source
169
- URLs with check dates, how to fix and how to verify — see [docs/knowledge-base.md](docs/knowledge-base.md).
144
+ **Optional search data** (read-only, asked once per site):
170
145
 
171
- ## How it works
146
+ ```bash
147
+ searvex connect https://example.com
148
+ ```
172
149
 
150
+ ```bash
151
+ searvex gsc import performance-export.zip --audit latest
173
152
  ```
174
- CLI / Claude Code skills
175
- │
176
- ├── Website mode: safe fetcher → crawler (robots, sitemaps, queue, checkpoints) → HTML5 extraction
177
- ├── Repository mode: safe file walker → framework detection → source checks / static-site analysis
178
- │
179
- ├── Analyzers: technical · structured data · GEO · content · inventory ← rule knowledge base
180
- ├── Reports: Markdown · HTML · JSON · SARIF
181
- └── Optimizer: deterministic fix planners → transaction (backup, verify, rollback)
153
+
154
+ ```bash
155
+ searvex crux auth
182
156
  ```
183
157
 
184
- The deterministic engine measures; the agent (Claude) explains, prioritises, researches competitors
185
- and drafts judgement-based changes (titles, descriptions, alt text) for the user's approval.
186
- Details: [docs/architecture.md](docs/architecture.md).
158
+ Without them, clicks, impressions, positions and Core Web Vitals are shown as **not measured** — never estimated.
187
159
 
188
- ## Security & privacy
160
+ <details>
161
+ <summary><b>More commands</b></summary>
189
162
 
190
- - Read-only by default. Nothing is published, submitted (e.g. IndexNow) or changed on live sites.
191
- - SSRF protection with connection-time DNS validation (anti-rebinding), per-redirect re-validation,
192
- size and time limits; private networks require `--allow-private`.
193
- - robots.txt (RFC 9309) is always honoured, including for outbound link checks; per-host rate limiting,
194
- `Crawl-delay`, `429/Retry-After` backoff. User agent: `SearvexBot`.
195
- - Repository access never follows symlinks, never reads secret files (`.env`, keys, credentials) and
196
- refuses paths outside the repository.
197
- - Crawled content is treated as untrusted; HTML reports are rendered without `innerHTML` and with a CSP.
163
+ ```bash
164
+ searvex run https://example.com ./my-site --competitor https://rival.example # whole workflow, one crawl
165
+ searvex geo https://example.com # AI crawler access
166
+ searvex research https://example.com --competitor https://rival.example # coverage gaps
167
+ searvex monitor https://example.com --fail-on high # regressions in CI
168
+ searvex ecosystem https://company.example https://product.example # related sites
169
+ searvex review latest <ref> rejected --note "behind login" # record a verdict
170
+ searvex rollback <changeId> ./my-site
171
+ searvex gsc auth --client client_secret.json && searvex gsc report --audit latest
172
+ searvex bing auth && searvex bing report https://example.com/ # experimental
173
+ ```
198
174
 
199
- See [docs/security.md](docs/security.md), [docs/privacy.md](docs/privacy.md) and [SECURITY.md](SECURITY.md).
175
+ | Integration | Status |
176
+ |---|---|
177
+ | Search Console CSV/ZIP import | supported (verified with real TR + EN exports) |
178
+ | Search Console API (`gsc auth`) | supported (verified live) |
179
+ | CrUX API (`crux auth`) | supported (verified live) |
180
+ | JavaScript rendering (`--render`, Playwright) | supported |
181
+ | Bing Webmaster API (`bing auth`) | experimental |
182
+
183
+ </details>
200
184
 
201
185
  ## Limitations
202
186
 
203
- - Website mode sees public pages only; no traffic, rankings or analytics without an integration.
204
- - Market data (search volumes, SERP features, backlinks) is not fetched — Searvex does not fabricate it.
205
- The research skill discovers competitors via web search; volumes stay "unknown" unless you provide data.
206
- - AI citations cannot be observed directly; Bing Webmaster Tools AI Performance and Search Console are
207
- the official sources.
208
- - Repository mode is static analysis: runtime-computed metadata (CMS, i18n, data fetching) is resolved
209
- conservatively. Use website mode against a deployment for rendered output.
210
- - Analysis is in-memory: tested to 20,000 pages (~25 KB/page); very large sites need `--max-pages` or sections (`--include`).
187
+ Website mode sees public pages only. Market data (search volumes, backlinks, SERP features) and AI citations are
188
+ not fetched or estimated. Repository mode is static analysis: runtime-computed metadata is resolved
189
+ conservatively. In repositories with several apps, sitemaps are left to a reviewed task because one site URL
190
+ cannot tell which host serves which app. Full list: [docs/limitations.md](docs/limitations.md).
191
+
192
+ ## Related tools
211
193
 
212
- Full list: [docs/limitations.md](docs/limitations.md).
194
+ Complementary open-source tools by the same author — independent, not required:
213
195
 
214
- ## Contributing
196
+ | | |
197
+ |---|---|
198
+ | [**Relivaro**](https://github.com/cihantopac/relivaro) | Software reliability, security and release readiness. |
199
+ | [**Jourilo**](https://github.com/cihantopac/jourilo) | UX and conversion engineering in real browser journeys. |
200
+ | [**Markilo**](https://github.com/cihantopac/markilo) | Brand identity and vector design for Claude Code. |
215
201
 
216
- Rules, framework adapters and fixtures are the most valuable contributions. Every rule needs an
217
- official source and a test fixture. See [CONTRIBUTING.md](CONTRIBUTING.md).
202
+ ## Contributing, security, license
218
203
 
219
- ## License
204
+ Rules, framework adapters and fixtures are the most valuable contributions — every rule needs an official source
205
+ and a test fixture ([CONTRIBUTING.md](CONTRIBUTING.md)). Security: [SECURITY.md](SECURITY.md),
206
+ [docs/security.md](docs/security.md), [docs/privacy.md](docs/privacy.md). Architecture:
207
+ [docs/architecture.md](docs/architecture.md).
220
208
 
221
- [Apache-2.0](LICENSE). "Searvex" name availability notes: [docs/research/name-availability-2026-10.md](docs/research/name-availability-2026-10.md)
222
- (not legal trademark clearance).
209
+ [Apache-2.0](LICENSE). Name availability notes: [docs/research/name-availability-2026-10.md](docs/research/name-availability-2026-10.md) (not legal trademark clearance).
@@ -49,7 +49,15 @@ export interface AuditReport {
49
49
  fieldData?: CruxResult;
50
50
  externalLinks?: ExternalLinkResult;
51
51
  limitations: string[];
52
+ /** Distinct URLs (website) or locations (repository) with at least one non-informational finding. */
53
+ affectedUrls?: number;
54
+ /** Whether JavaScript was executed for at least one page (`--render`). */
55
+ rendered?: boolean;
52
56
  }
57
+ /** Distinct affected URLs/files across all non-informational findings. */
58
+ export declare function countAffected(findings: Array<Finding & {
59
+ count: number;
60
+ }>, affected: (ruleId: string) => string[]): number;
53
61
  export interface Scores {
54
62
  /** 0–100. Searvex health score: a summary of Searvex findings, NOT a search engine metric. */
55
63
  overall: number;
@@ -12,6 +12,16 @@ import { runTechnicalChecks } from './technical.js';
12
12
  import { prioritise } from './priority.js';
13
13
  import { checkExternalLinks } from './external-links.js';
14
14
  import { failingMetrics, queryCrux } from '../integrations/crux.js';
15
+ /** Distinct affected URLs/files across all non-informational findings. */
16
+ export function countAffected(findings, affected) {
17
+ const all = new Set();
18
+ for (const f of findings)
19
+ if (f.severity !== 'info' && f.confidence !== 'unmeasurable')
20
+ for (const u of affected(f.ruleId))
21
+ if (!/\/robots\.txt$/.test(u))
22
+ all.add(u);
23
+ return all.size;
24
+ }
15
25
  /** "87/100", or "n/a" when nothing could be audited. */
16
26
  export function scoreLabel(s) {
17
27
  return s.notApplicable ? 'n/a (nothing to audit)' : `${s.overall}/100`;
@@ -162,6 +172,8 @@ export async function analyzeCrawl(result, kb, opts = {}) {
162
172
  fieldData,
163
173
  externalLinks,
164
174
  limitations,
175
+ affectedUrls: countAffected(findings, (id) => sink.affected(id)),
176
+ rendered: result.pages.some((p) => p.rendered),
165
177
  };
166
178
  }
167
179
  //# sourceMappingURL=audit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/analyze/audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/analyze/audit.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -29,5 +29,10 @@ export declare function crawlOptionsFrom(v: GlobalFlags['values']): {
29
29
  export declare function log(v: GlobalFlags['values'], ...args: unknown[]): void;
30
30
  export declare function writeReports(store: RunStore, report: AuditReport, kb: KnowledgeBase, formats: string[]): string[];
31
31
  export declare function failOnExit(report: AuditReport, failOn: unknown): number;
32
- export declare function printSummary(report: AuditReport, files: string[], v: GlobalFlags['values']): void;
32
+ /**
33
+ * Short, decision-oriented terminal summary: score, issue groups, top three priorities, automatic fixes,
34
+ * important limits and the path of the interactive report. Details live in the HTML report.
35
+ */
36
+ export declare function printSummary(report: AuditReport, files: string[], v: GlobalFlags['values'], autoRules?: string[]): void;
37
+ export declare function summaryText(report: AuditReport, files: string[], autoRules?: string[]): string;
33
38
  export declare function main(argv?: string[]): Promise<number>;