API reference
@scribe-atp/next
Functions
createScribeSite
function createScribeSite(author: string, publicationUrl: string): ScribeSiteFactory
Returns a factory object with methods for generateStaticParams and generateMetadata in the Next.js 13+ App Router.
| Parameter | Type | Description |
|---|---|---|
author | string | Author handle or DID |
publicationUrl | string | The site's canonical HTTPS URL, e.g. "https://alice.bsky.social" |
Usage:
// lib/scribe.ts
import { createScribeSite } from '@scribe-atp/next';
export const scribe = createScribeSite('alice.bsky.social', 'https://alice.bsky.social');
Factory methods
generateGroupParams
generateGroupParams(): Promise<{ groupSlug: string }[]>
Returns static params for a [groupSlug] route segment. Use as generateStaticParams on a group page.
generateArticleParams
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
generateGroupArticleParams(): Promise<{ groupSlug: string; articleSlug: string }[]>
Returns static params for a [groupSlug]/[articleSlug] route. Use as generateStaticParams on a nested article page.
generateSiteMetadata
generateSiteMetadata(): Promise<Metadata>
Returns Next.js Metadata for the site index page, including title, description, and openGraph fields.
generateGroupMetadata
generateGroupMetadata(groupSlug: string): Promise<Metadata>
Returns Metadata for a group page. Title format: "{Group Title} — {Site Title}".
generateArticleMetadata
generateArticleMetadata(articleSlug: string): Promise<Metadata>
Returns Metadata for an article page, including title, description, and openGraph.images (from coverImageUrl). Title format: "{Article Title} — {Site Title}".
Well-known endpoint
createWellKnownHandler
function createWellKnownHandler(
author: string,
publicationUrl: string
): (request: Request) => Promise<Response>
Returns a Next.js App Router Route Handler that responds with the author's publication AT URI as plain text. Used to serve the /.well-known/ endpoint required for AT Protocol client discovery — the same purpose createWellKnownLoader serves in @scribe-atp/react-router-framework.
| Parameter | Type | Description |
|---|---|---|
author | string | Author handle or DID |
publicationUrl | string | The site's canonical HTTPS URL |
// app/.well-known/[...slug]/route.ts
import { createWellKnownHandler } from '@scribe-atp/next';
export const GET = createWellKnownHandler('alice.bsky.social', 'https://alice.bsky.social');
Standalone helpers
These functions accept Article/Site objects directly — useful when you're already fetching content and only need the Metadata object.
articleMetadata
function articleMetadata(article: Article, site: Site): Metadata
Returns a Next.js Metadata object for an article page, including title, description, openGraph, and twitter fields.
| Parameter | Type | Description |
|---|---|---|
article | Article | The full article object |
site | Site | The site object |
import { articleMetadata } from '@scribe-atp/next';
import { fetchArticleBySlug, fetchSite } from '@scribe-atp/core';
export async function generateMetadata({ params }: { params: { slug: string } }) {
const [{ article }, site] = await Promise.all([
fetchArticleBySlug('alice.bsky.social', 'https://alice.bsky.social', params.slug),
fetchSite('alice.bsky.social', 'https://alice.bsky.social'),
]);
return articleMetadata(article, site);
}
siteMetadata
function siteMetadata(site: Site): Metadata
Returns Metadata for a site index or group page.
| Parameter | Type | Description |
|---|---|---|
site | Site | The site object |
Types
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.