@philiprehberger/next-seo-utils
v0.1.9
Published
Next.js SEO utilities: metadata generators, JSON-LD schemas, and Open Graph helpers
Downloads
811
Readme
@philiprehberger/next-seo-utils
Next.js SEO utilities: metadata generators, JSON-LD schemas, and Open Graph helpers
Installation
npm install @philiprehberger/next-seo-utilsUsage
Metadata Generator
import { createMetadataGenerator } from '@philiprehberger/next-seo-utils';
const seo = createMetadataGenerator({
name: 'My Site',
url: 'https://example.com',
description: 'My awesome site',
twitterHandle: '@myhandle',
defaultImage: 'https://example.com/og.jpg',
});
// In a Next.js page:
export const metadata = seo.generatePageMetadata({
title: 'About',
description: 'About us page',
path: '/about',
});
// Root layout:
export const metadata = seo.generateRootMetadata();JSON-LD Structured Data
import { organizationJsonLd, faqJsonLd, breadcrumbJsonLd, jsonLdScript } from '@philiprehberger/next-seo-utils';
const org = organizationJsonLd({
name: 'My Company',
url: 'https://example.com',
logo: 'https://example.com/logo.png',
});
const faq = faqJsonLd([
{ question: 'What do you do?', answer: 'We build software.' },
]);
const breadcrumbs = breadcrumbJsonLd([
{ name: 'Home', url: 'https://example.com' },
{ name: 'About', url: 'https://example.com/about' },
]);
// Render as script tag
const scriptTag = jsonLdScript(org);API
Metadata
| Function | Signature | Description |
|----------|-----------|-------------|
| createMetadataGenerator | (site: SiteConfig) => { generatePageMetadata, generateArticleMetadata, generateRootMetadata } | Create a metadata generator bound to your site config. |
Returned methods
| Method | Signature | Description |
|--------|-----------|-------------|
| generatePageMetadata | (options: PageMetadataOptions) => Metadata | Generate metadata for a single page. |
| generateArticleMetadata | (options: ArticleMetadataOptions) => Metadata | Generate article-specific metadata with Open Graph article fields. |
| generateRootMetadata | (overrides?: Partial<Metadata>) => Metadata | Generate root layout metadata with title template. |
JSON-LD
| Function | Signature | Description |
|----------|-----------|-------------|
| organizationJsonLd | (org: OrganizationConfig) => JsonLdBase | Organization structured data. |
| websiteJsonLd | (site: SiteConfig) => JsonLdBase | WebSite structured data. |
| breadcrumbJsonLd | (items: BreadcrumbItem[]) => JsonLdBase | Breadcrumb navigation structured data. |
| articleJsonLd | (options) => JsonLdBase | Article structured data. |
| faqJsonLd | (items: FAQItem[]) => JsonLdBase | FAQ page structured data. |
| serviceJsonLd | (service: ServiceItem, provider) => JsonLdBase | Service structured data. |
| localBusinessJsonLd | (options) => JsonLdBase | Local business structured data. |
| reviewAggregateJsonLd | (itemName: string, reviews: ReviewItem[], itemType?: string) => JsonLdBase | Aggregate review structured data. |
| jsonLdScript | (data: JsonLdBase \| JsonLdBase[]) => string | Wrap JSON-LD data in a <script> tag string. |
Development
npm install
npm run build
npm testSupport
If you find this project useful:
