73 lines
1.5 KiB
TypeScript
73 lines
1.5 KiB
TypeScript
import type { Metadata } from "next";
|
|
|
|
const siteUrl =
|
|
process.env.NEXT_PUBLIC_SITE_URL ?? "http://localhost:3000";
|
|
|
|
export const SITE_NAME = "FlatRender";
|
|
|
|
export const DEFAULT_OG_IMAGE = "/opengraph-image";
|
|
|
|
export const defaultMetadata: Metadata = {
|
|
metadataBase: new URL(siteUrl),
|
|
title: {
|
|
default: `${SITE_NAME} — Create Videos & Images`,
|
|
template: `%s — ${SITE_NAME}`,
|
|
},
|
|
description:
|
|
"Create pro videos and images with AI-powered templates, editors, and one-click export for creators and brands.",
|
|
openGraph: {
|
|
type: "website",
|
|
locale: "en_US",
|
|
siteName: SITE_NAME,
|
|
images: [
|
|
{
|
|
url: DEFAULT_OG_IMAGE,
|
|
width: 1200,
|
|
height: 630,
|
|
alt: "FlatRender — AI Video & Image Maker",
|
|
},
|
|
],
|
|
},
|
|
twitter: {
|
|
card: "summary_large_image",
|
|
images: [DEFAULT_OG_IMAGE],
|
|
},
|
|
};
|
|
|
|
interface PageMetadataOptions {
|
|
title: string;
|
|
description: string;
|
|
path?: string;
|
|
}
|
|
|
|
export function createPageMetadata({
|
|
title,
|
|
description,
|
|
path = "",
|
|
}: PageMetadataOptions): Metadata {
|
|
const url = new URL(path, siteUrl).toString();
|
|
|
|
return {
|
|
title,
|
|
description,
|
|
openGraph: {
|
|
title,
|
|
description,
|
|
url,
|
|
images: [
|
|
{
|
|
url: DEFAULT_OG_IMAGE,
|
|
width: 1200,
|
|
height: 630,
|
|
alt: `${title} — ${SITE_NAME}`,
|
|
},
|
|
],
|
|
},
|
|
twitter: {
|
|
title,
|
|
description,
|
|
images: [DEFAULT_OG_IMAGE],
|
|
},
|
|
};
|
|
}
|