# indxel -- Full API Documentation > ESLint for SEO. Infrastructure SEO developer-first. > Version: SDK 0.1.0, CLI 0.2.0 indxel is an open-source SEO infrastructure toolkit for Next.js developers. It ensures SEO never breaks silently by scoring every page 0-100 and gating deploys on critical errors. --- ## SDK (npm: indxel) ### Installation ```bash npm install indxel ``` Zero runtime dependencies. Ships ESM + CJS + TypeScript declarations. Optional peer dependency: next >= 14. ### defineSEO(config): SEOConfig Define global SEO defaults. Returns a frozen config object used by other functions. ```typescript import { defineSEO } from 'indxel' export default defineSEO({ siteName: 'My SaaS', siteUrl: 'https://mysaas.com', titleTemplate: '%s | My SaaS', // %s is replaced by page title defaultDescription: 'Description for pages without one.', defaultOGImage: '/og-default.png', locale: 'en_US', twitter: { handle: '@mysaas', cardType: 'summary_large_image', // or 'summary' }, organization: { name: 'My SaaS Inc.', logo: '/logo.png', url: 'https://mysaas.com', }, }) ``` ### createMetadata(page, config?): MetadataOutput Generate a Next.js-compatible Metadata object. Use directly in generateMetadata(). ```typescript import { createMetadata } from 'indxel' import seoConfig from '@/seo.config' // Basic page export function generateMetadata() { return createMetadata({ title: 'Pricing', description: 'Simple pricing. Start free.', path: '/pricing', ogImage: '/og-pricing.png', // optional, falls back to defaultOGImage }, seoConfig) } // Article page export function generateMetadata() { return createMetadata({ title: 'How to Fix SEO', description: 'A practical guide.', path: '/blog/how-to-fix-seo', article: { publishedTime: '2026-01-15', modifiedTime: '2026-01-20', // optional author: 'Jane Doe', tags: ['seo', 'nextjs'], }, }, seoConfig) } ``` Generates: title (with template), canonical URL, OpenGraph (title, description, image, type, locale), Twitter card, hreflang alternates, robots directives. ### generateLD(type, data): object Generate JSON-LD structured data. Supported types: Article, Product, FAQ, HowTo, Breadcrumb, Organization, WebPage, SoftwareApplication, WebSite. ```typescript import { generateLD } from 'indxel' // Article generateLD('Article', { headline: 'How to Fix SEO', datePublished: '2026-01-15', author: { name: 'Jane Doe', url: 'https://jane.dev' }, }) // FAQ generateLD('FAQ', { questions: [ { question: 'What is indxel?', answer: 'ESLint for SEO.' }, ], }) // Organization generateLD('Organization', { name: 'My SaaS', url: 'https://mysaas.com', logo: 'https://mysaas.com/logo.png', }) // Usage in JSX: