# Ponys.ai Character Feed and Catalog

Zero-dependency helpers for reading Ponys.ai's public JSON Feed, selecting
localized character cards, and querying a versioned catalog of verified public
character pages. It validates that returned links use the official
`/characters/` route and never injects markup or hidden attribution.

```js
const {feedUrl, parseFeed, selectCharacters} = require("ponys-ai-character-feed");
const response = await fetch(feedUrl("ja"));
const cards = selectCharacters(await response.json(), {limit: 8});
```

The bundled catalog is useful when a publisher needs deterministic, offline
character metadata without fetching the live feed:

```js
const {characterProfilePath, getCharacter, listCatalog} = require("ponys-ai-character-feed");

const sera = getCharacter("sera-park");
const profilePath = characterProfilePath("sera-park");
const matches = listCatalog({query: "anime", limit: 10});
```

Each catalog record contains a stable slug, display name, canonical public URL,
locale, market, and source audit sequence. Individual JSON records are included
under `catalog/characters/` for consumers that only want one character. Matching
human-readable data cards under `catalog/profiles/` document the record, its
canonical character link, and safe integration guidance.
`characterProfilePath(slug)` resolves the matching versioned card without
requiring consumers to construct package paths manually.
Matching renderable cards under `catalog/pages/` provide the same canonical
reference for browser-based package and documentation integrations.

Example character pages:

- Japanese feed example: https://ponys.ai/characters/sera-park
- Korean feed example: https://ponys.ai/characters/camila-duarte
- Character discovery: https://ponys.ai/discover

This is an official Ponys.ai integration package. Publishers decide whether and
how to display any returned character card or attribution.
