searvex-seo 0.7.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 (124) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/CHANGELOG.md +102 -0
  4. package/NOTICE +2 -0
  5. package/README.md +173 -170
  6. package/THIRD_PARTY_NOTICES.md +750 -0
  7. package/dist/analyze/audit.d.ts +12 -0
  8. package/dist/analyze/audit.js +18 -2
  9. package/dist/analyze/audit.js.map +1 -1
  10. package/dist/analyze/content.js +9 -1
  11. package/dist/analyze/content.js.map +1 -1
  12. package/dist/analyze/context.d.ts +7 -1
  13. package/dist/analyze/context.js +10 -1
  14. package/dist/analyze/context.js.map +1 -1
  15. package/dist/analyze/inventory.js +1 -1
  16. package/dist/analyze/priority.js +32 -0
  17. package/dist/analyze/priority.js.map +1 -1
  18. package/dist/analyze/structured-data.js +3 -1
  19. package/dist/analyze/structured-data.js.map +1 -1
  20. package/dist/analyze/technical.d.ts +10 -0
  21. package/dist/analyze/technical.js +41 -12
  22. package/dist/analyze/technical.js.map +1 -1
  23. package/dist/cli.d.ts +6 -1
  24. package/dist/cli.js +84 -18
  25. package/dist/cli.js.map +1 -1
  26. package/dist/commands/crux.d.ts +8 -0
  27. package/dist/commands/crux.js +61 -0
  28. package/dist/commands/crux.js.map +1 -0
  29. package/dist/commands/gsc.d.ts +10 -1
  30. package/dist/commands/gsc.js +212 -37
  31. package/dist/commands/gsc.js.map +1 -1
  32. package/dist/commands/monitor.js +71 -20
  33. package/dist/commands/monitor.js.map +1 -1
  34. package/dist/commands/optimize.js +26 -4
  35. package/dist/commands/optimize.js.map +1 -1
  36. package/dist/commands/repo.js +9 -6
  37. package/dist/commands/repo.js.map +1 -1
  38. package/dist/commands/research.js +1 -1
  39. package/dist/commands/research.js.map +1 -1
  40. package/dist/commands/review.d.ts +11 -0
  41. package/dist/commands/review.js +72 -0
  42. package/dist/commands/review.js.map +1 -0
  43. package/dist/commands/run.d.ts +2 -0
  44. package/dist/commands/run.js +41 -12
  45. package/dist/commands/run.js.map +1 -1
  46. package/dist/crawl/render.d.ts +4 -0
  47. package/dist/crawl/render.js +38 -5
  48. package/dist/crawl/render.js.map +1 -1
  49. package/dist/extract/html.d.ts +5 -0
  50. package/dist/extract/html.js +10 -0
  51. package/dist/extract/html.js.map +1 -1
  52. package/dist/integrations/bing.d.ts +20 -1
  53. package/dist/integrations/bing.js +42 -2
  54. package/dist/integrations/bing.js.map +1 -1
  55. package/dist/integrations/credentials.d.ts +51 -3
  56. package/dist/integrations/credentials.js +165 -1
  57. package/dist/integrations/credentials.js.map +1 -1
  58. package/dist/integrations/crux.d.ts +5 -1
  59. package/dist/integrations/crux.js +27 -3
  60. package/dist/integrations/crux.js.map +1 -1
  61. package/dist/integrations/google-oauth.d.ts +2 -1
  62. package/dist/integrations/google-oauth.js +3 -3
  63. package/dist/integrations/google-oauth.js.map +1 -1
  64. package/dist/integrations/gsc-csv.d.ts +0 -5
  65. package/dist/integrations/gsc-csv.js +0 -14
  66. package/dist/integrations/gsc-csv.js.map +1 -1
  67. package/dist/integrations/property.d.ts +20 -0
  68. package/dist/integrations/property.js +82 -0
  69. package/dist/integrations/property.js.map +1 -1
  70. package/dist/net/fetcher.d.ts +2 -2
  71. package/dist/net/fetcher.js +1 -1
  72. package/dist/net/ssrf.js +2 -1
  73. package/dist/net/ssrf.js.map +1 -1
  74. package/dist/optimize/fixes.d.ts +2 -0
  75. package/dist/optimize/fixes.js +76 -3
  76. package/dist/optimize/fixes.js.map +1 -1
  77. package/dist/optimize/transaction.d.ts +7 -1
  78. package/dist/optimize/transaction.js +48 -21
  79. package/dist/optimize/transaction.js.map +1 -1
  80. package/dist/repo/audit.js +13 -3
  81. package/dist/repo/audit.js.map +1 -1
  82. package/dist/repo/detect.d.ts +5 -0
  83. package/dist/repo/detect.js +34 -2
  84. package/dist/repo/detect.js.map +1 -1
  85. package/dist/repo/scan.d.ts +21 -2
  86. package/dist/repo/scan.js +90 -13
  87. package/dist/repo/scan.js.map +1 -1
  88. package/dist/report/brand.d.ts +4 -0
  89. package/dist/report/brand.js +7 -0
  90. package/dist/report/brand.js.map +1 -0
  91. package/dist/report/client.d.ts +15 -0
  92. package/dist/report/client.js +196 -0
  93. package/dist/report/client.js.map +1 -0
  94. package/dist/report/extras.d.ts +19 -0
  95. package/dist/report/extras.js +57 -0
  96. package/dist/report/extras.js.map +1 -0
  97. package/dist/report/html.d.ts +29 -3
  98. package/dist/report/html.js +144 -140
  99. package/dist/report/html.js.map +1 -1
  100. package/dist/report/i18n.d.ts +13 -0
  101. package/dist/report/i18n.js +202 -0
  102. package/dist/report/i18n.js.map +1 -0
  103. package/dist/report/markdown.d.ts +1 -1
  104. package/dist/report/markdown.js +2 -1
  105. package/dist/report/markdown.js.map +1 -1
  106. package/dist/report/prompt.d.ts +52 -0
  107. package/dist/report/prompt.js +120 -0
  108. package/dist/report/prompt.js.map +1 -0
  109. package/dist/report/remediation.d.ts +39 -0
  110. package/dist/report/remediation.js +83 -0
  111. package/dist/report/remediation.js.map +1 -0
  112. package/dist/rules/engine.js +4 -0
  113. package/dist/rules/engine.js.map +1 -1
  114. package/dist/searvex.mjs +4918 -3046
  115. package/knowledge/rules/international.json +3 -2
  116. package/knowledge/rules/metadata.json +5 -3
  117. package/knowledge/rules/structured-data.json +2 -1
  118. package/package.json +12 -4
  119. package/skills/audit/SKILL.md +12 -9
  120. package/skills/geo/SKILL.md +2 -1
  121. package/skills/monitor/SKILL.md +5 -4
  122. package/skills/optimize/SKILL.md +11 -2
  123. package/skills/research/SKILL.md +4 -1
  124. package/skills/searvex/SKILL.md +34 -14
@@ -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": "0.7.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,108 @@ 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
+
57
+ ## [1.0.0] - 2026-11-01
58
+
59
+ First stable release. Every capability advertised as supported has been verified end to end; Bing Webmaster
60
+ is the one integration shipped as experimental. Evidence: [docs/release-checklist.md](docs/release-checklist.md)
61
+ and [docs/quality.md](docs/quality.md).
62
+
63
+ ### Security and data integrity
64
+ - `monitor` no longer attaches search data of another website: `--import`, `--site-url`, `SEARVEX_GSC_SITE`
65
+ and `--baseline` are checked against the monitored site; an export without a pages table needs `--property`.
66
+ - Search Console exports whose pages span several subdomains are scoped as domain properties (their totals
67
+ include every subdomain); an explicit `--property` that does not contain every exported page is refused.
68
+ - `--render`: a hard per-page deadline stops pages whose scripts never yield or allocate without bound; a
69
+ stuck browser is replaced. Local host names with a trailing dot are blocked.
70
+ - Optimizer: backups and the manifest are written before the first file (an interrupted apply is recoverable
71
+ with `rollback`, and new applies are refused until then); a failed verification never overwrites files
72
+ edited meanwhile; CRLF line endings and file modes are preserved.
73
+ - Credentials: opt-in OS keychain store (`SEARVEX_CREDENTIAL_STORE=keychain`: macOS Keychain, Secret Service,
74
+ Windows DPAPI) using the OS's own tools with secrets on stdin; entries are isolated per config directory.
75
+ Automated scans confirm that no token, key or client secret reaches output or run files.
76
+
77
+ ### Added
78
+ - `searvex bing auth|status|sites|logout` and `searvex crux auth|status|logout`: keys are entered without echo,
79
+ checked against the API and kept in the credential store instead of environment variables.
80
+ - `gsc auth` opens the browser for consent (`--no-browser` to only print the URL).
81
+ - `THIRD_PARTY_NOTICES.md` with the licence texts of all bundled runtime packages.
82
+
83
+ ### Changed
84
+ - Search Console API reports show property totals from the daily series (anonymised queries included), equal
85
+ to the CSV export of the same period. Bing reports use the daily site series for totals and explain empty
86
+ data. `bing report` requires a verified site of the account.
87
+ - "Fix first" names the likely root cause of dependent findings (e.g. a client-side language switch that
88
+ changes titles, canonicals and hreflang for renderers) and ranks it first.
89
+ - 3-letter hreflang codes without an ISO 639-1 equivalent (`ast`, `ceb`) are reported at low severity with an
90
+ explanation instead of as high-severity mistakes; a finding's severity is its most severe occurrence.
91
+ - Status commands (`gsc|bing|crux status`) exit 0 only when the integration is usable.
92
+
93
+ ### Fixed
94
+ - Repository mode: test/fixture/benchmark/example folders, HTML fragments and server template folders are not
95
+ treated as the site (a repository without a website now scores n/a); static sites in workspace folders and
96
+ locale sub-folders are found; clean URLs; sitemap URLs without a file (unless another app routes them); all
97
+ Laravel route files; Blade/PHP expressions no longer hide attributes; admin views and tests skipped; error
98
+ pages modelled as 404/500; Next.js fill images and aspect-ratio utility classes are sized; personal sites
99
+ are not asked for Organization markup.
100
+ - Website mode: pages linked only through internal redirects are not orphans; orphans are not reported on
101
+ crawls stopped at the page limit; cannibalisation candidates must share a language and exclude legal pages;
102
+ Turkish soft-404 wording is detected (Unicode-aware boundaries).
103
+
104
+ ### Verified
105
+ - Live: Search Console API (authorization, refresh, properties, pagination, reports), Search Console CSV
106
+ (real Turkish and English exports), CrUX (values identical to the raw API), Bing Webmaster (mechanics; no
107
+ site data yet). Real-world rounds on 13 public sites and 9 repositories; benchmarks to 50,000 pages;
108
+ reproducible package; clean installs on Linux, macOS and Windows.
109
+
8
110
  ## [0.7.0] - 2026-10-30
9
111
 
10
112
  ### 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
@@ -1,206 +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: **v0.7.0 (early)**. The engine, rule base, CLI and plugin are tested (automated tests incl. Playwright rendering, CI on Linux/macOS/Windows,
9
- > real-site and real-repository validation — see [docs/quality.md](docs/quality.md)). Expect rough
10
- > edges; read [Limitations](#limitations) before relying on it.
11
-
12
- ## Why Searvex
13
-
14
- | | Searvex | Typical crawlers (Screaming Frog, Sitebulb) | Prompt-only SEO skills |
15
- |---|---|---|---|
16
- | Deterministic, reproducible checks | ✅ code, not prompts | ✅ | ❌ |
17
- | Every finding cites an official source + check date | ✅ `searvex rules show <id>` | ❌ | ❌ |
18
- | Myth firewall (no keyword density, fixed title lengths, llms.txt-as-ranking-factor…) | ✅ | partly | ❌ |
19
- | Repository mode: findings with `file:line` for Next.js, Astro, Nuxt, Laravel, WordPress, static sites | ✅ | ❌ | partial |
20
- | Safe fixes: dry-run diff → apply → re-verify → rollback | ✅ | ❌ | ❌ |
21
- | GEO: AI crawler access by *purpose* (training vs search vs user fetch) | ✅ | partial | partial |
22
- | Honest measurement: each finding is `verified`, `heuristic` or `unmeasurable` | ✅ | ❌ | ❌ |
23
- | Local-first, no paid API required | ✅ | desktop app | ✅ |
24
-
25
- Competitor research and differentiation notes: [docs/research/competitors-2026-10.md](docs/research/competitors-2026-10.md).
26
-
27
- ## What it does — and what it does not
28
-
29
- **Searvex does:**
30
-
31
- - Crawl public pages (robots.txt-compliant, rate-limited) or read a repository's source, and check them against
32
- 90 rules. 71 rules are `verified` against official documentation, 17 are `heuristic` and 2 are `unmeasurable`
33
- signals that are reported as such.
34
- - Explain every finding with its official source, the date the source was checked, how to fix it and how to
35
- verify the fix.
36
- - Compare runs over time (`monitor`), across related sites (`ecosystem`) and against competitors you name
37
- (`research`).
38
- - Fix a small set of problems in code automatically (9 rule types: e.g. missing `lang`, viewport, robots.txt
39
- sitemap line, invalid hreflang codes), always as a dry-run diff first, then apply → re-verify → rollback.
40
- - Read Search Console or Bing data when you connect them yourself, and keep measured data separate from
41
- inference.
42
-
43
- **Searvex does not:**
44
-
45
- - Estimate traffic, rankings, search volume, keyword difficulty, backlinks or AI citations. Without a connected
46
- data source these are reported as **not measured**.
47
- - Promise rankings or "SEO scores" that search engines use. The health score is a Searvex summary, not a search
48
- engine metric.
49
- - Publish content, submit URLs, change live sites or send data to a Searvex server (there is none).
50
- - Offer a one-click Google login. Search Console access uses your own Google Cloud OAuth client, or a CSV
51
- export you download yourself.
52
- - See login-protected pages, run Lighthouse lab tests, or execute JavaScript unless you opt into `--render`.
53
- - Rewrite your content. Judgement-based changes (titles, descriptions, alt text) are drafted by the agent for your
54
- review, never applied silently.
55
-
56
- ## Install
57
-
58
- 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>
15
+
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>
22
+
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>
30
+
31
+ ## What Searvex does
32
+
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>
37
+
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.
44
+
45
+ ## From findings to fixes
46
+
47
+ <table>
48
+ <tr>
49
+ <td width="50%" valign="top">
50
+
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:
52
+
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.
56
+
57
+ </td>
58
+ <td width="50%" valign="top">
59
+
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>
64
+
65
+ </td>
66
+ </tr>
67
+ <tr>
68
+ <td width="50%" valign="top">
69
+
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>
74
+
75
+ </td>
76
+ <td width="50%" valign="top">
77
+
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.
79
+
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
99
+
100
+ Status: **v1.1.0** ([release notes](docs/release-notes-1.1.0.md), [changelog](CHANGELOG.md)).
101
+
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.
107
+
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`.
59
113
 
60
114
  ```bash
61
115
  npm install -g searvex-seo
62
116
  ```
63
117
 
64
118
  ```bash
65
- searvex --help
119
+ searvex audit https://example.com --open
66
120
  ```
67
121
 
68
- ### Claude Code plugin
122
+ ```bash
123
+ searvex audit ./my-site --site-url https://example.com
124
+ ```
69
125
 
70
- In Claude Code:
126
+ ```bash
127
+ searvex optimize ./my-site --site-url https://example.com --lang en
128
+ ```
129
+
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).
132
+
133
+ **Claude Code plugin** — no npm install needed:
71
134
 
72
135
  ```
73
136
  /plugin marketplace add cihantopac/searvex
74
137
  /plugin install searvex@searvex
75
138
  ```
76
139
 
77
- Then use **`/searvex <url> [path]`** — it runs the whole workflow in a fixed order (scope → competitors →
78
- audit → GEO → change since last run → research → repository audit → fix plan → approved fixes → content
79
- plan → monitoring) with approval checkpoints. Single steps are available as the namespaced skills `/searvex:audit`, `/searvex:research`,
80
- `/searvex:optimize`, `/searvex:geo`, `/searvex:monitor`. The plugin bundles the CLI
81
- (`dist/searvex.mjs`), so no `npm install` is needed.
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`.
82
143
 
83
- ## Usage
144
+ **Optional search data** (read-only, asked once per site):
84
145
 
85
146
  ```bash
86
- # Everything in order with one crawl: audit → GEO → change since last run → research → repo audit → fix plan (dry run)
87
- searvex run https://example.com ./my-site --competitor https://rival-a.com
88
-
89
- # Website mode: crawl (robots.txt-compliant, rate-limited) and audit
90
- searvex audit https://example.com --max-pages 300
91
-
92
- # Repository mode: detect the framework and analyse source files
93
- searvex audit ./my-next-app
94
-
95
- # Safe fixes for a repository: dry run first (default), then apply with verification
96
- searvex optimize ./my-site --site-url https://example.com --lang en
97
- searvex optimize ./my-site --site-url https://example.com --lang en --apply
98
- searvex rollback <changeId> ./my-site
99
-
100
- # GEO / AI-search readiness
101
- searvex geo https://example.com
102
-
103
- # Brand family / product ecosystem across related sites
104
- searvex ecosystem https://company.example https://product-a.example https://product-b.example
105
-
106
- # Competitor & content-gap research (competitors are passed explicitly)
107
- searvex research https://example.com --competitor https://rival-a.com --competitor https://rival-b.com
108
-
109
- # Regression monitoring against the previous run (optionally with Search Console data)
110
- searvex monitor https://example.com --fail-on high
111
-
112
- # Optional search performance data: Google / CSV / skip (asked once per site)
113
147
  searvex connect https://example.com
114
- searvex gsc import performance-export.zip --audit latest # Search Console CSV export, no account access
115
- searvex gsc auth --client client_secret.json # your own Google OAuth "Desktop app" client
116
- searvex gsc report sc-domain:example.com --audit latest
117
- SEARVEX_BING_API_KEY=… searvex bing report https://example.com/
118
-
119
- # Inspect the rule base and re-verify its official sources
120
- searvex rules check-sources
121
- searvex rules list
122
- searvex rules show canonical.in-body
123
- searvex rules validate
124
148
  ```
125
149
 
126
- Reports are written to `.searvex/runs/<runId>/` as Markdown, interactive HTML, JSON and SARIF
127
- (`--format md,html,json,sarif`). Use `--fail-on high` in CI to fail builds on serious issues.
128
- Full reference: [docs/cli.md](docs/cli.md).
129
-
130
- ### Optional integrations (read-only, opt-in)
131
-
132
- | Variable | Enables |
133
- |---|---|
134
- | `SEARVEX_CRUX_API_KEY` | Real-user Core Web Vitals (Chrome UX Report API) |
135
- | `searvex gsc auth` (or `SEARVEX_GSC_TOKEN`) | Search Console query × page analysis, `monitor` performance |
136
- | `SEARVEX_BING_API_KEY` | Bing Webmaster Tools query × page analysis |
137
- | `searvex gsc import export.zip` | Search Console Performance CSV/ZIP exports (no account access; no query × page data) |
138
- | `npm i -D playwright` | `--render`: JavaScript rendering and raw-vs-rendered comparison |
139
-
140
- Without them, Searvex reports these metrics as **not measured** — it never estimates them.
141
-
142
- ## What it checks
150
+ ```bash
151
+ searvex gsc import performance-export.zip --audit latest
152
+ ```
143
153
 
144
- 90 rules across crawlability, indexability, canonicalisation, international (hreflang), metadata,
145
- structured data (Google rich-result requirements), performance, security, links, content and GEO.
146
- Examples: robots.txt failures and AI crawler access, redirect chains and loops, noindex/sitemap
147
- conflicts, canonical conflicts (including canonicals pushed into `<body>` by invalid head markup),
148
- hreflang reciprocity and codes, soft 404s, client-side-only rendering, duplicate and near-duplicate
149
- content (template-aware), retired rich-result types (FAQ, HowTo), entity consistency, declared vs actual
150
- content language, untranslated headings on localized pages.
154
+ ```bash
155
+ searvex crux auth
156
+ ```
151
157
 
152
- Each rule records the engines it applies to (Google, Bing, Yandex, AI systems), the official source
153
- URLs with check dates, how to fix and how to verify — see [docs/knowledge-base.md](docs/knowledge-base.md).
158
+ Without them, clicks, impressions, positions and Core Web Vitals are shown as **not measured** — never estimated.
154
159
 
155
- ## How it works
160
+ <details>
161
+ <summary><b>More commands</b></summary>
156
162
 
157
- ```
158
- CLI / Claude Code skills
159
- │
160
- ├── Website mode: safe fetcher → crawler (robots, sitemaps, queue, checkpoints) → HTML5 extraction
161
- ├── Repository mode: safe file walker → framework detection → source checks / static-site analysis
162
- │
163
- ├── Analyzers: technical · structured data · GEO · content · inventory ← rule knowledge base
164
- ├── Reports: Markdown · HTML · JSON · SARIF
165
- └── Optimizer: deterministic fix planners → transaction (backup, verify, rollback)
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
166
173
  ```
167
174
 
168
- The deterministic engine measures; the agent (Claude) explains, prioritises, researches competitors
169
- and drafts judgement-based changes (titles, descriptions, alt text) for the user's approval.
170
- Details: [docs/architecture.md](docs/architecture.md).
171
-
172
- ## Security & privacy
173
-
174
- - Read-only by default. Nothing is published, submitted (e.g. IndexNow) or changed on live sites.
175
- - SSRF protection with connection-time DNS validation (anti-rebinding), per-redirect re-validation,
176
- size and time limits; private networks require `--allow-private`.
177
- - robots.txt (RFC 9309) is always honoured, including for outbound link checks; per-host rate limiting,
178
- `Crawl-delay`, `429/Retry-After` backoff. User agent: `SearvexBot`.
179
- - Repository access never follows symlinks, never reads secret files (`.env`, keys, credentials) and
180
- refuses paths outside the repository.
181
- - Crawled content is treated as untrusted; HTML reports are rendered without `innerHTML` and with a CSP.
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
182
 
183
- See [docs/security.md](docs/security.md), [docs/privacy.md](docs/privacy.md) and [SECURITY.md](SECURITY.md).
183
+ </details>
184
184
 
185
185
  ## Limitations
186
186
 
187
- - Website mode sees public pages only; no traffic, rankings or analytics without an integration.
188
- - Market data (search volumes, SERP features, backlinks) is not fetched — Searvex does not fabricate it.
189
- The research skill discovers competitors via web search; volumes stay "unknown" unless you provide data.
190
- - AI citations cannot be observed directly; Bing Webmaster Tools AI Performance and Search Console are
191
- the official sources.
192
- - Repository mode is static analysis: runtime-computed metadata (CMS, i18n, data fetching) is resolved
193
- conservatively. Use website mode against a deployment for rendered output.
194
- - 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).
195
191
 
196
- Full list: [docs/limitations.md](docs/limitations.md).
192
+ ## Related tools
197
193
 
198
- ## Contributing
194
+ Complementary open-source tools by the same author — independent, not required:
195
+
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. |
199
201
 
200
- Rules, framework adapters and fixtures are the most valuable contributions. Every rule needs an
201
- official source and a test fixture. See [CONTRIBUTING.md](CONTRIBUTING.md).
202
+ ## Contributing, security, license
202
203
 
203
- ## 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).
204
208
 
205
- [Apache-2.0](LICENSE). "Searvex" name availability notes: [docs/research/name-availability-2026-10.md](docs/research/name-availability-2026-10.md)
206
- (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).