search-auditor 0.2.0 → 0.2.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.2.1](https://github.com/a-bibikov/search-auditor/compare/v0.2.0...v0.2.1) (2026-11-09)
4
+
5
+
6
+ ### Documentation
7
+
8
+ * report screenshot, examples and the current roadmap ([70435c1](https://github.com/a-bibikov/search-auditor/commit/70435c155a16f8be5e6f744b871bfbc576414426))
9
+
3
10
  ## [0.2.0](https://github.com/a-bibikov/search-auditor/compare/v0.1.1...v0.2.0) (2026-11-09)
4
11
 
5
12
 
package/README.md CHANGED
@@ -1,11 +1,13 @@
1
1
  # search-auditor
2
2
 
3
- **Can Google, Bing and Yandex reach, index and show your site?** A technical SEO audit in one command: status codes, robots.txt, redirects, canonical, sitemap, titles and descriptions, headings, broken links, images, structured data, hreflang, HTTPS.
3
+ **Can Google, Bing and Yandex reach, index and show your site?** A technical SEO audit in one command: status codes, robots.txt, redirects, canonical, sitemap, titles and descriptions, headings, broken links, images, structured data, hreflang, HTTPS. 80 checks, each with what it costs and how to fix it.
4
4
 
5
5
  ```bash
6
6
  npx search-auditor https://example.com
7
7
  ```
8
8
 
9
+ ![The report for albibikov.com: the score, what to do first and the first group of the checklist](docs/report.png)
10
+
9
11
  No sign-up, no API keys. Node.js 22.18+.
10
12
 
11
13
  ## AI search
@@ -120,6 +122,38 @@ Levels: `error` — search engines cannot index the page or index the wrong one;
120
122
 
121
123
  The report opens with the score and the number of errors, warnings and notes. Then what to do first: the three changes worth the most, each with what to do, on which pages it was found and why it matters. Then a table per group: every check with ✓ OK, ✖ error, ⚠ warning, ℹ note or – not checked, and what was found. It ends with one table of recommendations in checklist order, group by group: the check, its severity, what to do, and a comment on what was found where. A check that cannot run on a site — hreflang on a site in one language, HTTPS on a local build — is marked «not checked» with the reason, never as passed.
122
124
 
125
+ ```
126
+ ### META. Meta tags: how a page looks in search results
127
+
128
+ 7 of 9 OK
129
+
130
+ | | Check | Result |
131
+ |-----|--------------------------------------------------------------|----------------------------|
132
+ | ✓ | META-1 Every page has a title of the right length | OK |
133
+ | ℹ | META-2 Every page has a description of the right length | 1 note · 1 of 20 pages |
134
+ | ⚠ | META-3 Titles and descriptions are not repeated across pages | 4 warnings · 4 of 20 pages |
135
+ | ✓ | META-4 One title and one description per page | OK |
136
+ | ✓ | META-5 The title names the page, not a template | OK |
137
+ | ✓ | META-6 The description adds to the title | OK |
138
+ | ✓ | META-7 The page declares its encoding | OK |
139
+ | ✓ | META-8 The snippet is not forbidden | OK |
140
+ | ✓ | META-9 The site has a favicon | OK |
141
+ ```
142
+
143
+ With `--json`, every finding reads on its own: what the check is, what was found against which norm, why it is a problem and how to fix it.
144
+
145
+ ```json
146
+ {
147
+ "rule": "META-2",
148
+ "level": "info",
149
+ "title": "Every page has a description of the right length",
150
+ "where": "https://albibikov.com/ru/privacy",
151
+ "message": "description of 165 characters, should be 50–160",
152
+ "why": "Without a description search engines pick a random snippet, a long one is cut off mid-sentence, and fewer people click.",
153
+ "fix": "Add `<meta name=\"description\">` of about 50–160 characters: what the page offers and why to open it."
154
+ }
155
+ ```
156
+
123
157
  **Score:** 100 minus 15 for each check with an error and 5 for each check with a warning; a warning that covers at least half of the audited pages costs 10. A ≥ 90, B ≥ 80, C ≥ 70, D ≥ 60, F below; if fewer than two thirds of the checks could run, the grade is capped at B.
124
158
 
125
159
  ## Usage
@@ -181,15 +215,29 @@ console.log(toMarkdown(report));
181
215
 
182
216
  The crawl, the scoring and the report come from [auditor-engine](https://github.com/a-bibikov/auditor-engine). The checks are exported as `seoRules`, with `collect` for the extra requests they need, for your own runner.
183
217
 
218
+ ## Example
219
+
220
+ [albibikov.com](https://albibikov.com), a Next.js site in English and Russian (20 pages, local production build): **95/100 (A)**, 70 of 80 checks run. The connection checks — HTTPS, the certificate, HSTS, the server speed — need the live site and are marked «not checked» on a local build; so are external links when the audit has no internet access.
221
+
222
+ | | Found |
223
+ |---|---|
224
+ | META-3 ⚠ | The same title on `/` and `/cv`, and on `/ru` and `/ru/cv` |
225
+ | META-2 ℹ | A description of 165 characters on `/ru/privacy`, should be 50–160 |
226
+ | DATA-6 ℹ | No WebSite with the site name on the home page |
227
+
184
228
  ## Roadmap
185
229
 
186
- - **CAN-4** Canonical chains: a canonical target whose own canonical points further
187
- - **MAP-4** Every audited page is in the sitemap
188
- - **LNK-3** Orphan pages: in the sitemap, but no internal link leads to them
189
- - **IMG-2** Images are sized and lazy-loaded, so they do not slow the page down
190
- - **PERF-1** Page weight and Core Web Vitals
191
- - **SOC-1** Twitter / X cards in addition to Open Graph
230
+ **PERF. Speed** — page weight, render-blocking scripts and styles, Core Web Vitals from the Chrome UX Report
231
+
232
+ **SOC. Link cards** — Open Graph and Twitter / X cards for every page
233
+
234
+ - **GitHub Action**, like the one of [ai-search-auditor](https://github.com/a-bibikov/ai-search-audit#github-action), with the report in the job summary
235
+ - **CI that reports only new problems,** with a file of accepted exceptions
236
+ - **SARIF output,** so findings show up in GitHub code scanning
237
+ - **HTML report** to share with people who do not read Markdown
238
+
239
+ Ideas are welcome in [issues](https://github.com/a-bibikov/search-auditor/issues); for pull requests see [CONTRIBUTING.md](CONTRIBUTING.md).
192
240
 
193
241
  ## License
194
242
 
195
- MIT
243
+ MIT © [Aleksandr Bibikov](https://albibikov.com)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "search-auditor",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Technical SEO audit from the command line: indexing, robots.txt, redirects, canonical, sitemap, meta tags, headings, links, images, structured data, hreflang, HTTPS. One score, CI-ready.",
5
5
  "keywords": [
6
6
  "seo audit",