diff --git a/database/migrations/088_categories_metadata.sql b/database/migrations/088_categories_metadata.sql new file mode 100644 index 0000000..ad6458e --- /dev/null +++ b/database/migrations/088_categories_metadata.sql @@ -0,0 +1,6 @@ +-- Optional SEO overrides for category pages (same keys as content metadata JSON). +ALTER TABLE categories + ADD COLUMN IF NOT EXISTS metadata JSONB NOT NULL DEFAULT '{}'::jsonb; + +COMMENT ON COLUMN categories.metadata IS + 'JSON bag for category SEO overrides: seoMetaTitle, seoMetaDescription'; diff --git a/docs/website-api/AI_PROMPT.md b/docs/website-api/AI_PROMPT.md index bd6ffa2..fdb09d8 100644 --- a/docs/website-api/AI_PROMPT.md +++ b/docs/website-api/AI_PROMPT.md @@ -319,11 +319,73 @@ These are **required on every crawlable page** (home, listing, product/blog/port **Open Graph (recommended)** - Set `og:title`, `og:description`, and `og:image` on important pages (home + detail pages) from CMS media when available. +### Site-wide Schema.org JSON-LD (Organization / LocalBusiness) + +Business admins configure this under **Website → Settings → Structured data**. The API builds a ready `jsonLd` object for you. + +1. `GET /tenants/{domain}/website/business-info` +2. If `schema.enabled` and `schema.jsonLd` is an object, render once in the root layout (or every public page): + +```html + +``` + +In Next.js App Router, put it in the root layout via ` +``` + +In Next.js App Router, put it in the root layout via `