Shared lexicon schemas for long-form publishing on AT Protocol. Uses typescript to json via prototypey.
45
fork

Configure Feed

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

Update lexicon descriptions

brookie.blog 621d7e81 faa1ade2

verified
+29 -24
+12 -11
src/lexicons/site.standard.document.ts
··· 9 9 site: lx.string({ 10 10 required: true, 11 11 format: 'uri', 12 - description: 'Required URI for parent site or publication (https:// or at://). Use https:// for loose documents. Avoid trailing slashes.' 12 + description: 'Points to a publication record (at://) or a publication url (https://) for loose documents. Avoid trailing slashes.' 13 13 }), 14 14 path: lx.string({ 15 - description: 'Optional path, combined with site or publication url value to construct a full url to the document. Prepend with a leading slash.' 15 + description: 'Combine with site or publication url to construct a canonical URL to the document. Prepend with a leading slash.' 16 16 }), 17 17 title: lx.string({ 18 18 required: true, 19 19 maxLength: 1280, 20 20 maxGraphemes: 128, 21 - description: 'Required title of the document.' 21 + description: 'Title of the document.' 22 22 }), 23 23 description: lx.string({ 24 24 maxLength: 3000, 25 25 maxGraphemes: 300, 26 - description: 'Optional brief description or expert of the document.' 26 + description: 'A brief description or excerpt from the document.' 27 27 }), 28 28 coverImage: lx.blob({ 29 29 maxSize: 1 * MB, 30 30 accept: ['image/*'], 31 - description: 'Optional image to use as the documents cover. Less than 1MB is size.' 31 + description: 'Image to used for thumbnail or cover image. Less than 1MB is size.' 32 32 }), 33 33 content: lx.union([], { 34 34 closed: false, 35 - description: 'Optional open union to construct content within the record. Can be extended with other lexicons to define any content format.' 35 + description: 'Open union used to define the record\'s content. Each entry must specify a $type and may be extended with other lexicons to support additional content formats.' 36 36 }), 37 37 textContent: lx.string({ 38 - description: 'Optional plaintext representation of the documents contents. Useful for search and other cases.' 38 + description: 'Plaintext representation of the documents contents. Should not contain markdown or other formatting.' 39 39 }), 40 40 bskyPostRef: lx.ref('com.atproto.repo.strongRef', { 41 - description: 'Optional strong reference to a Bluesky post. Useful to keep track of comments off-platform.' 41 + description: 'Strong reference to a Bluesky post. Useful to keep track of comments off-platform.' 42 42 }), 43 43 tags: lx.array({ 44 44 type: 'string', 45 45 }, { 46 46 maxLength: 100, 47 - description: 'Optional array of strings used to tag/categorize the document. Avoid prepending tags with hashtags ("#").' 47 + description: 'Array of strings used to tag or categorize the document. Avoid prepending tags with hashtags.' 48 48 }), 49 49 publishedAt: lx.string({ 50 50 required: true, 51 51 format: 'datetime', 52 - description: 'Required timestamp of the documents publication.' 52 + description: 'Timestamp of the documents publish time.' 53 53 }), 54 54 updatedAt: lx.string({ 55 55 format: 'datetime', 56 - description: 'Optional timestamp of the documents last edit.' 56 + description: 'Timestamp of the documents last edit.' 57 57 }) 58 58 }), 59 + description: 'A document record representing a published article, blog post, or other content. Documents can belong to a publication or exist independently.' 59 60 }) 60 61 })
+1 -1
src/lexicons/site.standard.graph.subscription.ts
··· 8 8 publication: lx.string({ 9 9 required: true, 10 10 format: 'at-uri', 11 - description: 'Required publication at-uri.' 11 + description: 'AT-URI reference to the publication record being subscribed to (ex: at://did:plc:abc123/site.standard.publication/xyz789).' 12 12 }) 13 13 }), 14 14 description: 'Record declaring a subscription to a publication.'
+11 -8
src/lexicons/site.standard.publication.ts
··· 10 10 url: lx.string({ 11 11 required: true, 12 12 format: 'uri', 13 - description: 'Required base publication URL (ex: https://standard.site).' 13 + description: 'Base publication url (ex: https://standard.site). The canonical document URL is formed by combining this value with the document path.' 14 14 }), 15 15 icon: lx.blob({ 16 16 maxSize: 1 * MB, 17 - accept: ['image/*'] 17 + accept: ['image/*'], 18 + description: 'Square image to identify the publication. Should be at least 256x256.' 18 19 }), 19 20 name: lx.string({ 20 21 required: true, 21 22 maxLength: 1280, 22 23 maxGraphemes: 128, 23 - description: 'Required name of the publication.' 24 + description: 'Name of the publication.' 24 25 }), 25 26 description: lx.string({ 26 27 maxLength: 3000, 27 28 maxGraphemes: 300, 28 - description: 'Optional brief description of the publication.' 29 + description: 'Brief description of the publication.' 29 30 }), 30 31 basicTheme: lx.ref(siteStandardThemeBasic.json.id, { 31 - description: 'Optional simplified publication theme for tools and apps to easily implement when displaying content.' 32 + description: 'Simplified publication theme for tools and apps to utilize when displaying content.' 32 33 }), 33 34 preferences: lx.ref('#preferences', { 34 - description: 'Optional object containing platform specific preferences (with a few shared properties).' 35 + description: 'Object containing platform specific preferences (with a few shared properties).' 35 36 }) 36 37 }), 38 + description: 'A publication record representing a blog, website, or content platform. Publications serve as containers for documents and define the overall branding and settings.' 37 39 }), 38 40 preferences: lx.object({ 39 41 showInDiscover: lx.boolean({ 40 42 default: true, 41 - description: 'Optional boolean which decides whether the publication should appear in discovery feeds.' 42 - }) 43 + description: 'Boolean which decides whether the publication should appear in discovery feeds.' 44 + }), 45 + description: 'Platform-specific preferences for the publication, including discovery and visibility settings.' 43 46 }) 44 47 })
+5 -4
src/lexicons/site.standard.theme.basic.ts
··· 8 8 record: lx.object({ 9 9 background: lx.union([siteStandardThemeColor.json.id + '#rgb'], { 10 10 required: true, 11 - description: 'Required color used for content background.' 11 + description: 'Color used for content background.' 12 12 }), 13 13 foreground: lx.union([siteStandardThemeColor.json.id + '#rgb'], { 14 14 required: true, 15 - description: 'Required color used for content text.' 15 + description: 'Color used for content text.' 16 16 }), 17 17 accent: lx.union([siteStandardThemeColor.json.id + '#rgb'], { 18 18 required: true, 19 - description: 'Required color used for links and button backgrounds.' 19 + description: 'Color used for links and button backgrounds.' 20 20 }), 21 21 accentForeground: lx.union([siteStandardThemeColor.json.id + '#rgb'], { 22 22 required: true, 23 - description: 'Required color used for button text.' 23 + description: 'Color used for button text.' 24 24 }) 25 25 }), 26 + description: 'A simplified theme definition for publications, providing basic color customization for content display across different platforms and applications.' 26 27 }) 27 28 })