惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Troy Hunt's Blog
P
Proofpoint News Feed
V
Vulnerabilities – Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
K
Kaspersky official blog
Cyberwarzone
Cyberwarzone
T
Tor Project blog
Cisco Talos Blog
Cisco Talos Blog
S
Securelist
L
Lohrmann on Cybersecurity
Security Latest
Security Latest
T
Threatpost
H
Heimdal Security Blog
W
WeLiveSecurity
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
IT之家
IT之家
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
TaoSecurity Blog
TaoSecurity Blog
A
About on SuperTechFans
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Azure Blog
Microsoft Azure Blog
Hugging Face - Blog
Hugging Face - Blog
Google DeepMind News
Google DeepMind News
量子位
Stack Overflow Blog
Stack Overflow Blog
Know Your Adversary
Know Your Adversary
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
AI
AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
GbyAI
GbyAI
Vercel News
Vercel News
C
Cyber Attacks, Cyber Crime and Cyber Security
Latest news
Latest news
D
Darknet – Hacking Tools, Hacker News & Cyber Security
大猫的无限游戏
大猫的无限游戏
Forbes - Security
Forbes - Security

herrkaefer

"Vibe planning \u003e vibe coding" "Anything to Markdown" "Built anocus: anonymous commenting for static sites" "日记与小说 -- AI 续写小说欣赏" "Made MicPipe: a simple voice input tool using ChatGPT dictation" "关于 Tools 和 Skills 的一点感想" "Realtime monitoring of ComEd hourly price" "Introducing SwiftEdgeTTS" "Thoughts on the philosophy of building AI-native apps" "jelly鼻屎" "等饭的人" "Use home assistant to motivate my kid to brush teeth" "Migrated Blog to Hugo and Cloudflare Pages" "Easy Aspen monitoring for Chicago parents" "Introducing HabitBuilder: A simple Telegram bot for habit tracking" "鼓捣" "Open folder or file with Sublime Text from Finder toolbar" "Python dev workflow on macOS" "Create new text file from Finder toolbar" "Uno reinvented for 3-year-old kids" "Uno变身儿童数字游戏" "自动转发Twitter到微博" "Handle annoying operations of objects in Realm DB" "Move Jekyll blog to Ubuntu VPS" "Introducing Mole" "Note taking without note taking app" "Deploy Python web application on Ubuntu server" "Setup Shadowsocks / VPN on Ubuntu Server" "Linode Notes - Basic Setup" "CLASS Style Adapted for Embedded Systems" "psycopgr Tutorial" "pgRouting Notes" "PostgreSQL Notes" "阿城三王" "这一年,这一把日子" "另一面的发现——读《坟》" "定理" "封面与腰封" "Google book下载" "lulu最新写真出炉" "The Big Bang Theory第三季" "自拍婚纱照1" "日全食" "期待动画片" "《麦兜响当当》动画电影主题曲" "转:饶毅--“杂志拜物教”:何时发Cell Nature Science 论文害你" "转:饶毅--提醒年轻人:何时SCI害你?" "西安" "3d打印机" "Dropbox" "刷牙" "贴几张照片" "6156167" "永久和凤凰" "老板的想法" "春" "原来奥巴马也是个朗读者" "应邀发Freeware List 2.0" "史上最能睡的淘宝老板" "至少出名的效果是达到了" "错怪了msn" "独立游戏节2009" "114" "馒头" "Crayon Physics Deluxe" "2008,2009" "盖章记" "小虎队附身许巍" "怎么给word文档加索引:排序问题" "怎么给word文档加索引Q\u0026amp;A" "怎么给Word文档加索引" "教我如何不疯掉" "二则" "P" "哦!报告" "蓝天" "萧翰" "lm" "故宫印象" "转:美国历任总统像" "time can kill itself" "嗯" "建议,只是建议哦" "奥地利行记3" "奥地利行记2" "奥地利行记1" "叶子" "GayBoy" "天使教你扔frisbie" "门徒因何面容愁?" "手机教堂" "丝竹管弦之盛" "残奥" "争座位" "秋意浅" "总理府" "流觞曲水" "映带左右引以为" "咚咚咚 续" "茂林修竹又有"
"Any-podcast: from newsletters to a podcast"
"herrkaefer" · 2026-02-10 · via herrkaefer

any-podcast-logo

I’ve been listening to the Hacker News daily podcast made by 面条. He open-sourced the code, so I wanted to build a podcast about autism, ADHD and neurodiversity, and reuse the same approach.

But these useful resources are usually spread across websites and newsletters. They are not centralized like the Hacker News website. So I modified the original project to reading newsletter content, then use AI to summarize and analyze it, and finally generate a podcast.

The workflow is actually simple: read subscribed newsletters → summarize → generate a podcast script → generate audio/text -> publish.

Interestingly, the original project uses Cloudflare Workflow, which can be almost zero-cost to deploy. But this setup also caused a few problems for me. I’m writing them down here.

The output is open sourced herrkaefer/any-podcast

Newsletter sources

At first, I created a new Gmail account, subscribed to related newsletters, and labeled them accordingly. Then I enabled the Gmail API, so the program could read emails in a time range and process the content.

But after a few days, Google marked the account as abnormal and banned it (it was restored after an appeal though). That made this approach feel unreliable and I would not try it with my personal Gmail account. Also, parsing email content is annoying.

Later I found a great free tool: kill-the-newsletter. You subscribe to newsletters using the email address it provides, and it automatically converts newsletters into RSS. This makes reading the content much easier.

Content-agnostic, configuration-driven

My goal was to make the podcast generator not depend on any specific content source, and instead be fully driven by configuration. So I added an admin page to configure each step: content sources, images, prompts, and so on.

admin-screenshot

TTS consistency: batching sounds easy, but fails in practice

I tried Gemini TTS in batch mode (generate audio in segments and then stitch them together). I wanted to reduce failures when generating long audio in one go. But the voice consistency was poor: the tone and style slightly drifted between segments, and the final result sounded like “multiple hosts”.

So if you use Gemini, it’s better to generate the audio from the full text in one shot.

Gemini also supports multi-speaker voices built in, which is very convenient.

If you use Minimax TTS to generate sentence by sentence and then merge, the voice does not drift at all, and the Chinese voice quality is much better.

Workflow limits (subrequests): instead of “saving requests”, just “continue in a new run”

Cloudflare Worker’s subrequest limit bothered me for a while: on the free plan, each run can only make up to 50 subrequests, which is easy to exceed. To avoid hitting the limit, I had to manually limit how many articles I read, which is not ideal.

Later I tried a “multiple workflows relay” approach, and it worked well.

What I do:

  • Estimate subrequest usage inside the workflow (it seems you can only estimate it)
  • When it’s close to the limit (for example, 40), create and trigger a new workflow to continue

The new workflow is basically a new instance of the same workflow. For the handoff, I write the current state into KV, and the next workflow reads the state and continues.

With this method, in theory I no longer need to worry about how many newsletters there are.

workflow-screenshot

Podcasts

谱系之间living-on-the-spectrum

Hope you enjoy listening.