Skip to content

API Reference

Type-safe configuration helper:

import { defineConfig } from 'aeo.js';
export default defineConfig({
title: 'My Site',
url: 'https://mysite.com',
});

Generate all AEO files programmatically:

import { generateAll } from 'aeo.js';
await generateAll({
title: 'My Site',
url: 'https://mysite.com',
outDir: 'dist',
});

Resolve a partial config into a fully resolved config with defaults:

import { resolveConfig } from 'aeo.js';
const resolved = resolveConfig({ title: 'My Site' });
// All fields now have defaults

The examples below use resolvedConfig for a config object returned by resolveConfig.

Validate a config object and return any errors:

import { validateConfig } from 'aeo.js';
const errors = validateConfig(config);

Auto-detect the framework used in the current project:

import { detectFramework } from 'aeo.js';
const info = detectFramework();
// { framework: 'next', contentDir: 'pages', outDir: '.next' }

Convert HTML to clean markdown:

import { htmlToMarkdown } from 'aeo.js';
const md = htmlToMarkdown(
'<html><head><title>Hello</title></head><body><main><p>World</p></main></body></html>',
'/',
{ url: 'https://mysite.com' }
);
// Returns a markdown document with YAML frontmatter

Extract plain text from HTML:

import { extractTextFromHtml } from 'aeo.js';
const text = extractTextFromHtml('<p>Hello <strong>world</strong></p>');

extractTitle(html) / extractDescription(html)

Section titled “extractTitle(html) / extractDescription(html)”

Extract the title or meta description from an HTML document.

Extract JSON-LD structured data from an HTML document.

Generate JSON-LD schema objects:

import { generateSchemaObjects } from 'aeo.js';
const schemas = generateSchemaObjects(resolvedConfig);

Generate a <script type="application/ld+json"> tag:

import { generateJsonLdScript, generateSiteSchemas } from 'aeo.js';
const schemas = generateSiteSchemas(resolvedConfig);
const script = generateJsonLdScript(schemas);

generateSiteSchemas(config) / generatePageSchemas(page, config)

Section titled “generateSiteSchemas(config) / generatePageSchemas(page, config)”

Generate schemas for the site or individual pages.

Returns an array of MetaTag objects:

import { generateOGTags } from 'aeo.js';
const tags = generateOGTags(
{ pathname: '/', title: 'Home' },
resolvedConfig
);
// [{ property: 'og:title', content: 'Home' }, ...]

Returns OG tags as an HTML string.

Audit a site for AEO best practices:

import { auditSite, formatAuditReport, getGrade, resolveConfig } from 'aeo.js';
const config = resolveConfig({
title: 'My Site',
url: 'https://mysite.com',
pages: [{ pathname: '/', title: 'Home', content: 'Welcome to my site.' }],
});
const result = auditSite(config);
console.log(formatAuditReport(result));
console.log(getGrade(result.score)); // 'Excellent', 'Good', 'Fair', etc.

Score how likely a page is to be cited by AI:

import { scorePageCitability, formatPageCitability } from 'aeo.js';
const score = scorePageCitability({
pathname: '/',
title: 'Home',
content: '# Home\n\nMy site publishes practical guides for AI-ready content.',
});
console.log(formatPageCitability(score));

Score citability across your entire site.

Generate a comprehensive AEO report:

import { generateReport, formatReportMarkdown } from 'aeo.js';
const report = generateReport(resolvedConfig);
console.log(formatReportMarkdown(report));

Generate platform-specific optimization hints from audit and citability results:

import { auditSite, generatePlatformHints, scoreSiteCitability } from 'aeo.js';
const audit = auditSite(resolvedConfig);
const citability = scoreSiteCitability(resolvedConfig);
const hints = generatePlatformHints(audit, citability);

All types are exported from the main entry:

import type {
AeoConfig,
ResolvedAeoConfig,
PageEntry,
DocEntry,
AeoManifest,
MarkdownFile,
ManifestEntry,
AIIndexEntry,
FrameworkType,
FrameworkInfo,
AuditResult,
AuditCategory,
AuditIssue,
MetaTag,
PageCitabilityResult,
SiteCitabilityResult,
CitabilityDimension,
ContentHint,
AeoReport,
PlatformHint,
} from 'aeo.js';