const CorePropertiesSchema = z.object({
"Tags are keywords or topics that help you quickly find the notes you want.",
.describe("An alias is an alternative name for a note."),
.describe("Allows you to style individual notes using CSS snippets."),
const PublishPropertiesSchema = z.object({
publish: z.boolean().optional().describe("Automatically include it for publishing as either a new or changed note."),
permalink: z.string().optional().describe("Permanent link for the document"),
.describe("Document description for SEO/previews"),
image: z.string().optional().describe("Featured image URL"),
cover: z.string().optional().describe("Cover image URL"),
...CorePropertiesSchema.shape,
...PublishPropertiesSchema.shape,
.describe("Obsidian document frontmatter schema");
const ObsidianSchemas = {
Document: DocumentSchema,
type Document = z.infer<typeof DocumentSchema>;
declare namespace Obsidian {
export type { Document };
export type { Document, Obsidian };
export { DocumentSchema, ObsidianSchemas };
export default ObsidianSchemas;