Agili 的 Hacker Podcast

1周前发布 5 00

Agili 的 Hacker Podcast 是一个基于 AI 的自动化播客项目,每日从 Hacker News 抓取热门技术文章,通过大模型生成中文摘要,并利用 TTS(文本转语音)技术自动合成播客音频,最终通过网页和 RSS 订阅提供收听服务。

所在地:
中国
收录时间:
2025-12-18
其他站点:
Agili 的 Hacker PodcastAgili 的 Hacker Podcast

Agili 的 Hacker Podcast 是一个基于 AI 的自动化播客项目,每日从 Hacker News 抓取热门技术文章,通过大模型生成中文摘要,并利用 TTS(文本转语音)技术自动合成播客音频,最终通过网页和 RSS 订阅提供收听服务。

Agili 的 Hacker Podcast

项目目标:让开发者用耳朵高效获取全球前沿技术动态,无需阅读英文原文。

核心特性

  • 自动抓取:每日定时获取 Hacker News 前 10–20 篇热门文章及其高赞评论。
  • AI 智能总结:基于 OpenAI 模型,生成结构化中文摘要,涵盖核心观点、技术亮点与社区讨论。
  • 语音播报:通过 TTS 合成自然流畅的中文音频,支持播客播放。
  • 多端收听:提供网页界面 + 标准 RSS Feed,兼容 Apple Podcasts、小宇宙、Overcast 等主流播客 App。
  • 每日自动更新:全链路自动化,无需人工干预。
  • 文本+音频双输出:每期附带完整播报稿,方便速读或查证。

技术架构

整体组成

项目由两部分构成:

  • Worker(后端逻辑):运行于 Cloudflare Workers,负责数据抓取、AI 处理、TTS 合成与存储。
  • Web(前端展示):基于 Next.js 构建,提供播客列表、音频播放、RSS 订阅等功能。

技术栈

模块技术
应用框架Next.js + OpenNext(适配 Cloudflare)
部署环境Cloudflare Workers
存储Cloudflare R2(音频文件)、KV(元数据缓存)
AI 模型OpenAI API(支持自定义 base_url 与模型,如 gpt-4.1
语音合成Edge TTS(基于浏览器端渲染)
样式与组件Tailwind CSS + shadcn/ui
自动化Cloudflare Workflows(定时触发)

工作流程

  1. 定时触发
    通过 Cloudflare Workflows 每日自动启动 Worker。
  2. 数据抓取
    从 Hacker News API 获取热门文章列表及评论。
  3. AI 处理
    调用 OpenAI API,生成:

    • 中文摘要
    • 播报文稿(带语调标记,适配 TTS)
  4. 语音合成
    使用 Edge TTS 将文本转为音频(依赖 Cloudflare Browser Rendering)。
  5. 存储与发布
    • 音频文件上传至 R2
    • 播客元数据(标题、链接、描述)存入 KV
    • Web 程序读取 KV/R2,生成 RSS Feed 与网页内容

本地开发

安装依赖

pnpm install

环境配置

Web 端.env.local):

NODE_ENV=development
NEXT_STATIC_HOST=http://localhost:3000/static

Worker 端worker/.env.local):

NODE_ENV=development
HACKER_PODCAST_WORKER_URL=https://your-worker-url
HACKER_PODCAST_R2_BUCKET_URL=https://your-bucket-url
OPENAI_API_KEY=your_api_key
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4.1

启动服务

# 启动 Worker(支持手动触发)
pnpm dev:worker
# curl -X POST http://localhost:8787

# 启动 Web 前端
pnpm dev

注意

  • 本地运行时,Edge TTS 可能卡住(因依赖浏览器渲染),建议注释 TTS 部分代码进行调试。
  • 音频合并功能需 Cloudflare 远程环境,本地无法完整测试。可使用 npm run test 验证逻辑。

部署到 Cloudflare

步骤概览

  1. 创建资源
    • 在 Cloudflare 控制台创建 R2 存储桶(用于音频)
    • 创建 KV 命名空间(用于播客元数据)
  2. 配置 wrangler.json
    • 绑定 R2 与 KV 的命名
    • 启用 Workflows(用于每日定时任务)
  3. 设置环境变量(Secrets)
# Worker 私有变量
pnpx wrangler secret put --cwd worker HACKER_PODCAST_WORKER_URL
pnpx wrangler secret put --cwd worker HACKER_PODCAST_R2_BUCKET_URL
pnpx wrangler secret put --cwd worker OPENAI_API_KEY
pnpx wrangler secret put --cwd worker OPENAI_BASE_URL
pnpx wrangler secret put --cwd worker OPENAI_MODEL

# Web 程序变量
pnpx wrangler secret put NODE_ENV  # 建议设为 production
pnpx wrangler secret put NEXT_PUBLIC_BASE_URL
pnpx wrangler secret put NEXT_STATIC_HOST
  1. 部署
pnpm deploy:worker
pnpm deploy

部署后,RSS 地址为:https://your-domain.com/feed.xml,可直接添加至播客客户端。

数据统计

相关导航

暂无评论

none
暂无评论...