Skip to content
Back to skills

Podcast Publish Xiaoyuzhou

ASecurity

自动发布每日科技早报播客到小宇宙平台。 触发场景:用户提到"发布播客"、"小宇宙播客"、"自动发布"、"播客上传"、"RSS发布"。 适用于:将生成的播客音频自动发布到RSS.com,并通过RSS订阅同步到小宇宙,同时发送飞书通知。

  • 3 stars
  • 0 votes
  • 0 copies
  • 9 views
  • Added May 28, 2026
content-marketingpythonbashgitapi

Works with

  • claude code
  • cli
  • api

Security analysis

A93/100
  • highPerforms destructive filesystem operations

Pro scans all 3 files and shows the line behind each finding

Scanned May 28, 2026

npx -y skills add muzhicaomingwang/ai-ideas --skill podcast-publish-xiaoyuzhou --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Podcast Publish Xiaoyuzhou?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Podcast Publish Xiaoyuzhou
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/muzhicaomingwang-podcast-publish-xiaoyuzhou/badge)](https://www.skillsdirectory.com/skills/muzhicaomingwang-podcast-publish-xiaoyuzhou)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: podcast-publish-xiaoyuzhou
description: |
  自动发布每日科技早报播客到小宇宙平台。
  触发场景:用户提到"发布播客"、"小宇宙播客"、"自动发布"、"播客上传"、"RSS发布"。
  适用于:将生成的播客音频自动发布到RSS.com,并通过RSS订阅同步到小宇宙,同时发送飞书通知。
---

# 播客发布到小宇宙 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)
   ```
3. **获取凭证**:
   - Settings → API Keys → Generate New API Key
   - 复制 API Key: `rss_com_sk_xxx`
   - 从播客URL获取 Podcast ID

4. **配置环境变量**:
   编辑 `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`
   - 点击「验证并导入」
3. **首次同步**: 点击「立即同步」

### 步骤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

2. **文件命名规范**:
   - 项目生成带速率后缀的文件(`-1.2x.mp3`)
   - 发布脚本会自动识别
   - 优先使用1.2x版本(平衡时长和音质)

3. **错误处理策略**:
   - RSS发布失败 → 中断流程(需要人工介入)
   - 飞书通知失败 → 仅记录日志(不影响发布)
   - 小宇宙同步延迟 → 可手动触发

4. **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

Files in this skill

  • README.md2.8 KB
  • SKILL.md15 KB
  • publish.sh1.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.