{"id":"15e5422c-b592-4d75-845c-67d65d94ee34","entityType":"agent","slug":"clawhub-cindypapa-volcano-engine-podcast","name":"火山引擎豆包语音播客","canonicalUrl":"https://www.xpersona.co/agent/clawhub-cindypapa-volcano-engine-podcast","canonicalPath":"/agent/clawhub-cindypapa-volcano-engine-podcast","generatedAt":"2026-10-14T14:07:57.417Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-12T00:05:07.762Z","emptyReason":null},"description":"生成火山引擎豆包语音播客（PodcastTTS）。输入主题文本，自动生成双人对话式播客音频。 Skill: 火山引擎豆包语音播客 Owner: cindypapa Summary: 生成火山引擎豆包语音播客（PodcastTTS）。输入主题文本，自动生成双人对话式播客音频。 Tags: latest:1.1.1 Version history: v1.1.1 | 2026-04-28T12:51:26.994Z | user v1.1.1 重新发布：支持双人对话播客生成，含片头音乐、分片流式下发、断点续传、音频后处理 v1.1.0 | 2026-04-21T07:41:58.183Z | auto - Added multi-step user flow: skill now always asks if reference materials are available before generating a podcast. - Improved podcast generation logic for both c","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 971 downloads reported by the source. Last updated 10/12/2026.","installCommand":"clawhub skill install s171tsgfz5gnz75p6mgabptb6x8416qw:volcano-engine-podcast","sourceUrl":"https://clawhub.ai/cindypapa/volcano-engine-podcast","homepage":"https://clawhub.ai/cindypapa/skills/volcano-engine-podcast","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/cindypapa/volcano-engine-podcast","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/cindypapa/skills/volcano-engine-podcast","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"生成火山引擎豆包语音播客（PodcastTTS）。输入主题文本，自动生成双人对话式播客音频。 Skill: 火山引擎豆包语音播客 Owner: cindypapa Summary: 生成火山引擎豆包语音播客（PodcastTTS）。输入主题文本，自动生成双人对话式播客音频。 Tags: latest:1.1.1 Ver"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-12T00:05:07.762Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T00:05:07.762Z","emptyReason":null},"stars":null,"forks":null,"downloads":971,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.1.1","tractionLabel":"971 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T00:05:07.696Z","emptyReason":null},"lastUpdatedAt":"2026-10-12T00:05:07.762Z","lastCrawledAt":"2026-10-12T00:05:07.696Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-13T00:05:07.696Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.1","createdAt":"2026-04-28T12:51:26.994Z","changelog":"v1.1.1 重新发布：支持双人对话播客生成，含片头音乐、分片流式下发、断点续传、音频后处理","fileCount":6,"zipByteSize":15569},{"version":"1.1.0","createdAt":"2026-04-21T07:41:58.183Z","changelog":"- Added multi-step user flow: skill now always asks if reference materials are available before generating a podcast. - Improved podcast generation logic for both cases: with or without provided materials. - Clearly defined required trigger keywords for easier activation. - Updated API usage examples and configuration guidelines. - Outlined output structure and return data details. - Clarified instructions to always send the final MP3 file to the user.","fileCount":5,"zipByteSize":11870}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171tsgfz5gnz75p6mgabptb6x8416qw:volcano-engine-podcast","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cindypapa-volcano-engine-podcast/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cindypapa-volcano-engine-podcast/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cindypapa-volcano-engine-podcast/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-cindypapa-volcano-engine-podcast/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-cindypapa-volcano-engine-podcast/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-cindypapa-volcano-engine-podcast/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-14T14:07:57.417Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cindypapa-volcano-engine-podcast/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cindypapa-volcano-engine-podcast/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cindypapa-volcano-engine-podcast/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cindypapa-volcano-engine-podcast/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-12T00:05:07.762Z","emptyReason":null},"readme":"Skill: 火山引擎豆包语音播客\n\nOwner: cindypapa\n\nSummary: 生成火山引擎豆包语音播客（PodcastTTS）。输入主题文本，自动生成双人对话式播客音频。\n\nTags: latest:1.1.1\n\nVersion history:\n\nv1.1.1 | 2026-04-28T12:51:26.994Z | user\n\nv1.1.1 重新发布：支持双人对话播客生成，含片头音乐、分片流式下发、断点续传、音频后处理\n\nv1.1.0 | 2026-04-21T07:41:58.183Z | auto\n\n- Added multi-step user flow: skill now always asks if reference materials are available before generating a podcast.\n- Improved podcast generation logic for both cases: with or without provided materials.\n- Clearly defined required trigger keywords for easier activation.\n- Updated API usage examples and configuration guidelines.\n- Outlined output structure and return data details.\n- Clarified instructions to always send the final MP3 file to the user.\n\nArchive index:\n\nArchive v1.1.1: 6 files, 15569 bytes\n\nFiles: scripts/generate_podcast.py (19438b), scripts/kamei_podcast.py (4031b), scripts/protocols.py (18217b), skill-card.md (2543b), SKILL.md (4303b), _meta.json (141b)\n\nFile v1.1.1:SKILL.md\n\n---\nname: volcano-engine-podcast\ndescription: 生成火山引擎豆包语音播客（PodcastTTS）。输入主题文本，自动生成双人对话式播客音频。\nversion: 1.1.0\nauthor: xiaohe\nlicense: MIT\nmetadata:\n  hermes:\n    tags: [audio, podcast, tts, volcengine, doubao, 语音播客]\n---\n\n# 火山引擎豆包语音播客生成\n\n基于火山引擎 PodcastTTS API，输入主题文本，AI 自动生成双人对话播客音频（含片头音乐、多轮对话、片尾结束）。\n\n## 前提条件\n\n1. Python >= 3.9\n2. 安装 `websockets>=14.0`\n3. 火山引擎账号已开通 PodcastTTS 服务\n\n## 快速开始\n\n### 1. 环境变量配置（推荐）\n\n```bash\nexport VOLC_APPID=\"your_appid\"\nexport VOLC_ACCESS_TOKEN=\"your_access_token\"\nexport VOLC_APP_KEY=\"your_app_key\"  # 可选，默认 aGjiRDfUWi\n```\n\n### 2. 命令行调用\n\n```bash\npython scripts/generate_podcast.py \"Hermes和OpenClaw怎么选\"\n```\n\n### 3. Python 代码调用\n\n```python\nimport asyncio\nfrom scripts.generate_podcast import PodcastGenerator\n\nasync def main():\n    gen = PodcastGenerator(\n        appid=\"3398567544\",\n        access_token=\"your_token\",\n    )\n    result = await gen.generate(\n        text=\"今天来聊聊AI编程助手\",\n        output_dir=\"./output\",\n        encoding=\"mp3\",\n        use_head_music=True,\n    )\n    print(result[\"final_files\"])  # 输出音频路径列表\n\nasyncio.run(main())\n```\n\n## 参数说明\n\n### PodcastGenerator 初始化参数\n\n| 参数 | 类型 | 必填 | 默认值 | 说明 |\n|------|------|------|--------|------|\n| appid | str | 是 | - | 应用 ID |\n| access_token | str | 是 | - | Access Token |\n| app_key | str | 否 | aGjiRDfUWi | App Key |\n| resource_id | str | 否 | volc.service_type.10050 | 资源 ID |\n| endpoint | str | 否 | wss://openspeech... | WebSocket 端点 |\n\n### generate() 方法参数\n\n| 参数 | 类型 | 默认 | 说明 |\n|------|------|------|------|\n| text | str | 必填 | 输入主题文本 |\n| output_dir | str | output | 输出目录 |\n| encoding | str | mp3 | 音频格式: mp3/wav/pcm |\n| use_head_music | bool | True | 是否加片头音乐 |\n| use_tail_music | bool | False | 是否加片尾音乐 |\n| only_nlp_text | bool | False | 只生成文本不生成音频 |\n| return_audio_url | bool | False | 返回音频URL而非流式 |\n| speaker_info | dict | {\"random_order\":False} | 说话人配置 |\n| speech_rate | int | 0 | 语速 |\n| skip_round_audio_save | bool | False | 跳过分段保存 |\n| voice_type | str | None | 音色类型: `zh_male` / `zh_female` / `multi` |\n| normalize_audio | bool | False | 是否对音频进行音量归一化 |\n| fade_in_out | bool | False | 是否添加淡入淡出效果 |\n\n### 音色选择 (voice_type)\n\n| 值 | 说明 |\n|------|------|\n| None | 默认，AI 自动分配 |\n| zh_male | 中文男声 |\n| zh_female | 中文女声 |\n| multi | 多人对话模式 |\n\n## 返回结果\n\n```python\n{\n    \"success\": True,\n    \"output_dir\": \"/abs/path/to/output\",\n    \"segment_files\": [\"output/head_music_-1.mp3\", \"output/zh_female_0.mp3\", ...],\n    \"final_files\": [\"output/podcast_final_1234567890.mp3\"],\n    \"duration\": 164.51,\n    \"texts\": [\n        {\"text\": \"今天这期...\", \"speaker\": \"zh_female_mizaitongxue_v2_saturn_bigtts\"},\n        ...\n    ],\n    \"usage\": {\"input_text_tokens\": 0, \"output_audio_tokens\": 2800, \"total_tokens\": 2800}\n}\n```\n\n## CLI 参数\n\n```bash\npython scripts/generate_podcast.py \"主题文本\" \\\n    -o ./output \\\n    -f mp3 \\\n    --no-head-music \\\n    --tail-music \\\n    --only-text \\\n    --voice-type zh_female \\\n    --normalize \\\n    --fade \\\n    --appid YOUR_APPID \\\n    --token YOUR_TOKEN \\\n    -v\n```\n\n## 技术说明\n\n- **协议**: 自定义二进制 WebSocket 协议（封装在 protocols.py 中）\n- **流式下发**: 音频以 4~10KB 分片实时流式下发\n- **断点续传**: 支持从中断轮次自动重试\n- **音频合并**: 自动合并所有分段为完整音频\n- **音频后处理**: 支持音量归一化（peak -1dB）和淡入淡出（0.5s）\n\n## 注意事项\n\n1. Access Token 需从火山引擎控制台获取\n2. 每次调用消耗相应的 audio token\n3. 音频采样率固定为 24kHz\n4. 对话角色由 AI 自动分配（通常为一男一女双人对话）\n5. 音色选择 `voice_type` 为提示性参数，最终音色由服务端根据内容智能匹配\n\nFile v1.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn743vfjd6cp88q16gxc32qhk182rchq\",\n  \"slug\": \"volcano-engine-podcast\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1777380686994\n}\n\nFile v1.1.1:skill-card.md\n\n## Description:\n\n生成火山引擎豆包语音播客（PodcastTTS）。输入主题文本，自动生成双人对话式播客音频。\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[cindypapa](https://clawhub.ai/user/cindypapa)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agent users use this skill to turn topic text into a two-speaker podcast audio workflow backed by Volcano Engine PodcastTTS. It supports command-line and Python use, with options for head or tail music, voice hints, streamed audio output, and optional audio post-processing.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill handles Volcano Engine API credentials.\n\nMitigation: Use a trusted Volcano Engine account, provide credentials through environment or documented config only, and avoid exposing tokens in prompts, logs, or generated artifacts.\n\nRisk: Podcast topics are sent to an external speech service.\n\nMitigation: Do not submit secrets, regulated data, or sensitive personal data as podcast topics unless the external-service use has been approved.\n\nRisk: Security evidence flags unsafe file and endpoint handling.\n\nMitigation: Keep the endpoint fixed to the official Volcano Engine service and run the skill under an unprivileged account with write access limited to the intended output directory.\n\nRisk: The QQ bot helper has higher-risk config and media-path behavior.\n\nMitigation: Review and document the QQ helper before deployment, and sanitize output filenames and destination paths before use.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/cindypapa/skills/volcano-engine-podcast)\n- [ClawHub publisher profile](https://clawhub.ai/user/cindypapa)\n\n## Skill Output:\n\n**Output Type(s):** [text, code, shell commands, configuration, audio files, guidance]\n\n**Output Format:** [Markdown instructions with Python and shell examples; runtime output is JSON-like status data and generated audio files.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Generated podcasts may include segment files, final MP3/WAV/PCM audio, duration, transcript text, and token usage.]\n\n## Skill Version(s):\n\n1.1.1 (source: server release metadata; artifact frontmatter lists 1.1.0)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.1.0: 5 files, 11870 bytes\n\nFiles: scripts/generate_podcast.py (12679b), scripts/kamei_podcast.py (4031b), scripts/protocols.py (18217b), SKILL.md (3671b), _meta.json (141b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: volcano-engine-podcast\ndescription: 生成火山引擎豆包语音播客（PodcastTTS）。输入主题文本，自动生成双人对话式播客音频。触发关键词：豆包语音播客、生成播客、语音播客。\nversion: 1.1.0\nauthor: xiaohe + kamei\nlicense: MIT\nmetadata:\n  openclaw:\n    homepage: https://github.com/Cindypapa/volcano-engine-podcast\n    requires:\n      bins:\n        - python3\n      packages:\n        - websockets>=14.0\n---\n\n# 火山引擎豆包语音播客生成\n\n基于火山引擎 PodcastTTS API，输入主题文本，AI 自动生成双人对话播客音频（含片头音乐、多轮对话、片尾结束）。\n\n---\n\n## 🎯 触发条件\n\n用户提到以下关键词时触发：\n- \"用豆包语音播客帮我生成...\"\n- \"生成语音播客\"\n- \"豆包播客\"\n- \"PodcastTTS\"\n\n---\n\n## 🔄 收到请求后流程\n\n**⚠️ 重要：收到用户请求后，必须先询问是否有参考资料！**\n\n### 步骤 1：询问参考资料\n\n```\n用户：用豆包语音播客帮我生成XX主题的语音播客\n\n助手回复：\n收到！请选择资料来源：\n\n1️⃣ **有参考资料**\n   - 请发送相关文档、链接或已有内容\n   - 我会基于资料生成播客\n\n2️⃣ **没有参考资料**\n   - 直接按你提供的主题生成播客\n   - AI 会自动扩展内容\n\n请回复 \"1\" 或 \"2\"，或直接发送资料（文档/链接）\n```\n\n### 步骤 2：生成播客\n\n- **有资料**：先读取资料内容，整合后生成播客\n- **无资料**：直接使用主题文本生成播客\n\n### 步骤 3：发送音频\n\n生成完成后，**必须把 MP3 文件发送给用户**：\n\n```\n<qqvoice>/root/.openclaw/media/qqbot/downloads/播客名称.mp3</qqvoice>\n```\n\n---\n\n## 📋 配置\n\n火山引擎播客 API 配置：\n\n```json\n// ~/.openclaw/config.json\n{\n  \"volc_podcast\": {\n    \"appid\": \"3398567544\",\n    \"access_key\": \"your_access_key\",\n    \"secret_key\": \"your_secret_key\"\n  }\n}\n```\n\n---\n\n## 🔧 调用方式\n\n### 快速调用（推荐）\n\n```python\nimport asyncio\nimport sys\nsys.path.insert(0, \"/root/.openclaw/workspace/skills/volcano-engine-podcast/scripts\")\nfrom generate_podcast import PodcastGenerator\n\nasync def generate_podcast(text, output_name=\"podcast\"):\n    gen = PodcastGenerator(\n        appid=\"3398567544\",\n        access_token=\"your_token\",\n    )\n    \n    result = await gen.generate(\n        text=text,\n        output_dir=f\"/tmp/{output_name}\",\n        encoding=\"mp3\",\n        use_head_music=True,\n    )\n    \n    if result[\"success\"]:\n        # 复制到发送目录\n        import shutil\n        src = result[\"final_files\"][0]\n        dst = f\"/root/.openclaw/media/qqbot/downloads/{output_name}.mp3\"\n        shutil.copy(src, dst)\n        return dst\n    \n    return None\n\n# 使用\naudio_path = await generate_podcast(\"今天来聊聊AI编程助手\", \"AI编程助手播客\")\n```\n\n---\n\n## 📊 返回结果\n\n```python\n{\n    \"success\": True,\n    \"duration\": 135.99,           # 播客时长（秒）\n    \"final_files\": [\"...mp3\"],    # 最终音频文件\n    \"texts\": [...],               # 对话文本列表\n    \"usage\": {                    # Token 消耗\n        \"input_text_tokens\": 1245,\n        \"output_audio_tokens\": 3217,\n        \"total_tokens\": 4462\n    }\n}\n```\n\n---\n\n## ⚙️ 参数说明\n\n| 参数 | 默认 | 说明 |\n|------|------|------|\n| `text` | 必填 | 输入主题文本 |\n| `encoding` | mp3 | 音频格式 |\n| `use_head_music` | True | 片头音乐 |\n| `use_tail_music` | False | 片尾音乐 |\n\n---\n\n## 📝 注意事项\n\n1. 每次调用消耗 audio token\n2. 对话角色由 AI 自动分配（男女双人对话）\n3. 音频采样率 24kHz\n4. 生成后必须发送 MP3 给用户\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn743vfjd6cp88q16gxc32qhk182rchq\",\n  \"slug\": \"volcano-engine-podcast\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1776757318183\n}","readmeExcerpt":"Skill: 火山引擎豆包语音播客 Owner: cindypapa Summary: 生成火山引擎豆包语音播客（PodcastTTS）。输入主题文本，自动生成双人对话式播客音频。 Tags: latest:1.1.1 Version history: v1.1.1 | 2026-04-28T12:51:26.994Z | user v1.1.1 重新发布：支持双人对话播客生成，含片头音乐、分片流式下发、断点续传、音频后处理 v1.1.0 | 2026-04-21T07:41:58.183Z | auto - Added multi-step user flow: skill now always asks if reference materials are available before generating a podcast. - Improved podcast generation logic for both c","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"export VOLC_APPID=\"your_appid\"\nexport VOLC_ACCESS_TOKEN=\"your_access_token\"\nexport VOLC_APP_KEY=\"your_app_key\"  # 可选，默认 aGjiRDfUWi"},{"language":"bash","snippet":"python scripts/generate_podcast.py \"Hermes和OpenClaw怎么选\""},{"language":"python","snippet":"import asyncio\nfrom scripts.generate_podcast import PodcastGenerator\n\nasync def main():\n    gen = PodcastGenerator(\n        appid=\"3398567544\",\n        access_token=\"your_token\",\n    )\n    result = await gen.generate(\n        text=\"今天来聊聊AI编程助手\",\n        output_dir=\"./output\",\n        encoding=\"mp3\",\n        use_head_music=True,\n    )\n    print(result[\"final_files\"])  # 输出音频路径列表\n\nasyncio.run(main())"},{"language":"python","snippet":"{\n    \"success\": True,\n    \"output_dir\": \"/abs/path/to/output\",\n    \"segment_files\": [\"output/head_music_-1.mp3\", \"output/zh_female_0.mp3\", ...],\n    \"final_files\": [\"output/podcast_final_1234567890.mp3\"],\n    \"duration\": 164.51,\n    \"texts\": [\n        {\"text\": \"今天这期...\", \"speaker\": \"zh_female_mizaitongxue_v2_saturn_bigtts\"},\n        ...\n    ],\n    \"usage\": {\"input_text_tokens\": 0, \"output_audio_tokens\": 2800, \"total_tokens\": 2800}\n}"},{"language":"bash","snippet":"python scripts/generate_podcast.py \"主题文本\" \\\n    -o ./output \\\n    -f mp3 \\\n    --no-head-music \\\n    --tail-music \\\n    --only-text \\\n    --voice-type zh_female \\\n    --normalize \\\n    --fade \\\n    --appid YOUR_APPID \\\n    --token YOUR_TOKEN \\\n    -v"},{"language":"text","snippet":"用户：用豆包语音播客帮我生成XX主题的语音播客\n\n助手回复：\n收到！请选择资料来源：\n\n1️⃣ **有参考资料**\n   - 请发送相关文档、链接或已有内容\n   - 我会基于资料生成播客\n\n2️⃣ **没有参考资料**\n   - 直接按你提供的主题生成播客\n   - AI 会自动扩展内容\n\n请回复 \"1\" 或 \"2\"，或直接发送资料（文档/链接）"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: volcano-engine-podcast\ndescription: 生成火山引擎豆包语音播客（PodcastTTS）。输入主题文本，自动生成双人对话式播客音频。\nversion: 1.1.0\nauthor: xiaohe\nlicense: MIT\nmetadata:\n  hermes:\n    tags: [audio, podcast, tts, volcengine, doubao, 语音播客]\n---\n\n# 火山引擎豆包语音播客生成\n\n基于火山引擎 PodcastTTS API，输入主题文本，AI 自动生成双人对话播客音频（含片头音乐、多轮对话、片尾结束）。\n\n## 前提条件\n\n1. Python >= 3.9\n2. 安装 `websockets>=14.0`\n3. 火山引擎账号已开通 PodcastTTS 服务\n\n## 快速开始\n\n### 1. 环境变量配置（推荐）\n\n```bash\nexport VOLC_APPID=\"your_appid\"\nexport VOLC_ACCESS_TOKEN=\"your_access_token\"\nexport VOLC_APP_KEY=\"your_app_key\"  # 可选，默认 aGjiRDfUWi\n```\n\n### 2. 命令行调用\n\n```bash\npython scripts/generate_podcast.py \"Hermes和OpenClaw怎么选\"\n```\n\n### 3. Python 代码调用\n\n```python\nimport asyncio\nfrom scripts.generate_podcast import PodcastGenerator\n\nasync def main():\n    gen = PodcastGenerator(\n        appid=\"3398567544\",\n        access_token=\"your_token\",\n    )\n    result = await gen.generate(\n        text=\"今天来聊聊AI编程助手\",\n        output_dir=\"./output\",\n        encoding=\"mp3\",\n        use_head_music=True,\n    )\n    print(result[\"final_files\"])  # 输出音频路径列表\n\nasyncio.run(main())\n```\n\n## 参数说明\n\n### PodcastGenerator 初始化参数\n\n| 参数 | 类型 | 必填 | 默认值 | 说明 |\n|------|------|------|--------|------|\n| appid | str | 是 | - | 应用 ID |\n| access_token | str | 是 | - | Access Token |\n| app_key | str | 否 | aGjiRDfUWi | App Key |\n| resource_id | str | 否 | volc.service_type.10050 | 资源 ID |\n| endpoint | str | 否 | wss://openspeech... | WebSocket 端点 |\n\n### generate() 方法参数\n\n| 参数 | 类型 | 默认 | 说明 |\n|------|------|------|------|\n| text | str | 必填 | 输入主题文本 |\n| output_dir | str | output | 输出目录 |\n| encoding | str | mp3 | 音频格式: mp3/wav/pcm |\n| use_head_music | bool | True | 是否加片头音乐 |\n| use_tail_music | bool | False | 是否加片尾音乐 |\n| only_nlp_text | bool | False | 只生成文本不生成音频 |\n| return_audio_url | bool | False | 返回音频URL而非流式 |\n| speaker_info | dict | {\"random_order\":False} | 说话人配置 |\n| speech_rate | int | 0 | 语速 |\n| skip_round_audio_save | bool | False | 跳过分段保存 |\n| voice_type | str | None | 音色类型: `zh_male` / `zh_female` / `multi` |\n| normalize_audio | bool | False | 是否对音频进行音量归一化 |\n| fade_in_out | bool | False | 是否添加淡入淡出效果 |\n\n### 音色选择 (voice_type)\n\n| 值 | 说明 |\n|------|------|\n| None | 默认，AI 自动分配 |\n| zh_male | 中文男声 |\n| zh_female | 中文女声 |\n| multi | 多人对话模式 |\n\n## 返回结果\n\n```python\n{\n    \"success\": True,\n    \"output_dir\": \"/abs/path/to/output\",\n    \"segment_files\": [\"output/head_music_-1.mp3\", \"output/zh_female_0.mp3\", ...],\n    \"final_files\": [\"output/podcast_final_1234567890.mp3\"],\n    \"duration\": 164.51,\n    \"texts\": [\n        {\"text\": \"今天这期...\", \"speaker\": \"zh_female_mizaitongxue_v2_saturn_bigtts\"},\n        ...\n    ],\n    \"usage\": {\"input_text_tokens\": 0, \"output_audio_tokens\": 2800, \"total_tokens\": 2800}\n}\n```\n\n## CLI 参数\n\n```bash\npython scripts/generate_podcast.py \"主题文本\" \\\n    -o ./output \\\n    -f mp3 \\\n    --no-head-music \\\n    --tail-music \\\n    --only-text \\\n    --voice-type zh_female \\\n    --normalize \\\n    --fade \\\n    --appid YOUR_APPID \\\n    --token YOUR_TOKEN \\\n    -v\n```\n\n## 技术说明\n\n- **协议**: 自定义二进制 WebSocket 协议（封装在 "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn743vfjd6cp88q16gxc32qhk182rchq\",\n  \"slug\": \"volcano-engine-podcast\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1777380686994\n}"},{"path":"skill-card.md","content":"## Description:\n\n生成火山引擎豆包语音播客（PodcastTTS）。输入主题文本，自动生成双人对话式播客音频。\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[cindypapa](https://clawhub.ai/user/cindypapa)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agent users use this skill to turn topic text into a two-speaker podcast audio workflow backed by Volcano Engine PodcastTTS. It supports command-line and Python use, with options for head or tail music, voice hints, streamed audio output, and optional audio post-processing.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill handles Volcano Engine API credentials.\n\nMitigation: Use a trusted Volcano Engine account, provide credentials through environment or documented config only, and avoid exposing tokens in prompts, logs, or generated artifacts.\n\nRisk: Podcast topics are sent to an external speech service.\n\nMitigation: Do not submit secrets, regulated data, or sensitive personal data as podcast topics unless the external-service use has been approved.\n\nRisk: Security evidence flags unsafe file and endpoint handling.\n\nMitigation: Keep the endpoint fixed to the official Volcano Engine service and run the skill under an unprivileged account with write access limited to the intended output directory.\n\nRisk: The QQ bot helper has higher-risk config and media-path behavior.\n\nMitigation: Review and document the QQ helper before deployment, and sanitize output filenames and destination paths before use.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/cindypapa/skills/volcano-engine-podcast)\n- [ClawHub publisher profile](https://clawhub.ai/user/cindypapa)\n\n## Skill Output:\n\n**Output Type(s):** [text, code, shell commands, configuration, audio files, guidance]\n\n**Output Format:** [Markdown instructions with Python and shell examples; runtime output is JSON-like status data and generated audio files.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Generated podcasts may include segment files, final MP3/WAV/PCM audio, duration, transcript text, and token usage.]\n\n## Skill Version(s):\n\n1.1.1 (source: server release metadata; artifact frontmatter lists 1.1.0)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"生成火山引擎豆包语音播客（PodcastTTS）。输入主题文本，自动生成双人对话式播客音频。 Skill: 火山引擎豆包语音播客 Owner: cindypapa Summary: 生成火山引擎豆包语音播客（PodcastTTS）。输入主题文本，自动生成双人对话式播客音频。 Tags: latest:1.1.1 Version history: v1.1.1 | 2026-04-28T12:51:26.994Z | user v1.1.1 重新发布：支持双人对话播客生成，含片头音乐、分片流式下发、断点续传、音频后处理 v1.1.0 | 2026-04-21T07:41:58.183Z | auto - Added multi-step user flow: skill now always asks if reference materials are available before generating a podcast. - Improved podcast generation logic for both c","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":852,"uniquenessScore":61,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-12T00:05:07.762Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-12T00:05:07.762Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-14T14:07:57.417Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}