LyricVideoGenerator
Turn a song and its lyrics into a word-synced lyric video, with three styles to choose from.
使うべきか
品質と安全性
検出事項(2)
- LOWchoose_style 内
- LOWopen_in_browser 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"lyric-video": {
"url": "https://lyricvideogenerator.app/api/mcp"
}
}
}リモートエンドポイント
https://lyricvideogenerator.app/api/mcpstreamable-httpできること
ツール一覧
ツール(12)
🟡create_lyric_video(audio, lyrics, title)
Turns a song the user attached (MP3/WAV) into a word-synced lyric video and proposes three visual styles. Pass the lyrics if the user gave them; otherwise they are transcribed from the audio. Takes about 10–40 seconds. Creates a new project each call.
入力スキーマ
{
"type": "object",
"properties": {
"audio": {
"type": "object",
"properties": {
"download_url": {
"type": "string"
},
"file_id": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"file_name": {
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"description": "The song file the user attached"
},
"lyrics": {
"description": "Full song lyrics, one line per sung line, if provided by the user",
"type": "string",
"maxLength": 20000
},
"title": {
"description": "Song title, if known",
"type": "string",
"maxLength": 200
}
},
"required": [
"audio"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_lyric_video(projectId)
Returns a lyric video project's processing status, its three style options, the style now applied, and its numbered lyric lines.
入力スキーマ
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "projectId returned by create_lyric_video"
}
},
"required": [
"projectId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}⚪choose_style(projectId, option)
Applies one of the three proposed style options (1, 2 or 3) to the lyric video. Replaces any edits made to the current style.
入力スキーマ
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "projectId returned by create_lyric_video"
},
"option": {
"type": "integer",
"minimum": 1,
"maximum": 3
}
},
"required": [
"projectId",
"option"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡update_style(projectId, changes)
Changes the look of the current lyric video style: layout, word animation, colors, font, text size, background, and chorus emphasis. Send only the fields to change. Colors are #RRGGBB. Unreadable color combinations and unknown fonts are corrected or rejected with a reason.
入力スキーマ
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "projectId returned by create_lyric_video"
},
"changes": {
"type": "object",
"properties": {
"name": {
"description": "Rename the style",
"type": "string",
"minLength": 1,
"maxLength": 60
},
"template": {
"description": "Layout: focus = one big centered line; scroll = lyrics scroll with the current line highlighted; caption = subtitle-style lower-left; poster = giant left-aligned words filling the frame",
"type": "string",
"enum": [
"focus",
"scroll",
"caption",
"poster"
]
},
"animation": {
"description": "Word motion: word-highlight, karaoke (left-to-right fill), line-fade, word-pop, typewriter, word-kinetic (each word pops in on its beat), line-stack (lines push up)",
"type": "string",
"enum": [
"word-highlight",
"karaoke",
"line-fade",
"word-pop",
"typewriter",
"word-kinetic",
"line-stack"
]
},
"palette": {
"type": "object",
"properties": {
"bg": {
"description": "Background color",
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"fg": {
"description": "Lyric text color",
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"accent": {
"description": "Current word / emphasis color",
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"muted": {
"description": "Inactive lines color",
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
}
}
},
"font": {
"description": "Any Google Fonts family name, e.g. \"Bebas Neue\"",
"type": "string",
"minLength": 1,
"maxLength": 60
},
"fontWeight": {
"anyOf": [
{
"type": "number",
"const": 400
},
{
"type": "number",
"const": 500
},
{
"type": "number",
"const": 600
},
{
"type": "number",
"const": 700
},
{
"type": "number",
"const": 800
},
{
"type": "number",
"const": 900
}
]
},
"fontScale": {
"description": "Text size multiplier, 1 = template default",
"type": "number",
"minimum": 0.5,
"maximum": 2.5
},
"uppercase": {
"type": "boolean"
},
"align": {
"type": "string",
"enum": [
"left",
"center"
]
},
"background": {
"description": "solid = palette.bg; gradient = from→to; cover-blur = blurred song cover (only when the song has a cover)",
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"solid",
"gradient",
"cover-blur"
]
},
"from": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"to": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"angle": {
"type": "number",
"minimum": 0,
"maximum": 360
}
},
"required": [
"kind"
]
},
"showCoverBadge": {
"type": "boolean"
},
"chorus": {
"description": "Overrides applied only during choruses",
"type": "object",
"properties": {
"scale": {
"type": "number",
"minimum": 0.5,
"maximum": 2.5
},
"accent": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"animation": {
"type": "string",
"enum": [
"word-highlight",
"karaoke",
"line-fade",
"word-pop",
"typewriter",
"word-kinetic",
"line-stack"
]
}
}
}
},
"additionalProperties": false
}
},
"required": [
"projectId",
"changes"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡edit_lyrics(projectId, line, text)
Replaces the text of one lyric line (numbered from 1, as listed by get_lyric_video), keeping its timing. Use it to fix misheard or misspelled words.
入力スキーマ
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "projectId returned by create_lyric_video"
},
"line": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"projectId",
"line",
"text"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢export_video(projectId)
Free export: a 720p, 16:9 MP4 with a small watermark and a 2.5-second end card. It renders on the user's own computer inside the widget (about as long as the song), so this tool shows the widget and starts the export there; the user downloads the MP4 from the widget when it finishes. If their ChatGPT app can't render video, the widget offers to open the project in their browser instead.
入力スキーマ
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "projectId returned by create_lyric_video"
}
},
"required": [
"projectId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}⚪begin_local_export(projectId)
Widget only: reserve a free 720p export to render in the browser.
入力スキーマ
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "projectId returned by create_lyric_video"
}
},
"required": [
"projectId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡upload_local_export(exportId, bytes)
Widget only: storage upload target for a browser-rendered MP4.
入力スキーマ
{
"type": "object",
"properties": {
"exportId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"bytes": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 524288000
}
},
"required": [
"exportId",
"bytes"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}⚪finish_local_export(exportId, assetId, error)
Widget only: complete a browser-rendered export after its upload, or fail it with an error.
入力スキーマ
{
"type": "object",
"properties": {
"exportId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"assetId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"error": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"exportId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢open_in_browser(projectId)
Widget only: a short-lived link that opens this project in the user's browser, where it can be exported.
入力スキーマ
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "projectId returned by create_lyric_video"
}
},
"required": [
"projectId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴export_hd_video(projectId, aspect)
Renders the lyric video in 1080p without a watermark, as 16:9 (landscape) or 9:16 (vertical). Requires the user's LyricVideoGenerator account: it uses 1 credit from their plan (or is free if this song was already unlocked on the website). Credits are refunded if the render fails. Returns an exportId; the widget shows progress and the download link.
入力スキーマ
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "projectId returned by create_lyric_video"
},
"aspect": {
"default": "16:9",
"description": "16:9 for YouTube, 9:16 for TikTok / Reels / Shorts",
"type": "string",
"enum": [
"16:9",
"9:16"
]
}
},
"required": [
"projectId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_export(exportId)
Returns the status of a video export and, when finished, its MP4 download URL.
入力スキーマ
{
"type": "object",
"properties": {
"exportId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "exportId of the export"
}
},
"required": [
"exportId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}コミュニティ
エビデンス