Lewati ke konten

SEO & Pencarian

Pencarian berasal dari Fumadocs. Onedocs menambahkan helper untuk sitemap, file robots.txt dan llms.txt, yang semuanya disiapkan sebagai rute App Router Next.js. Untuk metadata halaman dan gambar Open Graph, lihat onedocs/metadata dan onedocs/og di API Referensi.

Onedocs menggunakan pencarian Orama bawaan dari Fumadocs. Buat rute API:

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

export const { GET } = createFromSource(source);

Dialog pencarian yang ditambahkan RootProvider secara default meminta /api/search, jadi tidak diperlukan penyiapan lain.

Sitemap

Buat sitemap di /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 mencantumkan root situs, lalu satu URL untuk setiap entri di pages dalam /docs. Entri yang diawali --- (pemisah sidebar) dilewati, dan index dipetakan ke /docs itu sendiri. Entri dibaca sesuai urutan yang diberikan, jadi halaman di dalam subfolder perlu memiliki entri sendiri, misalnya "guides/setup".

Robots.txt

Buat robots.txt di /robots.txt:

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

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

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

Ini membuat:

Kode
User-Agent: *
Allow: /

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

LLMs.txt

LLMs.txt membantu asisten AI memahami dokumentasi Anda. Onedocs dapat membuat versi ringkasan maupun konten lengkap.

Versi ringkasan

Buat /llms.txt dengan judul dan deskripsi halaman:

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" },
  });
}

File dimulai dengan judul dan deskripsi, mencantumkan setiap halaman sebagai - Title: URL beserta deskripsinya, lalu diakhiri penunjuk ke /llms-full.txt. Kedua fungsi menerima sumber terbungkus dari createLLMsSource, bukan sumber Fumadocs itu sendiri, dan mengembalikan promise.

Versi konten lengkap

Buat /llms-full.txt dengan dokumentasi lengkap:

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" },
  });
}

Setiap halaman ditulis sebagai judul, URL, deskripsi, dan Markdown yang telah diproses, dengan --- di antara halaman.

Teks halaman berasal dari Fumadocs MDX's Markdown yang telah diproses, dan secara default fitur ini nonaktif. Tanpanya, llms-full.txt hanya berisi judul, URL, dan deskripsi (#3). Aktifkan di source.config.ts:

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

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

Opsi konfigurasi

Opsi sitemap

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

Opsi robots

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

Yang Anda dapatkan

Setelah menyiapkan rute ini:

URL Fungsinya
/api/search?query=... Endpoint API pencarian
/sitemap.xml Sitemap XML untuk mesin pencari
/robots.txt File Robots dengan referensi sitemap
/llms.txt Ringkasan untuk asisten AI
/llms-full.txt Dokumentasi lengkap untuk asisten AI