searvex-seo 1.0.0 → 1.1.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.
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 +64 -0
  4. package/README.md +89 -191
  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 +145 -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 +4035 -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.1",
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,70 @@ All notable changes to this project are documented here. The format follows
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.1.1] - 2026-11-01
9
+
10
+ Visual polish; the analysis engine, rules, evidence and CLI are unchanged. Release notes:
11
+ [docs/release-notes-1.1.1.md](docs/release-notes-1.1.1.md).
12
+
13
+ ### Changed
14
+ - HTML report themes follow the Searvex brand palette (warm paper / ink / teal; coral only in the logo caret),
15
+ with light and dark variants checked for WCAG AA contrast. Severity colours are unchanged in meaning.
16
+ - Overview: "Fix these first" moved directly below the key numbers; the limits of a run are a one-line summary
17
+ with expandable details instead of a large notice.
18
+ - Turkish: the limits summary is fully translated; clearer wording for shared layouts, automatic fixes and
19
+ informational findings.
20
+ - Mobile: two-column KPI grid with a full-width score card and a smaller gauge.
21
+ - README shortened and refocused; workflow diagrams and screenshots refreshed from the final report.
22
+
23
+ ## [1.1.0] - 2026-11-01
24
+
25
+ A product-experience release: the analysis engine and its evidence are unchanged; how results are presented,
26
+ selected and fixed is new. Release notes: [docs/release-notes-1.1.0.md](docs/release-notes-1.1.0.md).
27
+
28
+ ### Added
29
+ - **Brand identity**: the approved Searvex logo (outlined SVG, theme-aware) in every HTML report header, an SVG
30
+ favicon in the reports, and the logo in the README. Source files in `docs/assets/brand/`.
31
+ - **SEO action center** (`report.html`): Overview (health score, issue groups, affected URLs, condition by area,
32
+ top three priorities, limits of the run), Priorities, Issues, GEO, Search performance (only with connected
33
+ data), Changes (only with a previous run) and Evidence. One shell for website, repository, monitor and
34
+ ecosystem reports.
35
+ - **English / Türkçe** interface with browser-language detection, and Turkish titles and fixes for all 90
36
+ rules. Evidence, URLs, code, file paths and rule ids are never translated.
37
+ - **Light / Dark / System** theme next to the language switch; both are remembered in `localStorage` (safe
38
+ fallback when storage is blocked) and applied before first paint.
39
+ - **Root-cause groups**: findings are split by URL template, source file or — when a rule hits most page types —
40
+ one shared layout, with page counts covering every affected URL. Every occurrence keeps a stable reference
41
+ (`ruleId#hash`).
42
+ - **Remediation labels**: automatic (only when a dry-run plan produced a concrete patch), agent-assisted or
43
+ manual/operational.
44
+ - **Issue selection and repair prompts**: select occurrences, groups or all visible issues, then generate an
45
+ editable prompt (Copy / Download Markdown, English or Turkish) for a coding agent. It contains the run id,
46
+ references, root-cause groups, evidence, fixes, verification steps and `optimize --only …` commands for the
47
+ automatic part. Secrets are redacted; crawled text is fenced as untrusted data. Website-only audits get a
48
+ remediation brief instead.
49
+ - `searvex review <runId|latest> <ref|ruleId> <confirmed|rejected|fixed> [--note]`: records agent/human
50
+ verdicts in `reviews.json`, shown next to (never instead of) the scanner evidence.
51
+ - `searvex open [runId|latest]` and `--open`: open the HTML report.
52
+ - Automatic fixes for three more rules (12 in total): identical duplicate `<title>` and meta description in
53
+ static HTML (conflicting duplicates become a task), relative hreflang URLs in static HTML (with `--site-url`).
54
+ - `run` writes `repository-report.html`; a website report produced with a repository knows that repository
55
+ (prompts target it; real patches count as automatic). `gsc report --audit` refreshes the audit's HTML with
56
+ the verified search data.
57
+ - `scripts/screenshots.mjs` captures README screenshots from a real report.
58
+
59
+ ### Changed
60
+ - Terminal summary: score, issue types and affected pages, three priorities, automatic fixes, limits and the
61
+ `file://` link of the report — instead of twelve finding lines.
62
+ - Claude Code skills answer in 80–150 words with the report link and one next action; no phase-by-phase
63
+ narration, long tables or raw JSON in the chat.
64
+ - README rewritten as a visual product page with real report screenshots.
65
+
66
+ ### Fixed
67
+ - Optimizer, monorepos: `robots.no-sitemap` generated a second sitemap for an app that already had one, and
68
+ used the single `--site-url` for an app served on another host (found on a real monorepo copy, where the
69
+ patch passed verification but would have published login routes under the wrong host). It now plans only
70
+ for the app the finding is about and turns ambiguous multi-app cases into a reviewed task.
71
+
8
72
  ## [1.0.0] - 2026-11-01
9
73
 
10
74
  First stable release. Every capability advertised as supported has been verified end to end; Bing Webmaster
package/README.md CHANGED
@@ -1,222 +1,120 @@
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.<br>
12
+ Finds what is wrong, groups it by root cause and fixes the safe parts in your code — with rollback.
13
+ </p>
14
+
15
+ <p align="center">
16
+ <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>
17
+ <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>
18
+ <a href="LICENSE"><img alt="License: Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-0e4f55"></a>
19
+ <img alt="Node ≥ 20.10" src="https://img.shields.io/badge/node-%E2%89%A5%2020.10-0e4f55">
20
+ </p>
21
+
22
+ <p align="center">
23
+ <picture>
24
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/dashboard-dark.webp">
25
+ <img alt="Searvex report overview: health score, issue groups, what was not covered, and the three issues to fix first" src="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/dashboard-light.webp" width="900">
26
+ </picture>
27
+ <br><sub>Unedited capture of a real report (ovokodo.com, 52 pages). English / Türkçe · light / dark / system.</sub>
28
+ </p>
29
+
30
+ ## Quick start
60
31
 
61
32
  ```bash
62
33
  npm install -g searvex-seo
63
34
  ```
64
35
 
65
36
  ```bash
66
- searvex --help
37
+ searvex audit https://example.com --open
67
38
  ```
68
39
 
69
- ### Claude Code plugin
70
-
71
- In Claude Code:
40
+ Or as a **Claude Code plugin**, no npm install needed:
72
41
 
73
42
  ```
74
43
  /plugin marketplace add cihantopac/searvex
75
44
  /plugin install searvex@searvex
76
45
  ```
77
46
 
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.
83
-
84
- ## Usage
85
-
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
89
-
90
- # Website mode: crawl (robots.txt-compliant, rate-limited) and audit
91
- searvex audit https://example.com --max-pages 300
92
-
93
- # Repository mode: detect the framework and analyse source files
94
- searvex audit ./my-next-app
95
-
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
100
-
101
- # GEO / AI-search readiness
102
- searvex geo https://example.com
103
-
104
- # Brand family / product ecosystem across related sites
105
- searvex ecosystem https://company.example https://product-a.example https://product-b.example
106
-
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
109
-
110
- # Regression monitoring against the previous run (optionally with Search Console data)
111
- searvex monitor https://example.com --fail-on high
112
-
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
- ```
126
-
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).
130
-
131
- ### Optional integrations (read-only, opt-in)
132
-
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.
47
+ Then run `/searvex <url> [path]`. Requires Node.js ≥ 20.10. Full reference: [docs/cli.md](docs/cli.md).
152
48
 
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.
49
+ ## How it works
155
50
 
156
- Without them, Searvex reports these metrics as **not measured** — it never estimates them.
51
+ <picture>
52
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/workflow-dark.svg">
53
+ <img alt="Workflow: Audit, Understand, Prioritize, Fix, Verify, Monitor" src="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/workflow-light.svg" width="900">
54
+ </picture>
55
+
56
+ | | |
57
+ |---|---|
58
+ | **Audit** | A live site (robots.txt-compliant crawl) or a repository: Next.js, Astro, Nuxt, Laravel, WordPress, static HTML. |
59
+ | **Understand** | Every finding comes with evidence, an official source and the date that source was checked. |
60
+ | **Prioritize** | One broken layout on 50 pages is one task, not 50. |
61
+ | **Fix** | Approve a diff for safe fixes, or hand the rest to your coding agent with a ready-made repair prompt. |
62
+ | **Verify & monitor** | Re-audit after a change; failed verification rolls back. Regressions show up in the next run and in CI. |
63
+
64
+ ## From findings to fixes
65
+
66
+ <table>
67
+ <tr>
68
+ <td width="50%" valign="top">
69
+ <picture>
70
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/issues-dark.webp">
71
+ <img alt="Issues grouped by root cause, with selection checkboxes" src="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/issues-light.webp">
72
+ </picture>
73
+ <p><b>Select what to fix.</b> Issues are grouped by root cause and labelled <i>automatic</i>, <i>agent-assisted</i> or <i>manual</i>.</p>
74
+ </td>
75
+ <td width="50%" valign="top">
76
+ <picture>
77
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/prompt-dark.webp">
78
+ <img alt="Editable repair prompt with copy and Markdown download" src="https://raw.githubusercontent.com/cihantopac/searvex/main/docs/assets/prompt-light.webp">
79
+ </picture>
80
+ <p><b>Generate a repair prompt</b> for Claude Code, Codex or any agent: exact URLs or <code>file:line</code>, evidence, fix and verification. Secrets redacted.</p>
81
+ </td>
82
+ </tr>
83
+ </table>
157
84
 
158
85
  ## What it checks
159
86
 
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.
167
-
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).
170
-
171
- ## How it works
87
+ - **Technical SEO** — crawlability, indexability, canonicals, redirects, hreflang, metadata, structured data, links, performance and security signals.
88
+ - **GEO / AI search** — AI crawler access by purpose, snippet controls, entity consistency, content clarity.
89
+ - **Repositories** — findings with `file:line` in framework source, plus 12 rule types fixed automatically (dry run → approval → apply → verify → rollback).
90
+ - **Search data, optional and read-only** — Search Console (API or CSV export) and Chrome UX Report. Without them, clicks and Core Web Vitals are shown as *not measured*, never estimated.
91
+ - **Competitors** — topic and page-type coverage gaps, labelled as hypotheses.
172
92
 
173
- ```
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)
182
- ```
93
+ ## Evidence, not claims
183
94
 
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).
95
+ Status: **v1.1.1** ([release notes](docs/release-notes-1.1.1.md), [changelog](CHANGELOG.md)).
187
96
 
188
- ## Security & privacy
97
+ - **90 rules**, each tied to an official source: 71 verified, 17 heuristic, 2 reported as unmeasurable. `searvex rules show <id>`
98
+ - **Tested** with unit, integration, browser and end-to-end runs; CI on Linux, macOS and Windows with Node 20, 22 and 24 ([quality report](docs/quality.md)).
99
+ - **Validated** on 13 public sites and 9 repositories; live Search Console and CrUX values matched the official exports.
100
+ - **Safe by default** — read-only, SSRF protection, robots.txt honoured, secret files never read, every change journaled with byte-for-byte rollback.
189
101
 
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.
102
+ Searvex never promises rankings, traffic or AI citations. The health score is Searvex's own summary, not a search-engine metric. See [limitations](docs/limitations.md).
198
103
 
199
- See [docs/security.md](docs/security.md), [docs/privacy.md](docs/privacy.md) and [SECURITY.md](SECURITY.md).
104
+ ## Documentation
200
105
 
201
- ## Limitations
106
+ [CLI reference](docs/cli.md) · [Architecture](docs/architecture.md) · [Knowledge base](docs/knowledge-base.md) · [Security](docs/security.md) · [Privacy](docs/privacy.md)
202
107
 
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`).
108
+ ## Related tools
211
109
 
212
- Full list: [docs/limitations.md](docs/limitations.md).
110
+ Independent open-source tools by the same author:
213
111
 
214
- ## Contributing
112
+ - [**Relivaro**](https://github.com/cihantopac/relivaro) — software reliability, security and release readiness.
113
+ - [**Jourilo**](https://github.com/cihantopac/jourilo) — UX and conversion engineering in real browser journeys.
114
+ - [**Markilo**](https://github.com/cihantopac/markilo) — brand identity and vector design for Claude Code (made the Searvex identity).
215
115
 
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).
116
+ ## Contributing & license
218
117
 
219
- ## License
118
+ Rules, framework adapters and fixtures are the most valuable contributions; every rule needs an official source and a test fixture ([CONTRIBUTING.md](CONTRIBUTING.md)). Report vulnerabilities via [SECURITY.md](SECURITY.md).
220
119
 
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).
120
+ [Apache-2.0](LICENSE)
@@ -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>;