Skip to main content

Metadata API

import {
generateNoxionMetadata,
generateNoxionListMetadata,
} from "@noxion/adapter-nextjs";

These functions generate Next.js Metadata objects for use in the App Router's generateMetadata() export.


generateNoxionMetadata()

Generates Metadata for a single page. Works with all page types (NoxionPage): blog, docs, portfolio, or custom.

Signature

function generateNoxionMetadata(
page: NoxionPage,
config: NoxionConfig,
registry?: PageTypeRegistry
): Metadata

Parameters

ParameterTypeDescription
pageNoxionPageThe page to generate metadata for (any page type)
configNoxionConfigYour site configuration

Generated fields

Metadata fieldSource
titlepage.title
descriptionpage.description or fallback "<page title> - <site name>" (max 160 chars)
authorspage.metadata.author ?? config.author
openGraph.type"article" for blog pages, otherwise "website"
openGraph.publishedTimepage.metadata.date (blog pages)
openGraph.modifiedTimepage.lastEditedTime
openGraph.tagspage.metadata.tags (blog pages)
openGraph.sectionpage.metadata.category (when present)
openGraph.imagespage.coverImage (1200×630)
twitter.card"summary_large_image"
alternates.canonicalhttps://{domain}/{slug}

Metadata fields are accessed from page.metadata using internal helper functions getMetaString() and getMetaStringArray().

Usage

// app/[slug]/page.tsx
import { generateNoxionMetadata } from "@noxion/adapter-nextjs";

export async function generateMetadata({ params }) {
const post = await getPostBySlug((await params).slug);
if (!post) return {};
return generateNoxionMetadata(post, siteConfig);
}

generateNoxionListMetadata()

Generates Metadata for the homepage and list/collection pages.

Signature

function generateNoxionListMetadata(config: NoxionConfig): Metadata

Generated fields

Metadata fieldValue
title.defaultconfig.name
title.template"%s | config.name"
descriptionconfig.description
metadataBasenew URL("https://<site-domain>")
openGraph.type"website"
robots.index / robots.followtrue
alternates.types["application/rss+xml"]RSS feed discovery (if RSS plugin configured)

Usage

// app/layout.tsx
import { generateNoxionListMetadata } from "@noxion/adapter-nextjs";

export const metadata = generateNoxionListMetadata(siteConfig);