Перейти до вмісту

SEO і пошук

Пошук працює на основі Fumadocs. Onedocs додає хелпери для карти сайту, файлів robots.txt і llms.txt, налаштованих як маршрути App Router Next.js. Про метадані сторінок і зображення Open Graph див. onedocs/metadata і onedocs/og у довіднику API Reference.

Onedocs використовує вбудований пошук Orama з Fumadocs. Створіть маршрут API:

TypeScript
import { source } from "@/lib/source";
import { createFromSource } from "fumadocs-core/search/server";

export const { GET } = createFromSource(source);

За замовчуванням діалог пошуку, який додає RootProvider, надсилає запити до /api/search, тож додаткове налаштування не потрібне.

Карта сайту

Створіть карту сайту за адресою /sitemap.xml:

TypeScript
import { generateSitemap } from "onedocs/seo";
import meta from "../../content/docs/meta.json";

const baseUrl = "https://yourdomain.com";

export default function sitemap() {
  return generateSitemap({
    baseUrl,
    pages: meta.pages ?? [],
  });
}

generateSitemap додає кореневу сторінку сайту, а потім по одному URL для кожного запису в pages у /docs. Записи, що починаються з --- (роздільники бічної панелі), пропускаються, а index зіставляється з /docs. Записи зчитуються без змін, тому сторінки у вкладених папках потрібно додавати окремо, наприклад "guides/setup".

Robots.txt

Створіть robots.txt за адресою /robots.txt:

TypeScript
import { generateRobots } from "onedocs/seo";

const baseUrl = "https://yourdomain.com";

export default function robots() {
  return generateRobots({ baseUrl });
}

Це створить:

Код
User-Agent: *
Allow: /

Host: https://yourdomain.com
Sitemap: https://yourdomain.com/sitemap.xml

LLMs.txt

LLMs.txt допомагає асистентам ШІ розуміти вашу документацію. Onedocs може створити як стислу версію, так і версію з повним вмістом.

Стисла версія

Створіть /llms.txt із заголовками й описами сторінок:

TypeScript
import { createLLMsSource, generateLLMsText } from "onedocs/llms";
import { source } from "@/lib/source";
import config from "../../../onedocs.config";

export async function GET() {
  const llmsSource = createLLMsSource(source);
  const text = await generateLLMsText(llmsSource, {
    title: config.title,
    description: config.description,
  });

  return new Response(text, {
    headers: { "Content-Type": "text/plain; charset=utf-8" },
  });
}

Файл починається із заголовка й опису, містить список усіх сторінок у форматі - Title: URL з їхніми описами та завершується посиланням на /llms-full.txt. Обидві функції приймають обгорнуте джерело з createLLMsSource, а не саме джерело Fumadocs, і повертають проміс.

Версія з повним вмістом

Створіть /llms-full.txt із повною документацією:

TypeScript
import { createLLMsSource, generateLLMsFullText } from "onedocs/llms";
import { source } from "@/lib/source";

export async function GET() {
  const llmsSource = createLLMsSource(source);
  const text = await generateLLMsFullText(llmsSource);

  return new Response(text, {
    headers: { "Content-Type": "text/plain; charset=utf-8" },
  });
}

Кожна сторінка записується як заголовок, URL, опис і оброблений Markdown; сторінки розділяються ---.

Текст сторінки береться з обробленого Markdown у Fumadocs MDX, який за замовчуванням вимкнено. Без нього llms-full.txt містить лише заголовки, URL-адреси й описи (#3). Увімкніть його в source.config.ts:

TypeScript
import { defineDocs } from "fumadocs-mdx/config";

export const docs = defineDocs({
  dir: "content/docs",
  docs: {
    postprocess: {
      includeProcessedMarkdown: true,
    },
  },
});

Параметри конфігурації

Параметри карти сайту

TypeScript
generateSitemap({
  baseUrl: "https://yourdomain.com",
  pages: ["index", "getting-started", "configuration"],
  docsPath: "/docs", // Default: "/docs"
});

Параметри robots

TypeScript
generateRobots({
  baseUrl: "https://yourdomain.com",
  sitemapPath: "/sitemap.xml", // Default: "/sitemap.xml"
});

Що ви отримуєте

Після налаштування цих маршрутів:

URL Призначення
/api/search?query=... Кінцева точка пошуку API
/sitemap.xml XML карта сайту для пошукових систем
/robots.txt Файл Robots із посиланням на карту сайту
/llms.txt Стислий опис для асистентів ШІ
/llms-full.txt Повна документація для асистентів ШІ