diff --git a/src/app/llms-full.txt/route.ts b/src/app/llms-full.txt/route.ts index ea205e21..b87c0b3f 100644 --- a/src/app/llms-full.txt/route.ts +++ b/src/app/llms-full.txt/route.ts @@ -1,17 +1,17 @@ -import { redirect } from "next/navigation"; +import { GET as buildLlmContext } from "@/app/api/llm-context/route"; export const runtime = "nodejs"; +export const revalidate = 60; /** - * llms-full.txt - the expanded sibling of `/llms.txt` per the emerging - * llmstxt.org convention. We serve the same content as `/api/llm-context` - * (full rankings + methodology for every live benchmark) so an LLM that - * follows the convention finds the rich Markdown view without having to - * know our internal API path. + * llms-full.txt — expanded sibling of /llms.txt per the llmstxt.org + * convention. Serves the same body as /api/llm-context, but directly + * (200 + text/markdown) instead of via redirect. The previous 307 broke + * llms.txt validators and the stricter AI crawlers that do not follow + * redirects on non-standard paths (Perplexity, some Bing AI scrapers), + * which were marking the URL as no-content and skipping the resource. * - * Internal redirect keeps a single source of truth; the `/llms-full.txt` - * URL is what crawlers will look up. + * The canonical for AI citation is now /llms-full.txt itself, not the + * internal /api/llm-context path. */ -export function GET() { - redirect("/api/llm-context"); -} +export const GET = buildLlmContext;