@scribe-atp/next
Functions
Section titled “Functions”createScribeSite
Section titled “createScribeSite”function createScribeSite(author: string, publicationUrl: string): ScribeSiteFactoryReturns 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:
import { createScribeSite } from '@scribe-atp/next';export const scribe = createScribeSite('alice.bsky.social', 'https://alice.bsky.social');Factory methods
Section titled “Factory methods”generateGroupParams
Section titled “generateGroupParams”generateGroupParams(): Promise<{ groupSlug: string }[]>Returns static params for a [groupSlug] route segment. Use as generateStaticParams on a group page.
generateArticleParams
Section titled “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
Section titled “generateGroupArticleParams”generateGroupArticleParams(): Promise<{ groupSlug: string; articleSlug: string }[]>Returns static params for a [groupSlug]/[articleSlug] route. Use as generateStaticParams on a nested article page.
generateSiteMetadata
Section titled “generateSiteMetadata”generateSiteMetadata(): Promise<Metadata>Returns Next.js Metadata for the site index page, including title, description, and openGraph fields.
generateGroupMetadata
Section titled “generateGroupMetadata”generateGroupMetadata(groupSlug: string): Promise<Metadata>Returns Metadata for a group page. Title format: "{Group Title} — {Site Title}".
generateArticleMetadata
Section titled “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}".
Standalone helpers
Section titled “Standalone helpers”These functions accept Article/Site objects directly — useful when you’re already fetching content and only need the Metadata object.
articleMetadata
Section titled “articleMetadata”function articleMetadata(article: Article, site: Site): MetadataReturns 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
Section titled “siteMetadata”function siteMetadata(site: Site): MetadataReturns Metadata for a site index or group page.
| Parameter | Type | Description |
|---|---|---|
site | Site | The site object |
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.