A CLI for publishing standard.site documents to ATProto sequoia.pub
standard site lexicon cli publishing
at main 157 lines 4.1 kB view raw
1{ 2 "$schema": "http://json-schema.org/draft-07/schema#", 3 "title": "PublisherConfig", 4 "type": "object", 5 "additionalProperties": false, 6 "required": ["siteUrl", "contentDir", "publicationUri"], 7 "properties": { 8 "$schema": { 9 "type": "string", 10 "description": "JSON schema hint" 11 }, 12 "siteUrl": { 13 "type": "string", 14 "format": "uri", 15 "description": "Base site URL" 16 }, 17 "contentDir": { 18 "type": "string", 19 "description": "Directory containing content" 20 }, 21 "imagesDir": { 22 "type": "string", 23 "description": "Directory containing cover images" 24 }, 25 "publicDir": { 26 "type": "string", 27 "description": "Static/public folder for `.well-known` files", 28 "default": "public" 29 }, 30 "outputDir": { 31 "type": "string", 32 "description": "Built output directory for inject command" 33 }, 34 "pathPrefix": { 35 "type": "string", 36 "description": "URL path prefix for posts", 37 "default": "/posts" 38 }, 39 "publicationUri": { 40 "type": "string", 41 "description": "Publication URI" 42 }, 43 "pdsUrl": { 44 "type": "string", 45 "format": "uri", 46 "description": "Personal data server URL (PDS)", 47 "default": "https://bsky.social" 48 }, 49 "identity": { 50 "type": "string", 51 "description": "Which stored identity to use (matches identifier)" 52 }, 53 "frontmatter": { 54 "type": "object", 55 "additionalProperties": false, 56 "description": "Custom frontmatter field mappings", 57 "properties": { 58 "title": { 59 "type": "string", 60 "description": "Field name for title", 61 "default": "title" 62 }, 63 "description": { 64 "type": "string", 65 "description": "Field name for description", 66 "default": "description" 67 }, 68 "publishDate": { 69 "type": "string", 70 "description": "Field name for publish date (checks \"publishDate\", \"pubDate\", \"date\", \"createdAt\", and \"created_at\" by default)", 71 "default": "publishDate" 72 }, 73 "coverImage": { 74 "type": "string", 75 "description": "Field name for cover image", 76 "default": "ogImage" 77 }, 78 "tags": { 79 "type": "string", 80 "description": "Field name for tags", 81 "default": "tags" 82 }, 83 "draft": { 84 "type": "string", 85 "description": "Field name for draft status", 86 "default": "draft" 87 }, 88 "slugField": { 89 "type": "string", 90 "description": "Frontmatter field to use for slug (if set, uses frontmatter value; otherwise uses filepath)" 91 } 92 } 93 }, 94 "ignore": { 95 "type": "array", 96 "description": "Glob patterns for files to ignore", 97 "items": { 98 "type": "string" 99 } 100 }, 101 "removeIndexFromSlug": { 102 "type": "boolean", 103 "description": "Remove \"/index\" or \"/_index\" suffix from paths", 104 "default": false 105 }, 106 "stripDatePrefix": { 107 "type": "boolean", 108 "description": "Remove YYYY-MM-DD- prefix from filenames (Jekyll-style)", 109 "default": false 110 }, 111 "pathTemplate": { 112 "type": "string", 113 "description": "URL path template with tokens like {year}/{month}/{day}/{slug} (overrides pathPrefix + slug)" 114 }, 115 "textContentField": { 116 "type": "string", 117 "description": "Frontmatter field to use for textContent instead of markdown body" 118 }, 119 "publishContent": { 120 "type": "boolean", 121 "description": "Whether or not to publish the documents content on the standard.site document", 122 "default": true 123 }, 124 "bluesky": { 125 "type": "object", 126 "additionalProperties": false, 127 "description": "Optional Bluesky posting configuration", 128 "required": ["enabled"], 129 "properties": { 130 "enabled": { 131 "type": "boolean", 132 "description": "Whether Bluesky posting is enabled", 133 "default": false 134 }, 135 "maxAgeDays": { 136 "type": "integer", 137 "minimum": 0, 138 "description": "Only post if published within N days", 139 "default": 7 140 } 141 } 142 }, 143 "ui": { 144 "type": "object", 145 "additionalProperties": false, 146 "description": "Optional UI components configuration", 147 "properties": { 148 "components": { 149 "type": "string", 150 "description": "Directory to install UI components", 151 "default": "src/components" 152 } 153 }, 154 "required": ["components"] 155 } 156 } 157}