@houtini/seo-audit-console 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 (166) hide show
  1. package/LICENSE +92 -0
  2. package/README.md +211 -0
  3. package/dist/audit/checks.d.ts +35 -0
  4. package/dist/audit/checks.d.ts.map +1 -0
  5. package/dist/audit/checks.js +1475 -0
  6. package/dist/audit/checks.js.map +1 -0
  7. package/dist/audit/drift.d.ts +40 -0
  8. package/dist/audit/drift.d.ts.map +1 -0
  9. package/dist/audit/drift.js +148 -0
  10. package/dist/audit/drift.js.map +1 -0
  11. package/dist/audit/engine.d.ts +33 -0
  12. package/dist/audit/engine.d.ts.map +1 -0
  13. package/dist/audit/engine.js +186 -0
  14. package/dist/audit/engine.js.map +1 -0
  15. package/dist/audit/opportunities.d.ts +23 -0
  16. package/dist/audit/opportunities.d.ts.map +1 -0
  17. package/dist/audit/opportunities.js +149 -0
  18. package/dist/audit/opportunities.js.map +1 -0
  19. package/dist/audit/report.d.ts +11 -0
  20. package/dist/audit/report.d.ts.map +1 -0
  21. package/dist/audit/report.js +59 -0
  22. package/dist/audit/report.js.map +1 -0
  23. package/dist/audit/schema-validate.d.ts +35 -0
  24. package/dist/audit/schema-validate.d.ts.map +1 -0
  25. package/dist/audit/schema-validate.js +293 -0
  26. package/dist/audit/schema-validate.js.map +1 -0
  27. package/dist/audit/templates.d.ts +43 -0
  28. package/dist/audit/templates.d.ts.map +1 -0
  29. package/dist/audit/templates.js +129 -0
  30. package/dist/audit/templates.js.map +1 -0
  31. package/dist/audit/topicGaps.d.ts +42 -0
  32. package/dist/audit/topicGaps.d.ts.map +1 -0
  33. package/dist/audit/topicGaps.js +181 -0
  34. package/dist/audit/topicGaps.js.map +1 -0
  35. package/dist/core/AuditDatabase.d.ts +33 -0
  36. package/dist/core/AuditDatabase.d.ts.map +1 -0
  37. package/dist/core/AuditDatabase.js +481 -0
  38. package/dist/core/AuditDatabase.js.map +1 -0
  39. package/dist/core/Backlinks.d.ts +33 -0
  40. package/dist/core/Backlinks.d.ts.map +1 -0
  41. package/dist/core/Backlinks.js +110 -0
  42. package/dist/core/Backlinks.js.map +1 -0
  43. package/dist/core/Crawler.d.ts +23 -0
  44. package/dist/core/Crawler.d.ts.map +1 -0
  45. package/dist/core/Crawler.js +588 -0
  46. package/dist/core/Crawler.js.map +1 -0
  47. package/dist/core/DataForSeoClient.d.ts +86 -0
  48. package/dist/core/DataForSeoClient.d.ts.map +1 -0
  49. package/dist/core/DataForSeoClient.js +232 -0
  50. package/dist/core/DataForSeoClient.js.map +1 -0
  51. package/dist/core/Entities.d.ts +23 -0
  52. package/dist/core/Entities.d.ts.map +1 -0
  53. package/dist/core/Entities.js +62 -0
  54. package/dist/core/Entities.js.map +1 -0
  55. package/dist/core/GscClient.d.ts +22 -0
  56. package/dist/core/GscClient.d.ts.map +1 -0
  57. package/dist/core/GscClient.js +93 -0
  58. package/dist/core/GscClient.js.map +1 -0
  59. package/dist/core/GscSync.d.ts +20 -0
  60. package/dist/core/GscSync.d.ts.map +1 -0
  61. package/dist/core/GscSync.js +133 -0
  62. package/dist/core/GscSync.js.map +1 -0
  63. package/dist/core/JobManager.d.ts +30 -0
  64. package/dist/core/JobManager.d.ts.map +1 -0
  65. package/dist/core/JobManager.js +68 -0
  66. package/dist/core/JobManager.js.map +1 -0
  67. package/dist/core/RankTracker.d.ts +25 -0
  68. package/dist/core/RankTracker.d.ts.map +1 -0
  69. package/dist/core/RankTracker.js +78 -0
  70. package/dist/core/RankTracker.js.map +1 -0
  71. package/dist/core/Refresh.d.ts +32 -0
  72. package/dist/core/Refresh.d.ts.map +1 -0
  73. package/dist/core/Refresh.js +73 -0
  74. package/dist/core/Refresh.js.map +1 -0
  75. package/dist/core/UrlInspector.d.ts +22 -0
  76. package/dist/core/UrlInspector.d.ts.map +1 -0
  77. package/dist/core/UrlInspector.js +92 -0
  78. package/dist/core/UrlInspector.js.map +1 -0
  79. package/dist/core/WikidataClient.d.ts +19 -0
  80. package/dist/core/WikidataClient.d.ts.map +1 -0
  81. package/dist/core/WikidataClient.js +59 -0
  82. package/dist/core/WikidataClient.js.map +1 -0
  83. package/dist/core/agentReadiness.d.ts +34 -0
  84. package/dist/core/agentReadiness.d.ts.map +1 -0
  85. package/dist/core/agentReadiness.js +119 -0
  86. package/dist/core/agentReadiness.js.map +1 -0
  87. package/dist/core/ctrModel.d.ts +2 -0
  88. package/dist/core/ctrModel.d.ts.map +1 -0
  89. package/dist/core/ctrModel.js +6 -0
  90. package/dist/core/ctrModel.js.map +1 -0
  91. package/dist/core/dashboardData.d.ts +312 -0
  92. package/dist/core/dashboardData.d.ts.map +1 -0
  93. package/dist/core/dashboardData.js +550 -0
  94. package/dist/core/dashboardData.js.map +1 -0
  95. package/dist/core/dataStorage.d.ts +42 -0
  96. package/dist/core/dataStorage.d.ts.map +1 -0
  97. package/dist/core/dataStorage.js +193 -0
  98. package/dist/core/dataStorage.js.map +1 -0
  99. package/dist/core/draftBrief.d.ts +27 -0
  100. package/dist/core/draftBrief.d.ts.map +1 -0
  101. package/dist/core/draftBrief.js +69 -0
  102. package/dist/core/draftBrief.js.map +1 -0
  103. package/dist/core/extract.d.ts +67 -0
  104. package/dist/core/extract.d.ts.map +1 -0
  105. package/dist/core/extract.js +262 -0
  106. package/dist/core/extract.js.map +1 -0
  107. package/dist/core/gscFreshness.d.ts +18 -0
  108. package/dist/core/gscFreshness.d.ts.map +1 -0
  109. package/dist/core/gscFreshness.js +32 -0
  110. package/dist/core/gscFreshness.js.map +1 -0
  111. package/dist/core/linkGraph.d.ts +19 -0
  112. package/dist/core/linkGraph.d.ts.map +1 -0
  113. package/dist/core/linkGraph.js +125 -0
  114. package/dist/core/linkGraph.js.map +1 -0
  115. package/dist/core/passageScore.d.ts +19 -0
  116. package/dist/core/passageScore.d.ts.map +1 -0
  117. package/dist/core/passageScore.js +59 -0
  118. package/dist/core/passageScore.js.map +1 -0
  119. package/dist/core/paths.d.ts +5 -0
  120. package/dist/core/paths.d.ts.map +1 -0
  121. package/dist/core/paths.js +15 -0
  122. package/dist/core/paths.js.map +1 -0
  123. package/dist/core/queryData.d.ts +35 -0
  124. package/dist/core/queryData.d.ts.map +1 -0
  125. package/dist/core/queryData.js +200 -0
  126. package/dist/core/queryData.js.map +1 -0
  127. package/dist/core/reranker.d.ts +8 -0
  128. package/dist/core/reranker.d.ts.map +1 -0
  129. package/dist/core/reranker.js +68 -0
  130. package/dist/core/reranker.js.map +1 -0
  131. package/dist/core/robots.d.ts +11 -0
  132. package/dist/core/robots.d.ts.map +1 -0
  133. package/dist/core/robots.js +76 -0
  134. package/dist/core/robots.js.map +1 -0
  135. package/dist/core/sitemap.d.ts +15 -0
  136. package/dist/core/sitemap.d.ts.map +1 -0
  137. package/dist/core/sitemap.js +100 -0
  138. package/dist/core/sitemap.js.map +1 -0
  139. package/dist/core/sql.d.ts +6 -0
  140. package/dist/core/sql.d.ts.map +1 -0
  141. package/dist/core/sql.js +6 -0
  142. package/dist/core/sql.js.map +1 -0
  143. package/dist/core/types.d.ts +22 -0
  144. package/dist/core/types.d.ts.map +1 -0
  145. package/dist/core/types.js +2 -0
  146. package/dist/core/types.js.map +1 -0
  147. package/dist/core/url-key.d.ts +39 -0
  148. package/dist/core/url-key.d.ts.map +1 -0
  149. package/dist/core/url-key.js +106 -0
  150. package/dist/core/url-key.js.map +1 -0
  151. package/dist/generators/index.d.ts +45 -0
  152. package/dist/generators/index.d.ts.map +1 -0
  153. package/dist/generators/index.js +184 -0
  154. package/dist/generators/index.js.map +1 -0
  155. package/dist/index.d.ts +3 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +10 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/server.d.ts +7 -0
  160. package/dist/server.d.ts.map +1 -0
  161. package/dist/server.js +1387 -0
  162. package/dist/server.js.map +1 -0
  163. package/dist/src/ui/dashboard.html +347 -0
  164. package/dist/src/ui/sync-progress.html +104 -0
  165. package/package.json +101 -0
  166. package/server.json +57 -0
package/package.json ADDED
@@ -0,0 +1,101 @@
1
+ {
2
+ "name": "@houtini/seo-audit-console",
3
+ "version": "0.2.0",
4
+ "mcpName": "io.github.houtini-ai/seo-audit-console",
5
+ "description": "The complete technical SEO audit at conversation speed: Google Search Console history + a first-party crawl + on-demand DataForSEO, merged into one prioritised audit inside Claude - 90 checks ranked by recoverable clicks, with paste-ready fixes, keyword and content-gap research, and AI-search readiness.",
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "bin": {
9
+ "seo-audit-console": "dist/index.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "server.json",
14
+ "README.md",
15
+ "LICENSE"
16
+ ],
17
+ "author": "Richard Baxter <hello@houtini.com>",
18
+ "license": "SEE LICENSE IN LICENSE",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/houtini-ai/seo-audit.git"
22
+ },
23
+ "keywords": [
24
+ "seo",
25
+ "technical-seo",
26
+ "seo-audit",
27
+ "search-console",
28
+ "google-search-console",
29
+ "crawler",
30
+ "site-audit",
31
+ "dataforseo",
32
+ "keyword-research",
33
+ "content-gap",
34
+ "mcp",
35
+ "mcp-server",
36
+ "model-context-protocol",
37
+ "claude",
38
+ "ai-search",
39
+ "structured-data",
40
+ "core-web-vitals"
41
+ ],
42
+ "scripts": {
43
+ "build:server": "tsc -p tsconfig.server.json",
44
+ "build:ui:dashboard": "cross-env INPUT=src/ui/dashboard.html vite build",
45
+ "build:ui:sync": "cross-env INPUT=src/ui/sync-progress.html vite build",
46
+ "build:ui": "npm run build:ui:dashboard && npm run build:ui:sync",
47
+ "build": "npm run build:server && npm run build:ui",
48
+ "dev": "tsc -p tsconfig.server.json --watch",
49
+ "start": "node dist/index.js",
50
+ "test": "npm run build:server && npm run smoke",
51
+ "smoke": "node scripts/smoke.mjs",
52
+ "probe:crawl": "node scripts/probe-crawl.mjs",
53
+ "qa:crawl": "node scripts/qa-crawl.mjs",
54
+ "probe:gsc": "node scripts/probe-gsc.mjs",
55
+ "probe:fixfinding": "node scripts/probe-fixfinding.mjs",
56
+ "probe:schema": "node scripts/probe-schema.mjs",
57
+ "probe:extract": "node scripts/probe-extract.mjs",
58
+ "probe:extract2": "node scripts/probe-extract2.mjs",
59
+ "probe:backlinks": "node scripts/probe-backlinks.mjs",
60
+ "probe:dfs-labs": "node scripts/probe-dfs-labs.mjs",
61
+ "probe:6a": "node scripts/probe-6a.mjs",
62
+ "probe:priority": "node scripts/probe-priority.mjs",
63
+ "probe:templates": "node scripts/probe-templates.mjs",
64
+ "probe:6b": "node scripts/probe-6b.mjs",
65
+ "probe:6c": "node scripts/probe-6c.mjs",
66
+ "probe:6d": "node scripts/probe-6d.mjs",
67
+ "probe:migrate": "node scripts/probe-migrate.mjs",
68
+ "probe:boot": "node scripts/probe-boot.mjs",
69
+ "clean": "rimraf dist",
70
+ "prepublishOnly": "npm run clean && npm run build"
71
+ },
72
+ "engines": {
73
+ "node": ">=20.0.0"
74
+ },
75
+ "dependencies": {
76
+ "@huggingface/transformers": "^4.2.0",
77
+ "@modelcontextprotocol/ext-apps": "^1.7.4",
78
+ "@modelcontextprotocol/sdk": "^1.29.0",
79
+ "better-sqlite3": "^12.11.1",
80
+ "cheerio": "^1.0.0",
81
+ "echarts": "^6.0.0",
82
+ "googleapis": "^173.0.0",
83
+ "undici": "^8.7.0",
84
+ "zod": "^3.25.1"
85
+ },
86
+ "devDependencies": {
87
+ "@fontsource-variable/jetbrains-mono": "^5.2.8",
88
+ "@fontsource-variable/schibsted-grotesk": "^5.2.8",
89
+ "@types/better-sqlite3": "^7.6.13",
90
+ "@types/node": "^20.11.0",
91
+ "cross-env": "^10.1.0",
92
+ "rimraf": "^6.0.1",
93
+ "typescript": "^5.9.3",
94
+ "vite": "^6.4.1",
95
+ "vite-plugin-singlefile": "^2.3.3"
96
+ },
97
+ "homepage": "https://github.com/houtini-ai/seo-audit#readme",
98
+ "bugs": {
99
+ "url": "https://github.com/houtini-ai/seo-audit/issues"
100
+ }
101
+ }
package/server.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.houtini-ai/seo-audit-console",
4
+ "description": "The complete technical SEO audit at conversation speed: Google Search Console history + a first-party crawl + on-demand DataForSEO, merged into one prioritised audit - 93 checks ranked by recoverable clicks, paste-ready fixes, keyword and content-gap research, AI-search readiness.",
5
+ "repository": {
6
+ "url": "https://github.com/houtini-ai/seo-audit",
7
+ "source": "github"
8
+ },
9
+ "version": "0.2.0",
10
+ "packages": [
11
+ {
12
+ "registryType": "npm",
13
+ "identifier": "@houtini/seo-audit-console",
14
+ "version": "0.2.0",
15
+ "transport": {
16
+ "type": "stdio"
17
+ },
18
+ "environmentVariables": [
19
+ {
20
+ "name": "GOOGLE_APPLICATION_CREDENTIALS",
21
+ "description": "Path to the Google service-account JSON key with Search Console access.",
22
+ "isRequired": true,
23
+ "format": "string",
24
+ "isSecret": false
25
+ },
26
+ {
27
+ "name": "SAC_DATA_DIR",
28
+ "description": "Directory for per-property SQLite databases and reports. Defaults to ~/Documents/seo-audit-console.",
29
+ "isRequired": false,
30
+ "format": "string",
31
+ "isSecret": false
32
+ },
33
+ {
34
+ "name": "DATAFORSEO_USERNAME",
35
+ "description": "DataForSEO API username (optional, enables SERP/keyword/domain checks).",
36
+ "isRequired": false,
37
+ "format": "string",
38
+ "isSecret": false
39
+ },
40
+ {
41
+ "name": "DATAFORSEO_PASSWORD",
42
+ "description": "DataForSEO API password (optional).",
43
+ "isRequired": false,
44
+ "format": "string",
45
+ "isSecret": true
46
+ },
47
+ {
48
+ "name": "DATAFORSEO_CACHE_DAYS",
49
+ "description": "TTL for the DataForSEO response cache. Default 20.",
50
+ "isRequired": false,
51
+ "format": "string",
52
+ "isSecret": false
53
+ }
54
+ ]
55
+ }
56
+ ]
57
+ }