@queryrev/ai-readiness 1.0.0 → 1.0.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/CITATION.cff +1 -1
- package/README.md +5 -0
- package/dist/chunks/{findings-_twhMw3_.js → findings-CTetT2bF.js} +1 -1
- package/dist/chunks/{main-CJu6SE-W.js → main-Bd0uzoHe.js} +4 -4
- package/dist/cli.js +1 -1
- package/dist/index.js +1 -1
- package/dist/net/charset.d.ts +1 -1
- package/dist/run.js +1 -1
- package/package.json +80 -80
package/CITATION.cff
CHANGED
|
@@ -8,7 +8,7 @@ abstract: >-
|
|
|
8
8
|
and structured-data findings, each with its evidence. No model calls, no telemetry.
|
|
9
9
|
authors:
|
|
10
10
|
- name: 'QueryRev'
|
|
11
|
-
version: 1.0.
|
|
11
|
+
version: 1.0.1
|
|
12
12
|
date-released: '2026-10-24'
|
|
13
13
|
license: MIT
|
|
14
14
|
repository-code: 'https://github.com/QueryRevAI/ai-readiness'
|
package/README.md
CHANGED
|
@@ -169,6 +169,11 @@ npx @queryrev/ai-readiness check https://www.example.com --fail-on fail
|
|
|
169
169
|
|
|
170
170
|
The `examples/` folder has a CI script that acts on the exit codes (`ci.sh`), a plain-Node consumer of the JSON (`read-report.mjs`), and a robots.txt with a script that tests it (`robots.txt`, `robots-check.sh`).
|
|
171
171
|
|
|
172
|
+
## In an MCP client and in GitHub
|
|
173
|
+
|
|
174
|
+
- **MCP server.** [`@queryrev/ai-readiness-mcp`](https://www.npmjs.com/package/@queryrev/ai-readiness-mcp) offers the same checks as tools and works with any MCP client that starts a local server: `npx -y @queryrev/ai-readiness-mcp`. Each tool returns the document that `--json` prints. Its source is the `mcp/` folder of this repository.
|
|
175
|
+
- **GitHub Action.** [`QueryRevAI/ai-readiness-action`](https://github.com/QueryRevAI/ai-readiness-action) fails a pull request when a change to `robots.txt` or `llms.txt` closes the site to AI search crawlers. It is offline by default.
|
|
176
|
+
|
|
172
177
|
## Licences
|
|
173
178
|
|
|
174
179
|
- The code is MIT (see `LICENSE`).
|
|
@@ -705,7 +705,7 @@ function isOnDomain(host, domain) {
|
|
|
705
705
|
}
|
|
706
706
|
// src/net/charset.ts
|
|
707
707
|
/**
|
|
708
|
-
* Reading a page's bytes as text. One decoder for the library and for
|
|
708
|
+
* Reading a page's bytes as text. One decoder for the library and for any program that uses it,
|
|
709
709
|
* so a page in windows-1251, Shift_JIS, GBK or EUC-KR is counted the same everywhere. The order
|
|
710
710
|
* is the one browsers use, shortened: a byte order mark; the `charset` of the Content-Type
|
|
711
711
|
* header; a `<meta charset>` or `<meta http-equiv="Content-Type">` in the first 2 KiB; else
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as looksLikeHtml, F as sitemapLocations, I as stripUnsafeCharacters, M as attributes, N as pageMeta, P as renderLlmsTxt, X as registrableDomain, _t as parseRobots, a as robotsRead, ct as crawlerAccess, f as READER_TOKEN, g as xRobotsNoindex, gt as matchRobots, ht as isAllowedByRobots, i as checkSite, it as CRAWLERS, j as PAGE_SCAN_MAX_CHARS, lt as crawlersCoveredLine, mt as crawlDelayFor, n as llmsFinding, nt as validateLlmsTxt, r as llmsFindings } from "./findings-
|
|
1
|
+
import { $ as looksLikeHtml, F as sitemapLocations, I as stripUnsafeCharacters, M as attributes, N as pageMeta, P as renderLlmsTxt, X as registrableDomain, _t as parseRobots, a as robotsRead, ct as crawlerAccess, f as READER_TOKEN, g as xRobotsNoindex, gt as matchRobots, ht as isAllowedByRobots, i as checkSite, it as CRAWLERS, j as PAGE_SCAN_MAX_CHARS, lt as crawlersCoveredLine, mt as crawlDelayFor, n as llmsFinding, nt as validateLlmsTxt, r as llmsFindings } from "./findings-CTetT2bF.js";
|
|
2
2
|
import { a as GENERATE_BUDGET_MS, i as FETCH_LIMITS, m as createTextFetcher, n as CHECK_BUDGET_MS, p as checkTextUrl } from "./fetch-text-NUUnM91O.js";
|
|
3
3
|
import { parseArgs } from "node:util";
|
|
4
4
|
import { gunzipSync } from "node:zlib";
|
|
@@ -1353,7 +1353,7 @@ Reads public files only. Sends nothing to queryrev.com.
|
|
|
1353
1353
|
// src/cli/main.ts
|
|
1354
1354
|
var CLI_VERSION = {
|
|
1355
1355
|
name: "@queryrev/ai-readiness",
|
|
1356
|
-
version: "1.0.
|
|
1356
|
+
version: "1.0.1",
|
|
1357
1357
|
description: "robots.txt parsing, AI crawler access verdicts, llms.txt checks and a guarded network layer. No model calls.",
|
|
1358
1358
|
license: "MIT",
|
|
1359
1359
|
author: "QueryRev",
|
|
@@ -1377,7 +1377,7 @@ var CLI_VERSION = {
|
|
|
1377
1377
|
sideEffects: false,
|
|
1378
1378
|
main: "./dist/index.js",
|
|
1379
1379
|
types: "./dist/index.d.ts",
|
|
1380
|
-
bin: { "ai-readiness": "
|
|
1380
|
+
bin: { "ai-readiness": "dist/cli.js" },
|
|
1381
1381
|
exports: {
|
|
1382
1382
|
".": {
|
|
1383
1383
|
"types": "./dist/index.d.ts",
|
|
@@ -1410,7 +1410,7 @@ var CLI_VERSION = {
|
|
|
1410
1410
|
"build": "vite build --config vite.build.config.ts && node scripts/build-types.mjs",
|
|
1411
1411
|
"prepublishOnly": "node scripts/check-publishable.mjs && npm run build",
|
|
1412
1412
|
"typecheck": "tsc --noEmit",
|
|
1413
|
-
"test": "vitest run"
|
|
1413
|
+
"test": "vitest run --dir src"
|
|
1414
1414
|
},
|
|
1415
1415
|
dependencies: { "undici": "^8.12.3" },
|
|
1416
1416
|
devDependencies: {
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { n as runCli } from "./chunks/main-
|
|
2
|
+
import { n as runCli } from "./chunks/main-Bd0uzoHe.js";
|
|
3
3
|
import { n as createCliTextFetcher } from "./chunks/cli-BK65ic84.js";
|
|
4
4
|
import { argv, env, stderr, stdout } from "node:process";
|
|
5
5
|
import { open, writeFile } from "node:fs/promises";
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as looksLikeHtml, A as MAX_LOC_TAGS_SCANNED, B as CHALLENGE_MAX_WORDS, C as MAX_LD_DEPTH, Ct as EMPTY_SHELL_MIN_BYTES, D as MAX_LD_BLOCK_CHARS, E as MAX_LD_BLOCKS, F as sitemapLocations, G as isChallenge, H as INTERSTITIAL_MARKS, I as stripUnsafeCharacters, J as decodeHtml, K as isHomeChallenge, L as MAX_WORDS_COUNTED, N as pageMeta, O as MAX_LD_TOTAL_CHARS, P as renderLlmsTxt, Q as llmsStructure, R as countWords, S as SCHEMA_ORG_VERSION, St as EMPTY_SHELL_MAX_WORDS, T as HOME_SCAN_MAX_CHARS, Tt as isAppRoot, U as PLACEHOLDER_MARKS, V as HTML_MARKUP, W as PLACEHOLDER_MAX_WORDS, X as registrableDomain, Y as detectCharset, Z as LLMS_H1_MAX, _ as PROFILE_HOSTS, _t as parseRobots, at as CRAWLER_PURPOSES, b as ORGANIZATION_TYPES, bt as APP_ROOT_SELECTOR, c as MAX_LOCS_COUNTED, ct as crawlerAccess, d as readSitemapText, dt as ROBOTS_MAX_AGE_MS, et as looksLikeLlmsTxt, f as READER_TOKEN, ft as ROBOTS_MAX_BYTES, g as xRobotsNoindex, gt as matchRobots, h as readHomePage, ht as isAllowedByRobots, i as checkSite, it as CRAWLERS, k as MAIN_SECTION, l as SITEMAP_MAX_BYTES, lt as crawlersCoveredLine, m as TEXT_IN_HTML_MIN_WORDS, mt as crawlDelayFor, nt as validateLlmsTxt, o as FINDING_IDS, ot as STUDY_AGENTS, p as readHomeResponse, pt as ROBOTS_MAX_REDIRECTS, q as placeholderMark, r as llmsFindings, rt as AI_AGENTS, s as buildFindings, st as agentVerdict, t as LLMS_FINDING_IDS, tt as looksLikeRobotsTxt, u as readSitemap, ut as verdictsFor, v as PROFILE_KINDS, vt as APP_ROOT_ATTRIBUTES, w as MAX_LD_NODES, wt as JS_NOTICE, x as SCHEMA_ORG_SHA256, xt as APP_ROOT_TAG, y as profileKind, yt as APP_ROOT_IDS, z as CHALLENGE_MARKS } from "./chunks/findings-
|
|
1
|
+
import { $ as looksLikeHtml, A as MAX_LOC_TAGS_SCANNED, B as CHALLENGE_MAX_WORDS, C as MAX_LD_DEPTH, Ct as EMPTY_SHELL_MIN_BYTES, D as MAX_LD_BLOCK_CHARS, E as MAX_LD_BLOCKS, F as sitemapLocations, G as isChallenge, H as INTERSTITIAL_MARKS, I as stripUnsafeCharacters, J as decodeHtml, K as isHomeChallenge, L as MAX_WORDS_COUNTED, N as pageMeta, O as MAX_LD_TOTAL_CHARS, P as renderLlmsTxt, Q as llmsStructure, R as countWords, S as SCHEMA_ORG_VERSION, St as EMPTY_SHELL_MAX_WORDS, T as HOME_SCAN_MAX_CHARS, Tt as isAppRoot, U as PLACEHOLDER_MARKS, V as HTML_MARKUP, W as PLACEHOLDER_MAX_WORDS, X as registrableDomain, Y as detectCharset, Z as LLMS_H1_MAX, _ as PROFILE_HOSTS, _t as parseRobots, at as CRAWLER_PURPOSES, b as ORGANIZATION_TYPES, bt as APP_ROOT_SELECTOR, c as MAX_LOCS_COUNTED, ct as crawlerAccess, d as readSitemapText, dt as ROBOTS_MAX_AGE_MS, et as looksLikeLlmsTxt, f as READER_TOKEN, ft as ROBOTS_MAX_BYTES, g as xRobotsNoindex, gt as matchRobots, h as readHomePage, ht as isAllowedByRobots, i as checkSite, it as CRAWLERS, k as MAIN_SECTION, l as SITEMAP_MAX_BYTES, lt as crawlersCoveredLine, m as TEXT_IN_HTML_MIN_WORDS, mt as crawlDelayFor, nt as validateLlmsTxt, o as FINDING_IDS, ot as STUDY_AGENTS, p as readHomeResponse, pt as ROBOTS_MAX_REDIRECTS, q as placeholderMark, r as llmsFindings, rt as AI_AGENTS, s as buildFindings, st as agentVerdict, t as LLMS_FINDING_IDS, tt as looksLikeRobotsTxt, u as readSitemap, ut as verdictsFor, v as PROFILE_KINDS, vt as APP_ROOT_ATTRIBUTES, w as MAX_LD_NODES, wt as JS_NOTICE, x as SCHEMA_ORG_SHA256, xt as APP_ROOT_TAG, y as profileKind, yt as APP_ROOT_IDS, z as CHALLENGE_MARKS } from "./chunks/findings-CTetT2bF.js";
|
|
2
2
|
import { C as classifyAddress, S as systemResolver, _ as NetworkGuardError, a as GENERATE_BUDGET_MS, c as MAX_CRAWL_DELAY_SECONDS, d as REQUEST_TIMEOUT_MS, g as DNS_TIMEOUT_MS, h as CRAWL_PORTS, i as FETCH_LIMITS, l as MAX_HOST_LENGTH, m as createTextFetcher, n as CHECK_BUDGET_MS, o as HOST_INTERVAL_MS, r as CONNECT_TIMEOUT_MS, s as KEPT_HEADERS, t as AI_READINESS_USER_AGENT, u as MAX_REDIRECTS, x as guardedConnector, y as createNetworkGuard } from "./chunks/fetch-text-NUUnM91O.js";
|
|
3
3
|
// src/facts/schema-org-types.ts
|
|
4
4
|
/** Every type of schema.org 30.1 (classes and data types), sorted. */
|
package/dist/net/charset.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Reading a page's bytes as text. One decoder for the library and for
|
|
2
|
+
* Reading a page's bytes as text. One decoder for the library and for any program that uses it,
|
|
3
3
|
* so a page in windows-1251, Shift_JIS, GBK or EUC-KR is counted the same everywhere. The order
|
|
4
4
|
* is the one browsers use, shortened: a byte order mark; the `charset` of the Content-Type
|
|
5
5
|
* header; a `<meta charset>` or `<meta http-equiv="Content-Type">` in the first 2 KiB; else
|
package/dist/run.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as CLI_VERSION, n as runCli } from "./chunks/main-
|
|
1
|
+
export { t as CLI_VERSION, n as runCli } from "./chunks/main-Bd0uzoHe.js";
|
package/package.json
CHANGED
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@queryrev/ai-readiness",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "robots.txt parsing, AI crawler access verdicts, llms.txt checks and a guarded network layer. No model calls.",
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"author": "QueryRev",
|
|
7
|
-
"homepage": "https://queryrev.com/research/ai-search-readiness",
|
|
8
|
-
"repository": {
|
|
9
|
-
"type": "git",
|
|
10
|
-
"url": "git+https://github.com/QueryRevAI/ai-readiness.git"
|
|
11
|
-
},
|
|
12
|
-
"bugs": {
|
|
13
|
-
"url": "https://github.com/QueryRevAI/ai-readiness/issues"
|
|
14
|
-
},
|
|
15
|
-
"keywords": [
|
|
16
|
-
"robots.txt",
|
|
17
|
-
"llms.txt",
|
|
18
|
-
"ai-crawlers",
|
|
19
|
-
"geo",
|
|
20
|
-
"aeo",
|
|
21
|
-
"seo",
|
|
22
|
-
"cli"
|
|
23
|
-
],
|
|
24
|
-
"type": "module",
|
|
25
|
-
"engines": {
|
|
26
|
-
"node": ">=22.19"
|
|
27
|
-
},
|
|
28
|
-
"sideEffects": false,
|
|
29
|
-
"main": "./dist/index.js",
|
|
30
|
-
"types": "./dist/index.d.ts",
|
|
31
|
-
"bin": {
|
|
32
|
-
"ai-readiness": "
|
|
33
|
-
},
|
|
34
|
-
"exports": {
|
|
35
|
-
".": {
|
|
36
|
-
"types": "./dist/index.d.ts",
|
|
37
|
-
"default": "./dist/index.js"
|
|
38
|
-
},
|
|
39
|
-
"./cli": {
|
|
40
|
-
"types": "./dist/net/cli.d.ts",
|
|
41
|
-
"default": "./dist/net-cli.js"
|
|
42
|
-
},
|
|
43
|
-
"./run": {
|
|
44
|
-
"types": "./dist/cli/run.d.ts",
|
|
45
|
-
"default": "./dist/run.js"
|
|
46
|
-
},
|
|
47
|
-
"./testing": {
|
|
48
|
-
"types": "./dist/net/testing/index.d.ts",
|
|
49
|
-
"default": "./dist/testing.js"
|
|
50
|
-
},
|
|
51
|
-
"./package.json": "./package.json"
|
|
52
|
-
},
|
|
53
|
-
"files": [
|
|
54
|
-
"dist",
|
|
55
|
-
"data",
|
|
56
|
-
"README.md",
|
|
57
|
-
"LICENSE",
|
|
58
|
-
"CITATION.cff",
|
|
59
|
-
"SECURITY.md"
|
|
60
|
-
],
|
|
61
|
-
"publishConfig": {
|
|
62
|
-
"access": "public"
|
|
63
|
-
},
|
|
64
|
-
"scripts": {
|
|
65
|
-
"build": "vite build --config vite.build.config.ts && node scripts/build-types.mjs",
|
|
66
|
-
"prepublishOnly": "node scripts/check-publishable.mjs && npm run build",
|
|
67
|
-
"typecheck": "tsc --noEmit",
|
|
68
|
-
"test": "vitest run"
|
|
69
|
-
},
|
|
70
|
-
"dependencies": {
|
|
71
|
-
"undici": "^8.12.3"
|
|
72
|
-
},
|
|
73
|
-
"devDependencies": {
|
|
74
|
-
"@types/node": "^24.0.0",
|
|
75
|
-
"eslint": "^9.39.5",
|
|
76
|
-
"typescript": "~6.0.3",
|
|
77
|
-
"vite": "^8.3.4",
|
|
78
|
-
"vitest": "^5.0.3"
|
|
79
|
-
}
|
|
80
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@queryrev/ai-readiness",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "robots.txt parsing, AI crawler access verdicts, llms.txt checks and a guarded network layer. No model calls.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "QueryRev",
|
|
7
|
+
"homepage": "https://queryrev.com/research/ai-search-readiness",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/QueryRevAI/ai-readiness.git"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/QueryRevAI/ai-readiness/issues"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"robots.txt",
|
|
17
|
+
"llms.txt",
|
|
18
|
+
"ai-crawlers",
|
|
19
|
+
"geo",
|
|
20
|
+
"aeo",
|
|
21
|
+
"seo",
|
|
22
|
+
"cli"
|
|
23
|
+
],
|
|
24
|
+
"type": "module",
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=22.19"
|
|
27
|
+
},
|
|
28
|
+
"sideEffects": false,
|
|
29
|
+
"main": "./dist/index.js",
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"bin": {
|
|
32
|
+
"ai-readiness": "dist/cli.js"
|
|
33
|
+
},
|
|
34
|
+
"exports": {
|
|
35
|
+
".": {
|
|
36
|
+
"types": "./dist/index.d.ts",
|
|
37
|
+
"default": "./dist/index.js"
|
|
38
|
+
},
|
|
39
|
+
"./cli": {
|
|
40
|
+
"types": "./dist/net/cli.d.ts",
|
|
41
|
+
"default": "./dist/net-cli.js"
|
|
42
|
+
},
|
|
43
|
+
"./run": {
|
|
44
|
+
"types": "./dist/cli/run.d.ts",
|
|
45
|
+
"default": "./dist/run.js"
|
|
46
|
+
},
|
|
47
|
+
"./testing": {
|
|
48
|
+
"types": "./dist/net/testing/index.d.ts",
|
|
49
|
+
"default": "./dist/testing.js"
|
|
50
|
+
},
|
|
51
|
+
"./package.json": "./package.json"
|
|
52
|
+
},
|
|
53
|
+
"files": [
|
|
54
|
+
"dist",
|
|
55
|
+
"data",
|
|
56
|
+
"README.md",
|
|
57
|
+
"LICENSE",
|
|
58
|
+
"CITATION.cff",
|
|
59
|
+
"SECURITY.md"
|
|
60
|
+
],
|
|
61
|
+
"publishConfig": {
|
|
62
|
+
"access": "public"
|
|
63
|
+
},
|
|
64
|
+
"scripts": {
|
|
65
|
+
"build": "vite build --config vite.build.config.ts && node scripts/build-types.mjs",
|
|
66
|
+
"prepublishOnly": "node scripts/check-publishable.mjs && npm run build",
|
|
67
|
+
"typecheck": "tsc --noEmit",
|
|
68
|
+
"test": "vitest run --dir src"
|
|
69
|
+
},
|
|
70
|
+
"dependencies": {
|
|
71
|
+
"undici": "^8.12.3"
|
|
72
|
+
},
|
|
73
|
+
"devDependencies": {
|
|
74
|
+
"@types/node": "^24.0.0",
|
|
75
|
+
"eslint": "^9.39.5",
|
|
76
|
+
"typescript": "~6.0.3",
|
|
77
|
+
"vite": "^8.3.4",
|
|
78
|
+
"vitest": "^5.0.3"
|
|
79
|
+
}
|
|
80
|
+
}
|