{
  "schemaVersion": "1.0",
  "item": {
    "slug": "listenhub-ai",
    "name": "ListenHub",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/kkaticld/listenhub-ai",
    "canonicalUrl": "https://clawhub.ai/kkaticld/listenhub-ai",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/listenhub-ai",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=listenhub-ai",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/check-status.sh",
      "scripts/create-explainer.sh",
      "scripts/create-podcast-audio.sh",
      "scripts/create-podcast-text.sh",
      "scripts/create-podcast.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/listenhub-ai"
    },
    "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/listenhub-ai",
    "agentPageUrl": "https://openagent3.xyz/skills/listenhub-ai/agent",
    "manifestUrl": "https://openagent3.xyz/skills/listenhub-ai/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/listenhub-ai/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": "ListenHub",
        "body": "Generate podcasts, explainer videos, TTS audio, and AI images through shell scripts that wrap the ListenHub API."
      },
      {
        "title": "Setup",
        "body": "Set LISTENHUB_API_KEY before first use. Two options:\n\nOption A — OpenClaw env config (recommended):\nAdd to ~/.openclaw/openclaw.json under env:\n\n{ \"env\": { \"LISTENHUB_API_KEY\": \"lh_sk_...\" } }\n\nOption B — Shell export:\n\nexport LISTENHUB_API_KEY=\"lh_sk_...\"\n\nGet your key: https://listenhub.ai/settings/api-keys\n\nFor image generation, also set LISTENHUB_OUTPUT_DIR (defaults to ~/Downloads)."
      },
      {
        "title": "Script Location",
        "body": "All scripts live at scripts/ relative to this SKILL.md. Resolve the path:\n\nSCRIPTS=\"$(cd \"$(dirname \"<path-to-this-SKILL.md>\")\" && pwd)/scripts\"\n\nDependencies: curl, jq (install if missing)."
      },
      {
        "title": "Modes",
        "body": "ModeScriptUse CasePodcastcreate-podcast.sh1-2 speaker discussionExplainercreate-explainer.sh + generate-video.shNarration + AI visualsTTScreate-tts.shPure voice readingSpeechcreate-speech.shMulti-speaker scripted audioImagegenerate-image.shAI image generation\n\nHelper scripts: get-speakers.sh (list voices), check-status.sh (poll progress)."
      },
      {
        "title": "Hard Constraints",
        "body": "Execute ONLY through provided scripts. Direct API calls are forbidden.\nNever hardcode speakerIds — call get-speakers.sh to discover them.\nThe API is proprietary; endpoints and parameters are internal to scripts."
      },
      {
        "title": "Mode Detection",
        "body": "Auto-detect from user input:\n\nPodcast: \"podcast\", \"chat about\", \"discuss\", \"debate\" → create-podcast.sh\nExplainer: \"explain\", \"introduce\", \"video\", \"tutorial\" → create-explainer.sh\nTTS: \"read aloud\", \"convert to speech\", \"tts\" → create-tts.sh\nImage: \"generate image\", \"draw\", \"create picture\" → generate-image.sh\n\nIf ambiguous, ask user."
      },
      {
        "title": "Get Speakers",
        "body": "$SCRIPTS/get-speakers.sh --language zh   # or en\n\nReturns JSON with data.items[].speakerId. If user doesn't specify a voice, pick the first match for the language."
      },
      {
        "title": "Podcast (One-Stage, default)",
        "body": "$SCRIPTS/create-podcast.sh --query \"topic\" --language zh|en --mode quick|deep|debate --speakers <id1[,id2]> [--source-url URL] [--source-text TEXT]\n\nquick is default mode. debate requires 2 speakers.\nMultiple --source-url / --source-text allowed."
      },
      {
        "title": "Podcast (Two-Stage: text → review → audio)",
        "body": "Use only when user wants to review/edit the script before audio generation.\n\nStage 1: $SCRIPTS/create-podcast-text.sh (same args as one-stage)\nReview: Poll with check-status.sh --wait, save draft, STOP and wait for user approval.\nStage 2: $SCRIPTS/create-podcast-audio.sh --episode <id> [--scripts modified.json]"
      },
      {
        "title": "Explainer Video",
        "body": "$SCRIPTS/create-explainer.sh --content \"text\" --language zh|en --mode info|story --speakers <id>\n$SCRIPTS/generate-video.sh --episode <id>"
      },
      {
        "title": "TTS (FlowSpeech)",
        "body": "$SCRIPTS/create-tts.sh --type text|url --content \"text or URL\" --language zh|en --mode smart|direct --speakers <id>\n\nDefault mode: direct (no content modification). smart fixes grammar/punctuation.\nText limit: 10,000 characters; use URL for longer content."
      },
      {
        "title": "Multi-Speaker Speech",
        "body": "$SCRIPTS/create-speech.sh --scripts scripts.json\n\nJSON format: {\"scripts\": [{\"content\": \"...\", \"speakerId\": \"...\"}]}"
      },
      {
        "title": "Image Generation",
        "body": "$SCRIPTS/generate-image.sh --prompt \"description\" [--size 1K|2K|4K] [--ratio 16:9|1:1|9:16|...] [--reference-images \"url1,url2\"]\n\nDefault: 2K, 16:9. Max 14 reference images.\nOutput saved to $LISTENHUB_OUTPUT_DIR (default ~/Downloads)."
      },
      {
        "title": "Check Status",
        "body": "$SCRIPTS/check-status.sh --episode <id> --type podcast|flow-speech|explainer [--wait] [--timeout 300]\n\nExit codes: 0=done, 1=failed, 2=timeout (retry safe).\n\nUse --wait for automated polling. Run generation in background for long tasks."
      },
      {
        "title": "Interaction Pattern",
        "body": "Detect mode from user input\nIf no speaker specified, call get-speakers.sh, pick first match\nRun the appropriate script (background for long tasks)\nReport submission, give estimated time (podcast 2-3min, explainer 3-5min, TTS 1-2min)\nOn \"done yet?\" → run check-status.sh --wait\nShow result link. Offer download only when asked."
      },
      {
        "title": "Language",
        "body": "Match response language to user input language. Chinese input → Chinese responses. English → English."
      },
      {
        "title": "Links",
        "body": "Podcast library: https://listenhub.ai/app/podcast\nExplainer library: https://listenhub.ai/app/explainer\nTTS library: https://listenhub.ai/app/text-to-speech\nAPI keys: https://listenhub.ai/settings/api-keys"
      }
    ],
    "body": "ListenHub\n\nGenerate podcasts, explainer videos, TTS audio, and AI images through shell scripts that wrap the ListenHub API.\n\nSetup\n\nSet LISTENHUB_API_KEY before first use. Two options:\n\nOption A — OpenClaw env config (recommended): Add to ~/.openclaw/openclaw.json under env:\n\n{ \"env\": { \"LISTENHUB_API_KEY\": \"lh_sk_...\" } }\n\n\nOption B — Shell export:\n\nexport LISTENHUB_API_KEY=\"lh_sk_...\"\n\n\nGet your key: https://listenhub.ai/settings/api-keys\n\nFor image generation, also set LISTENHUB_OUTPUT_DIR (defaults to ~/Downloads).\n\nScript Location\n\nAll scripts live at scripts/ relative to this SKILL.md. Resolve the path:\n\nSCRIPTS=\"$(cd \"$(dirname \"<path-to-this-SKILL.md>\")\" && pwd)/scripts\"\n\n\nDependencies: curl, jq (install if missing).\n\nModes\nMode\tScript\tUse Case\nPodcast\tcreate-podcast.sh\t1-2 speaker discussion\nExplainer\tcreate-explainer.sh + generate-video.sh\tNarration + AI visuals\nTTS\tcreate-tts.sh\tPure voice reading\nSpeech\tcreate-speech.sh\tMulti-speaker scripted audio\nImage\tgenerate-image.sh\tAI image generation\n\nHelper scripts: get-speakers.sh (list voices), check-status.sh (poll progress).\n\nHard Constraints\nExecute ONLY through provided scripts. Direct API calls are forbidden.\nNever hardcode speakerIds — call get-speakers.sh to discover them.\nThe API is proprietary; endpoints and parameters are internal to scripts.\nMode Detection\n\nAuto-detect from user input:\n\nPodcast: \"podcast\", \"chat about\", \"discuss\", \"debate\" → create-podcast.sh\nExplainer: \"explain\", \"introduce\", \"video\", \"tutorial\" → create-explainer.sh\nTTS: \"read aloud\", \"convert to speech\", \"tts\" → create-tts.sh\nImage: \"generate image\", \"draw\", \"create picture\" → generate-image.sh\n\nIf ambiguous, ask user.\n\nQuick Reference\nGet Speakers\n$SCRIPTS/get-speakers.sh --language zh   # or en\n\n\nReturns JSON with data.items[].speakerId. If user doesn't specify a voice, pick the first match for the language.\n\nPodcast (One-Stage, default)\n$SCRIPTS/create-podcast.sh --query \"topic\" --language zh|en --mode quick|deep|debate --speakers <id1[,id2]> [--source-url URL] [--source-text TEXT]\n\nquick is default mode. debate requires 2 speakers.\nMultiple --source-url / --source-text allowed.\nPodcast (Two-Stage: text → review → audio)\n\nUse only when user wants to review/edit the script before audio generation.\n\nStage 1: $SCRIPTS/create-podcast-text.sh (same args as one-stage) Review: Poll with check-status.sh --wait, save draft, STOP and wait for user approval. Stage 2: $SCRIPTS/create-podcast-audio.sh --episode <id> [--scripts modified.json]\n\nExplainer Video\n$SCRIPTS/create-explainer.sh --content \"text\" --language zh|en --mode info|story --speakers <id>\n$SCRIPTS/generate-video.sh --episode <id>\n\nTTS (FlowSpeech)\n$SCRIPTS/create-tts.sh --type text|url --content \"text or URL\" --language zh|en --mode smart|direct --speakers <id>\n\nDefault mode: direct (no content modification). smart fixes grammar/punctuation.\nText limit: 10,000 characters; use URL for longer content.\nMulti-Speaker Speech\n$SCRIPTS/create-speech.sh --scripts scripts.json\n\n\nJSON format: {\"scripts\": [{\"content\": \"...\", \"speakerId\": \"...\"}]}\n\nImage Generation\n$SCRIPTS/generate-image.sh --prompt \"description\" [--size 1K|2K|4K] [--ratio 16:9|1:1|9:16|...] [--reference-images \"url1,url2\"]\n\nDefault: 2K, 16:9. Max 14 reference images.\nOutput saved to $LISTENHUB_OUTPUT_DIR (default ~/Downloads).\nCheck Status\n$SCRIPTS/check-status.sh --episode <id> --type podcast|flow-speech|explainer [--wait] [--timeout 300]\n\n\nExit codes: 0=done, 1=failed, 2=timeout (retry safe).\n\nUse --wait for automated polling. Run generation in background for long tasks.\n\nInteraction Pattern\nDetect mode from user input\nIf no speaker specified, call get-speakers.sh, pick first match\nRun the appropriate script (background for long tasks)\nReport submission, give estimated time (podcast 2-3min, explainer 3-5min, TTS 1-2min)\nOn \"done yet?\" → run check-status.sh --wait\nShow result link. Offer download only when asked.\nLanguage\n\nMatch response language to user input language. Chinese input → Chinese responses. English → English.\n\nLinks\nPodcast library: https://listenhub.ai/app/podcast\nExplainer library: https://listenhub.ai/app/explainer\nTTS library: https://listenhub.ai/app/text-to-speech\nAPI keys: https://listenhub.ai/settings/api-keys"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/kkaticld/listenhub-ai",
    "publisherUrl": "https://clawhub.ai/kkaticld/listenhub-ai",
    "owner": "kkaticld",
    "version": "0.6.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/listenhub-ai",
    "downloadUrl": "https://openagent3.xyz/downloads/listenhub-ai",
    "agentUrl": "https://openagent3.xyz/skills/listenhub-ai/agent",
    "manifestUrl": "https://openagent3.xyz/skills/listenhub-ai/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/listenhub-ai/agent.md"
  }
}