# Meta
Extract and audit page-level metadata from raw HTML.
```ts
import {
analyzeMetaTags,
extractCanonical,
extractMetaRobots,
extractMetaTags,
} from '@jvpdls/seo-tools/meta';
```
## `extractMetaTags(options)`
Returns normalized `` tags declared through `name`, `property`, `http-equiv`, or `charset`.
### Result
```ts
{
metaTags: Array<{
attribute: 'name' | 'property' | 'http-equiv' | 'charset';
key: string;
content: string | null;
index: number;
}>;
warningCodes: ExtractMetaTagsWarningCode[];
}
```
### Warning codes
| Code | When |
| --- | --- |
| `EMPTY_INPUT` | Empty `html` string |
---
## `extractCanonical(options)`
Extracts the first canonical URL and reports whether multiple canonical links were found.
### Result
```ts
{
canonicalUrl: string | null;
occurrences: number;
warningCodes: CanonicalWarningCode[];
}
```
### Warning codes
| Code | When |
| --- | --- |
| `EMPTY_INPUT` | Empty `html` string |
| `MISSING_CANONICAL` | No canonical link found |
| `MULTIPLE_CANONICAL` | More than one canonical link found |
---
## `extractMetaRobots(options)`
Extracts the first `meta[name="robots"]` tag and parses its directives.
### Result
```ts
{
content: string | null;
directives: string[];
occurrences: number;
warningCodes: MetaRobotsWarningCode[];
}
```
### Warning codes
| Code | When |
| --- | --- |
| `EMPTY_INPUT` | Empty `html` string |
| `MISSING_META_ROBOTS` | No `meta[name="robots"]` tag found |
---
## `analyzeMetaTags(options)`
Runs a compact metadata audit over title, description, canonical, robots, Open Graph, and Twitter tags.
### Result
```ts
{
title: string | null;
titleCount: number;
metaDescription: string | null;
metaDescriptionCount: number;
canonicalUrl: string | null;
canonicalCount: number;
robotsContent: string | null;
robotsDirectives: string[];
metaTags: MetaTagEntry[];
openGraph: Record;
twitter: Record;
warningCodes: MetaAnalysisWarningCode[];
}
```
### Warning codes
| Code | When |
| --- | --- |
| `EMPTY_INPUT` | Empty `html` string |
| `MISSING_TITLE` | No `` tag found |
| `MULTIPLE_TITLES` | More than one `` tag found |
| `MISSING_META_DESCRIPTION` | No description tag found |
| `MULTIPLE_META_DESCRIPTIONS` | More than one description tag found |
| `MISSING_CANONICAL` | No canonical link found |
| `MULTIPLE_CANONICAL` | More than one canonical link found |
| `MISSING_META_ROBOTS` | No `meta[name="robots"]` tag found |