Skip to content

@scribe-atp/next

function createScribeSite(author: string, siteSlug: string): ScribeSiteFactory

Returns a factory object with methods for generateStaticParams and generateMetadata in the Next.js 13+ App Router.

ParameterTypeDescription
authorstringAuthor handle or DID
siteSlugstringSite rkey — derive with toSlug(domain)

Usage:

lib/scribe.ts
import { createScribeSite } from '@scribe-atp/next';
export const scribe = createScribeSite('alice.bsky.social', 'alice-bsky-social');

generateGroupParams(): Promise<{ groupSlug: string }[]>

Returns static params for a [groupSlug] route segment. Use as generateStaticParams on a group page.


generateArticleParams(): Promise<{ articleSlug: string }[]>

Returns static params for an [articleSlug] route segment (flat, no group prefix). Use as generateStaticParams on an article page with a single dynamic segment.


generateGroupArticleParams(): Promise<{ groupSlug: string; articleSlug: string }[]>

Returns static params for a [groupSlug]/[articleSlug] route. Use as generateStaticParams on a nested article page.


generateSiteMetadata(): Promise<Metadata>

Returns Next.js Metadata for the site index page, including title, description, and openGraph fields.


generateGroupMetadata(groupSlug: string): Promise<Metadata>

Returns Metadata for a group page. Title format: "{Group Title} — {Site Title}".


generateArticleMetadata(articleSlug: string): Promise<Metadata>

Returns Metadata for an article page, including title, description (from synopsis), and openGraph.images (from splashImageUrl). Title format: "{Article Title} — {Site Title}".


All types from @scribe-atp/core are re-exported:

import type { Site, Article, ArticleRef, SiteGroup } from '@scribe-atp/next';

See the core reference for type definitions.