@rivi-software/agentic-seo-check 0.1.0 → 0.2.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 (144) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +124 -18
  3. package/dist/brand.d.ts +11 -0
  4. package/dist/brand.js +22 -0
  5. package/dist/brand.js.map +1 -0
  6. package/dist/cli.js +174 -86
  7. package/dist/cli.js.map +1 -1
  8. package/dist/core/aeo/audit.d.ts +44 -0
  9. package/dist/core/aeo/audit.js +310 -0
  10. package/dist/core/aeo/audit.js.map +1 -0
  11. package/dist/core/aeo/bots.d.ts +30 -0
  12. package/dist/core/aeo/bots.js +299 -0
  13. package/dist/core/aeo/bots.js.map +1 -0
  14. package/dist/core/aeo/llms-txt.d.ts +8 -0
  15. package/dist/core/aeo/llms-txt.js +88 -0
  16. package/dist/core/aeo/llms-txt.js.map +1 -0
  17. package/dist/core/aeo/page.d.ts +53 -0
  18. package/dist/core/aeo/page.js +312 -0
  19. package/dist/core/aeo/page.js.map +1 -0
  20. package/dist/core/aeo/probe.d.ts +10 -0
  21. package/dist/core/aeo/probe.js +53 -0
  22. package/dist/core/aeo/probe.js.map +1 -0
  23. package/dist/core/aeo/site-rules.d.ts +13 -0
  24. package/dist/core/aeo/site-rules.js +178 -0
  25. package/dist/core/aeo/site-rules.js.map +1 -0
  26. package/dist/core/audit.d.ts +37 -16
  27. package/dist/core/audit.js +389 -249
  28. package/dist/core/audit.js.map +1 -1
  29. package/dist/core/concurrency.d.ts +4 -4
  30. package/dist/core/concurrency.js +33 -23
  31. package/dist/core/concurrency.js.map +1 -1
  32. package/dist/core/crawl.d.ts +9 -5
  33. package/dist/core/crawl.js +271 -123
  34. package/dist/core/crawl.js.map +1 -1
  35. package/dist/core/fetch.d.ts +5 -5
  36. package/dist/core/fetch.js +151 -100
  37. package/dist/core/fetch.js.map +1 -1
  38. package/dist/core/html/answer.d.ts +4 -0
  39. package/dist/core/html/answer.js +198 -0
  40. package/dist/core/html/answer.js.map +1 -0
  41. package/dist/core/html/dom.d.ts +17 -0
  42. package/dist/core/html/dom.js +83 -0
  43. package/dist/core/html/dom.js.map +1 -0
  44. package/dist/core/html/extract.d.ts +2 -2
  45. package/dist/core/html/extract.js +102 -111
  46. package/dist/core/html/extract.js.map +1 -1
  47. package/dist/core/html/structured-data.d.ts +16 -6
  48. package/dist/core/html/structured-data.js +180 -145
  49. package/dist/core/html/structured-data.js.map +1 -1
  50. package/dist/core/html/text.d.ts +14 -14
  51. package/dist/core/html/text.js +110 -107
  52. package/dist/core/html/text.js.map +1 -1
  53. package/dist/core/lighthouse.d.ts +26 -25
  54. package/dist/core/lighthouse.js +181 -105
  55. package/dist/core/lighthouse.js.map +1 -1
  56. package/dist/core/performance-rules.d.ts +2 -2
  57. package/dist/core/performance-rules.js +105 -33
  58. package/dist/core/performance-rules.js.map +1 -1
  59. package/dist/core/render-rules.d.ts +5 -4
  60. package/dist/core/render-rules.js +129 -62
  61. package/dist/core/render-rules.js.map +1 -1
  62. package/dist/core/render.d.ts +2 -2
  63. package/dist/core/render.js +29 -23
  64. package/dist/core/render.js.map +1 -1
  65. package/dist/core/report/markdown.d.ts +4 -2
  66. package/dist/core/report/markdown.js +210 -129
  67. package/dist/core/report/markdown.js.map +1 -1
  68. package/dist/core/robots.d.ts +12 -5
  69. package/dist/core/robots.js +43 -17
  70. package/dist/core/robots.js.map +1 -1
  71. package/dist/core/rules/aeo.d.ts +11 -0
  72. package/dist/core/rules/aeo.js +423 -0
  73. package/dist/core/rules/aeo.js.map +1 -0
  74. package/dist/core/rules/canonical.d.ts +1 -1
  75. package/dist/core/rules/canonical.js +93 -57
  76. package/dist/core/rules/canonical.js.map +1 -1
  77. package/dist/core/rules/content.js +40 -26
  78. package/dist/core/rules/content.js.map +1 -1
  79. package/dist/core/rules/document.js +64 -41
  80. package/dist/core/rules/document.js.map +1 -1
  81. package/dist/core/rules/headings.js +58 -38
  82. package/dist/core/rules/headings.js.map +1 -1
  83. package/dist/core/rules/hreflang.js +70 -38
  84. package/dist/core/rules/hreflang.js.map +1 -1
  85. package/dist/core/rules/images.js +44 -26
  86. package/dist/core/rules/images.js.map +1 -1
  87. package/dist/core/rules/index.d.ts +10 -6
  88. package/dist/core/rules/index.js +43 -36
  89. package/dist/core/rules/index.js.map +1 -1
  90. package/dist/core/rules/indexing.d.ts +2 -2
  91. package/dist/core/rules/indexing.js +48 -26
  92. package/dist/core/rules/indexing.js.map +1 -1
  93. package/dist/core/rules/keyword.js +84 -47
  94. package/dist/core/rules/keyword.js.map +1 -1
  95. package/dist/core/rules/links.js +72 -37
  96. package/dist/core/rules/links.js.map +1 -1
  97. package/dist/core/rules/meta.js +55 -34
  98. package/dist/core/rules/meta.js.map +1 -1
  99. package/dist/core/rules/response.js +75 -41
  100. package/dist/core/rules/response.js.map +1 -1
  101. package/dist/core/rules/rule.d.ts +6 -6
  102. package/dist/core/rules/rule.js +36 -36
  103. package/dist/core/rules/rule.js.map +1 -1
  104. package/dist/core/rules/social.js +86 -45
  105. package/dist/core/rules/social.js.map +1 -1
  106. package/dist/core/rules/structured-data.d.ts +6 -4
  107. package/dist/core/rules/structured-data.js +314 -102
  108. package/dist/core/rules/structured-data.js.map +1 -1
  109. package/dist/core/rules/title.js +48 -33
  110. package/dist/core/rules/title.js.map +1 -1
  111. package/dist/core/score.d.ts +5 -3
  112. package/dist/core/score.js +11 -9
  113. package/dist/core/score.js.map +1 -1
  114. package/dist/core/site-rules.d.ts +3 -3
  115. package/dist/core/site-rules.js +409 -198
  116. package/dist/core/site-rules.js.map +1 -1
  117. package/dist/core/sitemap.d.ts +5 -5
  118. package/dist/core/sitemap.js +109 -64
  119. package/dist/core/sitemap.js.map +1 -1
  120. package/dist/core/static.d.ts +2 -2
  121. package/dist/core/static.js +210 -112
  122. package/dist/core/static.js.map +1 -1
  123. package/dist/core/summary.d.ts +2 -2
  124. package/dist/core/summary.js +11 -6
  125. package/dist/core/summary.js.map +1 -1
  126. package/dist/core/types.d.ts +189 -14
  127. package/dist/core/types.js +15 -8
  128. package/dist/core/types.js.map +1 -1
  129. package/dist/core/url.d.ts +11 -11
  130. package/dist/core/url.js +122 -70
  131. package/dist/core/url.js.map +1 -1
  132. package/dist/index.d.ts +15 -11
  133. package/dist/index.js +11 -9
  134. package/dist/index.js.map +1 -1
  135. package/dist/mcp-bin.js +7 -4
  136. package/dist/mcp-bin.js.map +1 -1
  137. package/dist/mcp.d.ts +3 -3
  138. package/dist/mcp.js +437 -121
  139. package/dist/mcp.js.map +1 -1
  140. package/dist/version.d.ts +0 -1
  141. package/dist/version.js +4 -2
  142. package/dist/version.js.map +1 -1
  143. package/package.json +32 -10
  144. package/skills/seo-audit/SKILL.md +8 -2
@@ -1,7 +1,7 @@
1
- import { type ProgressEvent } from './crawl.js';
2
- import { type FetchOptions } from './fetch.js';
3
- import { type Audit, type IssueRollup, type PageAudit, type PageSource, type ResponseInfo, type SiteAudit, type Thresholds } from './types.js';
4
- export type { ProgressEvent } from './crawl.js';
1
+ import type { ProgressEvent } from "./crawl.js";
2
+ import type { FetchOptions } from "./fetch.js";
3
+ import type { Audit, Finding, IssueRollup, PageAudit, PageSource, ResponseInfo, SiteAudit, Thresholds } from "./types.js";
4
+ export type { ProgressEvent } from "./crawl.js";
5
5
  export interface AuditOptions {
6
6
  /** Target keyword/phrase for the keyword.* rules. */
7
7
  keyword?: string;
@@ -9,7 +9,7 @@ export interface AuditOptions {
9
9
  render?: boolean;
10
10
  /** Run Lighthouse (performance + SEO + agentic-browsing categories). */
11
11
  lighthouse?: boolean;
12
- formFactor?: 'mobile' | 'desktop';
12
+ formFactor?: "mobile" | "desktop";
13
13
  /** Include info-level findings (default true). */
14
14
  includeInfo?: boolean;
15
15
  /** Rule ids to skip. */
@@ -32,7 +32,7 @@ export interface CrawlOptions extends AuditOptions {
32
32
  includePatterns?: string[];
33
33
  excludePatterns?: string[];
34
34
  /** How much per-page detail to keep in the site result. */
35
- pageDetail?: 'full' | 'summary';
35
+ pageDetail?: "full" | "summary";
36
36
  }
37
37
  export interface HtmlAuditInput {
38
38
  url?: string;
@@ -48,25 +48,46 @@ export declare const DEFAULT_CRAWL: {
48
48
  readonly delayMs: 0;
49
49
  readonly maxLinkChecks: 200;
50
50
  };
51
+ export declare const rollupIssues: (pages: Pick<PageAudit, "url" | "findings">[]) => IssueRollup[];
52
+ export declare const recomputeSite: (site: SiteAudit) => void;
51
53
  /** Audit an HTML string. `url` is used to resolve links and for display. */
52
- export declare function auditHtml(html: string, input?: HtmlAuditInput, options?: AuditOptions): Promise<PageAudit>;
54
+ export declare const auditHtml: (html: string, input?: HtmlAuditInput, options?: AuditOptions) => Promise<PageAudit>;
53
55
  /** Fetch and audit one URL. Optionally render and/or run Lighthouse. */
54
- export declare function auditUrl(url: string, options?: AuditOptions): Promise<PageAudit>;
56
+ export declare const auditUrl: (url: string, options?: AuditOptions) => Promise<PageAudit>;
55
57
  /** Audit a single .html file from disk. */
56
- export declare function auditFile(filePath: string, options?: AuditOptions): Promise<PageAudit>;
58
+ export declare const auditFile: (filePath: string, options?: AuditOptions) => Promise<PageAudit>;
57
59
  /** Crawl a site and audit every page plus site-level checks. */
58
- export declare function auditSite(startUrl: string, options?: CrawlOptions): Promise<SiteAudit>;
60
+ export declare const auditSite: (startUrl: string, options?: CrawlOptions) => Promise<SiteAudit>;
59
61
  /** Audit a directory of built HTML files (dist/, out/, build/). */
60
- export declare function auditDirectory(dir: string, options?: CrawlOptions): Promise<SiteAudit>;
62
+ export declare const auditDirectory: (dir: string, options?: CrawlOptions) => Promise<SiteAudit>;
63
+ export type ResolvedTarget = {
64
+ kind: "stdin";
65
+ } | {
66
+ kind: "url";
67
+ url: string;
68
+ } | {
69
+ kind: "directory";
70
+ path: string;
71
+ } | {
72
+ kind: "file";
73
+ path: string;
74
+ };
75
+ /**
76
+ * What a target names: "-" for stdin, an http(s) URL, a bare host such as `example.com/page` or
77
+ * `localhost:3000`, a directory or a file.
78
+ */
79
+ export declare const resolveTarget: (target: string) => Promise<ResolvedTarget>;
80
+ /** HTML piped to the process. */
81
+ export declare const readStdin: () => Promise<string>;
61
82
  /**
62
83
  * Auto-detect the target type: http(s) URL, directory, .html file, or "-" for stdin.
63
84
  * `crawl` forces a site crawl for URLs.
64
85
  */
65
- export declare function auditTarget(target: string, options?: CrawlOptions & {
86
+ export declare const auditTarget: (target: string, options?: CrawlOptions & {
66
87
  crawl?: boolean;
67
88
  stdinHtml?: string;
68
- }): Promise<Audit>;
69
- export declare function recomputeSite(site: SiteAudit): void;
70
- export declare function rollupIssues(pages: PageAudit[]): IssueRollup[];
89
+ }) => Promise<Audit>;
90
+ /** Keeps the first three items of every evidence list. */
91
+ export declare const trimFinding: (f: Finding) => Finding;
71
92
  /** Drop bulky, low-value fields to save tokens when the result is consumed by an LLM. */
72
- export declare function compactAudit<T extends Audit>(audit: T): T;
93
+ export declare const compactAudit: <T extends Audit>(audit: T) => T;