{
  "schemaVersion": "1.0",
  "item": {
    "slug": "discord-voice-memo-upgrade",
    "name": "discord voice memo upgrade",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/koto9x/discord-voice-memo-upgrade",
    "canonicalUrl": "https://clawhub.ai/koto9x/discord-voice-memo-upgrade",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/discord-voice-memo-upgrade",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=discord-voice-memo-upgrade",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "CHANGELOG.md",
      "index.js",
      "README.md",
      "UPLOAD.md",
      "package.json",
      "PATCH.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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-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/discord-voice-memo-upgrade"
    },
    "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/discord-voice-memo-upgrade",
    "agentPageUrl": "https://openagent3.xyz/skills/discord-voice-memo-upgrade/agent",
    "manifestUrl": "https://openagent3.xyz/skills/discord-voice-memo-upgrade/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/discord-voice-memo-upgrade/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Overview",
        "body": "This skill provides a core patch for Moltbot that fixes voice memo TTS auto-replies. The issue occurs when block streaming prevents the final payload from reaching the TTS synthesis pipeline."
      },
      {
        "title": "Type",
        "body": "Core Patch / Documentation\n\nThis is not a traditional plugin that extends functionality - it's a documentation package with patch files for core Clawdbot modifications."
      },
      {
        "title": "Use Case",
        "body": "Use this if you're experiencing:\n\nVoice memos not triggering TTS responses\nTTS working for text messages but not audio messages\nTTS auto mode = \"inbound\" not functioning"
      },
      {
        "title": "Method 1: Manual Patch (Recommended for Development)",
        "body": "# 1. Locate your clawdbot installation\nCLAWDBOT_PATH=$(which clawdbot)\nCLAWDBOT_DIR=$(dirname $(dirname $CLAWDBOT_PATH))\n\n# 2. Backup original files\ncp $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/auto-reply/reply/dispatch-from-config.js \\\n   $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/auto-reply/reply/dispatch-from-config.js.backup\n\ncp $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/tts/tts.js \\\n   $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/tts/tts.js.backup\n\n# 3. Apply patch\ncp patch/dispatch-from-config.js $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/auto-reply/reply/\ncp patch/tts.js $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/tts/\n\n# 4. Restart clawdbot\nclawdbot restart"
      },
      {
        "title": "Method 2: Wait for Upstream",
        "body": "If this patch gets accepted into core Clawdbot, you can simply update:\n\nnpm install -g clawdbot@latest"
      },
      {
        "title": "Configuration",
        "body": "No additional configuration needed beyond existing TTS settings. Ensure you have:\n\n{\n  \"messages\": {\n    \"tts\": {\n      \"auto\": \"inbound\",  // or \"always\"\n      \"provider\": \"openai\",  // or \"elevenlabs\" or \"edge\"\n      \"elevenlabs\": {\n        \"apiKey\": \"your-key-here\"\n      }\n    }\n  }\n}"
      },
      {
        "title": "How to Test",
        "body": "Configure TTS with auto: \"inbound\"\nSend a voice memo to your bot\nCheck logs for debug output:\n[TTS-DEBUG] inboundAudio=true ttsAutoResolved=inbound ttsWillFire=true\n[TTS-APPLY] PASSED all checks, proceeding to textToSpeech\n[TTS-SPEECH] ...\n\n\nVerify bot responds with audio"
      },
      {
        "title": "Debug Logging",
        "body": "The patch includes extensive debug logging. To view:\n\n# Logs will show in your clawdbot console\nclawdbot gateway start\n\nLook for:\n\n[TTS-DEBUG] - Shows TTS detection logic\n[TTS-APPLY] - Shows TTS payload processing decisions\n[TTS-SPEECH] - Shows TTS synthesis attempt"
      },
      {
        "title": "Production Deployment",
        "body": "Important: Before deploying to production, consider:\n\nRemove debug logging - The console.log statements should be removed or made configurable\nTest thoroughly - Ensure voice memos work correctly\nMonitor performance - Disabling block streaming may impact streaming behavior\n\nTo remove debug logging, edit the patched files and remove lines containing:\n\nconsole.log('[TTS-DEBUG]'\nconsole.log('[TTS-APPLY]'\nconsole.log('[TTS-SPEECH]'"
      },
      {
        "title": "Reverting",
        "body": "If you need to revert the patch:\n\n# Restore backups\nCLAWDBOT_PATH=$(which clawdbot)\nCLAWDBOT_DIR=$(dirname $(dirname $CLAWDBOT_PATH))\n\ncp $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/auto-reply/reply/dispatch-from-config.js.backup \\\n   $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/auto-reply/reply/dispatch-from-config.js\n\ncp $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/tts/tts.js.backup \\\n   $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/tts/tts.js\n\nclawdbot restart"
      },
      {
        "title": "The Problem",
        "body": "Block streaming is used to send incremental text chunks to the user as they're generated. However, TTS synthesis hooks into the \"final\" payload type by default. When block streaming is enabled:\n\nText chunks are sent as \"block\" payloads\nThe final assembled text is sent as a \"final\" payload\nBut block streaming optimization drops the final payload (text already sent)\nTTS never fires because it only processes \"final\" payloads"
      },
      {
        "title": "The Solution",
        "body": "The patch adds detection logic to identify when TTS should fire:\n\nInbound message has audio attachment (isInboundAudioContext())\nTTS auto mode is \"inbound\" or \"always\"\nValid TTS provider and API key configured\n\nWhen these conditions are met, block streaming is temporarily disabled for that specific reply, ensuring the final payload reaches the TTS pipeline."
      },
      {
        "title": "Code Flow",
        "body": "dispatchReplyFromConfig()\n  ├─ isInboundAudioContext(ctx) → detects audio\n  ├─ resolveSessionTtsAuto(ctx, cfg) → gets TTS settings\n  ├─ ttsWillFire = conditions met?\n  └─ getReplyFromConfig({ disableBlockStreaming: ttsWillFire })\n       └─ maybeApplyTtsToPayload() receives final payload\n            └─ textToSpeech() synthesizes audio"
      },
      {
        "title": "Compatibility",
        "body": "Clawdbot: 1.0.0+\nNode.js: 18+\nPlatforms: All platforms supported by Clawdbot"
      },
      {
        "title": "Known Issues",
        "body": "Debug logging is verbose (should be removed for production)\nModifies compiled dist files (not source)\nMay need to reapply after clawdbot updates"
      },
      {
        "title": "Contributing",
        "body": "To improve this patch:\n\nTest with different TTS providers (OpenAI, ElevenLabs, Edge)\nTest with different auto modes (\"always\", \"inbound\", \"tagged\")\nSuggest optimizations to reduce debug logging overhead\nPropose integration into core Clawdbot source"
      },
      {
        "title": "Support",
        "body": "If you encounter issues:\n\nCheck logs for [TTS-DEBUG] output\nVerify TTS configuration is correct\nEnsure API keys are valid\nCheck that block streaming was actually disabled (disableBlockStreaming: true in logs)"
      },
      {
        "title": "License",
        "body": "Same as Moltbot."
      }
    ],
    "body": "Discord Voice Memo Upgrades - Skill Documentation\nOverview\n\nThis skill provides a core patch for Moltbot that fixes voice memo TTS auto-replies. The issue occurs when block streaming prevents the final payload from reaching the TTS synthesis pipeline.\n\nType\n\nCore Patch / Documentation\n\nThis is not a traditional plugin that extends functionality - it's a documentation package with patch files for core Clawdbot modifications.\n\nUse Case\n\nUse this if you're experiencing:\n\nVoice memos not triggering TTS responses\nTTS working for text messages but not audio messages\nTTS auto mode = \"inbound\" not functioning\nInstallation Methods\nMethod 1: Manual Patch (Recommended for Development)\n# 1. Locate your clawdbot installation\nCLAWDBOT_PATH=$(which clawdbot)\nCLAWDBOT_DIR=$(dirname $(dirname $CLAWDBOT_PATH))\n\n# 2. Backup original files\ncp $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/auto-reply/reply/dispatch-from-config.js \\\n   $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/auto-reply/reply/dispatch-from-config.js.backup\n\ncp $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/tts/tts.js \\\n   $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/tts/tts.js.backup\n\n# 3. Apply patch\ncp patch/dispatch-from-config.js $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/auto-reply/reply/\ncp patch/tts.js $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/tts/\n\n# 4. Restart clawdbot\nclawdbot restart\n\nMethod 2: Wait for Upstream\n\nIf this patch gets accepted into core Clawdbot, you can simply update:\n\nnpm install -g clawdbot@latest\n\nConfiguration\n\nNo additional configuration needed beyond existing TTS settings. Ensure you have:\n\n{\n  \"messages\": {\n    \"tts\": {\n      \"auto\": \"inbound\",  // or \"always\"\n      \"provider\": \"openai\",  // or \"elevenlabs\" or \"edge\"\n      \"elevenlabs\": {\n        \"apiKey\": \"your-key-here\"\n      }\n    }\n  }\n}\n\nHow to Test\nConfigure TTS with auto: \"inbound\"\nSend a voice memo to your bot\nCheck logs for debug output:\n[TTS-DEBUG] inboundAudio=true ttsAutoResolved=inbound ttsWillFire=true\n[TTS-APPLY] PASSED all checks, proceeding to textToSpeech\n[TTS-SPEECH] ...\n\nVerify bot responds with audio\nDebug Logging\n\nThe patch includes extensive debug logging. To view:\n\n# Logs will show in your clawdbot console\nclawdbot gateway start\n\n\nLook for:\n\n[TTS-DEBUG] - Shows TTS detection logic\n[TTS-APPLY] - Shows TTS payload processing decisions\n[TTS-SPEECH] - Shows TTS synthesis attempt\nProduction Deployment\n\nImportant: Before deploying to production, consider:\n\nRemove debug logging - The console.log statements should be removed or made configurable\nTest thoroughly - Ensure voice memos work correctly\nMonitor performance - Disabling block streaming may impact streaming behavior\n\nTo remove debug logging, edit the patched files and remove lines containing:\n\nconsole.log('[TTS-DEBUG]'\nconsole.log('[TTS-APPLY]'\nconsole.log('[TTS-SPEECH]'\nReverting\n\nIf you need to revert the patch:\n\n# Restore backups\nCLAWDBOT_PATH=$(which clawdbot)\nCLAWDBOT_DIR=$(dirname $(dirname $CLAWDBOT_PATH))\n\ncp $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/auto-reply/reply/dispatch-from-config.js.backup \\\n   $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/auto-reply/reply/dispatch-from-config.js\n\ncp $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/tts/tts.js.backup \\\n   $CLAWDBOT_DIR/lib/node_modules/clawdbot/dist/tts/tts.js\n\nclawdbot restart\n\nTechnical Details\nThe Problem\n\nBlock streaming is used to send incremental text chunks to the user as they're generated. However, TTS synthesis hooks into the \"final\" payload type by default. When block streaming is enabled:\n\nText chunks are sent as \"block\" payloads\nThe final assembled text is sent as a \"final\" payload\nBut block streaming optimization drops the final payload (text already sent)\nTTS never fires because it only processes \"final\" payloads\nThe Solution\n\nThe patch adds detection logic to identify when TTS should fire:\n\nInbound message has audio attachment (isInboundAudioContext())\nTTS auto mode is \"inbound\" or \"always\"\nValid TTS provider and API key configured\n\nWhen these conditions are met, block streaming is temporarily disabled for that specific reply, ensuring the final payload reaches the TTS pipeline.\n\nCode Flow\ndispatchReplyFromConfig()\n  ├─ isInboundAudioContext(ctx) → detects audio\n  ├─ resolveSessionTtsAuto(ctx, cfg) → gets TTS settings\n  ├─ ttsWillFire = conditions met?\n  └─ getReplyFromConfig({ disableBlockStreaming: ttsWillFire })\n       └─ maybeApplyTtsToPayload() receives final payload\n            └─ textToSpeech() synthesizes audio\n\nCompatibility\nClawdbot: 1.0.0+\nNode.js: 18+\nPlatforms: All platforms supported by Clawdbot\nKnown Issues\nDebug logging is verbose (should be removed for production)\nModifies compiled dist files (not source)\nMay need to reapply after clawdbot updates\nContributing\n\nTo improve this patch:\n\nTest with different TTS providers (OpenAI, ElevenLabs, Edge)\nTest with different auto modes (\"always\", \"inbound\", \"tagged\")\nSuggest optimizations to reduce debug logging overhead\nPropose integration into core Clawdbot source\nSupport\n\nIf you encounter issues:\n\nCheck logs for [TTS-DEBUG] output\nVerify TTS configuration is correct\nEnsure API keys are valid\nCheck that block streaming was actually disabled (disableBlockStreaming: true in logs)\nLicense\n\nSame as Moltbot."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/koto9x/discord-voice-memo-upgrade",
    "publisherUrl": "https://clawhub.ai/koto9x/discord-voice-memo-upgrade",
    "owner": "koto9x",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/discord-voice-memo-upgrade",
    "downloadUrl": "https://openagent3.xyz/downloads/discord-voice-memo-upgrade",
    "agentUrl": "https://openagent3.xyz/skills/discord-voice-memo-upgrade/agent",
    "manifestUrl": "https://openagent3.xyz/skills/discord-voice-memo-upgrade/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/discord-voice-memo-upgrade/agent.md"
  }
}