{
  "version": 1,
  "channel": "youtube",
  "destination": "channel",
  "mediaType": "schema",
  "reusable": true,
  "independent": true,
  "updatedAt": "2026-08-27T18:17:21.674Z",
  "label": "YouTube channel",
  "authorField": "channel_id",
  "oauthScopes": [
    "youtube.upload",
    "youtube.readonly"
  ],
  "publishNotes": "Resumable upload of MP4. Title/description from content dataset; thumbnail optional from image.",
  "mediaContracts": {
    "content": {
      "required": [
        "id",
        "text",
        "status"
      ],
      "optional": [
        "hashtags",
        "link",
        "scheduledAt",
        "cta"
      ],
      "maxTextHint": 5000
    },
    "image": {
      "required": [
        "id",
        "caption",
        "image",
        "status"
      ],
      "imageFields": [
        "url",
        "alt",
        "width",
        "height",
        "mimeType"
      ],
      "notes": "One primary image per learning record (carousels are separate future type)."
    },
    "video": {
      "required": [
        "id",
        "caption",
        "video",
        "status"
      ],
      "videoFields": [
        "url",
        "mimeType",
        "durationSeconds",
        "width",
        "height",
        "thumbnailUrl"
      ],
      "notes": "MP4 preferred. Vertical 9:16 for Reels/Shorts-style; 16:9 for feed/YouTube."
    }
  },
  "reuse": {
    "how": "Import posts.json into generation/publish pipelines by channel+destination+mediaType only.",
    "doNot": "Do not merge facebook+linkedin or content+image into one learning file for retrieval."
  }
}