Files
memind/scripts/verify-seo-discovery.mjs
T

67 lines
1.9 KiB
JavaScript
Raw Normal View History

#!/usr/bin/env node
import assert from 'node:assert/strict';
import express from 'express';
import { attachPortalSeoDiscoveryRoutes } from '../server/portal-seo-discovery-routes.mjs';
import { createMindspaceSeoDiscoveryService } from '../mindspace-seo-discovery-service.mjs';
const enabledConfig = {
seoGeo: {
enabled: true,
seo: { enabled: true, sitemap: true, robotsTxt: true },
geo: { enabled: true, llmsTxt: true, jsonLd: true },
},
};
const discovery = createMindspaceSeoDiscoveryService({
query: async () => [
[
{
id: 'pub-1',
page_id: 'page-1',
public_url: '/u/john/pages/demo',
access_mode: 'public',
status: 'online',
user_confirmed_at: Date.now(),
expires_at: null,
updated_at: Date.now(),
published_at: Date.now(),
title: 'Demo',
summary: '演示页面',
},
],
],
});
const app = express();
attachPortalSeoDiscoveryRoutes(app, {
getAuthPool: () => ({}),
getMindSpaceConfig: async () => enabledConfig,
getSeoDiscoveryService: () => discovery,
resolveRequestOrigin: () => 'https://m.tkmind.cn',
});
const server = app.listen(0);
try {
const { port } = server.address();
const base = `http://127.0.0.1:${port}`;
const robots = await fetch(`${base}/robots.txt`);
assert.equal(robots.status, 200);
const robotsBody = await robots.text();
assert.match(robotsBody, /Sitemap: https:\/\/m\.tkmind\.cn\/sitemap\.xml/);
const sitemap = await fetch(`${base}/sitemap.xml`);
assert.equal(sitemap.status, 200);
const sitemapBody = await sitemap.text();
assert.match(sitemapBody, /\/u\/john\/pages\/demo/);
const llms = await fetch(`${base}/llms.txt`);
assert.equal(llms.status, 200);
const llmsBody = await llms.text();
assert.match(llmsBody, /演示页面/);
console.log('verify-seo-discovery: ok');
} finally {
await new Promise((resolve, reject) => server.close((error) => (error ? reject(error) : resolve())));
}