app.bluvy.tube.video.metadata

tube.bluvy.app

Documentation

Bluvy Tube-specific metadata for a published video, written to the creator's own repo alongside the app.bsky.feed.post record that actually carries the video (via app.bsky.embed.video). Not required or validated by the PDS or any other AT Protocol app — Bluvy Tube reads this back itself to render an owner-editable title/description/language overlay on top of the plain post text. Written by App\Service\VideoPublicationProcessor (native uploads) and rewritten by App\Service\PdsMetadataSyncService on every owner edit, in the Bluvy Tube source.

main record

Bluvy Tube-specific metadata for a published video, written to the creator's own repo alongside the app.bsky.feed.post record that actually carries the video (via app.bsky.embed.video). Not required or validated by the PDS or any other AT Protocol app — Bluvy Tube reads this back itself to render an owner-editable title/description/language overlay on top of the plain post text. Written by App\Service\VideoPublicationProcessor (native uploads) and rewritten by App\Service\PdsMetadataSyncService on every owner edit, in the Bluvy Tube source.

Record Key tid Timestamp-based ID

Properties

captions array of object Optional

Owner-uploaded WebVTT subtitle/caption tracks, one per language.

maxLength: 20 items
category string Optional

Primary category slug (e.g. 'gaming', 'tech', 'music', etc.).

chapters array of object Optional

Owner-editable chapter markers shown on Bluvy Tube's scrubber.

maxLength: 50 items
createdAt string datetime Required

Client-declared timestamp when this record was created.

description string Optional

No description available.

maxLength: 30000 bytesmaxGraphemes: 3000 graphemes
duration integer Optional

Duration of the video in seconds.

isAiGenerated boolean Optional

Whether the video content was generated by AI.

language string Optional

BCP-47 language tag for the video's primary spoken/subtitle language.

postCid string cid Optional

The CID of the companion app.bsky.feed.post record as of the last write of this record; together with postUri, a strong reference to it. Set together with postUri.

postUri string at-uri Optional

The at-uri of the companion app.bsky.feed.post record, set once that record has been created (this metadata record is written first, in a two-step publish).

secondaryCategories array of string Optional

Optional secondary category slugs.

title string Optional

Owner-editable title, shown on Bluvy Tube in place of the raw post text.

maxLength: 3000 bytesmaxGraphemes: 300 graphemes
url string uri Optional

The Bluvy Tube web page that renders this video (a stable https://{host}/at/{did}/app.bsky.feed.post/{rkey} address). Attests the page in the record-to-page direction; the page links back via an at:canonical meta tag. Set together with postUri.

video blob Required

The same video blob referenced by the companion app.bsky.feed.post's app.bsky.embed.video#video.

View raw schema
{
  "description": "Bluvy Tube-specific metadata for a published video, written to the creator's own repo alongside the app.bsky.feed.post record that actually carries the video (via app.bsky.embed.video). Not required or validated by the PDS or any other AT Protocol app — Bluvy Tube reads this back itself to render an owner-editable title/description/language overlay on top of the plain post text. Written by App\\Service\\VideoPublicationProcessor (native uploads) and rewritten by App\\Service\\PdsMetadataSyncService on every owner edit, in the Bluvy Tube source.",
  "key": "tid",
  "record": {
    "properties": {
      "captions": {
        "description": "Owner-uploaded WebVTT subtitle/caption tracks, one per language.",
        "items": {
          "properties": {
            "lang": {
              "description": "BCP-47 language tag for this track, e.g. 'fr' or 'en-US'.",
              "type": "string"
            },
            "vtt": {
              "accept": [
                "text/vtt"
              ],
              "description": "WebVTT subtitle/caption file for this language.",
              "type": "blob"
            }
          },
          "required": [
            "lang",
            "vtt"
          ],
          "type": "object"
        },
        "maxLength": 20,
        "type": "array"
      },
      "category": {
        "description": "Primary category slug (e.g. 'gaming', 'tech', 'music', etc.).",
        "type": "string"
      },
      "chapters": {
        "description": "Owner-editable chapter markers shown on Bluvy Tube's scrubber.",
        "items": {
          "properties": {
            "startTimeSeconds": {
              "minimum": 0,
              "type": "integer"
            },
            "title": {
              "maxGraphemes": 100,
              "maxLength": 500,
              "type": "string"
            }
          },
          "required": [
            "title",
            "startTimeSeconds"
          ],
          "type": "object"
        },
        "maxLength": 50,
        "type": "array"
      },
      "createdAt": {
        "description": "Client-declared timestamp when this record was created.",
        "format": "datetime",
        "type": "string"
      },
      "description": {
        "maxGraphemes": 3000,
        "maxLength": 30000,
        "type": "string"
      },
      "duration": {
        "description": "Duration of the video in seconds.",
        "type": "integer"
      },
      "isAiGenerated": {
        "description": "Whether the video content was generated by AI.",
        "type": "boolean"
      },
      "language": {
        "description": "BCP-47 language tag for the video's primary spoken/subtitle language.",
        "type": "string"
      },
      "postCid": {
        "description": "The CID of the companion app.bsky.feed.post record as of the last write of this record; together with postUri, a strong reference to it. Set together with postUri.",
        "format": "cid",
        "type": "string"
      },
      "postUri": {
        "description": "The at-uri of the companion app.bsky.feed.post record, set once that record has been created (this metadata record is written first, in a two-step publish).",
        "format": "at-uri",
        "type": "string"
      },
      "secondaryCategories": {
        "description": "Optional secondary category slugs.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "title": {
        "description": "Owner-editable title, shown on Bluvy Tube in place of the raw post text.",
        "maxGraphemes": 300,
        "maxLength": 3000,
        "type": "string"
      },
      "url": {
        "description": "The Bluvy Tube web page that renders this video (a stable https://{host}/at/{did}/app.bsky.feed.post/{rkey} address). Attests the page in the record-to-page direction; the page links back via an at:canonical meta tag. Set together with postUri.",
        "format": "uri",
        "type": "string"
      },
      "video": {
        "accept": [
          "video/*"
        ],
        "description": "The same video blob referenced by the companion app.bsky.feed.post's app.bsky.embed.video#video.",
        "type": "blob"
      }
    },
    "required": [
      "video",
      "createdAt"
    ],
    "type": "object"
  },
  "type": "record"
}

Lexicon Garden

@