{
	"$schema": "http://json-schema.org/draft-07/schema#",
	"title": "PublisherConfig",
	"type": "object",
	"additionalProperties": false,
	"required": ["siteUrl", "contentDir", "publicationUri"],
	"properties": {
		"$schema": {
			"type": "string",
			"description": "JSON schema hint"
		},
		"siteUrl": {
			"type": "string",
			"format": "uri",
			"description": "Base site URL"
		},
		"contentDir": {
			"type": "string",
			"description": "Directory containing content"
		},
		"imagesDir": {
			"type": "string",
			"description": "Directory containing cover images"
		},
		"publicDir": {
			"type": "string",
			"description": "Static/public folder for `.well-known` files",
			"default": "public"
		},
		"outputDir": {
			"type": "string",
			"description": "Built output directory for inject command"
		},
		"pathPrefix": {
			"type": "string",
			"description": "URL path prefix for posts",
			"default": "/posts"
		},
		"publicationUri": {
			"type": "string",
			"description": "Publication URI"
		},
		"pdsUrl": {
			"type": "string",
			"format": "uri",
			"description": "Personal data server URL (PDS)",
			"default": "https://bsky.social"
		},
		"identity": {
			"type": "string",
			"description": "Which stored identity to use (matches identifier)"
		},
		"frontmatter": {
			"type": "object",
			"additionalProperties": false,
			"description": "Custom frontmatter field mappings",
			"properties": {
				"title": {
					"type": "string",
					"description": "Field name for title",
					"default": "title"
				},
				"description": {
					"type": "string",
					"description": "Field name for description",
					"default": "description"
				},
				"publishDate": {
					"type": "string",
					"description": "Field name for publish date (checks \"publishDate\", \"pubDate\", \"date\", \"createdAt\", and \"created_at\" by default)",
					"default": "publishDate"
				},
				"updatedAt": {
					"type": "string",
					"description": "Field name for updated date (checks \"updatedAt\", \"updated_at\", \"modifiedAt\", and \"modified_at\" by default)",
					"default": "updatedAt"
				},
				"coverImage": {
					"type": "string",
					"description": "Field name for cover image",
					"default": "ogImage"
				},
				"tags": {
					"type": "string",
					"description": "Field name for tags",
					"default": "tags"
				},
				"draft": {
					"type": "string",
					"description": "Field name for draft status",
					"default": "draft"
				},
				"slugField": {
					"type": "string",
					"description": "Frontmatter field to use for slug (if set, uses frontmatter value; otherwise uses filepath)"
				}
			}
		},
		"ignore": {
			"type": "array",
			"description": "Glob patterns for files to ignore",
			"items": {
				"type": "string"
			}
		},
		"removeIndexFromSlug": {
			"type": "boolean",
			"description": "Remove \"/index\" or \"/_index\" suffix from paths",
			"default": false
		},
		"stripDatePrefix": {
			"type": "boolean",
			"description": "Remove YYYY-MM-DD- prefix from filenames (Jekyll-style)",
			"default": false
		},
		"pathTemplate": {
			"type": "string",
			"description": "URL path template with tokens like {year}/{month}/{day}/{slug} (overrides pathPrefix + slug)"
		},
		"textContentField": {
			"type": "string",
			"description": "Frontmatter field to use for textContent instead of markdown body"
		},
		"publishContent": {
			"type": "boolean",
			"description": "Whether or not to publish the documents content on the standard.site document",
			"default": true
		},
		"bluesky": {
			"type": "object",
			"additionalProperties": false,
			"description": "Optional Bluesky posting configuration",
			"required": ["enabled"],
			"properties": {
				"enabled": {
					"type": "boolean",
					"description": "Whether Bluesky posting is enabled",
					"default": false
				},
				"maxAgeDays": {
					"type": "integer",
					"minimum": 0,
					"description": "Only post if published within N days",
					"default": 7
				}
			}
		},
		"ui": {
			"type": "object",
			"additionalProperties": false,
			"description": "Optional UI components configuration",
			"properties": {
				"components": {
					"type": "string",
					"description": "Directory to install UI components",
					"default": "src/components"
				}
			},
			"required": ["components"]
		}
	}
}
