API reference

@scribe-atp/nuxt

Module registration

// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@scribe-atp/nuxt'],
});

Once registered, useScribeSite and useScribeArticle are available in all components and pages without explicit imports.


Composables

useScribeSite

function useScribeSite(
  author: string,
  publicationUrl: string,
  options?: AsyncDataOptions
): Promise<AsyncData<Site | null, Error | null>>

Wraps fetchSite with useAsyncData. The composable is SSR-safe: data is fetched on the server and hydrated on the client.

ParameterTypeDescription
authorstringAuthor handle or DID
publicationUrlstringThe site's canonical HTTPS URL, e.g. "https://alice.bsky.social"
optionsAsyncDataOptionsOptional. Forwarded to useAsyncDatalazy, server, watch, etc.

Returns { data, pending, error, refresh } — the standard Nuxt AsyncData shape. data holds Site | null.


useScribeArticle

function useScribeArticle(
  author: string,
  articleSlug: string,
  options?: AsyncDataOptions
): Promise<AsyncData<Article | null, Error | null>>

Wraps fetchArticle with useAsyncData.

ParameterTypeDescription
authorstringAuthor handle or DID
articleSlugstringArticle rkey / slug
optionsAsyncDataOptionsOptional. Forwarded to useAsyncData

Returns { data, pending, error, refresh }. data holds Article | null.


Meta helpers

articleSeoMeta

function articleSeoMeta(article: Article, site: Site): UseSeoMetaInput

Returns a camelCase object shaped for Nuxt's useSeoMeta() composable. Covers title, ogType, ogTitle, ogUrl, ogSiteName, ogDescription, ogImage, twitterCard, twitterTitle, twitterDescription, and twitterImage.

ParameterTypeDescription
articleArticleThe full article object
siteSiteThe site object
<script setup lang="ts">
import { articleSeoMeta } from '@scribe-atp/nuxt';
import { fetchArticleBySlug, fetchSite } from '@scribe-atp/core';

const route = useRoute();
const [{ article }, site] = await Promise.all([
  fetchArticleBySlug('alice.bsky.social', 'https://alice.bsky.social', route.params.slug as string),
  fetchSite('alice.bsky.social', 'https://alice.bsky.social'),
]);

useSeoMeta(articleSeoMeta(article, site));
</script>

This function is not auto-imported — use an explicit import from @scribe-atp/nuxt.


siteSeoMeta

function siteSeoMeta(site: Site): UseSeoMetaInput

Returns useSeoMeta() input for a site index or group page.

ParameterTypeDescription
siteSiteThe site object

Types

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

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

See the core reference for type definitions.

Settings

Appearance