🎯

podcast-publish-xiaoyuzhou

🎯Skill

from muzhicaomingwang/ai-ideas

VibeIndex|
What it does

Automatically generates and publishes daily tech news podcast to Xiaoyuzhou platform via RSS.com, with Feishu notification.

podcast-publish-xiaoyuzhou

Installation

Install skill:
npx skills add https://github.com/muzhicaomingwang/ai-ideas --skill podcast-publish-xiaoyuzhou
2
AddedJan 27, 2026

Skill Details

SKILL.md

|

Overview

# 播客发布到小宇宙 Skill

概述

此 Skill 实现了每日科技早报播客的全自动发布流程:播客生成 → RSS.com发布 → 小宇宙同步 → 飞书通知。

项目路径: /Users/qitmac001395/workspace/QAL/ideas/apps/daily-podcast-ai

核心能力

| 功能 | 状态 | 所需配置 |

|------|------|---------|

| 早报播客生成 | ✅ 可用 | ELEVENLABS_API_KEY |

| RSS.com自动发布 | ✅ 可用 | RSS_COM_API_KEY + RSS_COM_PODCAST_ID |

| 小宇宙RSS订阅 | ✅ 可用 | 一次性手动配置 |

| 飞书消息通知 | ✅ 可用 | FEISHU_APP_ID + FEISHU_APP_SECRET + FEISHU_RECEIVER_OPEN_ID |

| 定时自动执行 | ✅ 可用 | macOS launchd (每天7点) |

使用方法

方式1: 自动执行(推荐)

无需操作,每天早上7点自动运行:

```

07:00 - 从缓存读取新闻(0:00-6:00收集的30-50篇)

07:02 - AI优选Top 10新闻

07:05 - 生成对话脚本(双人播报模式)

07:10 - TTS语音合成(ElevenLabs)

07:15 - 合并音频 + 生成封面

07:17 - 发布到RSS.com

07:18 - 发送飞书通知

08:00 - 小宇宙自动同步

```

方式2: 手动发布指定日期

```bash

cd /Users/qitmac001395/workspace/QAL/ideas/apps/daily-podcast-ai

# 发布昨天的播客

python scripts/publish_to_rss.py --date 2026-01-14

# 生成今天的播客并发布

python scripts/daily_generate.py --from-cache && \

python scripts/publish_to_rss.py --date $(date +%Y-%m-%d)

```

方式3: 仅发送飞书通知

```bash

python scripts/notify_feishu.py \

--date 2026-01-14 \

--rss-url "https://rss.com/podcasts/xxx/feed.xml" \

--episode-url "https://rss.com/podcasts/xxx/episodes/ep_xxx" \

--article-count 10

```

---

首次配置指南

步骤1: RSS.com配置(5分钟)

  1. 注册账号: https://rss.com/ → Sign Up
  2. 创建播客: Dashboard → Create New Podcast

```

名称: 今日科技早报

分类: Technology / News

语言: Chinese (Simplified)

```

  1. 获取凭证:

- Settings → API Keys → Generate New API Key

- 复制 API Key: rss_com_sk_xxx

- 从播客URL获取 Podcast ID

  1. 配置环境变量:

编辑 apps/daily-podcast-ai/.env

```bash

RSS_COM_API_KEY=rss_com_sk_your_actual_key

RSS_COM_PODCAST_ID=your-podcast-uuid

```

步骤2: 小宇宙订阅配置(3分钟,仅需一次)

  1. 登录创作者平台: https://podcaster.xiaoyuzhoufm.com/podcasts/695e1e64e0970c835fb2e784/home
  2. 添加RSS订阅:

- 设置 → RSS Feed设置

- 输入: https://rss.com/podcasts/{YOUR_ID}/feed.xml

- 点击「验证并导入」

  1. 首次同步: 点击「立即同步」

步骤3: 飞书通知配置(可选,5分钟)

  1. 创建飞书应用: https://open.feishu.cn/app
  2. 添加权限: im:message + im:message:send_as_bot
  3. 配置环境变量:

```bash

FEISHU_APP_ID=cli_xxx

FEISHU_APP_SECRET=xxx

FEISHU_RECEIVER_OPEN_ID=ou_18b8063b232cbdec73ea1541dfb74890 # 王植萌

```

步骤4: 测试验证(2分钟)

```bash

# 测试发布

python scripts/publish_to_rss.py --date 2026-01-14

# 预期看到:

# ✅ Episode published successfully!

# 📱 发送飞书通知...

# ✅ 飞书消息发送成功

```

---

技术架构

集成流程图

```

┌─────────────┐

│ 早报生成 │ scripts/daily_generate.py

│ (每天7点) │ - 从cache读取新闻

└──────┬──────┘ - AI优选Top 10

│ - TTS语音合成

┌─────────────┐

│ 输出文件 │ output/{date}/dailyReport/

│ │ - podcast-{date}-1.2x.mp3

│ │ - cover-{date}.png

└──────┬──────┘ - script-{date}.md

┌─────────────┐

│ RSS发布 │ scripts/publish_to_rss.py

│ │ - 上传音频到RSS.com

└──────┬──────┘ - 创建单集元数据

├──────────────────┐

↓ ↓

┌─────────────┐ ┌─────────────┐

│ RSS Feed │ │ 飞书通知 │ scripts/notify_feishu.py

│ 更新 │ │ │ - 发送卡片消息

└──────┬──────┘ └─────────────┘ - 包含RSS链接

↓ (每小时)

┌─────────────┐

│ 小宇宙同步 │ podcaster.xiaoyuzhoufm.com

│ │ - 自动抓取RSS

└─────────────┘ - 发布到App

```

关键文件

| 文件 | 行数 | 功能 |

|------|------|------|

| scripts/publish_to_rss.py | 376 | RSS.com发布主脚本 |

| scripts/notify_feishu.py | 191 | 飞书通知脚本 |

| scripts/daily_generate.py | 651 | 播客生成核心逻辑 |

| scripts/daily_automated_run.sh | 100 | 定时任务执行脚本 |

| docs/XIAOYUZHOU_INTEGRATION.md | - | 完整集成指南 |

| QUICKSTART_XIAOYUZHOU.md | - | 5分钟快速开始 |

环境变量清单

```bash

# 必需 - 播客生成

ELEVENLABS_API_KEY=sk_xxx # TTS语音合成

# 可选 - AI增强

OPENAI_API_KEY=sk-xxx # AI摘要和优选

# 必需 - RSS发布

RSS_COM_API_KEY=rss_com_sk_xxx # RSS.com API

RSS_COM_PODCAST_ID=xxx-xxx-xxx # 播客频道ID

# 可选 - 飞书通知

FEISHU_APP_ID=cli_xxx # 飞书应用ID

FEISHU_APP_SECRET=xxx # 飞书密钥

FEISHU_RECEIVER_OPEN_ID=ou_xxx # 接收者Open ID

```

---

代码改进(已实现)

1. 智能文件名识别(publish_to_rss.py:258-269)

问题: 项目生成 podcast-{date}-1.2x.mp3,但脚本期望 podcast-{date}.mp3

解决: 自动查找并使用多速率版本

```python

audio_file = base_path / f"podcast-{args.date}.mp3"

if not audio_file.exists():

audio_file_12x = base_path / f"podcast-{args.date}-1.2x.mp3"

audio_file_15x = base_path / f"podcast-{args.date}-1.5x.mp3"

if audio_file_12x.exists():

audio_file = audio_file_12x

```

2. 多端点重试机制(publish_to_rss.py:106-159)

问题: RSS.com API端点可能变化

解决: 依次尝试3个可能的端点

```python

upload_endpoints = [

f"{self.API_BASE_URL}/upload",

f"{self.API_BASE_URL}/media",

f"{self.API_BASE_URL}/podcasts/{self.podcast_id}/media"

]

```

3. 飞书通知集成(publish_to_rss.py:343-362)

功能: 发布成功后自动调用 notify_feishu.py

特性:

  • 使用 check=False 避免通知失败中断主流程
  • 自动提取文章数量
  • 传递RSS URL和单集URL

---

飞书消息效果

发布成功后,接收者会收到蓝色卡片消息:

```

┌─────────────────────────────────────────┐

│ 🎙️ 今日科技早报已发布 │

├─────────────────────────────────────────┤

│ 📅 日期: 2026-01-14 │

│ 📰 内容: 精选 10 篇科技新闻 │

│ │

│ 📢 发布状态: │

│ - ✅ RSS.com 发布成功 │

│ - ⏳ 小宇宙同步中(预计1小时内) │

│ │

│ 🔗 单集链接: https://rss.com/... │

│ 📡 RSS Feed: https://rss.com/...feed.xml│

│ │

│ ─────────────────────────────────────── │

│ 💡 小宇宙订阅步骤: │

│ 1. 打开小宇宙创作者平台 │

│ 2. 点击「立即同步」查看最新单集 │

│ 3. 首次设置需添加RSS订阅(仅需一次) │

└─────────────────────────────────────────┘

```

---

故障排查

常见问题

| 问题 | 症状 | 解决方案 |

|------|------|---------|

| RSS发布失败 | 401 Unauthorized | 检查API Key是否正确/过期 |

| 文件找不到 | Missing required files | 确认播客已生成,检查output目录 |

| 小宇宙未同步 | RSS成功但App无单集 | 手动点击「立即同步」 |

| 飞书通知失败 | 发布成功但无消息 | 检查应用权限,验证open_id |

| API端点404 | Endpoint not found | 查看RSS.com最新API文档 |

调试命令

```bash

# 查看最近的生成日志

tail -50 logs/daily_run.log

# 检查错误日志

tail -50 logs/daily_error.log

# 验证RSS Feed可访问

curl -I "https://rss.com/podcasts/{YOUR_ID}/feed.xml"

# 验证环境变量

python3 -c "from dotenv import load_dotenv; import os; load_dotenv(); \

print('RSS Key:', bool(os.getenv('RSS_COM_API_KEY'))); \

print('Podcast ID:', bool(os.getenv('RSS_COM_PODCAST_ID')))"

```

---

使用场景

场景1: 每日自动发布(默认)

触发: 每天07:00自动执行

流程: 完整的生成 → 发布 → 通知

无需操作: 配置一次后永久生效

场景2: 补发昨天的播客

```bash

# 用户说: "帮我重新发布昨天的播客到小宇宙"

python scripts/publish_to_rss.py --date 2026-01-14

```

场景3: 仅通知不发布

```bash

# 用户说: "通知植萌播客已发布"

python scripts/notify_feishu.py \

--date 2026-01-14 \

--rss-url "https://rss.com/podcasts/xxx/feed.xml" \

--article-count 10

```

场景4: 生成但不发布

```bash

# 用户说: "生成今天的播客但先不发布"

python scripts/daily_generate.py --from-cache

# 不运行 publish_to_rss.py

```

---

技术细节

RSS.com API集成

API版本: v4

Base URL: https://api.rss.com/v4

认证方式: Bearer Token

核心端点:

```

POST /upload # 上传文件(主端点)

POST /media # 备选端点1

POST /podcasts/{id}/media # 备选端点2

POST /podcasts/{id}/episodes # 创建单集

GET /podcasts/{id}/feed.xml # RSS Feed

```

文件上传:

  • 音频: 最大100MB,支持MP3/M4A
  • 封面: 最大5MB,推荐3000x3000px PNG
  • 超时: 120秒

小宇宙集成方式

方式: RSS订阅(非API上传)

优势:

  • ✅ 一次配置,永久生效
  • ✅ 无需逆向工程小宇宙API
  • ✅ 官方支持,稳定可靠
  • ✅ 支持多平台分发

更新频率:

  • 默认: 每小时
  • 可设置: 30分钟/2小时/4小时

飞书通知实现

消息类型: Interactive(卡片消息)

卡片结构:

```json

{

"header": {"title": "🎙️ 今日科技早报已发布", "template": "blue"},

"elements": [

{"tag": "markdown", "content": "📅 日期: {date}\n📰 内容: 精选 {count} 篇..."}

]

}

```

依赖库: httpx>=0.27.0

---

监控与维护

日志位置

```

logs/

├── daily_run.log # 主日志(生成+发布)

├── daily_error.log # 错误日志

├── hourly-stdout.log # 每小时收集日志

└── hourly-stderr.log # 收集错误

```

关键日志搜索

```bash

# 查看最近5次发布状态

grep "Publication completed" logs/daily_run.log | tail -5

# 查看RSS发布错误

grep "RSS" logs/daily_error.log

# 查看飞书通知记录

grep "飞书通知" logs/daily_run.log | tail -5

```

数据清理

```bash

# 清理30天前的播客文件(节省空间)

find output/ -type d -mtime +30 -exec rm -rf {} +

# 清理缓存(保留最近7天)

find cache/ -name "*.json" -mtime +7 -delete

```

---

成本预估

每日成本

| 服务 | 用量 | 成本 |

|------|------|------|

| ElevenLabs TTS | 3-5分钟音频 | ¥1-2 |

| OpenAI GPT-4o-mini | 摘要+优选 | ¥0.5-1 |

| RSS.com | 3-5MB存储+流量 | 免费 |

| 小宇宙 | RSS订阅 | 免费 |

| 飞书API | 1条消息/天 | 免费 |

月度总计: ¥45-90(主要是ElevenLabs和OpenAI)

免费额度

  • ElevenLabs: 10,000 credits/月(约10分钟)
  • OpenAI: 需付费,但gpt-4o-mini成本极低
  • RSS.com: 免费版支持5GB存储+流量
  • 飞书: 企业自建应用免费

---

扩展功能(可选)

1. 多平台分发

将同一个RSS Feed提交到:

  • 小宇宙(已支持)
  • 喜马拉雅
  • 荔枝FM
  • Apple Podcasts
  • Spotify Podcasts

2. 数据分析

从RSS.com获取统计数据:

```bash

curl -H "Authorization: Bearer $RSS_COM_API_KEY" \

"https://api.rss.com/v4/podcasts/$RSS_COM_PODCAST_ID/analytics"

```

3. 智能推送

根据播放数据优化:

  • 调整发布时间(当前07:00)
  • 优化新闻选择策略
  • A/B测试不同播报风格

4. 批量操作

```bash

# 批量发布最近7天的播客

for date in $(seq -f "%Y-%m-%d" 7 -1 1); do

python scripts/publish_to_rss.py --date $date

sleep 10

done

```

---

注意事项

重要提醒

  1. API凭证安全:

- ✅ .env 已在 .gitignore

- ❌ 不要将API Key提交到Git

- ❌ 不要在日志中打印完整API Key

  1. 文件命名规范:

- 项目生成带速率后缀的文件(-1.2x.mp3

- 发布脚本会自动识别

- 优先使用1.2x版本(平衡时长和音质)

  1. 错误处理策略:

- RSS发布失败 → 中断流程(需要人工介入)

- 飞书通知失败 → 仅记录日志(不影响发布)

- 小宇宙同步延迟 → 可手动触发

  1. RSS Feed更新频率:

- RSS.com: 实时更新

- 小宇宙: 每小时抓取(可配置)

- 加速同步: 手动点击「立即同步」

---

相关资源

官方文档

  • RSS.com API: https://api.rss.com/v4/docs
  • 小宇宙创作者指南: https://podcaster.xiaoyuzhoufm.com/help
  • 飞书开放平台: https://open.feishu.cn/document/

项目文档

  • 完整集成指南: [docs/XIAOYUZHOU_INTEGRATION.md](../../apps/daily-podcast-ai/docs/XIAOYUZHOU_INTEGRATION.md)
  • 快速开始: [QUICKSTART_XIAOYUZHOU.md](../../apps/daily-podcast-ai/QUICKSTART_XIAOYUZHOU.md)
  • 主项目README: [apps/daily-podcast-ai/README.md](../../apps/daily-podcast-ai/README.md)

工具链接

  • Feed验证: https://validator.w3.org/feed/
  • 卡片消息构建: https://open.feishu.cn/tool/cardbuilder
  • ElevenLabs管理: https://elevenlabs.io/app/

---

更新记录

  • 2026-01-15: 初始版本,支持RSS.com自动发布和小宇宙订阅
  • 2026-01-15: 添加飞书通知功能(王植萌)
  • 2026-01-15: 修复多速率音频文件名识别问题
  • 2026-01-15: 增强API错误处理,支持多端点重试

---

Skill维护者

  • 创建者: Claude Code
  • 项目: daily-podcast-ai
  • 版本: v1.0.0
  • 最后更新: 2026-01-15