Install
openclaw skills install @thcjp/podcast-downloader-tool-freeopenclaw skills install @thcjp/podcast-downloader-tool-free播客下载工具(免费版)帮助个人用户从小宇宙(xiaoyuzhoufm.com)下载播客音频与节目笔记。工具自动提取音频与 Show Notes,并将音频转换为 MP3 格式,兼容骨传导蓝牙耳机、水下游泳设备等特殊播放场景.
免费版聚焦单集下载,专业版(podcast-downloader-tool-pro)在此基础上提供批量下载、播放列表支持、定时订阅与多平台扩展等高级能力.
| 能力 | 免费版 | 说明 |
|---|---|---|
| 单集下载 | 支持 | 指定 URL 下载 |
| 音频格式转换 | m4a -> mp3 | 兼容更多设备 |
| 节目笔记提取 | 支持 | 输出 Markdown |
| 自定义音质 | 支持 | 0-4 五档 |
| 输出目录配置 | 支持 | 环境变量 |
| 保留原始文件 | 可选 | KEEP_M4A |
| 批量下载 | 不支持 | 升级专业版 |
| 播放列表 | 不支持 | 升级专业版 |
| 定时订阅 | 不支持 | 升级专业版 |
| 多平台 | 不支持 | 升级专业版 |
技术实现要点:核心能力基于input_params参数与output_format配置实现,支持创建/查询/修改/删除等操作模式,通过config_options进行运行时配置. |
用input_params参数进行配置.
处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作用config_options参数进行配置.
处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志.
config_options参数,支持修改/重置/导入操作用output_format参数进行配置.
处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志.
output_format参数,支持导出/保存/转换操作
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:从小宇宙平台下载、播客音频与节目笔、自动转换为、适合个人离线收听、面向个人用户的播、客下载工具、从小宇宙、xiaoyuzhoufm、Use、when、、时使用、不适用于非法营销、适用于独立开发者、企业团队和自动化、工作流场景等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.为通勤或运动场景预下载播客.
# 下载单集
(请参考skill目录中的脚本文件) "https://www.xiaoyuzhoufm.com/episode/abc123def456"
# ...
# 指定输出目录
PODCAST_DIR="/mnt/sdcard/podcasts" (请参考skill目录中的脚本文件) "https://www.xiaoyuzhoufm.com/episode/abc123"
根据存储空间选择音质.
# 最佳音质(文件较大)
AUDIO_QUALITY=0 (请参考skill目录中的脚本文件) "https://www.xiaoyuzhoufm.com/episode/abc123"
# ...
# 普通音质(节省空间)
AUDIO_QUALITY=4 (请参考skill目录中的脚本文件) "https://www.xiaoyuzhoufm.com/episode/abc123"
# ...
# 保留原始 m4a 文件
KEEP_M4A=true (请参考skill目录中的脚本文件) "https://www.xiaoyuzhoufm.com/episode/abc123"
下载音频的同时保存节目笔记.
# 下载后自动生成 Show Notes Markdown
xiaoyuzhoufm.com/episode/abc123"
# ...
# 输出结构
# /output/节目名-单集标题/
# ├── 单集标题.mp3 # 音频文件
# └── 单集标题.md # 节目笔记
# macOS
brew install curl jq ffmpeg
# ...
# Ubuntu / Debian
sudo apt install curl jq ffmpeg
# ...
# Windows (scoop)
scoop install curl jq ffmpeg
# 基本用法
xiaoyuzhoufm.com/episode/YOUR_EPISODE_ID"
输出目录/
└── 节目名-单集标题/
├── 单集标题.mp3 # 转换后的 MP3
└── 单集标题.md # 节目笔记
| 变量 | 默认值 | 说明 |
|---|---|---|
PODCAST_DIR | ~/Documents/podcast/ | 输出目录 |
AUDIO_QUALITY | 0 | MP3 音质(0=最佳, 2=良好, 4=普通) |
KEEP_M4A | false | 是否保留原始 m4a 文件 |
| 等级 | 码率 | 文件大小(30分钟) | 适用场景 |
|---|---|---|---|
| 0 | 320kbps | ~70MB | 最佳音质,耳机收听 |
| 2 | 192kbps | ~45MB | 良好平衡,日常推荐 |
| 4 | 128kbps | ~30MB | 节省空间,扬声器 |
#!/bin/bash
# download.sh - 单集下载脚本
# ...
URL="$1"
OUTPUT_DIR="${PODCAST_DIR:-$HOME/Documents/podcast/}"
QUALITY="${AUDIO_QUALITY:-0}"
KEEP_M4A="${KEEP_M4A:-false}"
# ...
# 1. 提取页面信息
HTML=$(curl -s "$URL")
DATA=$(echo "$HTML" | grep -o '__NEXT_DATA__.*' | head -1)
# ...
# 2. 解析音频地址与标题
AUDIO_URL=$(echo "$DATA" | jq -r '.props.pageProps.episodeInfo.audioUrl')
TITLE=$(echo "$DATA" | jq -r '.props.pageProps.episodeInfo.title')
SHOW_NAME=$(echo "$DATA" | jq -r '.props.pageProps.episodeInfo.podcast.title')
# ...
# 3. 创建输出目录
EPISODE_DIR="${OUTPUT_DIR}/${SHOW_NAME}-${TITLE}"
mkdir -p "$EPISODE_DIR"
# ...
# 4. 下载 m4a
curl -L -o "$EPISODE_DIR/${TITLE}.m4a" "$AUDIO_URL"
# ...
# 5. 转换为 MP3
ffmpeg -i "$EPISODE_DIR/${TITLE}.m4a" \
-codec:a libmp3lame -qscale:a "$QUALITY" \
"$EPISODE_DIR/${TITLE}.mp3"
# ...
# 6. 删除 m4a(可选)
if [ "$KEEP_M4A" != "true" ]; then
rm "$EPISODE_DIR/${TITLE}.m4a"
fi
# ...
# 7. 提取节目笔记
echo "$DATA" | jq -r '.props.pageProps.episodeInfo.shownotes' > "$EPISODE_DIR/${TITLE}.md"
# ...
echo "下载完成: $EPISODE_DIR"
音质选择策略
目录管理规范
网络优化
设备兼容性
小宇宙可能有反爬虫机制。建议:
确保已安装 ffmpeg:
ffmpeg -version
如未安装,参考快速开始的依赖安装步骤.
部分单集可能没有 Show Notes。检查页面是否存在 shownotes 字段。如内容为 HTML 格式,可能需要额外转换.
免费版支持单集下载;专业版支持批量下载、播放列表、定时订阅与多平台。需要大量下载或自动化的场景建议升级.
免费版专注小宇宙平台。专业版扩展支持更多平台。如有其他平台需求,建议升级专业版.
下载的音频仅供个人离线收听。商业使用需获得版权方授权。请遵守相关法律法规与平台条款.
xiaoyuzhoufm.com| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| curl | 命令行工具 | 必需 | 系统自带或下载 |
| jq | JSON 处理工具 | 必需 | brew install jq / apt install jq |
| ffmpeg | 音频转换工具 | 必需 | brew install ffmpeg / apt install ffmpeg |
| Bash | Shell 环境 | 必需 | 系统自带(Windows 用 WSL) |
| LLM API | API | 必需 | 由Agent内置LLM提供 |
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
{
"success": true,
"data": {
"result": "播客下载工具免费版处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "podcast downloader"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}