{
  "schemaVersion": "1.0",
  "item": {
    "slug": "ai-music-video",
    "name": "AI Music Video",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/gprecious/ai-music-video",
    "canonicalUrl": "https://clawhub.ai/gprecious/ai-music-video",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/ai-music-video",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ai-music-video",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "_meta.json",
      "references/sunoapi.md",
      "references/visual-providers.md",
      "scripts/assemble_mv.sh",
      "scripts/gen_visuals.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/ai-music-video"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/ai-music-video",
    "agentPageUrl": "https://openagent3.xyz/skills/ai-music-video/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ai-music-video/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ai-music-video/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "AI Music Video Generator",
        "body": "Create complete music videos: AI music + AI visuals + ffmpeg assembly."
      },
      {
        "title": "Quick Start",
        "body": "\"90년대 보이밴드 풍 한국어 노래 만들어줘\" → music only\n\"발라드 뮤비 만들어줘\" → music + slideshow MV\n\"EDM 뮤비 풀영상으로\" → music + video clips MV\n\"Suno 뮤비로 만들어줘\" → Suno native music video"
      },
      {
        "title": "1. Plan scenes from lyrics/mood",
        "body": "Before generating, create prompts.json — array of scene descriptions derived from the song's lyrics, mood, and narrative. 8-12 scenes for a 3-min song.\n\n[\n  {\"prompt\": \"Neon-lit city street at night, rain reflections\", \"type\": \"image\"},\n  {\"prompt\": \"Camera slowly panning across a rooftop at sunset\", \"type\": \"video\"},\n  \"A lone figure walking through cherry blossoms\"\n]"
      },
      {
        "title": "2. Generate music",
        "body": "bash scripts/suno_music.sh \\\n  --prompt \"가사 또는 설명\" \\\n  --style \"90s boy band pop, korean\" \\\n  --title \"너만을 원해\" \\\n  --model V4_5ALL --custom \\\n  --outdir /tmp/mv_project\n\nOptions:\n\n--model V4_5ALL (default), V5, V4_5PLUS, V4_5, V4\n--instrumental — no vocals\n--vocal-gender m|f — vocal gender hint\n--negative-tags \"Heavy Metal, Drums\" — styles to avoid\n--music-video — generate Suno native music video (MP4)\n--dry-run — cost check only\n\nPersona (일관된 스타일 유지):\n\n--persona-id ID — 기존 페르소나 사용 (같은 보컬/스타일로 여러 곡 생성)\n--create-persona — 생성된 곡에서 페르소나 생성 → persona.json 저장\n--persona-name \"이름\" / --persona-desc \"설명\" / --persona-style \"스타일\"\n\nAuto features:\n\n🎤 Timestamped Lyrics: Non-instrumental tracks automatically fetch lyrics timestamps and save as {outdir}/lyrics.srt\n🎬 Suno Native MV: With --music-video, Suno generates a visualized MP4 video directly\n🎭 Persona: With --create-persona, extracts voice/style identity for reuse"
      },
      {
        "title": "3. Generate visuals (custom MV flow)",
        "body": "bash scripts/gen_visuals.sh \\\n  --mode slideshow \\\n  --prompts-file /tmp/mv_project/prompts.json \\\n  --image-provider seedream \\\n  --outdir /tmp/mv_project\n\nOr with OpenAI (cheaper, lower res):\n\nbash scripts/gen_visuals.sh \\\n  --mode slideshow \\\n  --prompts-file /tmp/mv_project/prompts.json \\\n  --image-provider openai --image-model gpt-image-1-mini --image-quality medium \\\n  --outdir /tmp/mv_project\n\nAdd --dry-run first to show cost estimate before spending."
      },
      {
        "title": "4. Assemble",
        "body": "bash scripts/assemble_mv.sh \\\n  --audio /tmp/mv_project/track_0_xxx.mp3 \\\n  --outdir /tmp/mv_project \\\n  --output /tmp/mv_project/final_mv.mp4 \\\n  --transition fade\n\nSubtitle behavior:\n\nAuto-detects {outdir}/lyrics.srt and overlays lyrics automatically\n--subtitle /path/to/custom.srt — use custom SRT file\n--no-subtitle — disable lyrics overlay entirely"
      },
      {
        "title": "Modes",
        "body": "ModeVisualBest ForCost (10 scenes)slideshowAI imagesFast, cheap~$0.02 (mini low) / ~$0.09 (mini med) / ~$0.45 (Seedream)videoAI video clipsPremium~$1.40 (Seedance Lite) / ~$8.00 (Sora 2)hybridMix of bothBalanced~$0.50-$4.00suno-nativeSuno MVEasiestSuno credits only\n\nImage cost is token-based — actual billing may be lower than listed estimates. Use --dry-run for precise cost."
      },
      {
        "title": "Provider Options",
        "body": "Images: --image-provider seedream (recommended), openai, or google-together\nImage Model (OpenAI): --image-model gpt-image-1-mini (default, cheap) or gpt-image-1 (premium)\nVideos: --video-provider sora (default), sora-pro, seedance-lite, seedance-pro, veo-fast, veo-audio\nQuality: --image-quality low|medium|high"
      },
      {
        "title": "Cost Tracking",
        "body": "Every script outputs cost before and after. Always --dry-run first.\nCost data saved to {outdir}/cost_estimate.json and {outdir}/visuals_meta.json."
      },
      {
        "title": "Environment Variables",
        "body": "export SUNO_API_KEY=\"your-sunoapi-key\"      # Required — sunoapi.org\nexport OPENAI_API_KEY=\"your-openai-key\"     # Required — images + Sora video\nexport BYTEPLUS_API_KEY=\"your-byteplus-key\" # Optional — Seedream 4.5 (recommended for images)\nexport TOGETHER_API_KEY=\"your-together-key\" # Optional — Seedance, Veo, Imagen\nexport SUNO_CALLBACK_URL=\"\"                 # Optional — see Callback URL below\n\n⚠️ Required keys: SUNO_API_KEY and OPENAI_API_KEY must be set before running any script.\nBYTEPLUS_API_KEY is needed for Seedream image provider (sign up at console.byteplus.com, 200 free images).\nTOGETHER_API_KEY is only needed for Seedance/Veo/Imagen providers."
      },
      {
        "title": "Callback URL",
        "body": "The Suno API requires a callBackUrl field for music generation requests.\nBy default, if SUNO_CALLBACK_URL is not set, the script uses https://localhost/noop\nas a harmless no-op endpoint (an unreachable localhost URL that effectively disables callbacks).\n\nTo customize: set SUNO_CALLBACK_URL to your own endpoint, or set it to\nany dummy URL you control. The callback payload contains task metadata and\naudio URLs — no API keys are sent.\n\nTo disable: set SUNO_CALLBACK_URL=https://localhost/noop or any unreachable URL.\nGeneration still works via polling; the callback is not required for the script to function."
      },
      {
        "title": "Persona Workflow (채널 컨셉 유지)",
        "body": "YouTube 채널처럼 일관된 스타일로 여러 곡을 만들 때:\n\n# 1. 첫 곡 생성 + 페르소나 만들기\nbash scripts/suno_music.sh \\\n  --prompt \"코드 리뷰하며 듣는 노래\" \\\n  --style \"indie rock, energetic, coding vibe\" \\\n  --title \"Pull Request\" \\\n  --custom --create-persona \\\n  --persona-name \"개발자 노동요 싱어\" \\\n  --persona-desc \"개발자가 코딩하며 듣기 좋은 에너지 넘치는 보컬. 인디록, 일렉, 팝 장르를 넘나든다.\" \\\n  --persona-style \"indie rock, electronic, developer work music\" \\\n  --outdir /tmp/dev-bgm-01\n\n# 2. persona.json에서 personaId 확인\ncat /tmp/dev-bgm-01/persona.json\n\n# 3. 같은 페르소나로 다음 곡 생성 — 보컬/스타일 일관성 유지\nbash scripts/suno_music.sh \\\n  --prompt \"야근하면서 듣는 노래\" \\\n  --style \"electronic pop, night coding\" \\\n  --title \"Midnight Deploy\" \\\n  --custom --persona-id <PERSONA_ID> \\\n  --outdir /tmp/dev-bgm-02\n\n페르소나는 보컬 특성 + 음악 스타일을 기억해서, 채널 전체의 통일감을 유지해줌."
      },
      {
        "title": "Prerequisites",
        "body": "curl, python3, ffmpeg (for assembly)"
      },
      {
        "title": "References",
        "body": "SunoAPI details: Read references/sunoapi.md\nVisual provider details: Read references/visual-providers.md"
      }
    ],
    "body": "AI Music Video Generator\n\nCreate complete music videos: AI music + AI visuals + ffmpeg assembly.\n\nQuick Start\n\"90년대 보이밴드 풍 한국어 노래 만들어줘\" → music only\n\"발라드 뮤비 만들어줘\" → music + slideshow MV\n\"EDM 뮤비 풀영상으로\" → music + video clips MV\n\"Suno 뮤비로 만들어줘\" → Suno native music video\n\nWorkflow\n1. Plan scenes from lyrics/mood\n\nBefore generating, create prompts.json — array of scene descriptions derived from the song's lyrics, mood, and narrative. 8-12 scenes for a 3-min song.\n\n[\n  {\"prompt\": \"Neon-lit city street at night, rain reflections\", \"type\": \"image\"},\n  {\"prompt\": \"Camera slowly panning across a rooftop at sunset\", \"type\": \"video\"},\n  \"A lone figure walking through cherry blossoms\"\n]\n\n2. Generate music\nbash scripts/suno_music.sh \\\n  --prompt \"가사 또는 설명\" \\\n  --style \"90s boy band pop, korean\" \\\n  --title \"너만을 원해\" \\\n  --model V4_5ALL --custom \\\n  --outdir /tmp/mv_project\n\n\nOptions:\n\n--model V4_5ALL (default), V5, V4_5PLUS, V4_5, V4\n--instrumental — no vocals\n--vocal-gender m|f — vocal gender hint\n--negative-tags \"Heavy Metal, Drums\" — styles to avoid\n--music-video — generate Suno native music video (MP4)\n--dry-run — cost check only\n\nPersona (일관된 스타일 유지):\n\n--persona-id ID — 기존 페르소나 사용 (같은 보컬/스타일로 여러 곡 생성)\n--create-persona — 생성된 곡에서 페르소나 생성 → persona.json 저장\n--persona-name \"이름\" / --persona-desc \"설명\" / --persona-style \"스타일\"\n\nAuto features:\n\n🎤 Timestamped Lyrics: Non-instrumental tracks automatically fetch lyrics timestamps and save as {outdir}/lyrics.srt\n🎬 Suno Native MV: With --music-video, Suno generates a visualized MP4 video directly\n🎭 Persona: With --create-persona, extracts voice/style identity for reuse\n3. Generate visuals (custom MV flow)\nbash scripts/gen_visuals.sh \\\n  --mode slideshow \\\n  --prompts-file /tmp/mv_project/prompts.json \\\n  --image-provider seedream \\\n  --outdir /tmp/mv_project\n\n\nOr with OpenAI (cheaper, lower res):\n\nbash scripts/gen_visuals.sh \\\n  --mode slideshow \\\n  --prompts-file /tmp/mv_project/prompts.json \\\n  --image-provider openai --image-model gpt-image-1-mini --image-quality medium \\\n  --outdir /tmp/mv_project\n\n\nAdd --dry-run first to show cost estimate before spending.\n\n4. Assemble\nbash scripts/assemble_mv.sh \\\n  --audio /tmp/mv_project/track_0_xxx.mp3 \\\n  --outdir /tmp/mv_project \\\n  --output /tmp/mv_project/final_mv.mp4 \\\n  --transition fade\n\n\nSubtitle behavior:\n\nAuto-detects {outdir}/lyrics.srt and overlays lyrics automatically\n--subtitle /path/to/custom.srt — use custom SRT file\n--no-subtitle — disable lyrics overlay entirely\nModes\nMode\tVisual\tBest For\tCost (10 scenes)\nslideshow\tAI images\tFast, cheap\t~$0.02 (mini low) / ~$0.09 (mini med) / ~$0.45 (Seedream)\nvideo\tAI video clips\tPremium\t~$1.40 (Seedance Lite) / ~$8.00 (Sora 2)\nhybrid\tMix of both\tBalanced\t~$0.50-$4.00\nsuno-native\tSuno MV\tEasiest\tSuno credits only\n\nImage cost is token-based — actual billing may be lower than listed estimates. Use --dry-run for precise cost.\n\nProvider Options\n\nImages: --image-provider seedream (recommended), openai, or google-together Image Model (OpenAI): --image-model gpt-image-1-mini (default, cheap) or gpt-image-1 (premium) Videos: --video-provider sora (default), sora-pro, seedance-lite, seedance-pro, veo-fast, veo-audio Quality: --image-quality low|medium|high\n\nCost Tracking\n\nEvery script outputs cost before and after. Always --dry-run first. Cost data saved to {outdir}/cost_estimate.json and {outdir}/visuals_meta.json.\n\nEnvironment Variables\nexport SUNO_API_KEY=\"your-sunoapi-key\"      # Required — sunoapi.org\nexport OPENAI_API_KEY=\"your-openai-key\"     # Required — images + Sora video\nexport BYTEPLUS_API_KEY=\"your-byteplus-key\" # Optional — Seedream 4.5 (recommended for images)\nexport TOGETHER_API_KEY=\"your-together-key\" # Optional — Seedance, Veo, Imagen\nexport SUNO_CALLBACK_URL=\"\"                 # Optional — see Callback URL below\n\n\n⚠️ Required keys: SUNO_API_KEY and OPENAI_API_KEY must be set before running any script. BYTEPLUS_API_KEY is needed for Seedream image provider (sign up at console.byteplus.com, 200 free images). TOGETHER_API_KEY is only needed for Seedance/Veo/Imagen providers.\n\nCallback URL\n\nThe Suno API requires a callBackUrl field for music generation requests. By default, if SUNO_CALLBACK_URL is not set, the script uses https://localhost/noop as a harmless no-op endpoint (an unreachable localhost URL that effectively disables callbacks).\n\nTo customize: set SUNO_CALLBACK_URL to your own endpoint, or set it to any dummy URL you control. The callback payload contains task metadata and audio URLs — no API keys are sent.\n\nTo disable: set SUNO_CALLBACK_URL=https://localhost/noop or any unreachable URL. Generation still works via polling; the callback is not required for the script to function.\n\nPersona Workflow (채널 컨셉 유지)\n\nYouTube 채널처럼 일관된 스타일로 여러 곡을 만들 때:\n\n# 1. 첫 곡 생성 + 페르소나 만들기\nbash scripts/suno_music.sh \\\n  --prompt \"코드 리뷰하며 듣는 노래\" \\\n  --style \"indie rock, energetic, coding vibe\" \\\n  --title \"Pull Request\" \\\n  --custom --create-persona \\\n  --persona-name \"개발자 노동요 싱어\" \\\n  --persona-desc \"개발자가 코딩하며 듣기 좋은 에너지 넘치는 보컬. 인디록, 일렉, 팝 장르를 넘나든다.\" \\\n  --persona-style \"indie rock, electronic, developer work music\" \\\n  --outdir /tmp/dev-bgm-01\n\n# 2. persona.json에서 personaId 확인\ncat /tmp/dev-bgm-01/persona.json\n\n# 3. 같은 페르소나로 다음 곡 생성 — 보컬/스타일 일관성 유지\nbash scripts/suno_music.sh \\\n  --prompt \"야근하면서 듣는 노래\" \\\n  --style \"electronic pop, night coding\" \\\n  --title \"Midnight Deploy\" \\\n  --custom --persona-id <PERSONA_ID> \\\n  --outdir /tmp/dev-bgm-02\n\n\n페르소나는 보컬 특성 + 음악 스타일을 기억해서, 채널 전체의 통일감을 유지해줌.\n\nPrerequisites\ncurl, python3, ffmpeg (for assembly)\nReferences\nSunoAPI details: Read references/sunoapi.md\nVisual provider details: Read references/visual-providers.md"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/gprecious/ai-music-video",
    "publisherUrl": "https://clawhub.ai/gprecious/ai-music-video",
    "owner": "gprecious",
    "version": "1.2.4",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/ai-music-video",
    "downloadUrl": "https://openagent3.xyz/downloads/ai-music-video",
    "agentUrl": "https://openagent3.xyz/skills/ai-music-video/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ai-music-video/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ai-music-video/agent.md"
  }
}