Tutorializer Video Tutorials

Write and update video tutorials, voiceovers and pronunciation rules across your projects.

我該用這個嗎

品質與安全性

A
說明品質
99%
結構描述完整度
96%
命名品質
99%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

發現項目(1)

  • LOWTool 'get_project_localization_summary' name length outside 3-30 range在 get_project_localization_summary 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~11,801Token(工具定義)
~5.0 KB典型回應大小
顯著的注意力影響(128k 上下文的 9.22%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "tutorializer": {
      "url": "https://mcp.tutorializer.com/mcp"
    }
  }
}

遠端端點

https://mcp.tutorializer.com/mcpstreamable-http

它能做什麼

工具清單

工具(23)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢list_projects(limit, cursor)

List a bounded page of Tutorializer projects the authenticated user has access to. Returns a Markdown table of id, name, domain, and last edit time.

輸入結構描述

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "cursor": {
      "type": "string",
      "maxLength": 4096,
      "description": "Opaque cursor from a previous call"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "empty"
      ]
    },
    "projects": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "vanityId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 63
              },
              {
                "type": "null"
              }
            ]
          },
          "domain": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 253
              },
              {
                "type": "null"
              }
            ]
          },
          "creationTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "vanityId",
          "domain",
          "creationTime",
          "lastEditTime"
        ],
        "additionalProperties": false
      },
      "maxItems": 100
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "returned": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "hasMore": {
      "type": "boolean"
    },
    "nextCursor": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 4096
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "projects",
    "offset",
    "returned",
    "hasMore",
    "nextCursor"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_project(projectId)

Fetch a single Tutorializer project by immutable id or stable public vanity id. Returns the project metadata, its locale and voice settings, and any pronunciation rules formatted as Markdown.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project id or stable public vanity id"
    }
  },
  "required": [
    "projectId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "not-found"
      ]
    },
    "project": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "name": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "vanityId": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 63
                },
                {
                  "type": "null"
                }
              ]
            },
            "domain": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 253
                },
                {
                  "type": "null"
                }
              ]
            },
            "defaultLocale": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            },
            "locales": {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 32
              },
              "maxItems": 100
            },
            "defaultVoice": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "stability": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                },
                {
                  "type": "null"
                }
              ]
            },
            "similarityBoost": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                },
                {
                  "type": "null"
                }
              ]
            },
            "style": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                },
                {
                  "type": "null"
                }
              ]
            },
            "speed": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0.1,
                  "maximum": 10
                },
                {
                  "type": "null"
                }
              ]
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            },
            "pronunciationRules": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "word": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 120
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "phonemes": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 500
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "alphabet": {
                    "type": "string",
                    "enum": [
                      "ipa",
                      "cmu"
                    ]
                  }
                },
                "required": [
                  "word",
                  "phonemes",
                  "alphabet"
                ],
                "additionalProperties": false
              },
              "maxItems": 50
            },
            "pronunciationRuleCount": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000
            },
            "pronunciationRuleCountIsLowerBound": {
              "type": "boolean"
            },
            "pronunciationRulesTruncated": {
              "type": "boolean"
            }
          },
          "required": [
            "id",
            "name",
            "vanityId",
            "domain",
            "defaultLocale",
            "locales",
            "defaultVoice",
            "stability",
            "similarityBoost",
            "style",
            "speed",
            "creationTime",
            "lastEditTime",
            "pronunciationRules",
            "pronunciationRuleCount",
            "pronunciationRuleCountIsLowerBound",
            "pronunciationRulesTruncated"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "project"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_project_localization_summary(projectId, expectedDevices)

Audit one Tutorializer project across configured locales, rendered-video locales/devices, and speech languages. Reads at most 100 rows per content type and marks truncated totals as lower bounds.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Tutorializer project id or stable public vanity id"
    },
    "expectedDevices": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 40
      },
      "minItems": 1,
      "maxItems": 10,
      "description": "Expected output device names; defaults to computer, tablet, and smartphone"
    }
  },
  "required": [
    "projectId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "not-found"
      ]
    },
    "summary": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "project": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 200
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "defaultLocale": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 32
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "configuredLocales": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "maxLength": 32
                  },
                  "maxItems": 100
                },
                "configuredLocalesTruncated": {
                  "type": "boolean"
                }
              },
              "required": [
                "id",
                "name",
                "defaultLocale",
                "configuredLocales",
                "configuredLocalesTruncated"
              ],
              "additionalProperties": false
            },
            "totals": {
              "type": "object",
              "properties": {
                "tutorials": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "isLowerBound": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "count",
                    "isLowerBound"
                  ],
                  "additionalProperties": false
                },
                "videos": {
                  "$ref": "#/properties/summary/anyOf/0/properties/totals/properties/tutorials"
                },
                "speeches": {
                  "$ref": "#/properties/summary/anyOf/0/properties/totals/properties/tutorials"
                }
              },
              "required": [
                "tutorials",
                "videos",
                "speeches"
              ],
              "additionalProperties": false
            },
            "localeCoverage": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "locale": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 32
                  },
                  "configured": {
                    "type": "boolean"
                  },
                  "videos": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "speeches": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  }
                },
                "required": [
                  "locale",
                  "configured",
                  "videos",
                  "speeches"
                ],
                "additionalProperties": false
              },
              "maxItems": 50
            },
            "localeCoverageTotal": {
              "type": "integer",
              "minimum": 0,
              "maximum": 300
            },
            "localeCoverageTruncated": {
              "type": "boolean"
            },
            "deviceCoverage": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "device": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 40
                  },
                  "videos": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  }
                },
                "required": [
                  "device",
                  "videos"
                ],
                "additionalProperties": false
              },
              "maxItems": 10
            },
            "missingVideoLocales": {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 32
              },
              "maxItems": 100
            },
            "missingSpeechLocales": {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 32
              },
              "maxItems": 100
            },
            "missingDevices": {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 40
              },
              "maxItems": 10
            },
            "coverageDerivedFromTruncatedData": {
              "type": "boolean"
            }
          },
          "required": [
            "project",
            "totals",
            "localeCoverage",
            "localeCoverageTotal",
            "localeCoverageTruncated",
            "deviceCoverage",
            "missingVideoLocales",
            "missingSpeechLocales",
            "missingDevices",
            "coverageDerivedFromTruncatedData"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "summary"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_tutorials(projectId, limit, cursor)

List Tutorializer tutorial definitions. Optionally filter by projectId. Returns a Markdown table of id, name, project, default voice, and last edit time; rendered locales and devices live on videos.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "maxLength": 200,
      "description": "Filter tutorials by project id"
    },
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "cursor": {
      "type": "string",
      "maxLength": 4096,
      "description": "Opaque cursor from a previous call"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "empty"
      ]
    },
    "projectIdFilter": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ]
    },
    "tutorials": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "projectId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultVoice": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "creationTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "projectId",
          "defaultVoice",
          "creationTime",
          "lastEditTime"
        ],
        "additionalProperties": false
      },
      "maxItems": 100
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "returned": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "hasMore": {
      "type": "boolean"
    },
    "nextCursor": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 4096
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "projectIdFilter",
    "tutorials",
    "offset",
    "returned",
    "hasMore",
    "nextCursor"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_tutorial(tutorialId)

Fetch one Tutorializer tutorial definition and a bounded preview of its rendered locale/device outputs. A tutorial does not itself have a locale or status; those vary per video.

輸入結構描述

{
  "type": "object",
  "properties": {
    "tutorialId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Tutorial id (uuid)"
    }
  },
  "required": [
    "tutorialId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "not-found"
      ]
    },
    "tutorial": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "name": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "projectId": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "defaultVoice": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "name",
            "projectId",
            "defaultVoice",
            "creationTime",
            "lastEditTime"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "videoCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 8
    },
    "videoCountIsLowerBound": {
      "type": "boolean"
    },
    "videos": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "locale": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          },
          "device": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "format": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 100000
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 100000
              },
              {
                "type": "null"
              }
            ]
          },
          "url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2048
              },
              {
                "type": "null"
              }
            ]
          },
          "chaptersUrl": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2048
              },
              {
                "type": "null"
              }
            ]
          },
          "subtitlesUrl": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2048
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2048
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "locale",
          "device",
          "format",
          "width",
          "height",
          "url",
          "chaptersUrl",
          "subtitlesUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "maxItems": 8
    }
  },
  "required": [
    "status",
    "tutorial",
    "videoCount",
    "videoCountIsLowerBound",
    "videos"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_videos(projectId, tutorialId, locale, device, limit, ...)

List rendered Tutorializer videos. Optionally filter by projectId, tutorialId, locale, and device. Returns a Markdown table of output dimensions, locale, device, format, and URL.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "maxLength": 200,
      "description": "Filter videos by project id"
    },
    "tutorialId": {
      "type": "string",
      "maxLength": 200,
      "description": "Filter videos by tutorial id"
    },
    "locale": {
      "type": "string",
      "maxLength": 32,
      "description": "Filter by locale, e.g. en, es"
    },
    "device": {
      "type": "string",
      "maxLength": 100,
      "description": "Filter by device, e.g. desktop, smartphone"
    },
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "cursor": {
      "type": "string",
      "maxLength": 4096,
      "description": "Opaque cursor from a previous call"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "empty"
      ]
    },
    "projectIdFilter": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ]
    },
    "tutorialIdFilter": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ]
    },
    "localeFilter": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ]
    },
    "deviceFilter": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ]
    },
    "videos": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "tutorialId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "projectId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2048
              },
              {
                "type": "null"
              }
            ]
          },
          "locale": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          },
          "device": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "format": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 100000
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 100000
              },
              {
                "type": "null"
              }
            ]
          },
          "fileSize": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 1000000000000000
              },
              {
                "type": "null"
              }
            ]
          },
          "creationTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "tutorialId",
          "projectId",
          "url",
          "locale",
          "device",
          "format",
          "width",
          "height",
          "fileSize",
          "creationTime",
          "lastEditTime"
        ],
        "additionalProperties": false
      },
      "maxItems": 100
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "returned": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "hasMore": {
      "type": "boolean"
    },
    "nextCursor": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 4096
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "projectIdFilter",
    "tutorialIdFilter",
    "localeFilter",
    "deviceFilter",
    "videos",
    "offset",
    "returned",
    "hasMore",
    "nextCursor"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_video(videoId)

Fetch a single rendered Tutorializer video by id. Returns its tutorial, locale, device, dimensions, primary media URL, chapters, subtitles, and thumbnail metadata.

輸入結構描述

{
  "type": "object",
  "properties": {
    "videoId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Video id (uuid)"
    }
  },
  "required": [
    "videoId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "not-found"
      ]
    },
    "video": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "projectId": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "tutorialId": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "locale": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            },
            "device": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ]
            },
            "theme": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ]
            },
            "format": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ]
            },
            "width": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 100000
                },
                {
                  "type": "null"
                }
              ]
            },
            "height": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 100000
                },
                {
                  "type": "null"
                }
              ]
            },
            "fileSize": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1000000000000000
                },
                {
                  "type": "null"
                }
              ]
            },
            "url": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2048
                },
                {
                  "type": "null"
                }
              ]
            },
            "chaptersUrl": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2048
                },
                {
                  "type": "null"
                }
              ]
            },
            "subtitlesUrl": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2048
                },
                {
                  "type": "null"
                }
              ]
            },
            "thumbnailUrl": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2048
                },
                {
                  "type": "null"
                }
              ]
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "projectId",
            "tutorialId",
            "locale",
            "device",
            "theme",
            "format",
            "width",
            "height",
            "fileSize",
            "url",
            "chaptersUrl",
            "subtitlesUrl",
            "thumbnailUrl",
            "creationTime",
            "lastEditTime"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "video"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_speeches(projectId, language, limit, cursor)

List a bounded page of Tutorializer speeches (voiceover segments). Optionally filter by projectId and language. Returns a safe preview of id, text, language, project, and URL.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "maxLength": 200,
      "description": "Filter speeches by project id"
    },
    "language": {
      "type": "string",
      "maxLength": 32,
      "description": "Filter speeches by language code, e.g. en, es, de"
    },
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "cursor": {
      "type": "string",
      "maxLength": 4096,
      "description": "Opaque cursor from a previous call"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "empty"
      ]
    },
    "projectIdFilter": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ]
    },
    "languageFilter": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ]
    },
    "speeches": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "textPreview": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 120
              },
              {
                "type": "null"
              }
            ]
          },
          "textTruncated": {
            "type": "boolean"
          },
          "language": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          },
          "projectId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2048
              },
              {
                "type": "null"
              }
            ]
          },
          "creationTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "textPreview",
          "textTruncated",
          "language",
          "projectId",
          "url",
          "creationTime",
          "lastEditTime"
        ],
        "additionalProperties": false
      },
      "maxItems": 100
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "returned": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "hasMore": {
      "type": "boolean"
    },
    "nextCursor": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 4096
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "projectIdFilter",
    "languageFilter",
    "speeches",
    "offset",
    "returned",
    "hasMore",
    "nextCursor"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_speech(speechId)

Fetch a single Tutorializer speech (voiceover segment) by id. Returns the speech metadata plus its full source text and translation formatted as Markdown.

輸入結構描述

{
  "type": "object",
  "properties": {
    "speechId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Speech id (uuid)"
    }
  },
  "required": [
    "speechId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "not-found"
      ]
    },
    "speech": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "projectId": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "language": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            },
            "voice": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "duration": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 86400
                },
                {
                  "type": "null"
                }
              ]
            },
            "url": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2048
                },
                {
                  "type": "null"
                }
              ]
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            },
            "text": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 4000
                },
                {
                  "type": "null"
                }
              ]
            },
            "textTruncated": {
              "type": "boolean"
            },
            "translatedText": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 4000
                },
                {
                  "type": "null"
                }
              ]
            },
            "translatedTextTruncated": {
              "type": "boolean"
            }
          },
          "required": [
            "id",
            "projectId",
            "language",
            "voice",
            "duration",
            "url",
            "creationTime",
            "lastEditTime",
            "text",
            "textTruncated",
            "translatedText",
            "translatedTextTruncated"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "speech"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴create_project(name, domain, defaultLocale)

Create a Tutorializer project. State-changing and non-idempotent: repeating the call creates another project, so list projects and confirm the intended name first.

輸入結構描述

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Project name"
    },
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253,
      "description": "Optional product domain, for example example.com"
    },
    "defaultLocale": {
      "type": "string",
      "minLength": 2,
      "maxLength": 16,
      "description": "Default locale code, for example en or pt-BR"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "const": "created"
    },
    "project": {
      "type": "object",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 120
        },
        "vanityId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 63
            },
            {
              "type": "null"
            }
          ]
        },
        "domain": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 253
            },
            {
              "type": "null"
            }
          ]
        },
        "defaultLocale": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 16
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "id",
        "name",
        "vanityId",
        "domain",
        "defaultLocale"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "project"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴update_project(projectId, name, domain, defaultLocale, locales, ...)

Change a Tutorializer project’s name, domain, locales, default voice or narration speed. Reads the stored project first and rewrites the whole record, so unspecified fields keep their current values. The locales list is a complete replacement, and removing a locale stops it being expected by the localization audit. Submitting the values it already has is a no-op.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project id or stable public vanity id"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "New name"
    },
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253,
      "description": "New product domain, for example example.com"
    },
    "defaultLocale": {
      "type": "string",
      "minLength": 2,
      "maxLength": 16,
      "description": "New default locale, for example en or pt-BR"
    },
    "locales": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 2,
        "maxLength": 32
      },
      "minItems": 1,
      "maxItems": 100,
      "description": "Complete replacement list of locales the project publishes. Locales absent from this list stop being expected."
    },
    "defaultVoice": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "New default voice id for synthesized narration"
    },
    "speed": {
      "type": "number",
      "minimum": 0.1,
      "maximum": 10,
      "description": "New narration speed multiplier"
    }
  },
  "required": [
    "projectId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "updated",
        "unchanged",
        "not-found"
      ]
    },
    "project": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "name": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "vanityId": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 63
                },
                {
                  "type": "null"
                }
              ]
            },
            "domain": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 253
                },
                {
                  "type": "null"
                }
              ]
            },
            "defaultLocale": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            },
            "locales": {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 32
              },
              "maxItems": 100
            },
            "defaultVoice": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "speed": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0.1,
                  "maximum": 10
                },
                {
                  "type": "null"
                }
              ]
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "name",
            "vanityId",
            "domain",
            "defaultLocale",
            "locales",
            "defaultVoice",
            "speed",
            "creationTime",
            "lastEditTime"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "project"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴create_tutorial(projectId, name, defaultVoice)

Create a Tutorializer tutorial definition inside a project. State-changing and non-idempotent: repeating the call creates another tutorial, so list tutorials and confirm the intended name first. This records the tutorial; it does not record or render a video.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project id that will own the tutorial"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Tutorial name"
    },
    "defaultVoice": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Optional voice id used when narration is synthesized for this tutorial"
    }
  },
  "required": [
    "projectId",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "const": "created"
    },
    "tutorial": {
      "type": "object",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "projectId": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "defaultVoice": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "creationTime": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 64
            },
            {
              "type": "null"
            }
          ]
        },
        "lastEditTime": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 64
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "id",
        "name",
        "projectId",
        "defaultVoice",
        "creationTime",
        "lastEditTime"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "tutorial"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴update_tutorial(tutorialId, name, defaultVoice)

Rename a Tutorializer tutorial or change the default voice used for its narration. Reads the stored tutorial first and rewrites the whole record, so unspecified fields keep their current values. Submitting the values it already has is a no-op.

輸入結構描述

{
  "type": "object",
  "properties": {
    "tutorialId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Tutorial id to edit"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "New tutorial name"
    },
    "defaultVoice": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "New default voice id for synthesized narration"
    }
  },
  "required": [
    "tutorialId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "updated",
        "unchanged",
        "not-found"
      ]
    },
    "tutorial": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "name": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "projectId": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "defaultVoice": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "name",
            "projectId",
            "defaultVoice",
            "creationTime",
            "lastEditTime"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "tutorial"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴create_video(projectId, tutorialId, url, locale, device, ...)

Register one already-uploaded rendered tutorial video with Tutorializer, recording its locale, device, dimensions and media URLs. State-changing and non-idempotent: repeating the call registers a second output. This does not record, render or upload a file; host the file first and pass its public https URL.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project id that owns the tutorial"
    },
    "tutorialId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Tutorial id this rendered output belongs to"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048,
      "description": "Public https URL of the already-uploaded video file"
    },
    "locale": {
      "type": "string",
      "minLength": 2,
      "maxLength": 32,
      "description": "Locale of this render, for example en or pt-BR"
    },
    "device": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Device profile, for example computer or smartphone"
    },
    "format": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Container or codec, for example mp4 or webm"
    },
    "width": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "height": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "duration": {
      "type": "number",
      "minimum": 0,
      "maximum": 86400,
      "description": "Duration in seconds"
    },
    "fileSize": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000000000,
      "description": "File size in bytes"
    },
    "chaptersUrl": {
      "$ref": "#/properties/url",
      "description": "Public https URL of chapters"
    },
    "subtitlesUrl": {
      "$ref": "#/properties/chaptersUrl",
      "description": "Public https URL of a WebVTT subtitle track"
    },
    "thumbnailUrl": {
      "$ref": "#/properties/chaptersUrl",
      "description": "Public https URL of a poster"
    }
  },
  "required": [
    "projectId",
    "tutorialId",
    "url"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "const": "created"
    },
    "video": {
      "type": "object",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "projectId": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "tutorialId": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "url": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2048
            },
            {
              "type": "null"
            }
          ]
        },
        "locale": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 32
            },
            {
              "type": "null"
            }
          ]
        },
        "device": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 100
            },
            {
              "type": "null"
            }
          ]
        },
        "format": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 100
            },
            {
              "type": "null"
            }
          ]
        },
        "width": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 100000
            },
            {
              "type": "null"
            }
          ]
        },
        "height": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 100000
            },
            {
              "type": "null"
            }
          ]
        },
        "duration": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0,
              "maximum": 86400
            },
            {
              "type": "null"
            }
          ]
        },
        "fileSize": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1000000000000000
            },
            {
              "type": "null"
            }
          ]
        },
        "chaptersUrl": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2048
            },
            {
              "type": "null"
            }
          ]
        },
        "subtitlesUrl": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2048
            },
            {
              "type": "null"
            }
          ]
        },
        "thumbnailUrl": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2048
            },
            {
              "type": "null"
            }
          ]
        },
        "creationTime": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 64
            },
            {
              "type": "null"
            }
          ]
        },
        "lastEditTime": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 64
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "id",
        "projectId",
        "tutorialId",
        "url",
        "locale",
        "device",
        "format",
        "width",
        "height",
        "duration",
        "fileSize",
        "chaptersUrl",
        "subtitlesUrl",
        "thumbnailUrl",
        "creationTime",
        "lastEditTime"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "video"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴update_video(videoId, url, locale, device, format, ...)

Correct the metadata of one registered Tutorializer rendered video, such as its locale, device, dimensions or media URLs. Reads the stored record first and rewrites the whole document, so unspecified fields keep their current values. Submitting the values it already has is a no-op.

輸入結構描述

{
  "type": "object",
  "properties": {
    "videoId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Rendered video id"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048,
      "description": "New public https URL of the video file"
    },
    "locale": {
      "type": "string",
      "minLength": 2,
      "maxLength": 32
    },
    "device": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "format": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "width": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "height": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "duration": {
      "type": "number",
      "minimum": 0,
      "maximum": 86400
    },
    "fileSize": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000000000
    },
    "chaptersUrl": {
      "$ref": "#/properties/url"
    },
    "subtitlesUrl": {
      "$ref": "#/properties/url"
    },
    "thumbnailUrl": {
      "$ref": "#/properties/url"
    }
  },
  "required": [
    "videoId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "updated",
        "unchanged",
        "not-found"
      ]
    },
    "video": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "projectId": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "tutorialId": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "url": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2048
                },
                {
                  "type": "null"
                }
              ]
            },
            "locale": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            },
            "device": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ]
            },
            "format": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ]
            },
            "width": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 100000
                },
                {
                  "type": "null"
                }
              ]
            },
            "height": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 100000
                },
                {
                  "type": "null"
                }
              ]
            },
            "duration": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 86400
                },
                {
                  "type": "null"
                }
              ]
            },
            "fileSize": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1000000000000000
                },
                {
                  "type": "null"
                }
              ]
            },
            "chaptersUrl": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2048
                },
                {
                  "type": "null"
                }
              ]
            },
            "subtitlesUrl": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2048
                },
                {
                  "type": "null"
                }
              ]
            },
            "thumbnailUrl": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2048
                },
                {
                  "type": "null"
                }
              ]
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "projectId",
            "tutorialId",
            "url",
            "locale",
            "device",
            "format",
            "width",
            "height",
            "duration",
            "fileSize",
            "chaptersUrl",
            "subtitlesUrl",
            "thumbnailUrl",
            "creationTime",
            "lastEditTime"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "video"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴create_speech(projectId, text, language, translatedText, voice, ...)

Create one Tutorializer voiceover segment for a project. Without a url it synthesizes narration audio from the text with the project's speech provider, which consumes the organization's synthesis credits and is billable. Pass url instead to register audio you already produced. State-changing and non-idempotent: repeating the call creates another segment and synthesizes again.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project id that will own the voiceover segment"
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5000,
      "description": "Narration text to speak"
    },
    "language": {
      "type": "string",
      "minLength": 2,
      "maxLength": 32,
      "description": "Language code of the narration, for example en or pt-BR"
    },
    "translatedText": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5000,
      "description": "Optional translation spoken instead of the source text"
    },
    "voice": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Optional voice id; defaults to the project's default voice"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048,
      "description": "Public https URL of audio you already produced. Supplying it records the segment without synthesizing anything."
    }
  },
  "required": [
    "projectId",
    "text",
    "language"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "created",
        "recorded"
      ]
    },
    "synthesized": {
      "type": "boolean"
    },
    "speech": {
      "type": "object",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "projectId": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "language": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 32
            },
            {
              "type": "null"
            }
          ]
        },
        "voice": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "url": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2048
            },
            {
              "type": "null"
            }
          ]
        },
        "duration": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0,
              "maximum": 86400
            },
            {
              "type": "null"
            }
          ]
        },
        "textPreview": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 5000
            },
            {
              "type": "null"
            }
          ]
        },
        "creationTime": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 64
            },
            {
              "type": "null"
            }
          ]
        },
        "lastEditTime": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 64
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "id",
        "projectId",
        "language",
        "voice",
        "url",
        "duration",
        "textPreview",
        "creationTime",
        "lastEditTime"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "synthesized",
    "speech"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴update_speech(speechId, text, translatedText, language, voice)

Change the text, translation, language or voice of one Tutorializer voiceover segment. Every one of those fields determines the audio, so a real change re-synthesizes the segment with the project's speech provider, consumes synthesis credits and replaces the previous audio. Submitting the values it already has is a no-op that synthesizes nothing.

輸入結構描述

{
  "type": "object",
  "properties": {
    "speechId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Voiceover segment id to edit"
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5000,
      "description": "New narration text"
    },
    "translatedText": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5000,
      "description": "New translation spoken instead of the source text"
    },
    "language": {
      "type": "string",
      "minLength": 2,
      "maxLength": 32,
      "description": "New language"
    },
    "voice": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "New voice id"
    }
  },
  "required": [
    "speechId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "updated",
        "unchanged",
        "not-found"
      ]
    },
    "resynthesized": {
      "type": "boolean"
    },
    "speech": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "projectId": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "language": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            },
            "voice": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "url": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2048
                },
                {
                  "type": "null"
                }
              ]
            },
            "duration": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 86400
                },
                {
                  "type": "null"
                }
              ]
            },
            "textPreview": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 5000
                },
                {
                  "type": "null"
                }
              ]
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "projectId",
            "language",
            "voice",
            "url",
            "duration",
            "textPreview",
            "creationTime",
            "lastEditTime"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "resynthesized",
    "speech"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴set_pronunciation_rule(projectId, word, phonemes, alphabet)

Add or replace one project pronunciation rule and synchronize its ElevenLabs pronunciation dictionary. Repeating an identical rule is a no-op.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Tutorializer project id"
    },
    "word": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Word or phrase to match"
    },
    "phonemes": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "Phonetic pronunciation"
    },
    "alphabet": {
      "type": "string",
      "enum": [
        "ipa",
        "cmu"
      ],
      "description": "Phonetic alphabet; defaults to ipa"
    }
  },
  "required": [
    "projectId",
    "word",
    "phonemes"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "added",
        "replaced",
        "unchanged",
        "project-not-found"
      ]
    },
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "rule": {
      "type": "object",
      "properties": {
        "word": {
          "type": "string",
          "minLength": 1,
          "maxLength": 120
        },
        "phonemes": {
          "type": "string",
          "minLength": 1,
          "maxLength": 500
        },
        "alphabet": {
          "type": "string",
          "enum": [
            "ipa",
            "cmu"
          ]
        }
      },
      "required": [
        "word",
        "phonemes",
        "alphabet"
      ],
      "additionalProperties": false
    },
    "ruleCount": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 500
        },
        {
          "type": "null"
        }
      ]
    },
    "ruleCountIsLowerBound": {
      "type": "boolean"
    }
  },
  "required": [
    "status",
    "projectId",
    "rule",
    "ruleCount",
    "ruleCountIsLowerBound"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴remove_pronunciation_rule(projectId, word)

Remove one project pronunciation rule and synchronize its ElevenLabs dictionary. Destructive but idempotent: a missing rule is a no-op. Existing speech audio is not regenerated automatically.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Tutorializer project id"
    },
    "word": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Exact word or phrase whose pronunciation rule should be removed"
    }
  },
  "required": [
    "projectId",
    "word"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "removed",
        "unchanged",
        "project-not-found"
      ]
    },
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "word": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "remainingRuleCount": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 500
        },
        {
          "type": "null"
        }
      ]
    },
    "remainingRuleCountIsLowerBound": {
      "type": "boolean"
    }
  },
  "required": [
    "status",
    "projectId",
    "word",
    "remainingRuleCount",
    "remainingRuleCountIsLowerBound"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_tutorial(tutorialId)

Permanently delete one Tutorializer tutorial definition. Idempotent, but the definition must be authored again to restore it. Rendered videos and voiceover segments are not deleted with it; remove those separately.

輸入結構描述

{
  "type": "object",
  "properties": {
    "tutorialId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Tutorial id to delete"
    }
  },
  "required": [
    "tutorialId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "const": "deleted"
    },
    "tutorialId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "status",
    "tutorialId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_speech(speechId)

Permanently delete one Tutorializer speech record plus its S3 audio and alignment files. Idempotent, but deleted audio cannot be recovered without synthesizing it again and spending credits.

輸入結構描述

{
  "type": "object",
  "properties": {
    "speechId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Speech id to delete"
    }
  },
  "required": [
    "speechId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "const": "deleted"
    },
    "speechId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "status",
    "speechId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_video(videoId)

Permanently delete one Tutorializer rendered-video record and its primary S3 object. Idempotent, but the render must be uploaded or generated again to restore it.

輸入結構描述

{
  "type": "object",
  "properties": {
    "videoId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Rendered video id to delete"
    }
  },
  "required": [
    "videoId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "const": "deleted"
    },
    "videoId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "status",
    "videoId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢show_project_overview(projectId)

Render a bounded tenant-scoped Tutorializer project snapshot with tutorial, video, and voiceover counts. Use this after listing projects or when the user provides an immutable project id or stable public vanity id.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Tutorializer project id or stable public vanity id to render"
    }
  },
  "required": [
    "projectId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "project": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "name": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "domain": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 253
                },
                {
                  "type": "null"
                }
              ]
            },
            "logo": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2048
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "name",
            "domain",
            "logo"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "tutorialCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "tutorialCountIsLowerBound": {
      "type": "boolean"
    },
    "videoCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "videoCountIsLowerBound": {
      "type": "boolean"
    },
    "speechCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "speechCountIsLowerBound": {
      "type": "boolean"
    },
    "tutorials": {
      "maxItems": 8,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "defaultVoice": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "defaultVoice",
          "lastEditTime"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "project",
    "tutorialCount",
    "tutorialCountIsLowerBound",
    "videoCount",
    "videoCountIsLowerBound",
    "speechCount",
    "speechCountIsLowerBound",
    "tutorials"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本23 個工具
已驗證未記錄版本23 個工具