@houtini/seo-audit-console 0.7.8 → 0.8.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.
package/package.json CHANGED
@@ -1,107 +1,108 @@
1
- {
2
- "name": "@houtini/seo-audit-console",
3
- "version": "0.7.8",
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": "Apache-2.0",
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
- "build:mcpb": "npm run build && node scripts/build-mcpb.mjs",
49
- "dev": "tsc -p tsconfig.server.json --watch",
50
- "start": "node dist/index.js",
51
- "test": "npm run build:server && npm run smoke",
52
- "smoke": "node scripts/smoke.mjs",
53
- "probe:crawl": "node scripts/probe-crawl.mjs",
54
- "qa:crawl": "node scripts/qa-crawl.mjs",
55
- "probe:gsc": "node scripts/probe-gsc.mjs",
56
- "probe:fixfinding": "node scripts/probe-fixfinding.mjs",
57
- "probe:schema": "node scripts/probe-schema.mjs",
58
- "probe:schema-rules": "node scripts/probe-schema-rules.mjs",
59
- "probe:extract": "node scripts/probe-extract.mjs",
60
- "probe:extract2": "node scripts/probe-extract2.mjs",
61
- "probe:backlinks": "node scripts/probe-backlinks.mjs",
62
- "probe:dfs-labs": "node scripts/probe-dfs-labs.mjs",
63
- "probe:6a": "node scripts/probe-6a.mjs",
64
- "probe:priority": "node scripts/probe-priority.mjs",
65
- "probe:templates": "node scripts/probe-templates.mjs",
66
- "probe:6b": "node scripts/probe-6b.mjs",
67
- "probe:6c": "node scripts/probe-6c.mjs",
68
- "probe:6d": "node scripts/probe-6d.mjs",
69
- "probe:migrate": "node scripts/probe-migrate.mjs",
70
- "probe:boot": "node scripts/probe-boot.mjs",
71
- "probe:drift-fixes": "node scripts/probe-drift-fixes.mjs",
72
- "probe:majestic": "node scripts/probe-majestic.mjs",
73
- "clean": "rimraf dist",
74
- "prepublishOnly": "npm run clean && npm run build"
75
- },
76
- "engines": {
77
- "node": ">=20.0.0"
78
- },
79
- "dependencies": {
80
- "@fontsource-variable/rubik": "^5.3.0",
81
- "@fontsource-variable/work-sans": "^5.3.0",
82
- "@huggingface/transformers": "^4.2.0",
83
- "@modelcontextprotocol/ext-apps": "^1.7.4",
84
- "@modelcontextprotocol/sdk": "^1.29.0",
85
- "better-sqlite3": "^12.11.1",
86
- "cheerio": "^1.0.0",
87
- "echarts": "^6.0.0",
88
- "googleapis": "^173.0.0",
89
- "undici": "^8.7.0",
90
- "zod": "^3.25.1"
91
- },
92
- "devDependencies": {
93
- "@fontsource-variable/jetbrains-mono": "^5.2.8",
94
- "@fontsource-variable/schibsted-grotesk": "^5.2.8",
95
- "@types/better-sqlite3": "^7.6.13",
96
- "@types/node": "^20.11.0",
97
- "cross-env": "^10.1.0",
98
- "rimraf": "^6.0.1",
99
- "typescript": "^5.9.3",
100
- "vite": "^6.4.1",
101
- "vite-plugin-singlefile": "^2.3.3"
102
- },
103
- "homepage": "https://github.com/houtini-ai/seo-audit#readme",
104
- "bugs": {
105
- "url": "https://github.com/houtini-ai/seo-audit/issues"
106
- }
107
- }
1
+ {
2
+ "name": "@houtini/seo-audit-console",
3
+ "version": "0.8.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
+ "seo-audit-dashboard": "dist/dashboard.js"
11
+ },
12
+ "files": [
13
+ "dist",
14
+ "server.json",
15
+ "README.md",
16
+ "LICENSE"
17
+ ],
18
+ "author": "Richard Baxter <hello@houtini.com>",
19
+ "license": "Apache-2.0",
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/houtini-ai/seo-audit.git"
23
+ },
24
+ "keywords": [
25
+ "seo",
26
+ "technical-seo",
27
+ "seo-audit",
28
+ "search-console",
29
+ "google-search-console",
30
+ "crawler",
31
+ "site-audit",
32
+ "dataforseo",
33
+ "keyword-research",
34
+ "content-gap",
35
+ "mcp",
36
+ "mcp-server",
37
+ "model-context-protocol",
38
+ "claude",
39
+ "ai-search",
40
+ "structured-data",
41
+ "core-web-vitals"
42
+ ],
43
+ "scripts": {
44
+ "build:server": "tsc -p tsconfig.server.json",
45
+ "build:ui:dashboard": "cross-env INPUT=src/ui/dashboard.html vite build",
46
+ "build:ui:sync": "cross-env INPUT=src/ui/sync-progress.html vite build",
47
+ "build:ui": "npm run build:ui:dashboard && npm run build:ui:sync",
48
+ "build": "npm run build:server && npm run build:ui",
49
+ "build:mcpb": "npm run build && node scripts/build-mcpb.mjs",
50
+ "dev": "tsc -p tsconfig.server.json --watch",
51
+ "start": "node dist/index.js",
52
+ "test": "npm run build:server && npm run smoke",
53
+ "smoke": "node scripts/smoke.mjs",
54
+ "probe:crawl": "node scripts/probe-crawl.mjs",
55
+ "qa:crawl": "node scripts/qa-crawl.mjs",
56
+ "probe:gsc": "node scripts/probe-gsc.mjs",
57
+ "probe:fixfinding": "node scripts/probe-fixfinding.mjs",
58
+ "probe:schema": "node scripts/probe-schema.mjs",
59
+ "probe:schema-rules": "node scripts/probe-schema-rules.mjs",
60
+ "probe:extract": "node scripts/probe-extract.mjs",
61
+ "probe:extract2": "node scripts/probe-extract2.mjs",
62
+ "probe:backlinks": "node scripts/probe-backlinks.mjs",
63
+ "probe:dfs-labs": "node scripts/probe-dfs-labs.mjs",
64
+ "probe:6a": "node scripts/probe-6a.mjs",
65
+ "probe:priority": "node scripts/probe-priority.mjs",
66
+ "probe:templates": "node scripts/probe-templates.mjs",
67
+ "probe:6b": "node scripts/probe-6b.mjs",
68
+ "probe:6c": "node scripts/probe-6c.mjs",
69
+ "probe:6d": "node scripts/probe-6d.mjs",
70
+ "probe:migrate": "node scripts/probe-migrate.mjs",
71
+ "probe:boot": "node scripts/probe-boot.mjs",
72
+ "probe:drift-fixes": "node scripts/probe-drift-fixes.mjs",
73
+ "probe:majestic": "node scripts/probe-majestic.mjs",
74
+ "clean": "rimraf dist",
75
+ "prepublishOnly": "npm run clean && npm run build"
76
+ },
77
+ "engines": {
78
+ "node": ">=20.0.0"
79
+ },
80
+ "dependencies": {
81
+ "@fontsource-variable/rubik": "^5.3.0",
82
+ "@fontsource-variable/work-sans": "^5.3.0",
83
+ "@huggingface/transformers": "^4.2.0",
84
+ "@modelcontextprotocol/ext-apps": "^1.7.4",
85
+ "@modelcontextprotocol/sdk": "^1.29.0",
86
+ "better-sqlite3": "^12.11.1",
87
+ "cheerio": "^1.0.0",
88
+ "echarts": "^6.0.0",
89
+ "googleapis": "^173.0.0",
90
+ "undici": "^8.7.0",
91
+ "zod": "^3.25.1"
92
+ },
93
+ "devDependencies": {
94
+ "@fontsource-variable/jetbrains-mono": "^5.2.8",
95
+ "@fontsource-variable/schibsted-grotesk": "^5.2.8",
96
+ "@types/better-sqlite3": "^7.6.13",
97
+ "@types/node": "^20.11.0",
98
+ "cross-env": "^10.1.0",
99
+ "rimraf": "^6.0.1",
100
+ "typescript": "^5.9.3",
101
+ "vite": "^6.4.1",
102
+ "vite-plugin-singlefile": "^2.3.3"
103
+ },
104
+ "homepage": "https://github.com/houtini-ai/seo-audit#readme",
105
+ "bugs": {
106
+ "url": "https://github.com/houtini-ai/seo-audit/issues"
107
+ }
108
+ }
package/server.json CHANGED
@@ -1,85 +1,85 @@
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": "Technical SEO in Claude: GSC + crawl + DataForSEO - audit, market sizing, content recon.",
5
- "repository": {
6
- "url": "https://github.com/houtini-ai/seo-audit",
7
- "source": "github"
8
- },
9
- "version": "0.7.8",
10
- "packages": [
11
- {
12
- "registryType": "npm",
13
- "identifier": "@houtini/seo-audit-console",
14
- "version": "0.7.8",
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/market/recon 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
- "name": "FIRECRAWL_API_KEY",
56
- "description": "Firecrawl API key (optional). Lets content recon scrape competitor pages. Get one at https://firecrawl.link/2d1PLD8",
57
- "isRequired": false,
58
- "format": "string",
59
- "isSecret": true
60
- },
61
- {
62
- "name": "SUPADATA_API_KEY",
63
- "description": "Supadata API key (optional). Lets content recon transcribe the ranking videos (YouTube/TikTok/X).",
64
- "isRequired": false,
65
- "format": "string",
66
- "isSecret": true
67
- },
68
- {
69
- "name": "MAJESTIC_API_KEY",
70
- "description": "Majestic API key (optional). Enriches link_intersect with Trust Flow + Topical Trust Flow and re-sorts prospects by real authority.",
71
- "isRequired": false,
72
- "format": "string",
73
- "isSecret": true
74
- },
75
- {
76
- "name": "MAJESTIC_CACHE_DAYS",
77
- "description": "TTL for the Majestic response cache. Default 20.",
78
- "isRequired": false,
79
- "format": "string",
80
- "isSecret": false
81
- }
82
- ]
83
- }
84
- ]
85
- }
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": "Technical SEO in Claude: GSC + crawl + DataForSEO - audit, market sizing, content recon.",
5
+ "repository": {
6
+ "url": "https://github.com/houtini-ai/seo-audit",
7
+ "source": "github"
8
+ },
9
+ "version": "0.8.0",
10
+ "packages": [
11
+ {
12
+ "registryType": "npm",
13
+ "identifier": "@houtini/seo-audit-console",
14
+ "version": "0.8.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/market/recon 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, in days. Default 7.",
50
+ "isRequired": false,
51
+ "format": "string",
52
+ "isSecret": false
53
+ },
54
+ {
55
+ "name": "FIRECRAWL_API_KEY",
56
+ "description": "Firecrawl API key (optional). Lets content recon scrape competitor pages. Get one at https://firecrawl.link/2d1PLD8",
57
+ "isRequired": false,
58
+ "format": "string",
59
+ "isSecret": true
60
+ },
61
+ {
62
+ "name": "SUPADATA_API_KEY",
63
+ "description": "Supadata API key (optional). Lets content recon transcribe the ranking videos (YouTube/TikTok/X).",
64
+ "isRequired": false,
65
+ "format": "string",
66
+ "isSecret": true
67
+ },
68
+ {
69
+ "name": "MAJESTIC_API_KEY",
70
+ "description": "Majestic API key (optional). Enriches link_intersect with Trust Flow + Topical Trust Flow and re-sorts prospects by real authority.",
71
+ "isRequired": false,
72
+ "format": "string",
73
+ "isSecret": true
74
+ },
75
+ {
76
+ "name": "MAJESTIC_CACHE_DAYS",
77
+ "description": "TTL for the Majestic response cache, in days. Default 30.",
78
+ "isRequired": false,
79
+ "format": "string",
80
+ "isSecret": false
81
+ }
82
+ ]
83
+ }
84
+ ]
85
+ }