{
  "schemaVersion": "1.0",
  "item": {
    "slug": "udio",
    "name": "Udio",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ivangdavila/udio",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/udio",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/udio",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=udio",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "api.md",
      "browser.md",
      "lyrics.md",
      "memory-template.md",
      "prompts.md"
    ],
    "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-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.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/udio"
    },
    "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/udio",
    "agentPageUrl": "https://openagent3.xyz/skills/udio/agent",
    "manifestUrl": "https://openagent3.xyz/skills/udio/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/udio/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": "Setup",
        "body": "On first use, read setup.md for integration guidelines."
      },
      {
        "title": "When to Use",
        "body": "User wants to generate music with Udio. Agent can use API wrappers for programmatic generation, browser automation for direct platform interaction, or guide prompt engineering."
      },
      {
        "title": "Architecture",
        "body": "Memory at ~/udio/. See memory-template.md for structure.\n\n~/udio/\n├── [memory.md]       # Created on first use: preferences, auth token location\n├── [projects/]       # Per-project song tracking\n└── [songs/]          # Downloaded audio files"
      },
      {
        "title": "Quick Reference",
        "body": "TopicFileSetupsetup.mdMemorymemory-template.mdAPI usageapi.mdBrowser automationbrowser.mdPrompt craftingprompts.mdStyle tagsstyles.mdLyrics guidelyrics.md"
      },
      {
        "title": "1. Choose the Right Approach",
        "body": "SituationMethodProgrammatic generation, batch jobsAPI wrapperUser wants to browse and listenBrowser automationJust need prompt helpPrompt engineering only"
      },
      {
        "title": "2. API Requires Auth Token",
        "body": "Udio has no official public API. Community wrappers use the internal API:\n\nToken: sb-api-auth-token cookie from udio.com\nToken expires: refresh if 401 errors occur\nSee api.md for setup instructions"
      },
      {
        "title": "3. Structure Prompts in Layers",
        "body": "[genre] [subgenre] [mood] [instruments] [voice] [era/influence]\n\nExample: \"indie folk melancholic acoustic guitar female vocals 90s\""
      },
      {
        "title": "4. Extend Songs Strategically",
        "body": "Udio generates ~30 second clips. Build full songs:\n\nCreate initial clip with strong hook\nExtend 2-3 times with consistent style\nAdd outro with ending indicators\nTarget 2-4 minutes total"
      },
      {
        "title": "5. Save Successful Seeds",
        "body": "Same prompt + different seed = different result. When close to desired output:\n\nNote the seed number\nTry adjacent seeds (seed +/- 1)\nDocument working combinations"
      },
      {
        "title": "Python Wrapper (Recommended)",
        "body": "pip install udio_wrapper\n\nfrom udio_wrapper import UdioWrapper\n\n# Initialize with auth token\nudio = UdioWrapper(\"your-sb-api-auth-token\")\n\n# Create a song\nsong = udio.create_song(\n    prompt=\"electronic ambient downtempo dreamy synth pads\",\n    seed=-1,  # -1 for random\n    custom_lyrics=\"Optional lyrics here\"\n)\n\n# Extend the song\nextended = udio.extend(\n    prompt=\"add drums and bass, building energy\",\n    audio_conditioning_path=song['song_path'],\n    audio_conditioning_song_id=song['id']\n)\n\n# Add outro\noutro = udio.add_outro(\n    prompt=\"gentle fade out, conclusion\",\n    audio_conditioning_path=extended['song_path'],\n    audio_conditioning_song_id=extended['id']\n)"
      },
      {
        "title": "TypeScript/Node Wrapper",
        "body": "npm install udio-wrapper\n\nimport { createUdioWrapper } from 'udio-wrapper';\n\nconst client = await createUdioWrapper('your-auth-token');\n\nconst song = await client.createSong({\n    prompt: 'indie rock upbeat energetic guitar',\n    seed: 12345,\n    customLyrics: 'Optional lyrics'\n});\n\nconst completed = await client.waitForCompletion(song.id);\nconsole.log('Download URL:', completed.url);"
      },
      {
        "title": "Complete Song Sequence",
        "body": "# Generate intro + extensions + outro in one call\ncomplete = udio.create_complete_song(\n    short_prompt=\"peaceful acoustic guitar melody\",\n    extend_prompts=[\n        \"add piano and soft strings\",\n        \"introduce light percussion, building\"\n    ],\n    outro_prompt=\"gentle resolution, fading\",\n    num_extensions=2,\n    custom_lyrics_short=\"Opening verse...\",\n    custom_lyrics_extend=[\"Middle section...\", \"Bridge...\"],\n    custom_lyrics_outro=\"Final words...\"\n)"
      },
      {
        "title": "Browser Automation",
        "body": "When API isn't available or user prefers visual interaction:"
      },
      {
        "title": "Navigate to Udio",
        "body": "browser action=open targetUrl=\"https://www.udio.com\" profile=openclaw"
      },
      {
        "title": "Get Auth Token (for API use)",
        "body": "Open DevTools: Cmd+Option+I (Mac) or F12 (Windows)\nGo to Application tab > Cookies > udio.com\nFind sb-api-auth-token\nCopy the value"
      },
      {
        "title": "Generate Music via UI",
        "body": "Navigate to create page\nEnter prompt in text field\nAdjust settings (instrumental, duration)\nClick generate\nWait for completion (~30-60 seconds)\nDownload or extend"
      },
      {
        "title": "By Genre",
        "body": "GenrePrompt PatternElectronicelectronic [subgenre] [mood] synth [texture] [era]Rock[sub]rock [energy] [guitars] [drums] [vocals] [decade]Hip Hophip hop [subgenre] [beat style] [sample type] [era]Jazzjazz [subgenre] [instruments] [setting] [mood]Classicalclassical [period] [ensemble] [mood] [dynamics]"
      },
      {
        "title": "Mood Combinations",
        "body": "EnergyMood StackHigh + Positiveeuphoric energetic uplifting triumphantLow + Positivepeaceful calm serene contemplativeHigh + Negativeaggressive chaotic intense darkLow + Negativemelancholic somber mournful introspectiveComplexbittersweet nostalgic hopeful yearning"
      },
      {
        "title": "Voice Control",
        "body": "# Female vocals\nfemale vocals ethereal soprano breathy\n\n# Male vocals  \nmale vocals deep baritone raspy emotional\n\n# Choir\nchoir harmonies gospel powerful anthemic\n\n# No vocals\ninstrumental only no singing no vocals"
      },
      {
        "title": "Common Traps",
        "body": "TrapProblemSolutionVague prompts\"good music\" = randomBe specific: genre, mood, instrumentsContradictions\"upbeat sad\" confuses modelPick consistent descriptorsToken expiry401 errorsRe-extract from browser cookiesToo many keywords20+ terms dilute focusUse 5-10 key descriptorsNo seed trackingCan't reproduce good resultsLog seeds for successful generationsAbrupt extensionsJarring transitionsMatch style/key in extend prompts"
      },
      {
        "title": "Building Full Tracks",
        "body": "PhaseDurationPrompt AdditionsIntro0-30s\"intro, building, atmospheric\"Verse/Main30s-2mOriginal promptBridge2m-2:30\"variation, bridge, key change\"OutroFinal 30s\"outro, ending, fade, resolution\""
      },
      {
        "title": "Ending Indicators",
        "body": "Add to final extend/outro:\n\n\"fade out\" / \"fading\"\n\"song ending\" / \"conclusion\"\n\"final chorus\" / \"last verse\"\n\"resolution\" / \"outro\""
      },
      {
        "title": "Data Storage",
        "body": "This skill creates ~/udio/ on first use:\n\nmemory file — Preferences, successful prompts, token location reference\nprojects folder — Per-project tracking with seeds and URLs\nsongs folder — Downloaded audio files (optional)\n\nAll data stays local. Auth tokens should be stored in system keychain, not plain text."
      },
      {
        "title": "Scope",
        "body": "This skill does:\n\nGenerate music via community API wrappers (requires auth token)\nNavigate udio.com with browser automation (user must be logged in)\nCraft optimized prompts for Udio's model (no token needed)\nTrack projects, seeds, and successful patterns locally\nDownload generated audio files to ~/udio/songs/\n\nThis skill does NOT:\n\nStore auth tokens in plain text (must use keychain/credential manager)\nBypass Udio's rate limits or terms of service\nAccess files outside ~/udio/\nAuto-extract tokens without user guidance"
      },
      {
        "title": "Security Notes",
        "body": "Auth Token: The sb-api-auth-token cookie grants API access to your Udio account. Handle it like a password:\n\nStore in system keychain, never in plain text\nToken expires after ~7 days of inactivity\nRe-extract if you get 401 errors\n\nCommunity Wrappers: The Python and Node wrappers are community-maintained (not official Udio software). Review their source code before installing:\n\nPython: github.com/flowese/UdioWrapper\nNode: github.com/josephgodwinkimani/udio-wrapper\n\nPrompt-Only Mode: If you prefer not to use API or share tokens, this skill works in prompt-only mode — just help with crafting effective prompts without any API calls."
      },
      {
        "title": "External Endpoints",
        "body": "EndpointData SentPurposeapi.udio.comPrompts, lyricsMusic generation (via wrappers)udio.comBrowser sessionDirect platform access\n\nAuth token is sent with API requests. No other data leaves the machine."
      },
      {
        "title": "Trust",
        "body": "By using this skill with API wrappers, prompts and lyrics are sent to Udio's servers for music generation. Only use if you trust Udio with your creative content. Review Udio's terms of service at udio.com/terms."
      },
      {
        "title": "Related Skills",
        "body": "Install with clawhub install <slug> if user confirms:\n\naudio — Audio processing and editing\nvideo — Combine music with video content\nffmpeg — Audio format conversion"
      },
      {
        "title": "Feedback",
        "body": "If useful: clawhub star udio\nStay updated: clawhub sync"
      }
    ],
    "body": "Setup\n\nOn first use, read setup.md for integration guidelines.\n\nWhen to Use\n\nUser wants to generate music with Udio. Agent can use API wrappers for programmatic generation, browser automation for direct platform interaction, or guide prompt engineering.\n\nArchitecture\n\nMemory at ~/udio/. See memory-template.md for structure.\n\n~/udio/\n├── [memory.md]       # Created on first use: preferences, auth token location\n├── [projects/]       # Per-project song tracking\n└── [songs/]          # Downloaded audio files\n\nQuick Reference\nTopic\tFile\nSetup\tsetup.md\nMemory\tmemory-template.md\nAPI usage\tapi.md\nBrowser automation\tbrowser.md\nPrompt crafting\tprompts.md\nStyle tags\tstyles.md\nLyrics guide\tlyrics.md\nCore Rules\n1. Choose the Right Approach\nSituation\tMethod\nProgrammatic generation, batch jobs\tAPI wrapper\nUser wants to browse and listen\tBrowser automation\nJust need prompt help\tPrompt engineering only\n2. API Requires Auth Token\n\nUdio has no official public API. Community wrappers use the internal API:\n\nToken: sb-api-auth-token cookie from udio.com\nToken expires: refresh if 401 errors occur\nSee api.md for setup instructions\n3. Structure Prompts in Layers\n[genre] [subgenre] [mood] [instruments] [voice] [era/influence]\n\n\nExample: \"indie folk melancholic acoustic guitar female vocals 90s\"\n\n4. Extend Songs Strategically\n\nUdio generates ~30 second clips. Build full songs:\n\nCreate initial clip with strong hook\nExtend 2-3 times with consistent style\nAdd outro with ending indicators\nTarget 2-4 minutes total\n5. Save Successful Seeds\n\nSame prompt + different seed = different result. When close to desired output:\n\nNote the seed number\nTry adjacent seeds (seed +/- 1)\nDocument working combinations\nAPI Integration\nPython Wrapper (Recommended)\npip install udio_wrapper\n\nfrom udio_wrapper import UdioWrapper\n\n# Initialize with auth token\nudio = UdioWrapper(\"your-sb-api-auth-token\")\n\n# Create a song\nsong = udio.create_song(\n    prompt=\"electronic ambient downtempo dreamy synth pads\",\n    seed=-1,  # -1 for random\n    custom_lyrics=\"Optional lyrics here\"\n)\n\n# Extend the song\nextended = udio.extend(\n    prompt=\"add drums and bass, building energy\",\n    audio_conditioning_path=song['song_path'],\n    audio_conditioning_song_id=song['id']\n)\n\n# Add outro\noutro = udio.add_outro(\n    prompt=\"gentle fade out, conclusion\",\n    audio_conditioning_path=extended['song_path'],\n    audio_conditioning_song_id=extended['id']\n)\n\nTypeScript/Node Wrapper\nnpm install udio-wrapper\n\nimport { createUdioWrapper } from 'udio-wrapper';\n\nconst client = await createUdioWrapper('your-auth-token');\n\nconst song = await client.createSong({\n    prompt: 'indie rock upbeat energetic guitar',\n    seed: 12345,\n    customLyrics: 'Optional lyrics'\n});\n\nconst completed = await client.waitForCompletion(song.id);\nconsole.log('Download URL:', completed.url);\n\nComplete Song Sequence\n# Generate intro + extensions + outro in one call\ncomplete = udio.create_complete_song(\n    short_prompt=\"peaceful acoustic guitar melody\",\n    extend_prompts=[\n        \"add piano and soft strings\",\n        \"introduce light percussion, building\"\n    ],\n    outro_prompt=\"gentle resolution, fading\",\n    num_extensions=2,\n    custom_lyrics_short=\"Opening verse...\",\n    custom_lyrics_extend=[\"Middle section...\", \"Bridge...\"],\n    custom_lyrics_outro=\"Final words...\"\n)\n\nBrowser Automation\n\nWhen API isn't available or user prefers visual interaction:\n\nNavigate to Udio\nbrowser action=open targetUrl=\"https://www.udio.com\" profile=openclaw\n\nGet Auth Token (for API use)\nOpen DevTools: Cmd+Option+I (Mac) or F12 (Windows)\nGo to Application tab > Cookies > udio.com\nFind sb-api-auth-token\nCopy the value\nGenerate Music via UI\nNavigate to create page\nEnter prompt in text field\nAdjust settings (instrumental, duration)\nClick generate\nWait for completion (~30-60 seconds)\nDownload or extend\nPrompt Patterns\nBy Genre\nGenre\tPrompt Pattern\nElectronic\telectronic [subgenre] [mood] synth [texture] [era]\nRock\t[sub]rock [energy] [guitars] [drums] [vocals] [decade]\nHip Hop\thip hop [subgenre] [beat style] [sample type] [era]\nJazz\tjazz [subgenre] [instruments] [setting] [mood]\nClassical\tclassical [period] [ensemble] [mood] [dynamics]\nMood Combinations\nEnergy\tMood Stack\nHigh + Positive\teuphoric energetic uplifting triumphant\nLow + Positive\tpeaceful calm serene contemplative\nHigh + Negative\taggressive chaotic intense dark\nLow + Negative\tmelancholic somber mournful introspective\nComplex\tbittersweet nostalgic hopeful yearning\nVoice Control\n# Female vocals\nfemale vocals ethereal soprano breathy\n\n# Male vocals  \nmale vocals deep baritone raspy emotional\n\n# Choir\nchoir harmonies gospel powerful anthemic\n\n# No vocals\ninstrumental only no singing no vocals\n\nCommon Traps\nTrap\tProblem\tSolution\nVague prompts\t\"good music\" = random\tBe specific: genre, mood, instruments\nContradictions\t\"upbeat sad\" confuses model\tPick consistent descriptors\nToken expiry\t401 errors\tRe-extract from browser cookies\nToo many keywords\t20+ terms dilute focus\tUse 5-10 key descriptors\nNo seed tracking\tCan't reproduce good results\tLog seeds for successful generations\nAbrupt extensions\tJarring transitions\tMatch style/key in extend prompts\nExtension Strategy\nBuilding Full Tracks\nPhase\tDuration\tPrompt Additions\nIntro\t0-30s\t\"intro, building, atmospheric\"\nVerse/Main\t30s-2m\tOriginal prompt\nBridge\t2m-2:30\t\"variation, bridge, key change\"\nOutro\tFinal 30s\t\"outro, ending, fade, resolution\"\nEnding Indicators\n\nAdd to final extend/outro:\n\n\"fade out\" / \"fading\"\n\"song ending\" / \"conclusion\"\n\"final chorus\" / \"last verse\"\n\"resolution\" / \"outro\"\nData Storage\n\nThis skill creates ~/udio/ on first use:\n\nmemory file — Preferences, successful prompts, token location reference\nprojects folder — Per-project tracking with seeds and URLs\nsongs folder — Downloaded audio files (optional)\n\nAll data stays local. Auth tokens should be stored in system keychain, not plain text.\n\nScope\n\nThis skill does:\n\nGenerate music via community API wrappers (requires auth token)\nNavigate udio.com with browser automation (user must be logged in)\nCraft optimized prompts for Udio's model (no token needed)\nTrack projects, seeds, and successful patterns locally\nDownload generated audio files to ~/udio/songs/\n\nThis skill does NOT:\n\nStore auth tokens in plain text (must use keychain/credential manager)\nBypass Udio's rate limits or terms of service\nAccess files outside ~/udio/\nAuto-extract tokens without user guidance\nSecurity Notes\n\nAuth Token: The sb-api-auth-token cookie grants API access to your Udio account. Handle it like a password:\n\nStore in system keychain, never in plain text\nToken expires after ~7 days of inactivity\nRe-extract if you get 401 errors\n\nCommunity Wrappers: The Python and Node wrappers are community-maintained (not official Udio software). Review their source code before installing:\n\nPython: github.com/flowese/UdioWrapper\nNode: github.com/josephgodwinkimani/udio-wrapper\n\nPrompt-Only Mode: If you prefer not to use API or share tokens, this skill works in prompt-only mode — just help with crafting effective prompts without any API calls.\n\nExternal Endpoints\nEndpoint\tData Sent\tPurpose\napi.udio.com\tPrompts, lyrics\tMusic generation (via wrappers)\nudio.com\tBrowser session\tDirect platform access\n\nAuth token is sent with API requests. No other data leaves the machine.\n\nTrust\n\nBy using this skill with API wrappers, prompts and lyrics are sent to Udio's servers for music generation. Only use if you trust Udio with your creative content. Review Udio's terms of service at udio.com/terms.\n\nRelated Skills\n\nInstall with clawhub install <slug> if user confirms:\n\naudio — Audio processing and editing\nvideo — Combine music with video content\nffmpeg — Audio format conversion\nFeedback\nIf useful: clawhub star udio\nStay updated: clawhub sync"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/udio",
    "publisherUrl": "https://clawhub.ai/ivangdavila/udio",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/udio",
    "downloadUrl": "https://openagent3.xyz/downloads/udio",
    "agentUrl": "https://openagent3.xyz/skills/udio/agent",
    "manifestUrl": "https://openagent3.xyz/skills/udio/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/udio/agent.md"
  }
}