Skip to content

madoo.caption-block/v2

Madoo duration-aware caption block — One pending cue with original context and measured feedback for bounded spoken adaptation.

Reference madoo.caption-block/v2
Schema id urn:madoo:schema:caption-block:v2
Version 2.0.0
Served at GET /api/v1/json-schemas/madoo.caption-block/v2 · MCP get_json_schema

One of the two forms of madoo.caption-block-family/v1, the contract on the ports.

Field Type Required Rules Description
schema "madoo.caption-block/v2" yes
track_id string yes min length 1; max length 256
block_id string yes min length 1; max length 256
block_index integer yes ≥ 0; ≤ 9999
source_language string or null yes max length 35
cues array of objects yes min items 1; max items 1
cues[].id string yes min length 1; max length 128
cues[].text string yes min length 1; max length 20000
cues[].speaker string or null yes max length 128
cues[].kind "speech" yes
context_before string or null yes max length 20000
context_after string or null yes max length 20000
timing object yes no other fields
timing.planId string yes pattern “^[a-f0-9]{64}$”
timing.cueId string yes min length 1; max length 128
timing.round integer yes ≥ 1; ≤ 3
timing.originalIndex integer yes ≥ 0; ≤ 9999
timing.slotMilliseconds integer yes ≥ 50; ≤ 21600000
timing.targetLanguage string yes min length 1; max length 35
timing.initialTranslation string yes min length 1; max length 20000
timing.previousText string or null yes max length 20000
timing.previousDurationMilliseconds integer or null yes ≥ 1; ≤ 21600000
timing.previousSpeakingRate number or null yes > 0
timing.maximumFitRate number yes ≥ 1; ≤ 2
timing.previousHasAudibleSignal boolean
timing.maximumCombinedRate number yes ≥ 1; ≤ 2
timing.targetMaximumCharacters integer ≥ 1; ≤ 20000
{
"schema": "madoo.caption-block/v2",
"track_id": "source-track",
"block_id": "timed-block-a",
"block_index": 0,
"source_language": "en",
"cues": [
{
"id": "cue-a",
"text": "Welcome to Madoo.",
"speaker": "speaker-1",
"kind": "speech"
}
],
"context_before": null,
"context_after": "Let's begin.",
"timing": {
"planId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"cueId": "cue-a",
"round": 1,
"originalIndex": 0,
"slotMilliseconds": 2000,
"targetLanguage": "it",
"initialTranslation": "Benvenuti in Madoo.",
"previousText": null,
"previousDurationMilliseconds": null,
"previousSpeakingRate": null,
"maximumFitRate": 1.1,
"maximumCombinedRate": 1.15
}
}
madoo.caption-block/v2 (JSON Schema)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:madoo:schema:caption-block:v2",
"title": "Duration-aware caption block",
"type": "object",
"additionalProperties": false,
"properties": {
"schema": {
"const": "madoo.caption-block/v2"
},
"track_id": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"block_id": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"block_index": {
"type": "integer",
"minimum": 0,
"maximum": 9999
},
"source_language": {
"type": [
"string",
"null"
],
"maxLength": 35
},
"cues": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 20000
},
"speaker": {
"type": [
"string",
"null"
],
"maxLength": 128
},
"kind": {
"const": "speech"
}
},
"required": [
"id",
"text",
"speaker",
"kind"
]
}
},
"context_before": {
"type": [
"string",
"null"
],
"maxLength": 20000
},
"context_after": {
"type": [
"string",
"null"
],
"maxLength": 20000
},
"timing": {
"type": "object",
"additionalProperties": false,
"properties": {
"planId": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"cueId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"round": {
"type": "integer",
"minimum": 1,
"maximum": 3
},
"originalIndex": {
"type": "integer",
"minimum": 0,
"maximum": 9999
},
"slotMilliseconds": {
"type": "integer",
"minimum": 50,
"maximum": 21600000
},
"targetLanguage": {
"type": "string",
"minLength": 1,
"maxLength": 35
},
"initialTranslation": {
"type": "string",
"minLength": 1,
"maxLength": 20000
},
"previousText": {
"type": [
"string",
"null"
],
"maxLength": 20000
},
"previousDurationMilliseconds": {
"type": [
"integer",
"null"
],
"minimum": 1,
"maximum": 21600000
},
"previousSpeakingRate": {
"type": [
"number",
"null"
],
"exclusiveMinimum": 0
},
"maximumFitRate": {
"type": "number",
"minimum": 1,
"maximum": 2
},
"previousHasAudibleSignal": {
"type": "boolean"
},
"maximumCombinedRate": {
"type": "number",
"minimum": 1,
"maximum": 2
},
"targetMaximumCharacters": {
"type": "integer",
"minimum": 1,
"maximum": 20000
}
},
"required": [
"planId",
"cueId",
"round",
"originalIndex",
"slotMilliseconds",
"targetLanguage",
"initialTranslation",
"previousText",
"previousDurationMilliseconds",
"previousSpeakingRate",
"maximumFitRate",
"maximumCombinedRate"
]
}
},
"required": [
"schema",
"track_id",
"block_id",
"block_index",
"source_language",
"cues",
"context_before",
"context_after",
"timing"
]
}