A CLI for publishing standard.site documents to ATProto sequoia.pub
standard site lexicon cli publishing
at main 162 lines 4.3 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 "updatedAt": { 74 "type": "string", 75 "description": "Field name for updated date (checks \"updatedAt\", \"updated_at\", \"modifiedAt\", and \"modified_at\" by default)", 76 "default": "updatedAt" 77 }, 78 "coverImage": { 79 "type": "string", 80 "description": "Field name for cover image", 81 "default": "ogImage" 82 }, 83 "tags": { 84 "type": "string", 85 "description": "Field name for tags", 86 "default": "tags" 87 }, 88 "draft": { 89 "type": "string", 90 "description": "Field name for draft status", 91 "default": "draft" 92 }, 93 "slugField": { 94 "type": "string", 95 "description": "Frontmatter field to use for slug (if set, uses frontmatter value; otherwise uses filepath)" 96 } 97 } 98 }, 99 "ignore": { 100 "type": "array", 101 "description": "Glob patterns for files to ignore", 102 "items": { 103 "type": "string" 104 } 105 }, 106 "removeIndexFromSlug": { 107 "type": "boolean", 108 "description": "Remove \"/index\" or \"/_index\" suffix from paths", 109 "default": false 110 }, 111 "stripDatePrefix": { 112 "type": "boolean", 113 "description": "Remove YYYY-MM-DD- prefix from filenames (Jekyll-style)", 114 "default": false 115 }, 116 "pathTemplate": { 117 "type": "string", 118 "description": "URL path template with tokens like {year}/{month}/{day}/{slug} (overrides pathPrefix + slug)" 119 }, 120 "textContentField": { 121 "type": "string", 122 "description": "Frontmatter field to use for textContent instead of markdown body" 123 }, 124 "publishContent": { 125 "type": "boolean", 126 "description": "Whether or not to publish the documents content on the standard.site document", 127 "default": true 128 }, 129 "bluesky": { 130 "type": "object", 131 "additionalProperties": false, 132 "description": "Optional Bluesky posting configuration", 133 "required": ["enabled"], 134 "properties": { 135 "enabled": { 136 "type": "boolean", 137 "description": "Whether Bluesky posting is enabled", 138 "default": false 139 }, 140 "maxAgeDays": { 141 "type": "integer", 142 "minimum": 0, 143 "description": "Only post if published within N days", 144 "default": 7 145 } 146 } 147 }, 148 "ui": { 149 "type": "object", 150 "additionalProperties": false, 151 "description": "Optional UI components configuration", 152 "properties": { 153 "components": { 154 "type": "string", 155 "description": "Directory to install UI components", 156 "default": "src/components" 157 } 158 }, 159 "required": ["components"] 160 } 161 } 162}