播客全流程自动化——下载、抓取、转录、Sonos播放、飞书Wiki归档。用户请求下载播客、转录音频、在Sonos播放或归档笔记时使用。
一站式播客自动化技能,覆盖 抓取 → 转录 → Sonos 播放 → 飞书 Wiki 归档 全流程。
依赖用途安装curl / yt-dlp下载播客音频pip install yt-dlp(可选,curl 可处理直链)whisper本地语音转录pip install openai-whisper``sonosSonos 音箱控制go install github.com/steipete/sonoscli/cmd/sonos@latest飞书自建应用Wiki 归档需开通 wiki:wiki 权限,配置 FEISHU_APP_ID / FEISHU_APP_SECRET
bash
curl -L -o /tmp/podcast.mp3 "https://example.com/episode.mp3"
bash
# 解析 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"
bash
yt-dlp -x --audio-format mp3 -o "/tmp/podcast.%(ext)s" "https://www.youtube.com/watch?v=XXX"
bash
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:翻译为英文bash
# 发现音箱
sonos discover
# 播放本地或网络音频
sonos play --name "Kitchen" "https://example.com/episode.mp3"
# 音量控制
sonos volume set 20 --name "Kitchen"
如遇
no route to host,确认本地网络权限(macOS 需在隐私设置开启 Local Network)。
bash
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'])")
bash
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'])")
bash
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}"
bash
# 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归档时必填