Files
FastGPT/document/app/[lang]/llms.txt/route.ts
T
Archer fe7abf22a9 New document (#5299)
* add new doc (#5175)

Co-authored-by: dreamer6680 <146868355@qq.com>

* Test docs (#5235)

* fix: change the page of doc

* chore: add new dependencies, update global styles/layout, optimize docs, add Feishu & GitHub icons, update API examples

* fix: docs/index 404 not found

* Update environment variable names, optimize styles, add new API routes, fix component styles, adjust documentation, and update GitHub and Feishu icons

* update readme

* feat: add a linkfastgpt compontent

* feat: update new doc

* fix:remove unuse page and redirect homepage to docs (#5288)

* fix:remove some unuse doc

* fix: redirect homepage to doc

* git ignore

* fix:navbar to index (#5295)

* sidbar

* fix: navtab unlight (#5298)

* doc

---------

Co-authored-by: dreamer6680 <1468683855@qq.com>
Co-authored-by: dreamer6680 <146868355@qq.com>
2025-07-23 21:35:03 +08:00

57 lines
1.5 KiB
TypeScript

import * as fs from 'node:fs/promises';
import fg from 'fast-glob';
import matter from 'gray-matter';
import { remark } from 'remark';
import remarkGfm from 'remark-gfm';
import remarkStringify from 'remark-stringify';
import remarkMdx from 'remark-mdx';
import { remarkInclude } from 'fumadocs-mdx/config';
import { i18n } from '@/lib/i18n';
export const revalidate = false;
const processor = remark()
.use(remarkMdx)
// https://fumadocs.vercel.app/docs/mdx/include
.use(remarkInclude)
// gfm styles
.use(remarkGfm)
// .use(your remark plugins)
.use(remarkStringify); // to string
export async function GET() {
// all scanned content
// Select files based on the default language
const defaultLanguage = i18n.defaultLanguage;
let globPattern;
if (defaultLanguage === 'zh-CN') {
// For Chinese, select *.mdx files
globPattern = ['./content/docs/**/*.mdx'];
} else {
// For other languages (default English), select *.en.mdx files that don't have .mdx. in their path
globPattern = ['./content/docs/**/*.en.mdx'];
}
const files = await fg(globPattern);
const scan = files.map(async (file: string) => {
const fileContent = await fs.readFile(file);
const { content, data } = matter(fileContent.toString());
const processed = await processor.process({
path: file,
value: content
});
return `file: ${file}
meta: ${JSON.stringify(data, null, 2)}
${processed}`;
});
const scanned = await Promise.all(scan);
return new Response(scanned.join('\n\n'));
}