Install
openclaw skills install podcast-automation播客全流程自动化——抓取、转录、Sonos播放、飞书Wiki归档。Use when user asks to download a podcast, transcribe audio, play on Sonos, or archive podcast notes to Feishu Wiki.
openclaw skills install podcast-automation一站式播客自动化技能,覆盖 抓取 → 转录 → Sonos 播放 → 飞书 Wiki 归档 全流程。
| 依赖 | 用途 | 安装 |
|---|---|---|
curl / yt-dlp | 下载播客音频 | pip install yt-dlp(可选,curl 可处理直链) |
whisper | 本地语音转录 | pip install openai-whisper |
sonos | Sonos 音箱控制 | go install github.com/steipete/sonoscli/cmd/sonos@latest |
| 飞书自建应用 | Wiki 归档 | 需开通 wiki:wiki 权限,配置 FEISHU_APP_ID / FEISHU_APP_SECRET |
curl -L -o /tmp/podcast.mp3 "https://example.com/episode.mp3"
# 解析 RSS 获取最新一期音频 URL
AUDIO_URL=$(curl -s "https://feeds.example.com/podcast.rss" \
| python3 -c "
import sys, xml.etree.ElementTree as ET
root = ET.fromstring(sys.stdin.read())
ns = {'itunes': 'http://www.itunes.com/dtds/podcast-1.0.dtd'}
enc = root.find('.//item/enclosure')
print(enc.get('url') if enc is not None else '')
")
curl -L -o /tmp/podcast.mp3 "$AUDIO_URL"
yt-dlp -x --audio-format mp3 -o "/tmp/podcast.%(ext)s" "https://www.youtube.com/watch?v=XXX"
whisper /tmp/podcast.mp3 --model medium --output_format txt --output_dir /tmp/podcast-out
# 转录结果: /tmp/podcast-out/podcast.txt
--model turbo:速度优先--model medium:平衡--model large:精度优先--task translate:翻译为英文# 发现音箱
sonos discover
# 播放本地或网络音频
sonos play --name "Kitchen" "https://example.com/episode.mp3"
# 音量控制
sonos volume set 20 --name "Kitchen"
如遇
no route to host,确认本地网络权限(macOS 需在隐私设置开启 Local Network)。
TOKEN=$(curl -s -X POST \
'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal' \
-H 'Content-Type: application/json' \
-d "{\"app_id\":\"$FEISHU_APP_ID\",\"app_secret\":\"$FEISHU_APP_SECRET\"}" \
| python3 -c "import sys,json; print(json.load(sys.stdin)['tenant_access_token'])")
SPACE_ID="your_space_id"
RESULT=$(curl -s -X POST \
"https://open.feishu.cn/open-apis/wiki/v2/spaces/$SPACE_ID/nodes" \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d "{\"obj_type\":\"docx\",\"node_type\":\"origin\",\"title\":\"播客笔记: Episode Title\"}")
OBJ_TOKEN=$(echo "$RESULT" | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['node']['obj_token'])")
TRANSCRIPT=$(cat /tmp/podcast-out/podcast.txt)
curl -s -X POST \
"https://open.feishu.cn/open-apis/docx/v1/documents/$OBJ_TOKEN/blocks/$OBJ_TOKEN/children" \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d "{\"children\":[{\"block_type\":2,\"text\":{\"elements\":[{\"text_run\":{\"content\":\"$TRANSCRIPT\"}}]}}],\"index\":0}"
# 1. 抓取
curl -L -o /tmp/podcast.mp3 "https://cdn.example.com/ep42.mp3"
# 2. 转录
whisper /tmp/podcast.mp3 --model medium --output_format txt --output_dir /tmp/podcast-out
# 3. Sonos 播放
sonos play --name "Living Room" "https://cdn.example.com/ep42.mp3"
# 4. 归档到飞书 Wiki
bash references/scripts/archive-to-wiki.sh \
--title "EP42: AI与未来" \
--transcript /tmp/podcast-out/podcast.txt \
--space-id "$FEISHU_SPACE_ID"
| 变量 | 说明 | 必填 |
|---|---|---|
FEISHU_APP_ID | 飞书自建应用 App ID | 归档时必填 |
FEISHU_APP_SECRET | 飞书自建应用 App Secret | 归档时必填 |
FEISHU_SPACE_ID | 默认归档 Wiki 空间 ID | 归档时必填 |