@houtini/seo-audit-console 0.2.3 → 0.4.3
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/README.md +11 -4
- package/dist/audit/keywordList.d.ts +40 -0
- package/dist/audit/keywordList.d.ts.map +1 -0
- package/dist/audit/keywordList.js +95 -0
- package/dist/audit/keywordList.js.map +1 -0
- package/dist/audit/recon.d.ts +56 -0
- package/dist/audit/recon.d.ts.map +1 -0
- package/dist/audit/recon.js +134 -0
- package/dist/audit/recon.js.map +1 -0
- package/dist/core/AuditDatabase.d.ts.map +1 -1
- package/dist/core/AuditDatabase.js +39 -0
- package/dist/core/AuditDatabase.js.map +1 -1
- package/dist/core/FirecrawlClient.d.ts +35 -0
- package/dist/core/FirecrawlClient.d.ts.map +1 -0
- package/dist/core/FirecrawlClient.js +69 -0
- package/dist/core/FirecrawlClient.js.map +1 -0
- package/dist/core/SupadataClient.d.ts +26 -0
- package/dist/core/SupadataClient.d.ts.map +1 -0
- package/dist/core/SupadataClient.js +57 -0
- package/dist/core/SupadataClient.js.map +1 -0
- package/dist/core/dashboardData.d.ts +13 -0
- package/dist/core/dashboardData.d.ts.map +1 -1
- package/dist/core/dashboardData.js +46 -3
- package/dist/core/dashboardData.js.map +1 -1
- package/dist/core/marketSizing.d.ts +45 -0
- package/dist/core/marketSizing.d.ts.map +1 -0
- package/dist/core/marketSizing.js +104 -0
- package/dist/core/marketSizing.js.map +1 -0
- package/dist/core/reconFetch.d.ts +29 -0
- package/dist/core/reconFetch.d.ts.map +1 -0
- package/dist/core/reconFetch.js +49 -0
- package/dist/core/reconFetch.js.map +1 -0
- package/dist/core/reconResearch.d.ts +42 -0
- package/dist/core/reconResearch.d.ts.map +1 -0
- package/dist/core/reconResearch.js +101 -0
- package/dist/core/reconResearch.js.map +1 -0
- package/dist/core/serpFootprint.d.ts +42 -0
- package/dist/core/serpFootprint.d.ts.map +1 -0
- package/dist/core/serpFootprint.js +99 -0
- package/dist/core/serpFootprint.js.map +1 -0
- package/dist/core/serpRecon.d.ts +46 -0
- package/dist/core/serpRecon.d.ts.map +1 -0
- package/dist/core/serpRecon.js +71 -0
- package/dist/core/serpRecon.js.map +1 -0
- package/dist/core/webServer.d.ts +27 -0
- package/dist/core/webServer.d.ts.map +1 -0
- package/dist/core/webServer.js +156 -0
- package/dist/core/webServer.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +519 -15
- package/dist/server.js.map +1 -1
- package/dist/src/ui/dashboard.html +269 -251
- package/dist/src/ui/sync-progress.html +2 -2
- package/package.json +1 -1
- package/server.json +18 -4
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import http from 'node:http';
|
|
2
|
+
import { readdirSync } from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import Database from 'better-sqlite3';
|
|
5
|
+
let running = null;
|
|
6
|
+
let starting = null;
|
|
7
|
+
/** DNS-rebinding / CSRF guard: only ever answer requests addressed to localhost itself.
|
|
8
|
+
* A malicious page that rebinds its domain to 127.0.0.1 arrives with a foreign Host. */
|
|
9
|
+
function isLocalHostHeader(host) {
|
|
10
|
+
if (!host)
|
|
11
|
+
return false;
|
|
12
|
+
const bare = host.replace(/:\d+$/, '').toLowerCase();
|
|
13
|
+
return bare === '127.0.0.1' || bare === 'localhost' || bare === '[::1]';
|
|
14
|
+
}
|
|
15
|
+
const CACHE_DBS = new Set(['dataforseo-cache.db']);
|
|
16
|
+
/** Enumerate properties that have a local DB (property_meta.site_url is the source of truth). */
|
|
17
|
+
export function listLocalProperties(dataDir) {
|
|
18
|
+
let files = [];
|
|
19
|
+
try {
|
|
20
|
+
files = readdirSync(dataDir).filter(f => f.endsWith('.db') && !CACHE_DBS.has(f));
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
const out = [];
|
|
26
|
+
for (const file of files.sort()) {
|
|
27
|
+
let db = null;
|
|
28
|
+
try {
|
|
29
|
+
db = new Database(path.join(dataDir, file), { readonly: true, fileMustExist: true });
|
|
30
|
+
const meta = db.prepare(`SELECT site_url FROM property_meta ORDER BY id LIMIT 1`).get();
|
|
31
|
+
if (meta?.site_url)
|
|
32
|
+
out.push({ siteUrl: meta.site_url, file });
|
|
33
|
+
}
|
|
34
|
+
catch { /* not a property DB */ }
|
|
35
|
+
finally {
|
|
36
|
+
db?.close();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
const json = (res, status, body) => {
|
|
42
|
+
const s = JSON.stringify(body);
|
|
43
|
+
res.writeHead(status, { 'content-type': 'application/json; charset=utf-8', 'cache-control': 'no-store' });
|
|
44
|
+
res.end(s);
|
|
45
|
+
};
|
|
46
|
+
const readBody = (req, limit = 256 * 1024) => new Promise((resolve, reject) => {
|
|
47
|
+
let size = 0;
|
|
48
|
+
const chunks = [];
|
|
49
|
+
req.on('data', (c) => { size += c.length; if (size > limit) {
|
|
50
|
+
reject(new Error('body too large'));
|
|
51
|
+
req.destroy();
|
|
52
|
+
}
|
|
53
|
+
else
|
|
54
|
+
chunks.push(c); });
|
|
55
|
+
req.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
|
|
56
|
+
req.on('error', reject);
|
|
57
|
+
});
|
|
58
|
+
const esc = (s) => s.replace(/&/g, '&').replace(/</g, '<').replace(/"/g, '"');
|
|
59
|
+
function pickerPage(props) {
|
|
60
|
+
const items = props.length
|
|
61
|
+
? props.map(p => `<li><a href="/dashboard?siteUrl=${encodeURIComponent(p.siteUrl)}">${esc(p.siteUrl)}</a></li>`).join('')
|
|
62
|
+
: '<li>No properties yet — run refresh_property first.</li>';
|
|
63
|
+
return `<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>SEO Audit Console</title>
|
|
64
|
+
<style>body{font-family:system-ui,sans-serif;max-width:640px;margin:4rem auto;padding:0 1rem;color:#1a1a1a}
|
|
65
|
+
h1{font-size:1.3rem}ul{line-height:2}a{color:#cd2026}</style></head>
|
|
66
|
+
<body><h1>SEO Audit Console — choose a property</h1><ul>${items}</ul></body></html>`;
|
|
67
|
+
}
|
|
68
|
+
export async function startDashboardServer(opts) {
|
|
69
|
+
if (running)
|
|
70
|
+
return { url: running.url, port: running.port };
|
|
71
|
+
if (starting)
|
|
72
|
+
return starting; // concurrent callers share one startup — never bind twice
|
|
73
|
+
const server = http.createServer(async (req, res) => {
|
|
74
|
+
try {
|
|
75
|
+
if (!isLocalHostHeader(req.headers.host))
|
|
76
|
+
return json(res, 403, { error: 'forbidden' });
|
|
77
|
+
const u = new URL(req.url ?? '/', 'http://localhost');
|
|
78
|
+
const route = u.pathname;
|
|
79
|
+
if (req.method === 'GET' && (route === '/' || route === '/dashboard')) {
|
|
80
|
+
const props = listLocalProperties(opts.dataDir());
|
|
81
|
+
const siteUrl = u.searchParams.get('siteUrl');
|
|
82
|
+
if (!siteUrl) {
|
|
83
|
+
if (route === '/' && props.length === 1) {
|
|
84
|
+
res.writeHead(302, { location: `/dashboard?siteUrl=${encodeURIComponent(props[0].siteUrl)}` });
|
|
85
|
+
return res.end();
|
|
86
|
+
}
|
|
87
|
+
res.writeHead(200, { 'content-type': 'text/html; charset=utf-8', 'cache-control': 'no-store' });
|
|
88
|
+
return res.end(pickerPage(props));
|
|
89
|
+
}
|
|
90
|
+
const boot = { siteUrl, properties: props.map(p => p.siteUrl) };
|
|
91
|
+
const inject = `<script>window.__SAC_WEB__=${JSON.stringify(boot).replace(/</g, '\\u003c')};</script>`;
|
|
92
|
+
// Replacement FUNCTION, not string — $-sequences in the payload must stay literal.
|
|
93
|
+
const html = opts.uiHtml().replace(/<head([^>]*)>/i, (_m, attrs) => `<head${attrs}>${inject}`);
|
|
94
|
+
res.writeHead(200, { 'content-type': 'text/html; charset=utf-8', 'cache-control': 'no-store' });
|
|
95
|
+
return res.end(html);
|
|
96
|
+
}
|
|
97
|
+
if (req.method === 'GET' && route === '/api/properties') {
|
|
98
|
+
return json(res, 200, { properties: listLocalProperties(opts.dataDir()) });
|
|
99
|
+
}
|
|
100
|
+
if (req.method === 'POST' && route === '/api/call') {
|
|
101
|
+
// Require a JSON content-type: cross-origin "simple" requests can only send
|
|
102
|
+
// text/plain without a CORS preflight, so this blocks blind CSRF POSTs.
|
|
103
|
+
if (!/^application\/json\b/i.test(String(req.headers['content-type'] ?? ''))) {
|
|
104
|
+
return json(res, 415, { error: 'content-type must be application/json' });
|
|
105
|
+
}
|
|
106
|
+
const body = JSON.parse((await readBody(req)) || '{}');
|
|
107
|
+
const handler = body.name ? opts.call[body.name] : undefined;
|
|
108
|
+
if (!handler)
|
|
109
|
+
return json(res, 404, { error: `unknown tool ${body.name ?? ''}` });
|
|
110
|
+
try {
|
|
111
|
+
const structuredContent = await handler(body.arguments ?? {});
|
|
112
|
+
return json(res, 200, { structuredContent });
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
return json(res, 500, { error: e instanceof Error ? e.message : String(e) });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
json(res, 404, { error: 'not found' });
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
json(res, 500, { error: e instanceof Error ? e.message : String(e) });
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
starting = (async () => {
|
|
125
|
+
const port = await new Promise((resolve, reject) => {
|
|
126
|
+
server.once('error', reject);
|
|
127
|
+
// 127.0.0.1 only — never expose the dashboard (or the SQLite data behind it) on the network.
|
|
128
|
+
server.listen(opts.port ?? 0, '127.0.0.1', () => {
|
|
129
|
+
const addr = server.address();
|
|
130
|
+
resolve(typeof addr === 'object' && addr ? addr.port : (opts.port ?? 0));
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
server.unref(); // never keep the MCP process alive on our account
|
|
134
|
+
const url = `http://127.0.0.1:${port}`;
|
|
135
|
+
running = { server, port, url };
|
|
136
|
+
return { url, port };
|
|
137
|
+
})();
|
|
138
|
+
try {
|
|
139
|
+
return await starting;
|
|
140
|
+
}
|
|
141
|
+
finally {
|
|
142
|
+
starting = null;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
export async function stopDashboardServer() {
|
|
146
|
+
if (!running)
|
|
147
|
+
return false;
|
|
148
|
+
const s = running.server;
|
|
149
|
+
running = null;
|
|
150
|
+
await new Promise(resolve => s.close(() => resolve()));
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
export function dashboardServerUrl() {
|
|
154
|
+
return running?.url ?? null;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=webServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webServer.js","sourceRoot":"","sources":["../../src/core/webServer.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2EpE,wBAAgB,OAAO,IAAI,MAAM,CAGhC;AA8KD,wBAAgB,YAAY,IAAI;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAw0D9E"}
|