A CLI for publishing standard.site documents to ATProto sequoia.pub
standard site lexicon cli publishing
54
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 167 lines 4.5 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 "autoSync": { 149 "type": "boolean", 150 "description": "Automatically sync state from PDS before publishing to prevent duplicate posts on fresh clones", 151 "default": true 152 }, 153 "ui": { 154 "type": "object", 155 "additionalProperties": false, 156 "description": "Optional UI components configuration", 157 "properties": { 158 "components": { 159 "type": "string", 160 "description": "Directory to install UI components", 161 "default": "src/components" 162 } 163 }, 164 "required": ["components"] 165 } 166 } 167}