blue.skybind.comic

tohu-sand.com

Documentation

A comic manifest presenting a Bluesky post thread as a paginated comic. The record key SHOULD equal the rkey of the subject post so that clients can look up this record directly from a post. `posts`, when present, is an ordered snapshot of the thread composition; readers may alternatively reconstruct pages by walking the self-reply chain from `subject`.

main record

A comic manifest presenting a Bluesky post thread as a paginated comic. The record key SHOULD equal the rkey of the subject post so that clients can look up this record directly from a post. `posts`, when present, is an ordered snapshot of the thread composition; readers may alternatively reconstruct pages by walking the self-reply chain from `subject`.

Record Key any Any valid record key

Properties

createdAt string datetime Required

Client-declared timestamp when this record was created.

labels union Optional

Self labels for this comic as a whole. Labels on the referenced posts remain authoritative for the images themselves.

language string language Optional

Primary language of the comic content.

pageCount integer Optional

Total page (image) count at the time of writing. Informational.

minimum: 1
posts array of ref com.atproto.repo.strongRef Optional

Ordered snapshot of the posts composing this comic as of the last record update. The first item MUST equal `subject`. Readers MAY render pages directly from this list without walking the reply graph; the live self-reply chain remains the source for pages appended after the record was written. Images are always fetched from the referenced posts' embeds in listed order; they are never duplicated here.

minLength: 1 items
startSide string Optional

Which side the first page is placed on in two-page spread view. Distinct from reading direction.

maxLength: 32 bytes
Known values: right, left
Default: right
subject ref com.atproto.repo.strongRef Required

Strong reference to the root post (source of the first page). Expected to be authored by the same account as this record.

title string Optional

Optional display title of the comic.

maxLength: 1000 bytesmaxGraphemes: 100 graphemes
url string uri Required

Canonical reader URL where this comic can be read. Clients may present this as a 'read' action.

View raw schema
{
  "key": "any",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "subject",
      "url",
      "createdAt"
    ],
    "properties": {
      "url": {
        "type": "string",
        "format": "uri",
        "description": "Canonical reader URL where this comic can be read. Clients may present this as a 'read' action."
      },
      "posts": {
        "type": "array",
        "items": {
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        },
        "minLength": 1,
        "description": "Ordered snapshot of the posts composing this comic as of the last record update. The first item MUST equal `subject`. Readers MAY render pages directly from this list without walking the reply graph; the live self-reply chain remains the source for pages appended after the record was written. Images are always fetched from the referenced posts' embeds in listed order; they are never duplicated here."
      },
      "title": {
        "type": "string",
        "maxLength": 1000,
        "description": "Optional display title of the comic.",
        "maxGraphemes": 100
      },
      "labels": {
        "refs": [
          "com.atproto.label.defs#selfLabels"
        ],
        "type": "union",
        "description": "Self labels for this comic as a whole. Labels on the referenced posts remain authoritative for the images themselves."
      },
      "subject": {
        "ref": "com.atproto.repo.strongRef",
        "type": "ref",
        "description": "Strong reference to the root post (source of the first page). Expected to be authored by the same account as this record."
      },
      "language": {
        "type": "string",
        "format": "language",
        "description": "Primary language of the comic content."
      },
      "createdAt": {
        "type": "string",
        "format": "datetime",
        "description": "Client-declared timestamp when this record was created."
      },
      "pageCount": {
        "type": "integer",
        "minimum": 1,
        "description": "Total page (image) count at the time of writing. Informational."
      },
      "startSide": {
        "type": "string",
        "default": "right",
        "maxLength": 32,
        "description": "Which side the first page is placed on in two-page spread view. Distinct from reading direction.",
        "knownValues": [
          "right",
          "left"
        ]
      }
    }
  },
  "description": "A comic manifest presenting a Bluesky post thread as a paginated comic. The record key SHOULD equal the rkey of the subject post so that clients can look up this record directly from a post. `posts`, when present, is an ordered snapshot of the thread composition; readers may alternatively reconstruct pages by walking the self-reply chain from `subject`."
}

Lexicon Garden

@