UNPKG

sanity-plugin-seo

Version:

Complete SEO toolkit for Sanity Studio with live scoring, AI suggestions, team workflows, and 30+ structured data types. Free and AI tiers live. Pro coming soon.

110 lines (105 loc) 2.51 kB
import { Image } from "sanity"; export type HreflangEntry = { locale: string; url: string; }; export type SchemaOrgData = { schemaType?: string; name?: string; description?: string; url?: string; image?: string; datePublished?: string; dateModified?: string; author?: string; price?: string; priceCurrency?: string; availability?: string; ratingValue?: string; ratingCount?: string; startDate?: string; endDate?: string; location?: string; // FAQ faqItems?: Array<{ question: string; answer: string }>; }; export type Seo = { type: string; nofollowAttributes?: boolean; robotsMeta?: string[]; metaTitle?: string; metaDescription?: string; metaImage?: Image; focusKeyword?: string; seoKeywords?: Array<{ type?: string }>; hreflang?: HreflangEntry[]; schemaOrg?: SchemaOrgData; openGraph?: { image?: Image; title?: string; description?: string; siteName?: string; }; additionalMetaTags?: Array<{ type?: string; metaAttributes?: Array<{ type?: string; attributeKey?: string; attributeType?: string; attributeValueImage?: Image; attributeValueString?: string; }>; }>; twitter?: { cardType?: string; creator?: string; site?: string; handle?: string; }; // Pro workflow seoStatus?: "draft" | "review" | "approved"; seoReviewNotes?: string; }; /** Shape of the seo object returned by a GROQ query — use in your frontend project */ export interface SeoData { metaTitle?: string; metaDescription?: string; nofollowAttributes?: boolean; robotsMeta?: string[]; focusKeyword?: string; seoKeywords?: string[]; metaImage?: { asset?: { url?: string } }; openGraph?: { title?: string; description?: string; siteName?: string; image?: { asset?: { url?: string } }; }; twitter?: { cardType?: string; site?: string; creator?: string; handle?: string; }; hreflang?: { locale: string; url: string }[]; schemaOrg?: { schemaType?: string; name?: string; description?: string; url?: string; author?: string; datePublished?: string; dateModified?: string; price?: string; priceCurrency?: string; availability?: string; ratingValue?: string; ratingCount?: string; startDate?: string; endDate?: string; location?: string; faqItems?: { question: string; answer: string }[]; }; seoStatus?: "draft" | "review" | "approved"; seoReviewNotes?: string; }