diff --git a/app/layout.tsx b/app/layout.tsx index bacfc40a..f58c04c0 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -6,9 +6,22 @@ import { getClientConfig } from "./config/client"; import { type Metadata } from "next"; export const metadata: Metadata = { + metadataBase: new URL("https://chat.webllm.ai"), title: "WebLLM Chat", description: "Chat with AI large language models running natively in your browser. Enjoy private, server-free, seamless AI conversations.", + keywords: [ + "WebLLM", + "AI chat", + "machine learning", + "browser AI", + "language model", + "no server", + ], + authors: [{ name: "WebLLM Team" }], + publisher: "WebLLM", + creator: "WebLLM", + robots: "index, follow", viewport: { width: "device-width", initialScale: 1, @@ -22,6 +35,32 @@ export const metadata: Metadata = { title: "WebLLM Chat", statusBarStyle: "default", }, + openGraph: { + type: "website", + url: "https://chat.webllm.ai", + title: "WebLLM Chat", + description: + "Chat with AI large language models running natively in your browser", + siteName: "WebLLM Chat", + images: [ + { + url: "https://chat.webllm.ai/mlc-logo.png", + width: 360, + height: 360, + alt: "WebLLM Chat - Browser-based AI conversation", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: "WebLLM Chat", + description: + "Chat with AI large language models running natively in your browser", + images: ["https://chat.webllm.ai/mlc-logo.png"], + }, + alternates: { + canonical: "https://chat.webllm.ai", + }, }; const cspHeader = ` @@ -78,6 +117,30 @@ export default function RootLayout({ +