ZH
测试版翻译

@core / seo

1.0.0 ▾
已验证MIT
GitHub

GenPM 站点 SEO:带 canonical 和 hreflang 的元数据、分片站点地图、robots.txt、llms.txt 和安全的 JSON-LD

代码9 个文件上下文约 639 个 token扫描通过

应用 .genpmignore 后将被注入的确切目录树。固定于

src/lib/seo/adapters/next.ts只读 · cf4e3c3
// Adaptador Next.js (route handlers):
//   app/sitemap.xml/route.ts                 → export { sitemapIndexRoute as GET } from '@/lib/seo/adapters/next';
//   app/sitemaps/[name]/[file]/route.ts      → export { sitemapChunkRoute as GET } from '@/lib/seo/adapters/next';
//   app/robots.txt/route.ts                  → export { robotsRoute as GET } from '@/lib/seo/adapters/next';
// En los tres, añade `export const dynamic = 'force-dynamic'` (si no, `next build` los prerenderiza con BD y SITE_URL).
// Metadatos: `export async function generateMetadata() { return buildMetadata({ title, path }) }`.
import { robotsTxt, sitemapChunkXml, sitemapIndexXml } from '../index.ts';

const XML = { 'content-type': 'application/xml; charset=utf-8', 'cache-control': 'public, max-age=3600' };

export async function sitemapIndexRoute(): Promise<Response> {
  return new Response(await sitemapIndexXml(), { headers: XML });
}

export async function sitemapChunkRoute(_req: Request, ctx: { params: Promise<{ name: string; file: string }> }): Promise<Response> {
  const { name, file } = await ctx.params;
  const m = /^(\d{1,4})\.xml$/.exec(file);
  const body = m ? await sitemapChunkXml(name, Number(m[1])) : null;
  return body ? new Response(body, { headers: XML }) : new Response('Not found', { status: 404 });
}

export function robotsRoute(): Response {
  return new Response(robotsTxt(), { headers: { 'content-type': 'text/plain; charset=utf-8', 'cache-control': 'public, max-age=3600' } });
}

举报 @core/seo

使用 GitHub 登录后才能举报包。